分词工具ICTCLAS5.0使用心得
接触自然语言处理有一年多了,最基本的一些自然是分词,词性标注,命名实体识别之类的知识,有些应用知道原理是一回事,自己动手做起来又是另外一回事了。最近又开始重操旧业:分词。分词最著名的自然就是中科院的分词系统,这几天接触的ICTCLAS5.0(下载的文件夹名称是:ICTCLAS50_Windows_32_JNI)觉得不错,摸索下,记录下心得和收获。
<一>.使用
http://blog.csdn.net/wangxiafghj/article/details/8147926,我是按照这篇博客的教程操作的,基本没什么问题,可以运行。
收获:
1.TestMain.java文件中就是由两个函数构成,字面理解,一个是处理段落的,一个是处理文本的。我觉得两者没什么大区别,主要的不同是处理段落的函数testICTCLAS_ParagraphProcess(sInput),输入的段落在程序里修改,输出的结果也是直接显示在控制端。处理文本的函数testICTCLAS_FileProcess(),输入是你指定路径下的指定文件,输出也是指定路径下的指定文件。
2.参数的修改,我觉得我使用过程中涉及到的参数修改包括是否选择标注词性,词性标记集的设置,以及文件的路径。
是否标注词性很容易,段落中将ICTCLAS_ParagraphProcess函数最后一个参数改为1即可(1 yes ,0 no);文本中将ICTCLAS_FileProcess函数的第三个参数改为1(1 yes ,0 no)。
程序中词性标记集的设置只写了一次,在函数testICTCLAS_ParagraphProcess(sInput)内部,
//设置词性标注集(0 计算所二级标注集,1 计算所一级标注集,2 北大二级标注集,3 北大一级标注集)
			testICTCLAS50.ICTCLAS_SetPOSmap(0);
