标签归档:分词

中科院分词ICTCLAS5.0 配置错误处理

这个分词器调起来确实让人崩溃,今天想要把包名和dll文件换个路径,结果总是出现这样的问题:
Exception in thread “main” java.lang.UnsatisfiedLinkError: ictclas.NLPIR.NLPIR_Init([BI)Z

各种debug无果,后来发现包名改回kevin.zhang之后程序就好了。。大概是知识产权问题吧~下面转的是一个人总结的别的问题,希望大家少在调试工具上花费太多时间。
错误一:

配置路径如下:

运行ParagraphTest.java出现如下错误

Exception in thread “main” java.lang.UnsatisfiedLinkError: cn.yh.split.ICTCLAS50.ICTCLAS_Init([B)Z

at cn.yh.split.ICTCLAS50.ICTCLAS_Init(Native Method)

at cn.yh.split.Test.main(Test.java:19)

解决办法:

最开始尝试了很多方便,比如修改classpath,修改usr_path等,仍然会报错。后来将ICTCLAS50.java放在他给的例子里面有个包 ICTCLAS.I3S.AC下,结果运行正确。可能是开发ICTCLAS50为了保护版权考虑,如果不在package ICTCLAS.I3S.AC下就会报错。

错误二:

配置文件太多,包括Data和ICTCLAS50.dll等,我想把它放在一个特定的文件夹如ICTCLAS路径下。配置路径如下:

运行ParagraphTest.java出现如下错误

Exception in thread “main” java.lang.UnsatisfiedLinkError: no ICTCLAS50 in java.library.path

at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)

at java.lang.Runtime.loadLibrary0(Runtime.java:823)

at java.lang.System.loadLibrary(System.java:1030)

at ICTCLAS.I3S.AC.ICTCLAS50.<clinit>(ICTCLAS50.java:9)

at cn.yh.split.ParagraphTest.main(ParagraphTest.java:9)

解决办法:

很明显,这是由于java.library.path不正确,只需要将导入dll时使用load导入绝对路径即可。修改ICTCLAS50.java里面的System.loadLibrary(“ICTCLAS50”)为 System.load(new File(“”).getAbsolutePath()+”\\ICTCLASConf\\ICTCLAS50.dll”);

修改后运行又出现以下错误:

Init Fail!

Cannot Open Configure file .\Configure.xml

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

错误三:

若修改后运行仍然出现错误:

Init Fail!

刷新项目,发现根目录多了一个ICTCLAS.log的文件,打开文件内容,能够得到错误信息:

Default Path : .

start lic check.

License file .\user.lic can not open!

表示还需要user.lic也再根目录下面。将user.lic一道根目录下。

修改后运行在此出现错误:

Init Fail!

重新打开ICTCLAS.log文件,得到错误信息:

Default Path : .

start lic check.

License succeed!Failed to open .\Data\character.idx

Cannot open file .\Data\character.idx.

则表示没有找到Data文件夹,由于我们将Data放在了ICTCLASConf目录,故需要设置Configure.xml的<DataPath>Data</DataPath>//Data文件夹路径一项为指定目录。

Nutch中使用自定义中文分词器

原文:http://xtfncel.iteye.com/blog/756763

Nutch中使用自定义中文分词器

Nutch对中文查询时默认采用的分词器为NutchAnalyzer,对中文默认采用单字切分.这种效果不是很理想,我们可以自定义切词器,以实现对中文支持.

通常可以采用的两种方式添加对中文的支持:

1.采用插件的方式,不修改系统代码的基础上,编写中文分词插件实现对中文分词的支持。

2.直接修改nutch的系统代码,对默认的分词器代码进行修改使其使用自定义中文分词程序.

继续阅读

Nutch中文分词总结

1 中文分词介绍

中文分词是在做检索类系统时需要重点考虑的一个因素。Nutch的本土化过程也需要更改对中文分词的支持。目前,Nutch中文分词方式大致有两种方式:

一是修改源代码。这种方式是直接对Nutch分词处理类进行修改,调用已写好的一些分词组件进行分词。

二是编写分词插件。这种方式是按照Nutch定义的插件编写规则重新编写或者添加中文分词插件。

以上两种方式都是可取的。目前,由于开源社区的活跃,已经有很多种分词组件的出现,无论是修改源代码的方式还是编写分词插件的方式,都是依赖于这些分词组件的。下面列出了主要的一些分词组件:

继续阅读