Java天然語言處理NLP工具包

天然語言處理

1. Java天然語言處理 LingPipe

LingPipe是一個天然語言處理的Java開源工具包。LingPipe目前已有很豐富的功能,包括主題分類(Top Classification)、命名實體識別(Named Entity Recognition)、詞性標註(Part-of Speech Tagging)、句題檢測(Sentence Detection)、查詢拼寫檢查(Query Spell Checking)、興趣短語檢測(Interseting Phrase Detection)、聚類(Clustering)、字符語言建模(Character Language Modeling)、醫學文獻下載/解析/索引(MEDLINE Download, Parsing and Indexing)、數據庫文本挖掘(Database Text Mining)、中文分詞(Chinese Word Segmentation)、情感分析(Sentiment Analysis)、語言辨別(Language Identification)等API。html

下載連接:http://alias-i.com/lingpipe/web/download.htmljava

2.中文天然語言處理工具包 FudanNLP

FudanNLP主要是爲中文天然語言處理而開發的工具包,也包含爲實現這些任務的機器學習算法和數據集。git

演示地址: http://jkx.fudan.edu.cn/nlp/queryweb

FudanNLP目前實現的內容以下:算法

  1. 中文處理工具
    1. 中文分詞
    2. 詞性標註
    3. 實體名識別
    4. 句法分析
    5. 時間表達式識別
  2. 信息檢索
    1. 文 本分類
    2. 新聞聚類
    3. Lucene中文分詞
  3. 機 器學習
    1. Average Perceptron
    2. Passive-aggressive Algorithm
    3. K-means
    4. Exact Inference

下載連接:http://code.google.com/p/fudannlp/downloads/list數據庫

 3.天然語言處理工具Apache OpenNLP

OpenNLP 是一個機器學習工具包,用於處理天然語言文本。支持大多數經常使用的 NLP 任務,例如:標識化、句子切分、部分詞性標註、名稱抽取、組塊、解析等。apache

下載連接:http://opennlp.apache.org/服務器

 4.天然語言處理工具 CRF++

 CRF++是著名的條件隨機場開源工具,也是目前綜合性能最佳的CRF工具。CRF++自己已是個比較老的工具了,但鑑於其性能較好,仍然是天然語言處理很重要的一個工具。app

NlpBamboo 中文分詞庫在使用該工具。機器學習

下載連接:http://sourceforge.net/projects/crfpp/files/

 五、Stanford CoreNLP 斯坦福大學NLP

很牛叉的一個庫

下載地址 http://search.maven.org/#browse%7C11864822

學習天然語言這一段時間以來接觸和據說了好多開源的天然語言處理工具,在這裏作一下彙總方便本身之後學習,其中有本身使用過的也有了解不是不少的,對於不甚瞭解的工具之後學習熟悉了會作更新的。

分詞組件

1.IKAnalyzer

IK Analyzer是一個開源的,基於Java語言開發的輕量級的中文分詞工具包。從2006.12推出1.0版本開始,IK Analyzer已經推出了多個版本,當前最新版本爲2012 u6,最初基於Luence,從3.0開始成爲面向Java的公用分詞組件,獨立於Luence,下載地址爲:http://git.oschina.net/wltea/IK-Analyzer-2012FF。IK支持細粒度和智能分詞兩種切分模式,支持英文字母、數字、中文詞彙等分詞處理,兼容韓文、日文字符。能夠支持用戶自定義的詞典,IKAnalyzer.cfg.xml文件來實現,能夠配置自定義的擴展詞典和停用詞典。詞典須要採用UTF-8無BOM格式編碼,而且每一個詞語佔一行。配置文件以下所示:

  1. <properties>    
  2.     <comment>IK Analyzer 擴展配置</comment>  
  3.     <!--用戶能夠在這裏配置本身的擴展字典-->   
  4.     <entry key="ext_dict">ext.dic;</entry>   
  5.       
  6.     <!--用戶能夠在這裏配置本身的擴展中止詞字典-->  
  7.     <entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry>   
  8.       
  9. </properties>  

IK部署很簡單,只須要把IKAnalyzer2012_u6.jar部署於項目的lib中,同時將IKAnalyzer.cfg.xml文件以及詞典文件置於src中,便可經過API的方式開發調用。

示例代碼:

  1. /** 
  2.      * IK分詞功能實現 
  3.      * @return 
  4.      */  
  5.     public String spiltWords(String srcString){  
  6.         StringBuffer wordsBuffer = new StringBuffer("");  
  7.         try{  
  8.             IKSegmenter ik=new IKSegmenter(new StringReader(srcString), true);    
  9.             Lexeme lex=null;    
  10.             while((lex=ik.next())!=null){    
  11. //              System.out.print(lex.getLexemeText()+" ");  
  12.                 wordsBuffer.append(lex.getLexemeText()).append(" ");  
  13.             }  
  14.         }catch(Exception e){  
  15.             logger.error(e.getMessage());  
  16.         }  
  17.         return wordsBuffer.toString();  
  18.     }  

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

簡單的示例程序:

  1. //設置分詞器屬性。  
  2.    Properties props = new Properties();  
  3. //字典文件地址,能夠用絕對路徑,如d:/data  
  4.    props.setProperty("sighanCorporaDict", "data");  
  5. //字典壓縮包地址,能夠用絕對路徑  
  6.    props.setProperty("serDictionary","data/dict-chris6.ser.gz");  
  7. //輸入文字的編碼;  
  8.    props.setProperty("inputEncoding", "UTF-8");  
  9.    props.setProperty("sighanPostProcessing", "true");  
  10. //初始化分詞器,  
  11.    CRFClassifier classifier = new CRFClassifier(props);  
  12. //從持久化文件中加載分詞器設置;  
  13.    classifier.loadClassifierNoExceptions("data/ctb.gz", props);  
  14.    // flags must be re-set after data is loaded  
  15.    classifier.flags.setProperties(props);  
  16. //分詞  
  17.    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。尚未接觸過,須要之後學習研究。

5.jcseg

Jcseg是基於mmseg算法的一個輕量級中文分詞器,同時集成了關鍵字提取,關鍵短語提取,關鍵句子提取和文章自動摘要等功能,而且提供了一個基於Jetty的web服務器,方便各大語言直接http調用,同時提供了最新版本的lucene, solr, elasticsearch的分詞接口!Jcseg自帶了一個 jcseg.properties文件用於快速配置而獲得適合不一樣場合的分詞應用,例如:最大匹配詞長,是否開啓中文人名識別,是否追加拼音,是否追加同義詞等!

相關文章
相關標籤/搜索