學習天然語言這一段時間以來接觸和據說了好多開源的天然語言處理工具,在這裏作一下彙總方便本身之後學習,其中有本身使用過的也有了解不是不少的,對於不甚瞭解的工具之後學習熟悉了會作更新的。html
IK Analyzer是一個開源的,基於Java語言開發的輕量級的中文分詞工具包。從2006.12推出1.0版本開始,IK Analyzer已經推出了多個版本,當前最新版本爲2012 u6,最初基於Luence,從3.0開始成爲面向Java的公用分詞組件,獨立於Luence,下載地址爲:http://code.google.com/p/ik-analyzer/。IK支持細粒度和智能分詞兩種切分模式,支持英文字母、數字、中文詞彙等分詞處理,兼容韓文、日文字符。能夠支持用戶自定義的詞典,經過配置IKAnalyzer.cfg.xml文件來實現,能夠配置自定義的擴展詞典和停用詞典。詞典須要採用UTF-8無BOM格式編碼,而且每一個詞語佔一行。配置文件以下所示:java
[html] view plaincopyapp
<properties> 工具
<comment>IK Analyzer 擴展配置</comment> 學習
<!--用戶能夠在這裏配置本身的擴展字典--> ui
<entry key="ext_dict">ext.dic;</entry> google
<!--用戶能夠在這裏配置本身的擴展中止詞字典--> 編碼
<entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry> spa
</properties> .net
IK部署很簡單,只須要把IKAnalyzer2012_u6.jar部署於項目的lib中,同時將IKAnalyzer.cfg.xml文件以及詞典文件置於src中,便可經過API的方式開發調用。
示例代碼:
[java] view plaincopy
/**
* IK分詞功能實現
* @return
*/
public String spiltWords(String srcString){
StringBuffer wordsBuffer = new StringBuffer("");
try{
IKSegmenter ik=new IKSegmenter(new StringReader(srcString), true);
Lexeme lex=null;
while((lex=ik.next())!=null){
// System.out.print(lex.getLexemeText()+" ");
wordsBuffer.append(lex.getLexemeText()).append(" ");
}
}catch(Exception e){
logger.error(e.getMessage());
}
return wordsBuffer.toString();
}
IK簡單、易於擴展,分詞結果較好而且採用Java編寫,由於我平時的項目以Java居多,因此是我平時處理分詞的首選工具。
ICTCLAS是由中科院計算所歷經數年開發的分詞工具,採用C++編寫。最新版本命名爲ICTCLAS2013,又名爲NLPIR漢語分詞系統,官網爲:http://ictclas.nlpir.org/。主要功能包括中文分詞、詞性標註、命名實體識別、用戶詞典功能,同時支持GBK編碼、UTF8編碼、BIG5編碼,新增微博分詞、新詞發現與關鍵詞提取。能夠可視化界面操做和API方式調用。