学习使用Ansj分词工具(一)

Ansj简介

ansj对文件读取分词每秒钟大约30万字,准确率能达到96%以上。

ansj第一步会进行原子切分和全切分,并且是在同时进行的。所谓原子,是指短句中不可分割的最小语素单位。例如,一个汉字就是一个原子。全切分,就是把一句话中的所有词都找出来,只要是字典中有的就找出来。例如,“提高中国人生活水平”包含的词有:提高、高中、中国、国人、人生、生活、活水、水平。接着以“提高中国人生活水平”为例。

Ansj有四种调用方式:

基本就是保证了最基本的分词.词语颗粒度最非常小的..所涉及到的词大约是10万左右.

基本分词速度非常快.在macAir上.能到每秒300w字每秒.同时准确率也很高.但是对于新词他的功能十分有限

基本分词所具有的功能:

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

结果是:

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

精准分词是比较推荐的。它在易用性,稳定性.准确性.以及分词效率上.都取得了一个不错的平衡.

如果你初次赏识Ansj如果你想开箱即用.那么就用这个分词方式是不会错的.

精准分词所具有的功能:

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

结果如下:

nlp分词是总能给你惊喜的一种分词方式.

它可以识别出未登录词.但是它也有它的缺点.速度比较慢.稳定性差.ps:我这里说的慢仅仅是和自己的其他方式比较.应该是40w字每秒的速度吧.

个人觉得nlp的适用方式.1.语法实体名抽取.未登录词整理.只要是对文本进行发现分析等工作

nlp分词具有的功能

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

结果是:

[洁面仪/nw, 配合/v, 洁面/nw, 深层/b, 清洁/a, 毛孔/n, , 清洁/a, 鼻孔/n, 面膜/n, 碎觉/nw, 使劲/v, 挤/v, 才/d, 能/v, 出/v, 一点点/m, 皱纹/n, , 脸颊/n, 毛孔/n, 修复/v, 的/uj, 看不见/v, 啦/y, , 草莓/n, 鼻/ng, 历史/n, 遗留问题/nz, 没辙/v, , 脸/n, 和/c, 脖子/n, 差不多/l, 颜色/n, 的/uj, 皮肤/n, 才/d, 是/v, 健康/a, 的/uj, , 长期/d, 使用/v, 安全/an, 健康/a, 的/uj, 比/p, 同龄人/n, 显/v, 小/a, 五/m, 到/v, 十岁/m, , 28岁/m, 的/uj, 妹子/n, 看看/v, 你们/r, 的/uj, 鱼尾纹/n]

面向索引的分词。故名思议就是适合在lucene等文本检索中用到的分词。 主要考虑以下两点

  • 召回率
    • 召回率是对分词结果尽可能的涵盖。比如对“上海虹桥机场南路” 召回结果是[上海/ns, 上海虹桥机场/nt, 虹桥/ns, 虹桥机场/nz, 机场/n, 南路/nr]
  • 准确率
    • 其实这和召回本身是具有一定矛盾性的Ansj的强大之处是很巧妙的避开了这两个的冲突 。比如我们常见的歧义句“旅游和服务”->对于一般保证召回 。大家会给出的结果是“旅游 和服 服务” 对于ansj不存在跨term的分词。意思就是。召回的词只是针对精准分词之后的结果的一个细分。比较好的解决了这个问题

所具有的功能:

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

结果是:

[主副食品/n, 主副食, 副食, 副食品, 食品]
发布了34 篇原创文章 · 获赞 45 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/one_super_dreamer/article/details/99630826
今日推荐