CoreNLP
斯坦福大學出品的基於Java的全棧自然語言處理工具,CoreNLP還提供了一套文本標注工具,對文本標注流程做了一些規范。CoreNLP提供了6種使用最廣泛的語言(阿拉伯、漢語、英語、法語、德語、西班牙語)的詞庫。
Github
官方文檔
Apache OpenNLP
基於Java的自然語言處理全棧工具,它提供了API和命令行兩種接口。官網地址:http://opennlp.apache.org/
初學自然語言處理,了解一些NLP全棧工具的功能是很好的。
- 語言檢測(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實現的自然語言處理庫。
Github
HanLP
和CoreNLP、OpenNLP是同類產品,基於Java、全棧自然語言處理工具包。不需要學習CoreNLP、OpenNLP,直接學習HanLP足夠了。
polyglot
多語言、全棧、純Python的自然語言處理庫:https://github.com/aboSamoor/polyglot
- 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/
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
自然語言處理的庫非常豐富,質量卻也良莠不齊。許多庫的作者都是一個人開發的,維護也不到位。
