首页 > 其他 > 详细

分词工具ICTCLAS5.0使用心得

时间:2014-02-21 01:42:37      阅读:411      评论:0      收藏: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()函数的相应位置。

文件路径有四条语句需要修改:

bubuko.com,布布扣
//输入文件名
            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, 0, 1, Outputfilenameb);

            int nCount = 0;
            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, 0);//导入用户字典,返回导入用户词语个数
            System.out.println("导入用户词个数" + nCount);
            nCount = 0;

            String Outputfilename1 = "e:/pos/testing_result.txt";
            byte[] Outputfilenameb1 = Outputfilename1.getBytes();//将文件名string类型转为byte类型
bubuko.com,布布扣

 

按照自己的要求修改结束就可以运行出自己想要的结果了。

最后一个问题:每种词性标记集中词性代表的含义不太清楚,不废话,继续我的寻表之路。。。。

分词工具ICTCLAS5.0使用心得

原文:http://www.cnblogs.com/zidiancao/p/3557971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!