ICTCLAS50中文分词之配置

2014/6/5

首先中文分词这个事真的很难搞。

其实在整个项目中每次配置中文分词都会出现很多错误,一开始是在自己的机器小批量测试,等移植到服务器上时,发现会出现很多错误,以至于错误一样,解决方法不同。有点崩溃啊。。。

中文分词使用的地方:

输入查询框,生成分词的topics。

Configure.xml:配置管理文件

ICTCLAS50.dll:ICTCLAS5.0动态链接库

ICTCLAS50.h: ICTCLAS5.0头文件

ICTCLAS50.lib: ICTCLAS5.0 Library

libICTCLAS50.so: ICTCLAS5.0 Library

user.lic 用户License文件,表明用户身份,必不可少,不得更改。



配置:

ICTCLAS文件夹拷贝到src目录下,其它的文件夹和文件全部拷贝到工程目录下,包括:Data、Configure.xml、ICTCLAS_I3C_AC_ICTCLAS50.h、ICTCLAS50.dll、ICTCLAS.h、 ICTCLAS50.lib、libICTCLAS50.so、user.lic

参考:http://blog.csdn.net/heyu158/article/details/12680183 中科院分词ICTCLAS5.0_JNI 使用方法

http://blog.csdn.net/caimo/article/details/7686872ICTCLAS2011中文分词在java的web项目中的使用



将分词的配置文件都放在galagosearch-core目录下

handleSearch()函数为列表显示,q为查询框内容

SplitWord splitword=new SplitWord();

String displayQuery0=scrub(request.getParameter("q"));//分词前

String displayQuery = splitword.testICTCLAS_ParagraphProcess(displayQuery0);//分词后

SearchResult()为查询结果
配置错误:

1、Init Fail!

没有找到分词库,将Data放在根目录下

2、如果换个workspace的话,中文分词经常会出现错误,基本上都是路径的问题no ICTCLAS50 in java.library.path。即加载库文件和Data文件夹、用户授权文件user.lic的错误。

按照网上的方法更改ICTCLAS.I3S.AC.ICTCLAS50.java,把System.loadLibrary("ICTCLAS50")改为

System.load("E:/douban/workspaces/SocialBook2/ICTCLAS50.dll");

然后再修改测试类中的testICTCLAS_ParagraphProcess()方法的argus的值,告诉ICTCLAS,你改变了工程目录。

System.load("E:/douban/workspaces/SocialBook2/ICTCLAS50.dll");


如果再不成功,在根目录下新建文件夹config,将Data、Configure.xml等文件放在config中
System.load("E:/douban/workspaces/SocialBook2/ICTCLAS50.dll");
System.load("E:/douban/workspaces/SocialBook2/ICTCLAS50.dll");

参考:http://summerbell.iteye.com/blog/1258509Ubuntu下ICTCLAS JNI的使用

有时候,确实是还不成功,今天往服务器上测试的时候,提示这样的错误。

然后我就又重新配置了一下tomcat

Windows-preferences-tomcat把路径添加上去。发现tomcat没有temp文件,就手动新建了一个。

whereis tomcat7

/etc/tomcat7  /usr/share/tomcat7两个目录

接着又把分词需要的文件,除了ICTCLAS的其他七个全部都拷贝到tomcat/bin目录下。

又出错:libstdc++.so.6:connot open shared object file: No such file or directory。。。。ELF class之类的错误

apt-get install libstdc++5

然后运行成功。

3、Init Fail!

Cannot Open Configure file .\Configure.xml

是由于找不到.\Configure.xml文件,需要将配置文件根目录设置为new File("").getAbsolutePath()+"\\ICTCLASConf";。在初始化ICTCLAS_Init时,将new File("").getAbsolutePath()+"\\ICTCLASConf".getBytes("GB2312")作为参数传递就可以正确运行了。

在SplitWord类中初始化时

String argu=new File("").getAbsolutePath();还是提示错误Cannot Open Configure file

String argu = "/home/zzj/Workspaces/SocialBook2";(Configure.xml的目录)成功。

参考:http://gdhapple.blog.163.com/blog/static/12685791720122832029133/ 中科院分词ICTCLAS5.0 配置错误处理

4、调用galago显示结果到网页上时,就是一个完整的web项目,发现输入一次查询可出结果,等再输入查询时,分词就出错,分词内容为空。

调用的分词函数:testICTCLAS_ParagraphProcess(String sInput)

一开始因为有越界情况,所以把初始化放在了函数外面,但是这样会出现第二次以后的查询没有结果,就需要初始化,所以再把初始化移到函数内。

ICTCLAS50 testICTCLAS50 = new ICTCLAS50();

String argu = ".";

//初始化

if (testICTCLAS50.ICTCLAS_Init(argu.getBytes("GB2312")) == false)

{

System.out.println("Init Fail!");

return;

}

猜你喜欢

转载自420532394.iteye.com/blog/2151759