Java中文分词工具AnsjSeg使用

简介:         中文分词是进行中文文本分析的一个重要步骤。对于Java语言,有许多可选的分词工具,如中科院计算所的NLPIR(原ICTCLASS)、盘古分词、IKAnalyzer、PaodingAnalyzer,其中,试...

        中文分词是进行中文文本分析的一个重要步骤。对于Java语言,有许多可选的分词工具,如中科院计算所的NLPIR(原ICTCLASS)、盘古分词、IKAnalyzer、PaodingAnalyzer,其中,试用过ICTCLASS及其后续版本,刚开始感觉不错,但是Java调用C语言的方式实在是受不了,没有原生Java编写的用着方便,最近在处理一些论坛评论数据,数据质量很差,感觉用这个就错得一塌糊涂,印象最不好的是以前做一个简单项目,结果在最关键的最后阶段,竟然显示证书到期,最后虽然解决了,但实在是对ICTCLASS的印象越来越差,最后就尝试其他的工具,试用了IKAnalyzer,很小,基本功能有,但附加功能好像较少,还有哈工大的分词系统,在线的,源码试用时好像要发邮件才能获得,嫌麻烦,呵呵,最后试用了AnsjSeg,项目在GitHub上,话说正逢GitHub被封还是怎么的,废了好一番功夫,最后总算用上了,感觉还不错,作者介绍的文档很详细,各种功能用起来很直接,虽然没有ICTCLASS看起来正式,但要得就是接地气,下面对相关的使用做一介绍:

        AnsjSeg,得名于作者的主页ansj,作者名字是sj,So,就得了这个名字。这个工具可以讲是ICTCLASS的Java实现,作者测试比原版速度快。AnsjSeg提供了四种分词调用的方式:基本分词(BaseAnalysis)、精准分词(ToAnalysis)、NLP分词(NlpAnalysis)、面向索引分词(IndexAnalysis)。


1. 基本分词方式,速度快;

官方示例:

List<Term> parse = BaseAnalysis.parse("让战士们过一个欢乐祥和的新春佳节。");
System.out.println(parse);

result:[让/v, 战士/n, 们/k, 过/ug, 一个/m, 欢乐/a, 祥和/a, 的/uj, 新春/t, 佳节/n, 。/w]

2. 精准分词方式兼顾精度与速度,比较均衡;

官方示例:

List<Term> parse = ToAnalysis.parse("让战士们过一个欢乐祥和的新春佳节。");    
System.out.println(parse);

3. NLP分词方式可是未登录词,但速度较慢;

官方示例:

List<Term> parse = NlpAnalysis.parse("洁面仪配合洁面深层清洁毛孔 清洁鼻孔面膜碎觉使劲挤才能出一点点皱纹 脸颊毛孔修复的看不见啦 草莓鼻历史遗留问题没辙 脸和脖子差不多颜色的皮肤才是健康的 长期使用安全健康的比同龄人显小五到十岁 28岁的妹子看看你们的鱼尾纹");
System.out.println(parse);

4. 面向索引方式适合用在在lucene等文本检索中用到。

官方示例:

List<Term> parse = IndexAnalysis.parse("主副食品");
System.out.println(parse);

result:[主副食品/n, 主副食, 副食, 副食品, 食品]


jar包中还有其他一些比较实用的功能,包括关键词提取、词性标注等,虽然感觉比较粗糙,但是还很实用。

AnsjSeg还可以设置用户词典与停用词。


AnsjSeg的官方GitHub地址是http://nlpchina.github.io/ansj_seg/,上面有较详细的说明。




目录
相关文章
|
5天前
|
算法 数据可视化 Java
Java中的性能调优技巧与工具推荐
Java中的性能调优技巧与工具推荐
|
2月前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
65 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
2月前
|
监控 Java 开发者
Java一分钟之-Java性能分析与调优:JProfiler, VisualVM等工具
【5月更文挑战第21天】本文介绍了Java性能优化的两个利器——JProfiler和VisualVM。JProfiler通过CPU Profiler、内存分析器和线程视图帮助解决过度CPU使用、内存泄漏和线程阻塞问题;VisualVM则聚焦于GC行为调整和类加载优化,以减少内存压力和提高应用性能。使用这些工具进行定期性能检查,是提升Java应用效率的关键。
46 0
|
2月前
|
Java
探索Java世界的奇妙工具——运算符与表达式运算符
探索Java世界的奇妙工具——运算符与表达式运算符
17 0
|
7天前
|
JavaScript Java BI
BMapTileCutter(Java切图工具)
BMapTileCutter(Java切图工具)
18 7
|
7天前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
20 3
|
11天前
|
存储 安全 Java
Java集合类是Java编程语言中用于存储和操作一组对象的工具
【6月更文挑战第19天】Java集合类,如`List`、`Set`、`Map`在`java.util`包中,提供高级数据结构。常用实现包括`ArrayList`(快速随机访问)、`LinkedList`(高效插入删除)、`HashSet`(无序不重复)、`TreeSet`(排序)、`HashMap`(键值对)和`TreeMap`(排序映射)。集合动态调整大小,支持对象引用,部分保证顺序。选择合适集合优化性能和数据组织。
14 1
|
2月前
|
存储 Java 数据库连接
从 0 实现一个文件搜索工具 (Java 项目)
从 0 实现一个文件搜索工具 (Java 项目)
56 17
|
2天前
|
缓存 NoSQL Java
Redis系列学习文章分享---第四篇(Redis快速入门之Java客户端--商户查询缓存+更新+双写一致+穿透+雪崩+击穿+工具封装)
Redis系列学习文章分享---第四篇(Redis快速入门之Java客户端--商户查询缓存+更新+双写一致+穿透+雪崩+击穿+工具封装)
6 0
|
4天前
|
数据采集 Java API
Java HTTP客户端工具的演变之路
Java HTTP客户端工具的演变之路