1. 介绍
thulac4j是THULAC的Java 8工程化实现,相比于官方版THULAC-Java,我做了如下工作:
- 规范化分词词典,并去掉一些无用词;
- 重写DAT(双数组Trie树)的构造算法,生成的DAT size减少了8%左右,从而节省了内存;
- 优化分词算法,提高了分词速率。
若想在项目中使用thulac4j,可添加依赖:
<dependency>
<groupId>io.github.yizhiru</groupId>
<artifactId>thulac4j</artifactId>
<version>${thulac4j.version}</version>
</dependency>
// SegOnly mode
String sentence = "滔滔的流水,向着波士顿湾无声逝去";
SegOnly seg = new SegOnly("models/cws_model.bin", "models/cws_dat.bin");
List<String> words = seg.segment(sentence);
// [滔滔, 的, 流水, ,, 向着, 波士顿湾, 无声, 逝去]
// SegPos mode
SegPos pos = new SegPos("models/model_c_model.bin", "models/model_c_dat.bin");
List<SegItem> words = pos.segment(sentence);
// [滔滔/a, 的/u, 流水/n, ,/w, 向着/p, 波士顿湾/ns, 无声/v, 逝去/v]
模型数据较大,没有放在jar包与源码。训练模型下载及更多使用说明,请参看Getting Started.
thulac4j还支持自定义词典:
seg.setUserWordsPath("<user-words-path>");
自定义词典中的词为行分隔,格式如下:
中国人
thulac4j
中文分词
支持繁体转简体:
Simplifier simplifier = new Simplifier();
String s = simplifier.t2s("世界商機大發現");
2. 测评
测评主要从效果(准确率、召回率、F1值)、性能方面进行比较,测评结果见wiki。从测评结果看出,thulac4j的兼顾效果与速率。
最后,欢迎大家使用并pull request;中文分词thulac4j的QQ交流群:373215255。
本文转自 Treant 博客园博客,原文链接:http://www.cnblogs.com/en-heng/p/6526598.html ,如需转载请自行联系原作者