昨天在nutch中添加了JE中文分词,今天有试了下基于中科院的多层隐马模型的分词组件,imdict-chinese-analyzer,目前这个组件已经正式集成到lucene-3.0,具体在要用到lucene-analyzers-3.0.1.jar 和
SmartChineseAnalyzer 的算法和语料库词典来自于ictclas1.0项目(http://www.ictclas.org)
2 修改源代码方式添加imdict-chinese-analyzer
2.1 工具:eclipse
2.1 准备工作
1> 首先下载 imdict-chinese-analyzer分词包和nutch源代码,下载来的imdict-chinese-analyzer- java5.zip里面只是一个eclipse工程,我们要利用这个工程生成一个jar来用,或者也可以直接放到nutch的源代码项目中。这里注意的是如果要编译 imdict-chinese-analyzer-java5.zip需要在项目中加入lucene-core-2.4.0.jar
2> 将 jar放入nutch的类路径。
3>
将
| <SIGRAM: <CJK> >
改成
| <SIGRAM: (<CJK>)+ >
然后用javacc编译NutchAnalysis.jj文件,编译出7个java源文件。
注意修改 org.apache.nutch.analysis.ParseException.java。
原来是
public class ParseException extends Exception
改为public class ParseException extends IOException
确保这7个文件放入工程后还能都编译过去。
4> 修改 org.apache.nutch.analysis.NutchDocumentAnalyzer.java
将源文件最后的那个函数修改为下面
就是使用了新的分词程序。
}
6>修改根目录下的build.xml文件,加入chinese-analyzer.jar包,具体可以参考上篇文章
5> ant 编译
进入nutch-1.0目录下
执行:ant
执行:ant jar产生nutch-1.0.jar
执行:ant war产生nutch-1.0.war
3 实验发现
相比于JE分词,基于多层隐马模型具有高好的召回率和准确率,并且可以没有丢失英文的信息部分,而JE似乎将英文过滤了,因而使得加入JE分词后搜索英文关键词时召回率几乎畏0.实验证明,基于多层隐马模型的imdict-chinese-analyzer 可以提高搜索引擎的召回率和准确率。