Nutch-0.9加入ICTCLAS 支持中文分词等(转)

a. 安装 svn , 从 apache 中下载这最新版本,(http://svn.apache.org/repos/asf/lucene/nutch/branches/branch-0.9/ )这样可以用ant工具进行编译,直接下载的包文件好不能用ant
b. 安装 ant. http://ant.apache.org/ 下载最新编译工具
c. 安装 javacc  https://javacc.dev.java.net/
d. 在环境变量中加入 :D:\javacc\bin;D:\ant\bin

1). 使用  ICTCLAS 组件 ,经过测试,ICTCLAS 可以在 cygWin 下使用 ,把 ICTCLAS 的 dll 文件放到 \lib\native\ICTCLAS.dll下,不然会找不到ICTCLAS.dll
2)。把 ICTCLAS 打包成 .jar(ICTCLAS.jar) 放到 \lib 目录下,这样就可以调用里面的 分词方法了。
3。 将 ICTCLAS 中的 data 类也要放到 这个目录,分词的时候要调用这个词库()
4. 修改代码,\src\java\org\apache\nutch\analysis下的 NutchAnalysis.jj
   | <SIGRAM: (<CJK>)+ >
    {
      System.out.println("");
    }
    让他支持中文分词
5. 使用 javacc 编译,生成代码
6. 修改NutchDocumentTokenizer.java 中的代码,加入
  private static Reader myreader = null;

  public NutchDocumentTokenizer(Reader reader) {
    super(process(reader));
    tokenManager = new NutchAnalysisTokenManager(myreader);
  }

  public static Reader process(Reader reader){
   BufferedReader in = new BufferedReader(reader);
   String line="";
   String temp=null;
   try{
    while((temp =in.readLine())!=null){
    line += temp.replaceAll("/", "");
    System.out.println(line);
    }
   }catch(Exception e){
    System.out.println(e);
   }
   try{
   if(line!=null && !line.equals("")){
      com.xjt.nlp.word.ICTCLAS ic = com.xjt.nlp.word.ICTCLAS.getInstance();
      line = ic.paragraphProcess(line);
      myreader = new StringReader(line);
   }
   }catch(Exception e){
    }
   return myreader;
  }

  这样使得在使用分词前,先进行用 ICTCLAS 进行处理,但有些文件处理不了,比如其中有 "/"的,有待改善。
  再使用 bin/nutch crawl urls -dir crawled -depth 3 -topN 50 重新生成一个 Index 的目录,用下面的工具luke看里面的分词就可以看到里面的词是接ICTCLAS 分成的词,而不是一个一个的单字. 

 

 

 

转自

http://blog.csdn.net/chris1081/archive/2008/08/28/2840962.aspx

http://blog.csdn.net/chris1081/archive/2008/08/28/2840980.aspx

该版主对nutch研究比较多。

posted @ 2009-12-04 20:53  Alexander  阅读(445)  评论(0编辑  收藏  举报