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

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