本文转载至:https://blog.csdn.net/bitcarmanlee/article/details/53607776

最近的项目需要使用到分词技术。本着不重复造轮子的原则,使用了ansj_seg来进行分词。本文结合博主使用经过,教大家用最快的速度上手使用ansj分词。

1.给ansj来个硬广

项目的github地址:https://github.com/NLPchina/ansj_seg 
项目的文档地址:http://nlpchina.github.io/ansj_seg/ 
首先必须感谢作者给我们提供这么好用的开源工具。

2.配置maven

在maven项目的pom中配置ansj的dependency:

  1. <dependency>
  2. <groupId>org.ansj</groupId>
  3. <artifactId>ansj_seg</artifactId>
  4. <version>3.7.3-SNAPSHOT</version>
  5. </dependency>

3.使用实例

先不说那么多的理论,直接上可以run起来的代码。毕竟在工作过程中,解决问题是第一位的。只有解决完问题以后,我们才有功夫来慢慢研究其中的门道。 
对于分词来说,最重要的任务无非就是拿到切分以后的结果(词)。直接看代码:

  1. import org.ansj.domain.Result;
  2. import org.ansj.domain.Term;
  3. import org.ansj.splitWord.analysis.ToAnalysis;
  4. import java.util.*;
  5. /**
  6. * Created by WangLei on 16-12-9.
  7. */
  8. public class AnsjTest {
  9. public static void test() {
  10. //只关注这些词性的词
  11. Set<String> expectedNature = new HashSet<String>() {{
  12. add("n");add("v");add("vd");add("vn");add("vf");
  13. add("vx");add("vi");add("vl");add("vg");
  14. add("nt");add("nz");add("nw");add("nl");
  15. add("ng");add("userDefine");add("wh");
  16. }};
  17. String str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!" ;
  18. Result result = ToAnalysis.parse(str); //分词结果的一个封装,主要是一个List<Term>的terms
  19. System.out.println(result.getTerms());
  20. List<Term> terms = result.getTerms(); //拿到terms
  21. System.out.println(terms.size());
  22. for(int i=0; i<terms.size(); i++) {
  23. String word = terms.get(i).getName(); //拿到词
  24. String natureStr = terms.get(i).getNatureStr(); //拿到词性
  25. if(expectedNature.contains(natureStr)) {
  26. System.out.println(word + ":" + natureStr);
  27. }
  28. }
  29. }
  30. public static void main(String[] args) {
  31. test();
  32. }
  33. }

将代码run起来:

  1. 欢迎/v, 使用/v, ansj/en, _, seg/en, ,, (, ansj/en, 中文/nz, 分词/n, ), 在/p, 这里/r, 如果/c, 你/r, 遇到/v, 什么/r, 问题/n, 都/d, 可以/v, 联系/v, 我/r, ./m, 我/r, 一定/d, 尽/v, 我/r, 所/u, 能/v, ./m, 帮助/v, 大家/r, ./m, ansj/en, _, seg/en, 更/d, 快/a, ,, 更/d, 准/a, ,, 更/d, 自由/a, !]
  2. 45
  3. 欢迎:v
  4. 使用:v
  5. 中文:nz
  6. 分词:n
  7. 遇到:v
  8. 问题:n
  9. 可以:v
  10. 联系:v
  11. 尽:v
  12. 能:v
  13. 帮助:v

上面的代码就拿到了我们想要的分词结果!

4.词性

