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

将代码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. 史上最详细的Android Studio系列教程一--下载和安装

    链接地址:http://segmentfault.com/a/1190000002401964#articleHeader4 原文链接:http://stormzhang.com/devtools/2 ...

  2. 史上最详细mac安装Qt教程

    史上最详细mac安装Qt教程,小白看过来! 这是一篇非常适合Qt入门小白的的安装Qt教程,因为这学期我们小组的一个关于高速救援的项目要用到Qt与web进行交互式展现相关的图像,由于没有MSVC这个插件 ...

  3. 史上最详细“截图”搭建Hexo博客并部署到Github

    http://jingyan.baidu.com/article/d8072ac47aca0fec95cefd2d.html 大家也搭建过博客,很多时候,按着教程来做就可以了,但是我当时为了搭建Hex ...

  4. 史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用

    史上最详细Windows版本搭建安装React Native环境配置   2016/01/29 |  React Native技术文章 |  Sky丶清|  95条评论 |  33530 views ...

  5. 史上最详细“截图”搭建Hexo博客——For Windows

    http://angelen.me/2015/01/23/2015-01-23-%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86%E2%80%9C%E6%88 ...

  6. 测试思想-测试设计 史上最详细测试用例设计实践总结 Part2

    史上最详细测试用例设计实践总结 by:授客 QQ:1033553122 -------------------------接 Part1-------------------------- 方法:这里 ...

  7. 史上最详细的C语言和Python的插入排序算法

    史上最详细的C语言和Python的插入排序算法插入排序原理:所谓插入排序,就像我们在打牌(斗地主)时,整理我们自己手中自己的牌一样,就像是2,1,3,9,J,K,5,4,这四张牌.我们要把它其中的几张 ...

  8. 转 史上最详细的Hadoop环境搭建

    GitChat 作者:鸣宇淳 原文:史上最详细的Hadoop环境搭建 关注公众号:GitChat 技术杂谈,一本正经的讲技术 [不要错过文末活动哦] 前言 Hadoop在大数据技术体系中的地位至关重要 ...

  9. 史上最详细的XGBoost实战

    史上最详细的XGBoost实战 0. 环境介绍 Python 版 本: 3.6.2 操作系统 : Windows 集成开发环境: PyCharm 1. 安装Python环境 安装Python 首先,我 ...

随机推荐

  1. centos 6.5 安装mysql

    步骤1: yum -y install mysql-server 步骤2: chkconfig mysqld on 步骤3: service mysqld start mysql -u root se ...

  2. 使用ntpdate校正linux系统的时间

    当Linux服务器的时间不对的时候,可以使用ntpdate工具来校正时间. 安装:yum install ntpdate ntpdate简单用法: # ntpdate ip # ntpdate 210 ...

  3. 记一次web服务模块开发过程

    一.前言 之前在分析WCS系统的过程中,也赶上要开发其中的一个模块,用于和AGV系统对接完成一些取货.配盘等任务:在这里将这次模块开发的全过程记录一下,以便自己以后开发时能够更加快速的明白流程. 二. ...

  4. DIV+CSS实战(二)

    一.说明 在DIV+CSS实战(一)中,已经把框架搭建起来了,现在就需要往框架里面添加内容了.需要实现的内容如下图: 二.头部的设计(全媒体订阅) 左侧是一张图片+标题 ,右侧是登录名 和上次登录的时 ...

  5. ansible-playbook api 2.0 直接运行

    官方文档见  http://docs.ansible.com/ansible/dev_guide/developing_api.html 拿官方的例子修改如下 import json from col ...

  6. Redis Cluster原理初步

    目录 目录 1 1. 前言 1 2. 槽(slots) 1 3. 路由配置(node.conf) 1 4. 总slots数(cluster.h:16384) 2 5. key的路由 2 6. 将key ...

  7. Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版

    Dreamweaver杀手!Illustrator终结者?Flash的末日?图形图像设计程序之网页版 阅读:  评论:  作者:Rybby  日期:  来源:rybby.com Adobe 家的 Il ...

  8. Python学习-27.Python中的列表(list)

    列表已经用了很多次了.使用中括号包含元素. list = ['a','b','c'] 获取元素使用[]. print(list[0]) 输出a 不过值得注意的是,[]只能是0到元素个数-1吗?在Pyt ...

  9. Microsoft SQL Server 2012 管理 (2): Auditing

    -- Demostratin 2A (Using SQL Server Audit) -- Step 1: Use the master database USE master; GO -- Step ...

  10. Spring Boot 应用系列 5 -- Spring Boot 2 整合logback

    上一篇我们梳理了Spring Boot 2 整合log4j2的配置过程,其中讲到了Spring Boot 2原装适配logback,并且在非异步环境下logback和log4j2的性能差别不大,所以对 ...