CoreNLP
斯坦福大學出品的基於Java的全棧天然語言處理工具,CoreNLP還提供了一套文本標註工具,對文本標註流程作了一些規範。CoreNLP提供了6種使用最普遍的語言(阿拉伯、漢語、英語、法語、德語、西班牙語)的詞庫。
Github
官方文檔html
Apache OpenNLP
基於Java的天然語言處理全棧工具,它提供了API和命令行兩種接口。官網地址:http://opennlp.apache.org/
初學天然語言處理,瞭解一些NLP全棧工具的功能是很好的。python
- 語言檢測(Language Detect):發現給定文本是哪一種語言
OpenNLP的語言檢測功能基於萊比錫數據集。
萊比錫位於德國東部的萊比錫盆地中央,在魏塞埃爾斯特河與普萊塞河的交匯處,面積141平方千米,人口約60萬,是原東德的第二大城市。萊比錫數據集(Leipzig Corpora Collection)是爲天然語言處理提供文本數據,項目發起者爲萊比錫大學計算機學院。它實際上只提供兩個數據集:(1)各類語言的按年份列出的文章;(2)用於情感分析的標註數據集。http://wortschatz.uni-leipzig.de/en/download
- 句子檢測(Sentence Detect):把一篇文章拆分紅若干個句子
漢語中,直接經過標點符號就夠了。英語中的「.」具備多種含義,例如每一個縮寫詞後面都跟着一個「.」
- 分詞(Tokenizer)
- 命名實體識別(Name Finder)
- 文檔分類 (Document Categorizer)
- 語義標註(Part of Speech Tagger)
- 提取主幹(Lemmatizer):對於單詞能夠提取詞幹,這個功能由Stemmer完成;對於句子能夠進行縮句,這個功能由Lemaatizer完成
- 分層分段(Chunker):給定一篇文章,按照意思把文章分紅若干段落或者把一段分紅若干層。
- 句法分析(Parser)
- 指代消解(Coreference Resolution)
NLP4j
NLP4j的前身是clearNLP,是一個Java實現的天然語言處理庫。
Githubgit
HanLP
和CoreNLP、OpenNLP是同類產品,基於Java、全棧天然語言處理工具包。不須要學習CoreNLP、OpenNLP,直接學習HanLP足夠了。github
polyglot
多語言、全棧、純Python的天然語言處理庫:https://github.com/aboSamoor/polyglotweb
- Tokenization (165 Languages)
- Language detection (196 Languages)
- Named Entity Recognition (40 Languages)
- Part of Speech Tagging (16 Languages)
- Sentiment Analysis (136 Languages)
- Word Embeddings (137 Languages)
- Morphological analysis (135 Languages)
- Transliteration (69 Languages)
pattern
pattern是一個基於Python的web挖掘模塊,功能包括:算法
- 爬蟲,包括HTTP請求模塊和HTML解析模塊,內置爬取谷歌、Twitter、維基等)
- 天然語言處理:part-of-speech taggers, n-gram search, sentiment analysis, WordNet
- 機器學習:machine learning (vector space model, clustering, SVM)
- 網絡分析:network analysis
- 可視化
https://pypi.org/project/pattern3/3.0.0/apache
TextBlob
TextBlob是一個純Python寫的全棧天然語言處理庫。網絡
- 名詞詞組抽取:Noun phrase extraction
- 語義標註:Part-of-speech tagging
- 情感分析:Sentiment analysis,情感分析是文本分類的一種特殊問題,能夠說是最多見的文本分類問題。
- 文本分類:Classification (Naive Bayes, Decision Tree)
- 翻譯:Language translation and detection powered by Google Translate,TextBlob的翻譯經過網絡請求訪問Google,並無提供翻譯的實現。
- 分詞:Tokenization (splitting text into words and sentences)
- 詞、詞組頻率統計:Word and phrase frequencies
- 語法分析:Parsing
- n元語法模型:n-grams
- 詞語映射,如尋找詞根:Word inflection (pluralization and singularization) and lemmatization
- 拼寫糾錯:Spelling correction
- 便於擴展:Add new models or languages through extensions
- 集成了WordNet:WordNet integration
官方文檔機器學習
snowNLP
SnowNLP是一個python寫的類庫,能夠方便的處理中文文本內容,是受到了TextBlob的啓發而寫的,因爲如今大部分的天然語言處理庫基本都是針對英文的,因而寫了一個方便處理中文的類庫,而且和TextBlob不一樣的是,這裏沒有用NLTK,全部的算法都是本身實現的,而且自帶了一些訓練好的字典。注意本程序都是處理的unicode編碼,因此使用時請自行decode成unicode。
該庫功能包括:分詞、標註、情感分析。snowNLP提供的功能是TextBlob的子集。
https://github.com/isnowfy/snownlp工具
nlpir
中科院出品的基於C++實現的天然語言全站工具,提供Java、C#等多種語言的封裝。主要功能包括中文分詞;英文分詞;詞性標註;命名實體識別;新詞識別;關鍵詞提取;支持用戶專業詞典與微博分析。NLPIR系統支持多種編碼、多種操做系統、多種開發語言與平臺。
http://ictclas.nlpir.org/
Github
NLTK
老牌的Python全棧天然語言處理庫。
AllenNLP
AllenNLP是純Python(只提供Python3.6以上版本的包)、基於Pytorch實現的全棧天然語言處理包,過去的天然語言處理包大都是傳統方法,AllenNLP中包含了大量的深度學習方法。AllenNLP是由Allen機構發佈的,Allen是一個AI研究機構。
Github地址
AllenNLP官網
spaCy
spaCy是基於Python和Cython的高效、商業化、支持45種以上語言的天然語言處理工具包。該庫對漢語支持略顯不足。
Github
MontyLingua
支持Python和Java兩種語言、只針對英語的天然語言處理庫。http://alumni.media.mit.edu/~hugo/montylingua/
NiuTrans
東北大學朱靖波實驗室的基於統計的機器翻譯模型:http://www.niutrans.com/niutrans/NiuTrans.ch.html
foolNLTK
國人開發,基於Python
gensim
功能包括詞向量和文檔主題發現。
glove
C++實現的詞向量工具,詞向量生成有三種方式:glove、cbow、skip-gram。
fasttext
提供了詞向量工具和文本分類功能。
分詞器
- jieba:最流行的Python分詞器
- jieba-analysis:Java版的jieba
- ansj:孫健的分詞器
- IKAnalyzer:常見於Solr和Lucene
- mmseg4j
- jcseg
- 斯坦福福瓷器
- pkuseg北大分詞器
- FudanNLP:復旦分詞器
- paoding:老牌分詞器
- smartcn
- ictclas:中科院基於HMM的分詞器
- nlpir:中科院分詞器
- smallseg
- snailseg
- thulac:清華分詞器
- ltp:哈工大分詞器
bosen波森
波森是一個web服務,提供天然語言處理全棧服務。明明是國產,非要起個外國名字。
https://bosonnlp.com/about
天然語言處理的庫很是豐富,質量卻也參差不齊。許多庫的做者都是一我的開發的,維護也不到位。