一 序

  我也是个NLP小白,Hanlp功能很强大,本文只是简单跑起来句法分析,再看如何根据句法分析结果提取关键词还需要再学习。

二 准备

maven

	<dependency>
			<groupId>com.hankcs</groupId>
			<artifactId>hanlp</artifactId>
			<version>portable-1.7.8</version>
		</dependency>

HanLP将数据与程序分离,给予用户自定义的自由。

1、下载:data.zip

下载后解压到任意目录,接下来通过配置文件告诉HanLP数据包的位置。

HanLP中的数据分为词典模型,其中词典是词法分析必需的,模型是句法分析必需的。

data
│
├─dictionary
└─model

用户可以自行增删替换,如果不需要句法分析等功能的话,随时可以删除model文件夹。

  • 模型跟词典没有绝对的区别,隐马模型被做成人人都可以编辑的词典形式,不代表它不是模型。
  • GitHub代码库中已经包含了data.zip中的词典,直接编译运行自动缓存即可;模型则需要额外下载。

2、下载jar和配置文件:hanlp-release.zip

配置文件的作用是告诉HanLP数据包的位置,只需修改第一行

root=D:/JavaProjects/HanLP/

为data的父目录即可,比如data目录是/Users/hankcs/Documents/data,那么root=/Users/hankcs/Documents/ 。

注意:我是把hanlp.properties文件放到了resource下面。

三 程序

     CoNLLSentence sentence =  HanLP.parseDependency(query);

        System.out.println(sentence );

上面的路径要配置,不然会提示:Data/model/perceptron/large/cws.bin 加载失败

官网的例子更多一些,不贴了。

简单看下效果:

test query:为什么麻黄碱可以导致骨骼肌收缩
1	为什么	为什么	r	r	_	4	状中结构	_	_
2	麻黄碱	麻黄碱	n	n	_	4	主谓关系	_	_
3	可以	可以	v	v	_	4	状中结构	_	_
4	导致	导致	v	v	_	0	核心关系	_	_
5	骨骼肌	骨骼肌	n	n	_	6	主谓关系	_	_
6	收缩	收缩	v	v	_	4	动宾关系	_	_

如果这样看,不好理解。还可以加上可视化:

看下词性说明:来源:http://www.ltp-cloud.com/intro

依存句法分析标注关系 (共15种) 及含义如下:

关系类型 Tag Description Example
主谓关系 SBV subject-verb 我送她一束花 (我 <-- 送)
动宾关系 VOB 直接宾语,verb-object 我送她一束花 (送 --> 花)
间宾关系 IOB 间接宾语,indirect-object 我送她一束花 (送 --> 她)
前置宾语 FOB 前置宾语,fronting-object 他什么书都读 (书 <-- 读)
兼语 DBL double 他请我吃饭 (请 --> 我)
定中关系 ATT attribute 红苹果 (红 <-- 苹果)
状中结构 ADV adverbial 非常美丽 (非常 <-- 美丽)
动补结构 CMP complement 做完了作业 (做 --> 完)
并列关系 COO coordinate 大山和大海 (大山 --> 大海)
介宾关系 POB preposition-object 在贸易区内 (在 --> 内)
左附加关系 LAD left adjunct 大山和大海 (和 <-- 大海)
右附加关系 RAD right adjunct 孩子们 (孩子 --> 们)
独立结构 IS independent structure 两个单句在结构上彼此独立
标点 WP punctuation
核心关系 HED head 指整个句子的核心

 

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