ictclas4j 分词工具包 安装流程

首先把 ictclasj解压缩,然后

1.把 Data文件夹整个拷贝到 Eclipse项目的文件夹下,

2.而 bin目录下的 org文件夹整个拷贝到你 Eclipse项目的 bin目录下,(将class文件存进去)

3.把src目录下的org文件夹整个拷贝到 Eclipse项目 的src目录下。

4.把目录中commons-lang-2.4.jar 加到项目中(右键新建folder--设置名字为LIB--直接复制jar到此文件夹--点击此jar-右键-buidpath-add 点击即可)

3.测试分词结果

Java代码

import org.ictclas4j.bean.SegResult;   

import org.ictclas4j.segment.SegTag;   

public class TextSegmentation {   

public static void main(String[] args) {   

String fileContent = "中国科学院计算技术研究所在多年研究基础上," +   "耗时一年研制出了ICTCLAS汉语词法分析系统";  

SegTag segTag = new SegTag(1);// 分词路径的数目           

SegResult segResult = segTag.split(fileContent.trim());   

String classifyContent = segResult.getFinalResult();

System.out.println("分词结果 "+classifyContent);

}

}  

就是这样,我们可以得到输出的结果,并且带有词性的标注。

Java代码

分词结果   

中国科学院/n 计算/n 技术/n 研究所/n 在/c 多年/m 研究/n 基础/a 上/f ,/w 耗时/v 一/d 年/a 研制/v 出/q 了/u ICTCLAS/nx 汉语/n 词法/n 分析/v 系统/a   

分词结果

中国科学院/n 计算/n 技术/n 研究所/n 在/c 多年/m 研究/n 基础/a 上/f ,/w 耗时/v 一/d 年/a 研制/v 出/q 了/u ICTCLAS/nx 汉语/n 词法/n 分析/v 系统/a

 

三、关于可能出现的错误  

    1.越界错误

在Dictionary.java里面的getMaxMatch()函数里要注意加上对wis的判断语句

if(wis != null)

 否则有时会报出越界错误

2.关于第三点越界的问题之前的博主没有注意到

在Dictionary.Java的findInModifyTable方法中有这么一段:

if (mts != null && mts.size() > index) {
            
            ArrayList<WordItem> wis = mts.get(index).getWords();
.....

}

此处需要对index进行负数的判断,应改为

if (mts != null && mts.size() > index) {
         
            if(index < 0)
                return result;
            
            ArrayList<WordItem> wis = mts.get(index).getWords();
........

}

在对大文件进行中文分词时,出现了以下的错误信息

java.lang.ArrayIndexOutOfBoundsException: -39
       at java.util.ArrayList.get(ArrayList.java:324)
       at org.ictclas4j.bean.Dictionary.findInOriginalTable(Dictionary.java:
422)
       at org.ictclas4j.bean.Dictionary.getFreq(Dictionary.java:632)
       at org.ictclas4j.segment.GraphGenerate.biGenerate(GraphGenerate.java:
170)
       at org.ictclas4j.segment.Segment.split(Segment.java:81)
       at com.ictclas4j.test.MyTest.main(MyTest.java:19)
 

经过上网查询资料以及阅读相关源代码,找到可能的出错原因:

分词过程中出现了未能识别的字,如繁体字等

改错方法:在Dictionary.java文件中找到findInOriginalTable()方法,将其中的

 
  1. if (res != null && wts != null) {  


修改为

  if (res != null && wts != null &&index>=0 &&index<wts.size()) {  


即可。

 

原文地址:https://www.cnblogs.com/lifegoesonitself/p/3214015.html