现在的位置: 首页 > 综合 > 正文

nutch-0.9(2)加入ICTCLAS 支持中文分词

2013年02月14日 ⁄ 综合 ⁄ 共 1884字 ⁄ 字号 评论关闭


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 分成的词,而不是一个一个的单字. 

 

zz:http://blog.csdn.net/xiajing12345/archive/2007/06/05/1638624.aspx

抱歉!评论已关闭.