返回首頁
當前位置: 主頁 > 精通Office > Ubuntu教程 >

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

時間:2012-12-25 11:02來源:知行網www.f1globe.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模板
------分隔線----------------------------
推薦內容
猜你感興趣
99久久免费高清热精品