当前位置: 首页 > 工具软件 > ICTCLAS4J > 使用案例 >

ictclas4j java_ictclas4j 分词工具包 安装流程

许胡非
2023-12-01

首先把 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("分词结果\n"+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 wis =mts.get(index).getWords();

.....

}

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

if (mts != null && mts.size() >index) {if(index < 0)returnresult;

ArrayList wis =mts.get(index).getWords();

........

}

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

java.lang.ArrayIndexOutOfBoundsException: -39at 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()方法,将其中的

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

修改为

if (res != null && wts != null &&index>=0 &&index

即可。

 类似资料: