ICTCLAS2011中文分词在java的web项目中的使用
本文包括(myeclipse与tomcat的整合过程、配置该中文分词到web项目运行过程)
2011版附件下载:http://download.csdn.net/detail/caimo/7012941
由于ICTCLAS4版本出现split错误:
java.lang.ArrayIndexOutOfBoundsException:-1
at SegResult segResult = segTag.split(s);
at String classifyContent2 =ansmine.AbstracttoString(question, segTag);
…
因为在纯java环境完全可以运行,而放在myeclipse的web项目下面进行tomcat部署却各种错误,在修改ICTCLAS源文件的各种小bug之后还是如此。于是想到了可能是字符编码导致的字符分割异常, 最终想到了ICTCLAS4只支持GB2312编码。而web项目是UTF-8格式的,并且,网站项目用了MYSQL,这个中文不乱码,也用了utf-8,不可能全部改为GB2312,于是,在ICTCLAS官方网站上(http://ictclas.org/ictclas_download.aspx)找到了ICTCLAS2011版(官网下载:ICTCLAS2011_Windows_32_jni),该版本支持utf-8编码。
但是这个版本已经不完全是代码,已经封装成了JNI调用了。
初探ICTCLAS2011
解压下载的ICTCLAS2011.rar得到以下目录
其中API就是ICTCLAS分词调用库。
下面sample目录我们可以非常简单的知道这个API是如何调用的。
进入该目录,看到这个目录已经完全拷贝了那个API文件夹。可以看下readme.txt:
(一)windows下的JNI接口使用
1.安装jdk,设置JAVA环境变量 2.确定工程目录下有有效的授权文件user.lic 3.点击桌面开始->运行,键入cmd进入dos界面的命令行 4.进入到工程所在目录 >cd E:\Project\IctClas_jni_demo >e: 6.编译 javac TestMain.java 7.执行 java TestMain
|
安装好java,并设置好环境变量,其实就可以用javac编译TestMain.java,然后就可以运行TestMain了,结果是:
我们看到下面一行已经分好了词。
并且查看test_result.txt和testing_result.txt可以看到也已经根据test.txt分好词了。
注意到导入了用户词典userdict.txt之后分词结果已经受到影响。
研究一下TestMain.java就可以在自己的项目中运用了。下面TestMain.java:
import ICTCLAS.I3S.AC.ICTCLAS50; import java.util.*; import java.io.*; |
导入了ICTCLAS分词库。
注意到里面的2个函数,一个是对字符串处理然后得到分词后的字符串testICTCLAS_ParagraphProcess,一个是对文件输入输出testICTCLAS_FileProcess。本人用了第一个函数来处理分词。那么就看一下如何在web中调用吧。
在web项目中使用ICTCLAS中文分词

在myeclipse中创建web项目为QAsystem,那么将ICTCLAS的API目录中的ICTCLAS文件夹拷贝到src目录下(ctrl+v粘贴到工程src即可),然后把DATA和其他的文件放到根目录下面即可。 下面在com.gzqa.server包下建一个servlet,然后修改webroot\webinf下的web.xml,配置好servlet。 再新建一个Test.java, import ICTCLAS.I3S.AC.ICTCLAS50; 然后把ICTCLAS自带的testMain.java中的一个字符串处理函数ParagraphProcess放到test.java中作为成员函数。 然后在servlet中调用该类的方法,就可以通过tomcat的环境运行中文分词程序了。 (其实不做servlet的话,ICTCLAS自带的testMain.java就可以拿来用了。这里是为了在tomcat下运行,因为之前本人一直搞不清楚到底ICTCLAS自带的那些DATA和ICTCLASS50.DLL等等文件放在哪里,经过测试,图左2和3所有文件,只能放在TOMCAT7.0的bin目录下) |
更重要的是,把2DATA和3其他文件放到tomcat的bin目录下。
然后在myeclipse中设置tomcat的目录。
为什么要在myeclipse中配置?(如果自己拷贝到tomcat的webapps下,也是可以的。那么你编译项目后,又要重新拷贝项目的webroot里的所有文件,所以在没有完全成功的情况下,在myeclipse下运行会对修改比较方便)。
在弹出的对话框中,双击tomcat7.x即可运行web项目。