您的位置:首页 > 其它

nutch的中文分词 imdict-chinese-a…

2013-02-25 18:35 190 查看
改造nutch,将原来的中文分词程序改成imdict-chinese-analyzer,这个是根据中科院的c版分词程序而来的纯java版。


下载imdict-chinese-analyzer

我下的是imdict-chinese-analyzer-java5.zip



nutch1.0



下载来的imdict-chinese-analyzer-java5.zip里面只是一个eclipse工程,我们要利用这个工程生成一个jar来用,或者也可以直接放到nutch的源代码项目中。这里注意的是如果要编译imdict-chinese-analyzer-java5.zip需要在项目中加入lucene-core-2.4.0.jar
和junit-4.1.jar。

将jar放入nutch的类路径。

修改org.apache.nutch.analysis下NutchAnalysis.jj文件。



| <SIGRAM: <CJK>
>

改成

| <SIGRAM: (<CJK>)+
>

然后用javacc编译NutchAnalysis.jj文件,编译出7个java源文件。

将这7个文件放到nutch的源工程中,修改org.apache.nutch.analysis.ParseException.java。

原来是

Java代码

imdict-chinese-analyzer" />


public class ParseException extends Exception

public class ParseException extends Exception


改成

Java代码

imdict-chinese-analyzer" />


public class ParseException extends IOException

public class ParseException extends IOException



因为nutch原来的这个源文件就是这么写的,用jj文件编译出来的源文件就不对,不改的话会提示ParseException
未被捕获。

确保这7个文件放入工程后还能都编译过去。

修改org.apache.nutch.analysis.NutchDocumentAnalyzer.java

将源文件最后的那个函数修改为下面
就是使用了新的分词程序。

Java代码

imdict-chinese-analyzer" />




public TokenStream tokenStream(String fieldName, Reader reader) {


Analyzer analyzer;







analyzer = new org.apache.lucene.analysis.cn.SmartChineseAnalyzer(true);


//


return analyzer.tokenStream(fieldName, reader);


}

public TokenStream tokenStream(String fieldName, Reader reader) {
    Analyzer analyzer;
    
    
    analyzer = new org.apache.lucene.analysis.cn.SmartChineseAnalyzer(true);
    //
    return analyzer.tokenStream(fieldName, reader);
  }



运行程序,本人亲自试验可以通过。

转自网络
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: