ictclas4j如何在eclipse中进行中文分词
来源:互联网 发布:360路由器访客网络 编辑:程序博客网 时间:2024/05/22 17:20
ICTCLAS是中科院计算所开发的中文分词程序包,在国内一直有着良好的口碑和很高的使用率。之前一直只有 C++的版本提供,而现在C#,Delphi和Java版本已经纷纷出炉。下面是java版的例子。纯Java版本的ICTCLAS(即ictclas4j),下载地址:http://pan.baidu.com/s/1jGGFXNS(这是0.9.1版的,官网经常打不开,这是我在百度云盘的分享)
(本人存储位置为E:\ylx\软件\ictclas4j_0.9.1)
1、解压缩ictclas4j
①把Data文件夹整个拷贝到Eclipse项目的文件夹下
注:需要将Data改为data,且将data目录下的BigramDict.dct改为bigramDict.dct,与代码中类Segment保持一致(不知源代码为何没改??)
public Segment(int segPathCount) {this.segPathCount = segPathCount;logger.info("Load coreDict ...");coreDict = new Dictionary("data\\coreDict.dct");logger.info("Load bigramDict ...");bigramDict = new Dictionary("data\\bigramDict.dct");logger.info("Load tagger dict ...");personTagger = new PosTagger(Utility.TAG_TYPE.TT_PERSON, "data\\nr", coreDict);transPersonTagger = new PosTagger(Utility.TAG_TYPE.TT_TRANS_PERSON, "data\\tr", coreDict);placeTagger = new PosTagger(Utility.TAG_TYPE.TT_TRANS_PERSON, "data\\ns", coreDict);lexTagger = new PosTagger(Utility.TAG_TYPE.TT_NORMAL, "data\\lexical", coreDict);logger.info("Load dict is over");}②把bin目录下的org文件夹整个拷贝到你Eclipse项目的bin目录下
③把src目录下的org文件夹整个拷贝到Eclipse项目的src目录下
④导入外部包commons-lang-2.0.jar、log4j-1.2.17.jar
2、测试小程序
import org.ictclas4j.bean.SegResult;import org.ictclas4j.segment.Segment;public class Test {public static void main(String[] args) throws Exception{ Segment st = new Segment(1); String line = "一块勤奋地漂亮的一块钱,/打造经济的航空母舰。ABCD.#$% Hello World!\n又一段文本123辆 !3.0"; SegResult sr = st.split(line); System.out.println(sr.getFinalResult()); } }在网上看到很多例子还是用SegTag这个类,现在已经用Segment代替了。
运行结果如下:
一块/s 勤奋/a 地/u 漂亮/a 的/u 一/m 块/q 钱/n ,/w //nx 打造/v 经济/n 的/u 航空母舰/n 。/w ABCD.#$%/nx Hello/nx World/nx !/w 又/d 一/m 段/q 文本/n 123/m 辆/q
分词的结果是一个长长的String类数据,用空格区分出每个词,每个词还用/后面的英文标号标出了词性。
值得注意的地方:
①原文中其实有两个“一块”,一处是“一块勤奋”,这里很正确的识别为了副词,而后面的“一块钱”中的“一块”也正确的识别为数量词。
②阿拉伯数字正确识别为数词,包括小数形式的“3.0”。而英文和乱七八糟符号(包括那个不可见的换行符,你找到它在哪了吗?)则都被划为一类——/nx!
③测试文本中还有两个叹号,一个是英文半角的!,一个是中文全角的!,两者也都被正确识别为标点符号,但英文的句号“.“就被认为是/nx啦。
④测试文本中的空格被完全忽略。3、遇到的问题:
①程序正常运行,但切分成了一个字一个字的
需要将java文件的编码格式设为gbk就ok了。
②有时会报错,应该是字符识别不了,报错如下:
Exception in thread "main" java.lang.NullPointerExceptionat org.ictclas4j.bean.Dictionary.getMaxMatch(Dictionary.java:571)打开../src/org/ictclas4j/bean中的Dictionary.java文件,修改getMaxMatch()函数,在
for (int j = 0; j < wis.size(); j++) {之前加上如下语句,判断为空条件:
if (wis == null) { return null; }ok,现在就遇到这些问题。
- ictclas4j如何在eclipse中进行中文分词
- ictclas4j进行中文分词
- 使用ictclas4j进行中文分词
- 使用ictclas4j进行中文分词(续)
- ictclas4j中文分词
- 使用ICTCLAS JAVA版(ictclas4j)进行中文分词
- 使用继续完善前人写的文章:使用ICTCLAS JAVA版(ictclas4j)进行中文分词
- 是先对搜索词进行中文分词呢?还是在搜索过程中进行中文分词?
- PHP如何进行中文分词?
- 在C++中调用Jieba进行中文分词
- 在eclipse中使用NLPIR(ICTCLAS)2013进行分词
- ictclas4j人名分词bug
- 如何在lucene中使用中文自动分词技术- -
- 如何在Elasticsearch中安装中文分词器(IK+pinyin)
- 如何在Elasticsearch中安装中文分词器(IK+pinyin)
- 中文分词语言处理HanPL配置,以及在eclipse中安装使用方式
- Nutch中如何实现中文分词功能
- Nutch中如何实现中文分词功能
- usb 插入、拔出、判断类型
- 编译安装 gcc 4.9并验证使用
- 对man手册的汉化命令
- 深入浅出K-Means算法
- 2015 NJUPT 春训第二场题解报告
- ictclas4j如何在eclipse中进行中文分词
- POJ - 1002 487-3279
- 快速排序
- Moore’s voting algorithm
- mmap内存映射
- c语言stdout,stdin,stderr缓冲问题
- mysql 一些语句的使用
- CSS3学习之路-----CSS3边框
- Jquery正则表达式公式.例子