简单介绍
作者写了一个配套的社区 hanlp的自然语言处理社区
在GitHub上的仓库地址 hankcs/HanLP,截止到目前,在GIthub上有24.9k个星。
这本书支持Java、Python两种语言。而且一直在迭代和更新。实测分词效果还可以。下面是简单用法。
实际应用
由于本身该框架支持Java和Python两种语言,所以实际应用也由这两种语言组成
Java版
首先,下载该框架的 jar 到本地,然后将其打到本地maven仓库中,然后再以依赖的方式引入到maven项目中。
引入依赖如下:
<dependency>
<groupId>com.hankcs.hanlp</groupId> <!--自定义-->
<artifactId>hankcs</artifactId> <!--自定义-->
<version>2.0</version> <!--自定义-->
</dependency>
分词的例子:
/**
* 分词并去重(这里主要是用于建树的过程)
*
* @param text 文本
* @return 去重后的词语
*/
private Map<String, AtomicInteger> separate(String text) {
Segment segment = HanLP.newSegment().enableOffset(true);
List<Term> terms = segment.seg(text);
List<Word> results = new ArrayList<>();
results.addAll(terms
.stream()
.map(term -> new Word(term.word, term.nature.toString()))
.collect(Collectors.toList()));
Map<String, AtomicInteger> ans = getFrequency(results);
return ans;
}
其中 Segment segment = HanLP.newSegment().enableOffset(true); 是定义了一个分词句柄,旨在描述使用什么算法,然后调用 segment.seg(text); 进行分词。
除了分词以外,书中还介绍了文本分类,文本摘要、关键词提取等等自然语言处理的内容,同时借以框架的方式举例子,在知晓理论的基础上让实践来辅助理解,大大增加了入门的成功率。
Python版
下面是一个分词的例子
import hanlp
class TextCheck(object):
def __init__(self):
self.tokenizer = hanlp.load('LARGE_ALBERT_BASE')
def separate_words(self, tests: list) -> list:
return self.tokenizer(tests)
if __name__ == '__main__':
x = TextCheck()
ans = x.separate_words(['今天你吃了吗'])
print(ans)
可以发现,入手非常简单快捷。同时,这本书也给我们展示了更复杂的用法,比如,文本分类,情感分析,以及如何进行参数调优等。