我觉得这个语句在testICTCLAS_FileProcess()函数中应该再写一次,假如使用者只使用文本形式的而把段落处理的注释掉了,那词性标记集的设置岂不是很麻烦,建议把这句添加到testICTCLAS_FileProcess()函数的相应位置。
文件路径有四条语句需要修改:
//输入文件名
String Inputfilename = "e:/pos/test.txt";
byte[] Inputfilenameb = Inputfilename.getBytes();//将文件名string类型转为byte类型 //分词处理后输出文件名
String Outputfilename = "e:/pos/test_result.txt";
byte[] Outputfilenameb = Outputfilename.getBytes();//将文件名string类型转为byte类型 //文件分词(第一个参数为输入文件的名,第二个参数为文件编码类型,第三个参数为是否标记词性集1 yes,0 no,第四个参数为输出文件名)
testICTCLAS50.ICTCLAS_FileProcess(Inputfilenameb, , , Outputfilenameb); int nCount = ;
String usrdir = "e:/pos/userdict.txt"; //用户字典路径
byte[] usrdirb = usrdir.getBytes();//将string转化为byte类型
//第一个参数为用户字典路径,第二个参数为用户字典的编码类型(0:type unknown;1:ASCII码;2:GB2312,GBK,GB10380;3:UTF-8;4:BIG5)
nCount = testICTCLAS50.ICTCLAS_ImportUserDictFile(usrdirb, );//导入用户字典,返回导入用户词语个数
System.out.println("导入用户词个数" + nCount);
nCount = ; String Outputfilename1 = "e:/pos/testing_result.txt";
byte[] Outputfilenameb1 = Outputfilename1.getBytes();//将文件名string类型转为byte类型
按照自己的要求修改结束就可以运行出自己想要的结果了。
最后一个问题:每种词性标记集中词性代表的含义不太清楚,不废话,继续我的寻表之路。。。。
<二>.词性标注集
程序中提及的词性标注集有四种:0 计算所二级标注集,1 计算所一级标注集,2 北大二级标注集,3 北大一级标注集,但是每种标注集具体的词表还是不清楚,找到了两种标注集,中科院标注集和北大标注集。
中科院标记集
# 1. 名词 (1个一类,7个二类,5个三类)
名词分为以下子类:
n 名词 nr 人名 nr1 汉语姓氏 nr2 汉语名字
nrj 日语人名 nrf 音译人名 ns 地名 nsf 音译地名
nt 机构团体名 nz 其它专名 nl 名词性惯用语 ng 名词性语素
nw 新词
# 2. 时间词(1个一类,1个二类)
t 时间词 tg 时间词性语素
# 3. 处所词(1个一类)
s 处所词
# 4. 方位词(1个一类)
f 方位词
# 5. 动词(1个一类,9个二类)
v 动词 vd 副动词 vn 名动词 vshi 动词“是”
vyou 动词“有” vf 趋向动词 vx 形式动词 vi 不及物动词(内动词)
vl 动词性惯用语 vg 动词性语素
# 6. 形容词(1个一类,4个二类)
a 形容词 ad 副形词 an 名形词 ag 形容词性语素 al 形容词性惯用语
# 7. 区别词(1个一类,2个二类)
b 区别词 bl 区别词性惯用语
# 8. 状态词(1个一类)
z 状态词
# 9. 代词(1个一类,4个二类,6个三类)
r 代词 rr 人称代词 rz 指示代词 rzt 时间指示代词
rzs 处所指示代词 rzv 谓词性指示代词 ry 疑问代词 ryt 时间疑问代词
rys 处所疑问代词 ryv 谓词性疑问代词 rg 代词性语素
# 10. 数词(1个一类,1个二类)
m 数词 mq 数量词
# 11. 量词(1个一类,2个二类)
q 量词 qv 动量词 qt 时量词
# 12. 副词(1个一类)
d 副词
# 13. 介词(1个一类,2个二类)
p 介词 pba 介词“把” pbei 介词“被”
# 14. 连词(1个一类,1个二类)
c 连词 cc 并列连词
# 15. 助词(1个一类,15个二类)
u 助词 uzhe 着 ule 了 喽 uguo 过 ude1 的 底
ude2 地 ude3 得 usuo 所 udeng 等 等等 云云
uyy 一样 一般 似的 般 udh 的话 uls 来讲 来说 而言 说来
uzhi 之 ulian 连 (“连小学生都会”)
# 16. 叹词(1个一类)
e 叹词
# 17. 语气词(1个一类)
y 语气词(delete yg)
# 18. 拟声词(1个一类)
o 拟声词
# 19. 前缀(1个一类)
h 前缀
# 20. 后缀(1个一类)
k 后缀
# 21. 字符串(1个一类,2个二类)
x 字符串 xx 非语素字 xu 网址URL
# 22. 标点符号(1个一类,16个二类)
w 标点符号
wkz 左括号,全角:( 〔 [ { 《 【 〖〈 半角:( [ { <
wky 右括号,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
wyz 左引号,全角:“ ‘ 『 wyy 右引号,全角:” ’ 』
wj 句号,全角:。 ww 问号,全角:? 半角:? wt 叹号,全角:! 半角:!
wd 逗号,全角:, 半角:, wf 分号,全角:; 半角: ; wn 顿号,全角:、
wm 冒号,全角:: 半角: : ws 省略号,全角:…… …
wp 破折号,全角:—— -- ——- 半角:--- ----
wb 百分号千分号,全角:% ‰ 半角:%
wh 单位符号,全角:¥ $ £ ° ℃ 半角:$
北大标记集

还增加了一类词:un(未知词),表示不可识别词及用户自定义词组。取英文unknown前两个字母,参考CSW分词中的定义。
坑爹的是我分完的结果竟然都是un,肿么办,哭死!!
今天发现un出现的原因是因为添加了词典,只要是词典中添加的词,词性标注均为un,再想办法搞定这个大词条词性标注的问题吧。
找到的针对上一问题的解决方法了,就是在添加词典的时候将词典中词条的词性标记出来,这样就不会显示出来都是un了。
分词工具ICTCLAS5.0使用心得的更多相关文章
- 中文分词工具探析(二):Jieba
		1. 前言 Jieba是由fxsjy大神开源的一款中文分词工具,一款属于工业界的分词工具--模型易用简单.代码清晰可读,推荐有志学习NLP或Python的读一下源码.与采用分词模型Bigram + H ... 
- 中文分词工具探析(一):ICTCLAS (NLPIR)
		1. 前言 ICTCLAS是张华平在2000年推出的中文分词系统,于2009年更名为NLPIR.ICTCLAS是中文分词界元老级工具了,作者开放出了free版本的源代码(1.0整理版本在此). 作者在 ... 
- 开源中文分词工具探析(三):Ansj
		Ansj是由孙健(ansjsun)开源的一个中文分词器,为ICTLAS的Java版本,也采用了Bigram + HMM分词模型(可参考我之前写的文章):在Bigram分词的基础上,识别未登录词,以提高 ... 
- 开源中文分词工具探析(四):THULAC
		THULAC是一款相当不错的中文分词工具,准确率高.分词速度蛮快的:并且在工程上做了很多优化,比如:用DAT存储训练特征(压缩训练模型),加入了标点符号的特征(提高分词准确率)等. 1. 前言 THU ... 
- 开源中文分词工具探析(五):FNLP
		FNLP是由Fudan NLP实验室的邱锡鹏老师开源的一套Java写就的中文NLP工具包,提供诸如分词.词性标注.文本分类.依存句法分析等功能. [开源中文分词工具探析]系列: 中文分词工具探析(一) ... 
- 开源中文分词工具探析(五):Stanford CoreNLP
		CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger).命名实体识别(named entity recognizer ... 
- php分词工具scws
		分词工具 sphinx 支持php版本5.2.2~6.0因此选用scws 文档地址 http://www.xunsearch.com/scws/docs.php#instscws 简单的demo ... 
- 开源中文分词工具探析(七):LTP
		LTP是哈工大开源的一套中文语言处理系统,涵盖了基本功能:分词.词性标注.命名实体识别.依存句法分析.语义角色标注.语义依存分析等. [开源中文分词工具探析]系列: 开源中文分词工具探析(一):ICT ... 
- 开源中文分词工具探析(六):Stanford CoreNLP
		CoreNLP是由斯坦福大学开源的一套Java NLP工具,提供诸如:词性标注(part-of-speech (POS) tagger).命名实体识别(named entity recognizer ... 
随机推荐
- 【bzoj3218】 a + b Problem
			http://www.lydsy.com/JudgeOnline/problem.php?id=3218 (题目链接) 题意 给${n}$个格子涂白或黑色,白则${w_i}$,黑则${b_i}$的好看 ... 
- SSD硬盘的4K对齐
			4K对应4096 硬盘模式: 一.让SSD运行在AHCI模式下: AHCI,全称Advanced Host Controller Interface,即高级主机控制器接口,相比老旧的“IDE“ 虚拟模 ... 
- JAVA线程池的分析和使用
			1. 引言 合理利用线程池能够带来三个好处.第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗.第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立即执行.第三:提 ... 
- Beta版本——第六次冲刺博客
			我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ... 
- jQuery知识点总结(第五天)
			节点的操作和数据库操作一样,无非是增.删.改.查. 今天总结删除节点.复制节点.替换节点.与包裹节点 删除节点: 如果文档中一个元素多余,那么就需要删除掉.jQuery提供了三种删除节点的方法.分别是 ... 
- UVA11136Hoax or what( multiset的应用)
			题目链接 题意:n天,每天往一个箱子里放m个数,放完之后取最大的Max和最小的min做差,并把这两个数去掉,求n天之后的和 multiset 和 set的原理是相似的,multiset可以存多个相同的 ... 
- Linux学习之CentOS--CentOS6.下Mysql数据库的安装与配置
			跟着配置,顺利配置完成 http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 
- 机器学习实战------利用logistics回归预测病马死亡率
			大家好久不见,实战部分一直托更,很不好意思.本文实验数据与代码来自机器学习实战这本书,倾删. 一:前期代码准备 1.1数据预处理 还是一样,设置两个数组,前两个作为特征值,后一个作为标签.当然这是简单 ... 
- ORACLE ORA-01157: 无法标识/锁定数据文件
			create undo tablespace MOZI datafile 'E:\oracle\product\10.2.0\oradata\orcl\MOZI.DBF' size 2048M ext ... 
- Maven入门学习,安装及创建项目
			一.maven介绍: 1.maven是一个基于项目对象模型(POM Project Object Model),通过配置文件管理项目的工具(项目管理工具). 2.maven主要功能:发布项目(从编译到 ... 
