目前常用的自然語言處理開源項目/開發包有哪些?
請從文本/語音兩方面分別介紹一些。
最近我們實驗室整理髮布了一批開源NLP工具包,這裡列一下,歡迎大家使用。未來不定期更新。
2016年3月31日更新,在THULAC新增Python版本分詞器,歡迎使用。
中文詞法分析
THULAC:一個高效的中文詞法分析工具包
包括中文分詞、詞性標註功能。已經提供C++、Java、Python版本。
中文文本分類
THUCTC: 一個高效的中文文本分類工具
提供高效的中文文本特徵提取、分類訓練和測試功能。
THUTag: 關鍵詞抽取與社會標籤推薦工具包
GitHub - YeDeming/THUTag: A Package of Keyphrase Extraction and Social Tag Suggestion
提供關鍵詞抽取、社會標籤推薦功能,包括TextRank、ExpandRank、Topical PageRank(TPR)、Tag-LDA、Word Trigger Model、Word Alignment Model等演算法。
PLDA / PLDA+: 一個高效的LDA分散式學習工具包
https://code.google.com/archive/p/plda/
知識表示學習
知識表示學習工具包
GitHub - Mrlyk423/Relation_Extraction: Knowledge Base Embedding
包括TransE、TransH、TransR、PTransE等演算法。
考慮實體描述的知識表示學習演算法
GitHub - xrb92/DKRL: Representation Learning of Knowledge Graphs with Entity Descriptions
詞表示學習
跨語言詞表示學習演算法
Learning Cross-lingual Word Embeddings via Matrix Co-factorization
主題增強的詞表示學習演算法
GitHub - largelymfs/topical_word_embeddings: A demo code for topical word embedding
可解釋的詞表示學習演算法
GitHub - SkTim/OIWE: Online Interpretable Word Embeddings
考慮字的詞表示學習演算法
GitHub - Leonard-Xu/CWE
文本增強的網路表示學習演算法
GitHub - albertyang33/TADW: code for IJCAI2015 paper "Network Representation Learning with Rich Text Information"
如果除了分詞,還想做些更深入的分析,推薦開源的FNLP GitHub
利益相關:FNLP項目負責人我只清楚文本方面的開源項目, 希望能幫到你:
一整套文本挖掘流水線GATE:http://gate.ac.uk/
你可以按照它的要求向其中添加組件, 完成自己的nlp任務
我在的項目組曾經嘗試過使用, 雖然它指出組件開發, 但是靈活性還是不高, 所以我們自己又開發了一套流水線。
國內一個NLP工具: 哈工大LTP:http://ir.hit.edu.cn/
這個是一個較完善的流水線了, 不說質量怎麼樣, 它提供分詞、語義標註、 句法依賴、 實體識別。 雖然會出現錯誤的結果, 但是, 找不到更好的了。
中科院分詞ICTCLAS
一個比較權威的分詞器, 相信你最後會選擇它作為項目的分詞工具, 雖然本身存在很多問題, 但是我找不到更好的開源項目了。
微軟分詞MOSS
當然這個是不開源的, 但是分詞非常准, 但是悲劇的是它將分詞和實體識別同時完成了, 而且分詞(在它提供的工具中)不提供詞性標註。
句法分析 Stanford Parser
這個據說非常不能用, 在中文方面, 試試吧。
以上都是成品, 下面是一些演算法開發包:
比較新的序列標註演算法CRF的開源項目: CRF++
經典模型SVM: svm-light 和 lib svm
竟然沒有人提 Natural Language Toolkit
哈工大LTP,有全面又好用,分詞、詞性標註、NER、句法分析等。
NiuTrans
由東北大學自然語言處理實驗室研製開發,它支持多個統計機器翻譯模型(基於短語,基於層次短語,基於句法),內嵌小巧、高效的N-元語言模型,無需其它軟體(如SRILM)的外部支持。
下載地址:NiuTrans下載
復旦深度網路中文自然語言處理工具FudanDNN-NLP2.0,目前支持中文分詞、自定義詞典、命名識別、詞性分析、語義分析、文本規範化等功能。可從http://homepage.fudan.edu.cn/zhengxq/deeplearning/下載
語音方面有CMU的Sphinx:http://cmusphinx.sourceforge.net/
還有劍橋大學的HTK:HTK Speech Recognition Toolkit
另外,中文分詞現在有源自CSDN的ansj:ansjsun/ansj_seg · GitHub 基於ICTCLAS,效果不錯,介面簡明。列幾個強大的Python套件們吧。
前面提到了出現順序實屬意外的NLTK,應該是非常強大的工具包了,3.x封了stanford nlp很多介面。
另外語料,newspaper、TextBlob等都是質量蠻高的開源項目。
中文的話,結巴分詞、snownlp都挺不錯的。
對於自然語言處理的新手或非計算機專業人員,強烈推薦使用GATE,它有以下優勢:
(1)良好的交互界面,主界面不再是一個命令行黑窗口,而是一個設計精美、交互良好的可視化窗體。此外還提供了gate embeded版本的API開發包,供JAVA程序調用。
(2)自定義文本處理管線,官方版本中已經有一個英文信息抽取的管線應用ANNIE,對此稍作調整就可以進行中文自然語言的處理(樓上其他人的回答都是一個NLP工具,詞法、句法分析等,GATE是一個集成版的系統!),而這一切都是在可視化界面中完成的。
(3)提供了升級版的正則表達式:JAPE,能夠實現各類信息的處理和抽取。JAPE能夠基於詞法、句法解析後的標註設定規則(不僅僅是文本哦),還能調用JAVA代碼來實現複雜的處理功能(正則表達式能調用JAVA代碼嗎)。
(4)強大的插件,GATE插件很強大,包括分詞、分句、句法分析、語義分析、爬蟲、協同標註等(無縫集成到GATE中,可以添加在自定義的處理管線中)。例如樓上各位所說的lingpipe、Stanford parser等國外著名的nlp工具GATE都有官方的集成。
中文nlp工具例如ICTCLAS、FudanNLP也有人實現並開源了插件,參考:
GATE中文自然語言處理系列 集成ICTCLAS中文分詞
中文自然語言處理系列之三:中文分句(基於JAPE)
分詞推薦ansj. https://github.com/NLPchina/ansj_seg
比他老師張華平博士的東西用著順手些。
現在也有關鍵詞等功能,很強大。
Java
中文自然語言處理工具包 Toolkit for Chinese natural language processing
- 信息檢索: 文本分類 新聞聚類
- 中文處理: 中文分詞 詞性標註 實體名識別 關鍵詞抽取 依存句法分析 時間短語識別
- 結構化學習: 在線學習 層次分類 聚類
HanLP提供下列功能:
- 中文分詞
- 最短路分詞
- N-最短路分詞
- CRF分詞
- 索引分詞
- 極速詞典分詞
- 用戶自定義詞典
- 詞性標註
- 命名實體識別
- 中國人名識別
- 音譯人名識別
- 日本人名識別
- 地名識別
- 實體機構名識別
- 關鍵詞提取
- TextRank關鍵詞提取
- 自動摘要
- TextRank自動摘要
- 短語提取
- 基於互信息和左右信息熵的短語提取
- 拼音轉換
- 多音字
- 聲母
- 韻母
- 聲調
- 簡繁轉換
- 繁體中文分詞
- 簡繁分歧詞(簡體、繁體、臺灣正體、香港繁體)
- 文本推薦
- 語義推薦
- 拼音推薦
- 字詞推薦
- 依存句法分析
- 基於神經網路的高性能依存句法分析器
- MaxEnt依存句法分析
- CRF依存句法分析
- 語料庫工具
- 分詞語料預處理
- 詞頻詞性詞典製作
- BiGram統計
- 詞共現統計
- CoNLL語料預處理
- CoNLL UA/LA/DA評測工具
python
jieba中文分詞
SnowNLP
- 中文分詞(Character-Based Generative Model)
- 詞性標註(TnT 3-gram 隱馬)
- 情感分析(現在訓練數據主要是買賣東西時的評價,所以對其他的一些可能效果不是很好,待解決)
- 文本分類(Naive Bayes)
- 轉換成拼音(Trie樹實現的最大匹配)
- 繁體轉簡體(Trie樹實現的最大匹配)
- 提取文本關鍵詞(TextRank演算法)
- 提取文本摘要(TextRank演算法)
- tf,idf
- Tokenization(分割成句子)
- 文本相似(BM25)
- 支持python3(感謝erning)
後續有新的發現更新在此:jacksu/machine-learning
如果是英文的話,主要推薦兩個,一個是Stanford CoreNLP, 另一個是Spacy。
Stanfrod勝在功能強大,準確率高,但因為程序是java寫的,如果想要用python調用的話需要介面。
今年Stanford剛剛更新了新的enhanced++ dependency parsing,具體可以參考論文:
https://nlp.stanford.edu/pubs/schuster2016enhanced.pdf
另外強烈推薦Spacy, python 介面,速度非常快,功能相對強大,基本可以滿足日常所有要求。
唯一可惜的就是這倆在中文上面都不夠用,中文還是Jieba或者SnowNLP功能比較全一點。
我主要做句法分析的,Stanford parser還不錯,但是代碼寫的比較難理解,需要很認真的Debug,Berkeley parser比Stanford parser感覺規模小一點,代碼相對比較容易理解。當然,比較大的問題就是這兩個開源項目沒有詳細的演算法與代碼相結合的說明文件,對使用者的基礎要求比較高。
東北大學自然語言處理實驗室今天上半年推出了一套中文自動分析工具NiuParser,你可以了解一下
有空就更新。(為什麼我的回答行間距這麼大...如何設置)
中文主要有:NLTK,HanLP,Ansj,THULAC,結巴分詞,FNLP,哈工大LTP,中科院ICTCLAS分詞,GATE,SnowNLP,東北大學NiuTrans,NLPIR;
英文主要有:NLTK,Genism,TextBlob,Stanford NLP,Spacy。英文的開源NLP工具主要參見StackoverFlow-java or python for nlp
相關問題:如何用 Python 中的 NLTK 對中文進行分析和處理? 這個問題下的回答也詳說了其他的語音處理包
詳細介紹
HanLP:HanLP是由一系列模型與演算法組成的Java工具包,目標是普及自然語言處理在生產環境中的應用。HanLP具備功能完善、性能高效、架構清晰、語料時新、可自定義的特點。
開發語言:Java
網址:hankcs/HanLP
開發機構:大快公司
協議:Apache-2.0
功能:非常多,主要有中文分詞,詞性標註,命名實體識別,關鍵詞提取,自動摘要,短語提取,拼音轉換,簡繁轉換,文本推薦,依存句法分析,文本分類:情感分析,word2vec,語料庫工具
性能:
活躍度:github star 超過4千5,近期(201711)仍在保持更新
Ansj中文分詞:一個基於n-Gram+CRF+HMM的中文分詞的java實現.
開發語言:Java
網址:NLPchina/ansj_seg
開發機構:
協議:Apache License 2.0
功能:中文分詞. 中文姓名識別 . 用戶自定義詞典,關鍵字提取,自動摘要,關鍵字標記
性能:分詞速度達到每秒鐘大約200萬字左右(mac air下測試),準確率能達到96%以上
活躍度:github star 數量超過3500,近期(2017.11)仍在保持更新
THULAC:一個高效的中文詞法分析工具包,具有中文分詞和詞性標註功能。
開發語言:
網址:THULAC:一個高效的中文詞法分析工具包
開發機構:清華大學自然語言處理與社會人文計算實驗室
協議:研究目的免費開放源代碼,商用目的需洽談許可證
功能:中文分詞和詞性標註
性能:
活躍度:
結巴分詞:Python中文分片語件
開發語言:Python
網址:fxsjy/jieba
開發機構:
協議:MIT授權協議
功能:中文分詞
性能:
活躍度:
FNLP:FNLP主要是為中文自然語言處理而開發的工具包,也包含為實現這些任務的機器學習演算法和數據集。
開發語言:
網址: FudanNLP/fnlp
開發機構:復旦
協議:LGPL3.0許可證。
功能:信息檢索: 文本分類 新聞聚類;中文處理: 中文分詞 詞性標註 實體名識別 關鍵詞抽取 依存句法分析 時間短語識別;結構化學習: 在線學習 層次分類 聚類
性能:
活躍度:
GATE:
開發語言:
網址:GATE.ac.uk - index.html
開發機構:
協議:
功能:
性能:
活躍度:
哈工大LTP
開發語言:
網址:
開發機構:
協議:
功能:
性能:
活躍度:
中科院分詞ICTCLAS
開發語言:
網址:
開發機構:
協議:
功能:
性能:
活躍度:
NiuTrans:它支持多個統計機器翻譯模型(基於短語,基於層次短語,基於句法),內嵌小巧、高效的N-元語言模型,無需其它軟體(如SRILM)的外部支持。
開發語言:
網址:
開發機構:東北大學自然語言處理實驗室
協議:
功能:
性能:
活躍度:冷門
SnowNLP:
開發語言:
網址:
開發機構:
協議:
功能:
性能:
活躍度:
英文
NLTK:
開發語言:
網址:nltk.org/
開發機構:
協議:
功能:
性能:
活躍度:
Genism:Gensim is a Python library for topic modelling, document indexing and similarity retrieval with large corpora. Target audience is the natural language processing (NLP) and information retrieval (IR) community.
開發語言:Python
網址:RaRe-Technologies/gensim
開發機構:
協議:LGPL-2.1 license
功能:
性能:
活躍度:github star數超過五千,近期(201711)仍在更新
TextBlob:Simple, Pythonic, text processing--Sentiment analysis, part-of-speech tagging, noun phrase extraction, translation, and more.
開發語言:Python
網址:sloria/TextBlob
開發機構:
協議:
功能:情感分析、詞性標註、翻譯等
性能:
活躍度:github star 超過4千,近期(201711)仍在更新
Stanford CoreNLP
開發語言:
網址:
開發機構:
協議:
功能:
性能:
活躍度:
Spacy:spaCy is a library for advanced Natural Language Processing in Python and Cython. It"s built on the very latest research, and was designed from day one to be used in real products. spaCy comes with pre-trained statistical models and word vectors, and currently supports tokenization for 20+ languages. It features the fastest syntactic parser in the world, convolutional neural network models for tagging, parsing and named entity recognition and easy deep learning integration. It"s commercial open-source software, released under the MIT license.
開發語言:python
網址:https://github.com/explosion/spaCy
開發機構:
協議:MIT協議
功能: 功能很多,如tagging, parsing and named entity recognition等
性能:功能強大,支持二十多種語言(然而目前還不支持中文,可以閱讀官方文檔了解更多信息https://spacy.io/usage/),號稱是工業級強度的Python NLP工具包,區別於學術性質更濃的Python NLTK
活躍度:star 超過7千,近期(201711)仍非常活躍
希望讀者若有補充可參與編輯我的回答,具體方式見 開源自然語言處理項目整理-石墨-公開編輯,也可在評論欄中評論,我會更新在回答之中。
百度收購的KITT.AI公司專註於喚醒和自然語言處理。這家公司提供了一款給開發者用來開發對話系統的(聊天機器人Chatbot)的工具—ChatFlow。它帶有基於NLP(自然語言處理)技術打造的自然語言理解NLU(自然語言理解)引擎,幫助開發者解決基於上下文的多輪對話問題。感興趣的知友們不妨看一看。Chatflow介紹網站:https://login.kitt.ai/#/?from=chatflow;Kitt.ai公司網站:http://kitt.ai/#home。ChatFlow的推廣視頻:
哈工大的分詞、hanlp,fudan的parser
stanford 的corenlp
HanLP
python gensim 強烈推薦
lingpipe也不錯啦http://alias-i.com/lingpipe/,我用他來做過拼寫糾錯和搜索建議方面的工作。。。
還有個word,據他自己對比是最好的一個
ysc/cws_evaluation · GitHub推薦閱讀:
※各種機器學習的應用場景分別是什麼?例如,k近鄰,貝葉斯,決策樹,svm,邏輯斯蒂回歸和最大熵模型。
※自然語言處理的學習路線?
※金融市場計算機化的交易程序是如何根據新聞進行自動交易的?目前這種技術的應用廣泛嗎?
※自然語言處理怎麼最快入門?
※截至 2016 年 3 月,機器學習、數據挖掘、計算機視覺等的泡沫有多大?