1 概述
HanLP是一个自然语言处理工具包,它提供的主要功能如下:
- 分词
- 转化为拼音
- 繁转简、简转繁
- 提取关键词
- 提取短语
- 提取词语
- 自动摘要
- 依存文法分析
下面将介绍其分词功能的使用。
2 依赖
下面是依赖的jar包。
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.7.8</version>
</dependency>
3 使用
下面demo是往HanLP词典中加入自定义的词和词性。将“国家森林公园”的词性定义为“myCustomWord”。
public static void main(String[] args) {
// 往HanLP词典中加入自定义的词和词性
CustomDictionary.insert("国家森林公园", "myCustomWord 1");
List<Term> termList = HanLP.segment("你好,欢迎来到美丽的大兴安岭国家森林公园");
System.out.println(JSON.toJSONString(termList));
}
分词结果如下:
4 注意事项
- 通过api接口自定义hanlp词典或者自定义词典文件,可以对同一个词设置多个词性;
- 但即使对同一个词设置了多个词性,根据HanLP的模型特征,分词时也只会返回其中一个词性,不会返回多个词性。
- 另外即使hanlp词典中有多个类似词,分词时也只会返回文本相近词中的一个词。
4.1 一个词只会返回一个词性
举例如下,给“国家森林公园” 定义两个词性,分别为:“myCustomWord”,“myCustomWord_new”。但是切词后,对于“国家森林公园”,只返回了一个词性“myCustomWord_new”。
public static void main(String[] args) {
// 往HanLP词典中加入自定义的词和词性,一个词设置多个词性
CustomDictionary.insert("国家森林公园", "myCustomWord_new 1 myCustomWord 1");
List<Term> termList = HanLP.segment("你好,欢迎来到美丽的大兴安岭国家森林公园");
System.out.println(JSON.toJSONString(termList));
}
切词后结果如下所示:
4.2 只返回文本相近词中的一个词
案例如下,分词后,只会获取到“国家森林公园”,而没有“森林公园”。
public static void main(String[] args) {
test1();
}
private static void test1() {
// 往HanLP词典中加入自定义的词和词性
CustomDictionary.insert("国家森林公园", "myCustomWord 1");
CustomDictionary.insert("森林公园", "myCustomWord_common 1");
List<Term> termList = HanLP.segment("你好,欢迎来到美丽的大兴安岭国家森林公园");
System.out.println(JSON.toJSONString(termList));
}
分词后的结果如下所示: