..................................內容純轉發+收藏...................................
? ? ? ?學習自然語言這一段時間以來接觸和聽說了好多開源的自然語言處理工具,在這里做一下匯總方便自己以后學習,其中有自己使用過的也有了解不是很多的,對于不甚了解的工具以后學習熟悉了會做更新的。
?
1.IKAnalyzer
?
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格式編碼,并且每個詞語占一行。配置文件如下所示:
?
- < properties > ????
- ???? < comment > IK?Analyzer?擴展配置 </ comment > ??
- ???? <!--用戶可以在這里配置自己的擴展字典--> ???
- ???? < entry ? key = "ext_dict" > ext.dic; </ entry > ???
- ??????
- ???? <!--用戶可以在這里配置自己的擴展停止詞字典--> ??
- ???? < entry ? key = "ext_stopwords" > stopword.dic;chinese_stopword.dic </ entry > ???
- ??????
- </ properties > ??
?
IK部署很簡單,只需要把IKAnalyzer2012_u6.jar部署于項目的lib中,同時將IKAnalyzer.cfg.xml文件以及詞典文件置于src中,即可通過API的方式開發調用。
示例代碼:
?
- /** ?
- ?????*?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居多,所以是我平時處理分詞的首選工具。
2.中科院ICTCLAS
ICTCLAS是由中科院計算所歷經數年開發的分詞工具,采用C++編寫。最新版本命名為ICTCLAS2013,又名為NLPIR漢語分詞系統,官網為: http://ictclas.nlpir.org/ 。主要功能包括中文分詞、詞性標注、命名實體識別、用戶詞典功能,同時支持GBK編碼、UTF8編碼、BIG5編碼,新增微博分詞、新詞發現與關鍵詞提取。可以可視化界面操作和API方式調用。
?
3. FudanNLP
?
FudanNLP主要是為中文自然語言處理而開發的工具包,也包含為實現這些任務的機器學習算法和數據集。FudanNLP及其包含數據集使用LGPL3.0許可證。
主要功能包括:
信息檢索:文本分類,新聞聚類。
中文處理:中文分詞,詞性標注,實體名識別,關鍵詞抽取,依存句法分析,時間短語識別。
結構化學習:在線學習,層次分類,聚類,精確推理。
工具采用Java編寫,提供了API的訪問調用方式。最新版本為FudanNLP-1.6.1,下載地址為: http://code.google.com/p/fudannlp/ 。
下載安裝包后解壓后,內容如下圖所示:
?
在使用時將fudannlp.jar以及lib中的jar部署于項目中的lib里面。models文件夾中存放的模型文件,主要用于分詞、詞性標注和命名實體識別以及分詞所需的詞典;文件夾example中主要是使用的示例代碼,可以幫助快速入門和使用;java-docs是API幫助文檔;src中存放著源碼;PDF文檔中有著比較詳細的介紹和自然語言處理基礎知識的講解。
初始運行程序時初始化時間有點長,并且加載模型時占用內存較大。在進行語法分析時感覺分析的結果不是很準確。
4.The Stanford Natural LanguageProcessing Group
Stanford NLP Group是斯坦福大學自然語言處理的團隊,開發了多個NLP工具,官網網址為: http://nlp.stanford.edu/software/index.shtml 。其開發的工具包括以下內容:
4.1 Stanford CoreNLP
采用Java編寫的面向英文的處理工具,下載網址為: http://nlp.stanford.edu/software/corenlp.shtml 。主要功能包括分詞、詞性標注、命名實體識別、語法分析等。
我曾經采用它進行英語單詞的詞性還原,具體應用詳見文章《 采用Stanford CoreNLP實現英文單詞詞形還原 》。
4.2 Stanford Word Segmenter
采用CRF(條件隨機場)算法進行分詞,也是基于Java開發的,同時可以支持中文和Arabic,官方要求Java版本1.6以上,推薦內存至少1G。下載地址為 http://nlp.stanford.edu/software/segmenter.shtml 。
簡單的示例程序:
?
- //設置分詞器屬性。 ??
- ???Properties?props?=? new ?Properties();??
- //字典文件地址,可以用絕對路徑,如d:/data ??
- ???props.setProperty( "sighanCorporaDict" ,? "data" );??
- //字典壓縮包地址,可以用絕對路徑 ??
- ???props.setProperty( "serDictionary" , "data/dict-chris6.ser.gz" );??
- //輸入文字的編碼; ??
- ???props.setProperty( "inputEncoding" ,? "UTF-8" );??
- ???props.setProperty( "sighanPostProcessing" ,? "true" );??
- //初始化分詞器, ??
- ???CRFClassifier?classifier?=? new ?CRFClassifier(props);??
- //從持久化文件中加載分詞器設置; ??
- ???classifier.loadClassifierNoExceptions( "data/ctb.gz" ,?props);??
- ??? //?flags?must?be?re-set?after?data?is?loaded ??
- ???classifier.flags.setProperties(props);??
- //分詞 ??
- ???List?words?=?classifier.segmentString( "語句內容" );??
?
4.3 Stanford POS Tagger
采用Java編寫的面向英文、中文、法語、阿拉伯語、德語的命名實體識別工具,下載地址為: http://nlp.stanford.edu/software/tagger.shtml 。 還沒有接觸過,需要以后學習研究。
4.4 Stanford Named Entity Recognizer
采用條件隨機場模型的命名實體工具,下載地址為: http://nlp.stanford.edu/software/CRF-NER.shtml 。還沒有接觸過,需要以后學習研究。
4.5 Stanford Parser
進行語法分析的工具,支持英文、中文、阿拉伯文和法語。下載地址為: http://nlp.stanford.edu/software/lex-parser.shtml 。具體的使用介紹見《 采用Stanford Parser進行中文語法解析 》。
4.6 Stanford Classifier
采用Java編寫的分類器,下載地址為: http://nlp.stanford.edu/software/classifier.shtml 。還沒有接觸過,需要以后學習研究。
?
?
原文地址: http://blog.csdn.net/cuixianpeng/article/details/16288307
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