在作者的文档中,详细标明了相关词性:

  1. # 1. 名词 (1个一类,7个二类,5个三类)
  2. 名词分为以下子类:
  3. n 名词
  4. nr 人名
  5. nr1 汉语姓氏
  6. nr2 汉语名字
  7. nrj 日语人名
  8. nrf 音译人名
  9. ns 地名
  10. nsf 音译地名
  11. nt 机构团体名
  12. nz 其它专名
  13. nl 名词性惯用语
  14. ng 名词性语素
  15. nw 新词
  16. # 2. 时间词(1个一类,1个二类)
  17. t 时间词
  18. tg 时间词性语素
  19. # 3. 处所词(1个一类)
  20. s 处所词
  21. # 4. 方位词(1个一类)
  22. f 方位词
  23. # 5. 动词(1个一类,9个二类)
  24. v 动词
  25. vd 副动词
  26. vn 名动词
  27. vshi 动词“是”
  28. vyou 动词“有”
  29. vf 趋向动词
  30. vx 形式动词
  31. vi 不及物动词(内动词)
  32. vl 动词性惯用语
  33. vg 动词性语素
  34. # 6. 形容词(1个一类,4个二类)
  35. a 形容词
  36. ad 副形词
  37. an 名形词
  38. ag 形容词性语素
  39. al 形容词性惯用语
  40. # 7. 区别词(1个一类,2个二类)
  41. b 区别词
  42. bl 区别词性惯用语
  43. # 8. 状态词(1个一类)
  44. z 状态词
  45. # 9. 代词(1个一类,4个二类,6个三类)
  46. r 代词
  47. rr 人称代词
  48. rz 指示代词
  49. rzt 时间指示代词
  50. rzs 处所指示代词
  51. rzv 谓词性指示代词
  52. ry 疑问代词
  53. ryt 时间疑问代词
  54. rys 处所疑问代词
  55. ryv 谓词性疑问代词
  56. rg 代词性语素
  57. # 10. 数词(1个一类,1个二类)
  58. m 数词
  59. mq 数量词
  60. # 11. 量词(1个一类,2个二类)
  61. q 量词
  62. qv 动量词
  63. qt 时量词
  64. # 12. 副词(1个一类)
  65. d 副词
  66. # 13. 介词(1个一类,2个二类)
  67. p 介词
  68. pba 介词“把”
  69. pbei 介词“被”
  70. # 14. 连词(1个一类,1个二类)
  71. c 连词
  72. cc 并列连词
  73. # 15. 助词(1个一类,15个二类)
  74. u 助词
  75. uzhe
  76. ule
  77. uguo
  78. ude1
  79. ude2
  80. ude3
  81. usuo
  82. udeng 等等 云云
  83. uyy 一样 一般 似的
  84. udh 的话
  85. uls 来讲 来说 而言 说来
  86. uzhi
  87. ulian (“连小学生都会”)
  88. # 16. 叹词(1个一类)
  89. e 叹词
  90. # 17. 语气词(1个一类)
  91. y 语气词(delete yg)
  92. # 18. 拟声词(1个一类)
  93. o 拟声词
  94. # 19. 前缀(1个一类)
  95. h 前缀
  96. # 20. 后缀(1个一类)
  97. k 后缀
  98. # 21. 字符串(1个一类,2个二类)
  99. x 字符串
  100. xx 非语素字
  101. xu 网址URL
  102. # 22. 标点符号(1个一类,16个二类)
  103. w 标点符号
  104. wkz 左括号,全角:( 〖〈 半角:( [ { <
  105. wky 右括号,全角:) 半角: ) ] { >
  106. wyz 左引号,全角:“
  107. wyy 右引号,全角:”
  108. wj 句号,全角:。
  109. ww 问号,全角:? 半角:?
  110. wt 叹号,全角:! 半角:!
  111. wd 逗号,全角:, 半角:,
  112. wf 分号,全角:; 半角: ;
  113. wn 顿号,全角:、
  114. wm 冒号,全角:: 半角: :
  115. ws 省略号,全角:……
  116. wp 破折号,全角:—— -- ——- 半角:--- ----
  117. wb 百分号千分号,全角:% 半角:%
  118. wh 单位符号,全角:¥ ° 半角:$

ansj分词的更多相关文章

  1. 在Solr中配置和使用ansj分词

    在上一节[编译Ansj之Solr插件]中介绍如何编译ansj分词在solr(lucene)环境中使用的接口,本章将介绍如何在solr中使用ansj,其步骤主要包括:下载或者编译ansj和nlp-lan ...

  2. Ansj分词双数组Trie树实现与arrays.dic词典格式

    http://www.hankcs.com/nlp/ansj-word-pairs-array-tire-tree-achieved-with-arrays-dic-dictionary-format ...

  3. elasticsearch安装ansj分词器

    1.概述    elasticsearch用于搜索引擎,需要设置一些分词器来优化索引.常用的有ik_max_word: 会将文本做最细粒度的拆分.ik_smart: 会做最粗粒度的拆分.ansj等. ...

  4. ansj分词史上最详细教程

    最近的项目需要使用到分词技术.本着不重复造轮子的原则,使用了ansj_seg来进行分词.本文结合博主使用经过,教大家用最快的速度上手使用ansj分词. 1.给ansj来个硬广 项目的github地址: ...

  5. elasticsearch使用ansj分词器

    目前elasticsearch的版本已经更新到7.0以上了,不过由于客户需要5.2.2版本的elasticsearch,所以还是需要安装的,并且安装上ansj分词器.在部署ES的时候,采用容器的方式进 ...

  6. ansj分词器使用记录

    //最简单实例 String ruiec = “分词测试123456100名”; //剔除指定的分词 s.insertStopWords("100名"); //剔除标点符号(w) ...

  7. ansj分词原理

    ansj第一步会进行原子切分和全切分,并且是在同时进行的.所谓原子,是指短句中不可分割的最小语素单位.例如,一个汉字就是一个原子.全切分,就是把一句话中的所有词都找出来,只要是字典中有的就找出来.例如 ...

  8. 安装ansj分词器

    项目地址:https://github.com/4onni/elasticsearch-analysis-ansj https://github.com/laigood/elasticsearch-a ...

  9. Ansj分词的使用

    jar包下载地址:http://download.csdn.net/download/jj12345jj198999/6020541 博客地址:http://blog.csdn.net/a822631 ...

随机推荐

  1. java中的构造器

    构造器是什么 1.构造器,也称构造方法.构造函数.作用是构造出来一个类的实例,确保对象得到初始化. 2.构造器的格式: 权限修饰符 类名(无参/有参){}. 3.根据有无参数,可分为无参构造 和有参构 ...

  2. express中cookie的使用

    一.Cookie 简介● cookie 是存储于访问者的计算机中的变量.可以让我们用同一个浏览器访问同一个域名的时候共享数据.● HTTP 是无状态协议.简单地说,当你浏览了一个页面,然后转到同一个网 ...

  3. SQLAlchemy 增删改查 一对多 多对多

    1.创建数据表 # ORM中的数据表是什么呢? # Object Relation Mapping # Object - Table 通过 Object 去操纵数据表 # 从而引出了我们的第一步创建数 ...

  4. python学习之旅(入门)

    一.list 有序集合 1.list 有序集合  L = [95.5, 85, 59]  如L[1] = 85 ,L[-1] = 59  和php中array一个意思  用[] 表示就可以了 2.新增 ...

  5. 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)

    项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没 ...

  6. CentOS7.X怎样更新yum源

    1. 备份原来的yum源 $sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo-backup 2.设 ...

  7. linux如何查看所有的用户和组信息?

    cat /etc/passwd cat /etc/passwd查看所有的用户信息,详情如下图   [步骤二]cat /etc/passwd|grep 用户名 cat /etc/passwd|grep ...

  8. 【笔记】Rancher2.1容器云平台新特性

    2018年10月6日,Rancher2.1版本正式发布.相比Rancher2.0版本,提供了许多新的特性: 1.支持集群和项目级别的硬件资源配额管理:2.支持3个节点的Rancher Server的管 ...

  9. android手机短信获取

    关于Android中对短信的一些相关操.我看到一个文章下面我就从标题中的三个方面来对Android系统中的短信操作进行一个简单地学习. 短信发送: 由于Android中对短信发送方法的优良封装,之后对 ...

  10. js转盘大抽奖 自定义概率

    公司项目搞优惠活动,让做一个转盘抽奖的活动,转盘抽奖让他转起来 按照概率停止其实都麻烦,但是概率如果设置在前端就会很大的安全漏洞,所以无论为了安全性还是后期的维护问题都要把概率写到后台配置里然后读取配 ...