Nutch使用入門(四)——添加中文分詞

來源:互聯網
上載者:User
Nutch使用入門(四)——添加中文分詞
    部落格分類:

  • java
WindowsApache互連網AntluceneJava代碼  
  1. /**  
  2.  *本人亦初學者,如有不正確的地方請多多指教。謝謝!  
  3. javacc NutchAnalysis.jj  *部分內容參考自互連網,如有冒犯,請見諒。 
  4.  **/   

 基本資料

 本文介紹了如果為Nutch添加中文分詞,詳細描述了添加中文分詞的步驟和應該注意的問題。

 

 準備工作

  1.Nutch,到http://nutch.apache.org/下載nutch-1.0.tar.gz,下載後直接解壓縮即可。

  2.javacc,到https://javacc.dev.java.net/下載javacc-5.0.zip,下載後同樣解壓縮,將“javacc路徑/bin”添加到環境變數path,在windows命令視窗中輸入javacc,未提示錯誤表示javacc安裝成功。

  3.ant,到http://ant.apache.org/下載ant,下載後解壓縮,將"ant路徑/bin"添加到環境變數path,在windows命令視窗輸入ant,未提示錯誤表示ant安裝成功。

  4.IKAnalyzer,到http://code.google.com/p/ik-analyzer/downloads/list下載IKAnalyzer,本例使用版本是3.1.1GA。

 

  為Nutch添加中文分詞

  1.讓Nutch支援中文分詞。

    在Nutch目錄下,找到src\java\org\apache\nutch\analysis\NutchAnalysis.jj檔案,複製到其他的一個目錄下,最好該目錄下沒有java檔案,修改NutchAnalysis.jj檔案,修改如下:

Java代碼  
  1. line 130:  
  2. | <SIGRAM: <CJK> >  
  3.   
  4.   
  5. change to:  
  6. | <SIGRAM: (<CJK>)+ >   

將windows命令環境切換到改目錄下,執行如下命令:

Java代碼  
  1. javacc NutchAnalysis.jj  

 產生了7個java檔案,其中NutchAnalysis.java 58行拋出異常,捕獲異常即可。將這7個java檔案替換掉src\java\org\apache\nutch\analysis目錄下相同名稱的檔案。

 

  2.添加IKAnalyzer。

    將下載好的IKAnalyzer3.1.1Stable.jar複製到Nutch目錄下的lib檔案夾中,修改src\java\org\apache\nutch\analysis目錄下NutchDocumentAnalyzer.java檔案,添加import語句,修改tokenStream方法。代碼如下:

Java代碼  
  1. import org.wltea.analyzer.lucene.IKAnalyzer;  

 

Java代碼  
  1. public TokenStream tokenStream(String fieldName, Reader reader) {  
  2.    Analyzer analyzer;  
  3.    analyzer = new IKAnalyzer();  
  4.    return analyzer.tokenStream(fieldName, reader);  
  5.  }  

 

  3.重新編譯Nutch。

   修改Nutch目錄下build.xml檔案,在195行後加入如下代碼:

Java代碼  
  1. <include name="IKAnalyzer3.1.1Stable.jar"/>  

    將命令環境切換到Nutch目錄下,執行ant命令。出現如下錯誤:

Java代碼  
  1. Buildfile: build.xml  
  2.   
  3. init:  
  4.   
  5. BUILD FAILED  
  6. D:\nutch\nutch-1.0\build.xml:62: Specify at least one source--a file or resource  
  7.  collection.  
  8.   
  9. Total time: 0 seconds  

    解決辦法有兩個:

    (1). 從SVN下載缺失的 config/*.template檔案。
    (2).修改 build.xml,去掉62-64行,讓它不再需要template檔案。

 

   將編譯產生的build檔案夾下的nutch-1.0.job檔案替換掉Nutch目錄下的nutch-1.0.job檔案。

   將編譯產生的build\classes下檔案打包成nutch-1.0.jar,替換掉Nutch目錄下的nutch-1.0.jar檔案。打包命令如下:

Java代碼  
  1. jar cvf nutch-1.0.jar org  

    將nutch-1.0.war包中的nutch-1.0.jar替換為剛剛產生的nutch-1.0.jar,並且加入IKAnalyzer3.1.1Stable.jar.

 

    至此,全部工作都已經完成。接下來爬行和搜尋工作可以參考我的其他兩篇入門文章:

   Nutch 使用入門(一)——準備工作及Intranet抓取   
   
Nutch 使用入門(二)——互連網抓取

 

分享到:
Nutch 使用入門(三)——設定檔的載入
  • 2010-05-16 02:59
  • 瀏覽 3121
  • 評論(3)
  • 分類:互連網
  • 相關推薦
評論

3 樓
commanderhyk 2010-07-15   剛才看了看nutch產生的程式碼,好像是缺失了一些屬性。我試著補上
Analyzer analyzer;  
analyzer = new IKAnalyzer();
TokenStream tokenStream = analyzer.tokenStream(fieldName, reader);
tokenStream.addAttribute(TypeAttribute.class);//補充
tokenStream.addAttribute(FlagsAttribute.class);//補充
tokenStream.addAttribute(PayloadAttribute.class);//補充
tokenStream.addAttribute(PositionIncrementAttribute.class);//補充
return tokenStream;

經過實驗通過。可以查出資料了,但不知到原理為什麼這麼做。

2 樓
commanderhyk 2010-07-15   最近nutch發布了1.1,在學習中。基本的配置例子都跑通了,正在學習更換切詞器,按照您上述的方式都成功的部署了,但是最後查詢時候拋出了異常
java.lang.IllegalArgumentException: This AttributeSource does not have the attribute 'org.apache.lucene.analysis.tokenattributes.TermAttribute'.
我開始用 3.2.3後來改成3.1.1都不行。目前不知道如何解決,希望能幫我看看這個問題,如何解決。謝謝了
javaeye上有類似的錯誤說是能解決,但是沒有給出解決辦法,以下是串連

http://www.iteye.com/topic/476897?page=21 樓
softkid 2010-05-31   請注意中文分詞的版本,我自己就只是用來IKAnalyzer3.1.1Stable,網友試了3.2也行。還有,他試了最新的,但是不行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.