• <acronym id="danlv"><form id="danlv"></form></acronym>
  • <dd id="danlv"><rt id="danlv"></rt></dd>
      <var id="danlv"><rt id="danlv"><big id="danlv"></big></rt></var>
      1. <code id="danlv"><ol id="danlv"></ol></code>
        <var id="danlv"><rt id="danlv"></rt></var>
          1. <code id="danlv"></code>
            返回首頁
            當前位置: 主頁 > 精通Office > Ubuntu教程 >

            Ubuntu下使用Java調用IKAnalyzer中文分詞程序失效的解決方法

            時間:2012-12-25 11:02來源:知行網www.n1979.com 編輯:麥田守望者

            IKAnalyzer基于lucene2.0版本API開發,實現了以詞典分詞為基礎的正反向全切分算法,是Lucene Analyzer接口的實現。經過與mmseg4j-1.7.2、庖丁解牛等其它中文分詞程序比較后發現,IKAnalyzer的中文分詞效果好,程序調用簡單。所以采用IKAnalyzer作為我們中文分詞的程序

            調用IKAnalyzer來進行中文分詞的代碼十分簡單:

            1./**
            2.* 傳入一個中文語句,返回一個List列表,列表中的每一個元素是一個String類型的分詞之后的中文詞組
            3.*/
            4.public static ArrayList<String> testJe(String testString) throws Exception {
            5. ArrayList<String> tokenList = new ArrayList<String>();
            6. Analyzer analyzer = new IK_CAnalyzer();
            7.
            8. Reader r = new StringReader(testString);
            9. TokenStream ts = (TokenStream) analyzer.tokenStream("", r);
            10. Token t;
            11. while ((t = ts.next()) != null) {
            12. tokenList.add(t.termText());
            13. System.out.println(t.termText());
            14. }
            15. return tokenList;
            16. }

            這段代碼如果是在Windows下使用Eclipse來執行,或許能夠很好地進行中文分詞,但是當你把程序放在Linux下,例如Ubuntu下運行時,可能就會發現這個Java中文分詞程序突然“失效”了。這是由于IKAnalyzer1.4采用了GBK的本地編碼來存儲字典,而linux環境,例如Ubuntu默認字符編碼是UTF-8,這就會常常造成在Linux和Unix環境下字典載入亂碼,從而使分詞失敗。

            解決辦法有2個:
            1、將字典目錄下的dic文件,在Windows環境下使用jdk的nativetoascii.exe將格式從GBK轉化成UTF-8;
            2、修改Dictionary類中所有的字典load方法,將InputStreamReader中的編碼修改為“UTF-8”;

            其中第一個解決辦法最為簡單,具體步驟如下:1、對著IKAnalyzer1.4.jar點擊右鍵,將IKAnalyzer1.4.jar解壓到本地,進入org\mira\lucene\analysis\dict目錄下,發現有4個文件,用文本編輯器打開,然后用UTF-8格式“另存為”來進行重新存儲,覆蓋原來的文件;
            2、將解壓的文件重新使用zip格式進行壓縮。需要注意的是,最頂層目錄應該是org和META-INF;
            3、將后綴名zip改為jar即可。

            然后使用新的jar替換原來的IKAnalyzer1.4.jar即可在Ubuntu下正常使用這個Java中文分詞程序了。

            另外,如果你打算使用Ubuntu的Cron來定時執行這個java中文分詞程序,可能又會發現中文分詞程序失效,這是因為Linux下的Cron環境變量可能與普通用戶登錄進去之后的環境變量不太一樣,因此還是由于默認的字符集不同,造成了程序無法正常進行中文分詞。解決辦法如下,在腳本中顯式地指明字符集為UTF-8:

            1.#! /bin/bash
            2.. /home/wangzhongyuan/.profile
            3.LANG=zh_CN.UTF-8
            4.LC_ALL=zh_CN.UTF-8
            5.export LANG LC_ALL

            然后就可以在腳本中在調用java程序,就能夠使用Ubuntu的Cron來定時執行這個中文分詞程序了。

            ------分隔線----------------------------
            標簽(Tag):Ubuntu Ubuntu教程 Ubuntu美化 Ubuntu技巧 ubuntu源 ubuntu模板
            ------分隔線----------------------------
            推薦內容
            猜你感興趣
            日韩在线av免费视久久