nutch的中文分词 imdict-chinese-analyzer

蓝宜
2023-12-01

      改造nutch,将原来的中文分词程序改成imdict-chinese-analyzer,这个是根据中科院的c版分词程序而来的纯java版。

 

下载imdict-chinese-analyzer

 

 

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

 

nutch1.0

 

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

  2. 将jar放入nutch的类路径。

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

    | <SIGRAM: <CJK> >
    改成
    | <SIGRAM: (<CJK>)+ >

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

  4. 将这7个文件放到nutch的源工程中,修改org.apache.nutch.analysis.ParseException.java。
    原来是
    public class ParseException extends Exception
     
    改成
    public class ParseException extends IOException
     
    因为nutch原来的这个源文件就是这么写的,用jj文件编译出来的源文件就不对,不改的话会提示ParseException 未被捕获。

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

  6. 修改org.apache.nutch.analysis.NutchDocumentAnalyzer.java
    将源文件最后的那个函数修改为下面
    就是使用了新的分词程序。
    /** Returns a new token stream for text from the named field. */
      public TokenStream tokenStream(String fieldName, Reader reader) {
        Analyzer analyzer;
        /*
        if ("anchor".equals(fieldName))
          analyzer = ANCHOR_ANALYZER;
        else
          analyzer = CONTENT_ANALYZER;
        */
        
        analyzer = new org.apache.lucene.analysis.cn.SmartChineseAnalyzer(true);
        //
        return analyzer.tokenStream(fieldName, reader);
      }
    
     

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

 类似资料: