Python 自然語言處理(NLP)工具庫匯總


轉至:https://www.sohu.com/a/195343820_163476

 

 

最近正在用nltk 對中文網絡商品評論進行褒貶情感分類,計算評論的信息熵(entropy)、互信息(point mutual information)和困惑值(perplexity)等(不過這些概念我其實也還理解不深...只是nltk 提供了相應方法)。

我感覺用nltk 處理中文是完全可用的。其重點在於中文分詞和文本表達的形式。

中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度一般是詞,所以必須要先對文本進行分詞然后再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。

中文分詞之后,文本就是一個由每個詞組成的長數組:[word1, word2, word3…… wordn]。之后就可以使用nltk 里面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙詞組的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]

再之后就可以用這些來計算文本詞語的信息熵、互信息等。

再之后可以用這些來選擇機器學習的特征,構建分類器,對文本進行分類(商品評論是由多個獨立評論組成的多維數組,網上有很多情感分類的實現例子用的就是nltk 中的商品評論語料庫,不過是英文的。但整個思想是可以一致的)。

另外還有一個困擾很多人的Python 中文編碼問題。多次失敗后我總結出一些經驗。

Python 解決中文編碼問題基本可以用以下邏輯:

utf8(輸入) ——> unicode(處理) ——> (輸出)utf8

Python 里面處理的字符都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什么編碼)解碼為(decodeunicode編碼,然后輸出時再編碼(encode)成所需編碼。

由於處理的一般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然后使用Python 處理的時候解碼為unicodesometexts.decode('utf8')),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。

另外這篇文章也有很詳細的講到nltk 的中文應用,很值得參考:http://blog.csdn.net/huyoo/article/details/12188573

1.NLTK

NLTK 在使用 Python 處理自然語言的工具中處於領先的地位。它提供了 WordNet 這種方便處理詞匯資源的接口,以及分類、分詞、詞干提取、標注、語法分析、語義推理等類庫。

網站

http://www.nltk.org/

安裝 NLTK: sudo pip install -U nltk

安裝 Numpy (可選): sudo pip install -U numpy

安裝測試: python then type import nltk

2.Pattern

Pattern 擁有一系列的自然語言處理工具,比如說詞性標注工具(Part-Of-Speech Tagger)N元搜索(n-gram search),情感分析(sentiment analysis)WordNet。它也支持機器學習的向量空間模型,聚類,向量機。

網站:

https://github.com/clips/pattern

安裝:

pip install pattern

3.TextBlob

TextBlob 是一個處理文本數據的 Python 庫。它提供了一個簡單的 api 來解決一些常見的自然語言處理任務,例如詞性標注、名詞短語抽取、情感分析、分類、翻譯等等。

網站:

http://textblob.readthedocs.org/en/dev/

安裝:

pip install -U textblob

4.Gensim

Gensim 是一個 Python 庫,用於對大型語料庫進行主題建模、文件索引、相似度檢索等。它可以處理大於內存的輸入數據。作者說它是純文本上無監督的語義建模最健壯、高效、易用的軟件。

網站:

https://github.com/piskvorky/gensim

安裝:

pip install -U gensim

5.PyNLPI

它的全稱是:Python 自然語言處理庫(Python Natural Language Processing Library,音發作: pineapple) 是一個用於自然語言處理任務庫。它集合了各種獨立或松散互相關的,那些常見的、不常見的、對NLP 任務有用的模塊。PyNLPI 可以用來處理 N 元搜索,計算頻率表和分布,建立語言模型。它還可以處理向優先隊列這種更加復雜的數據結構,或者像 Beam 搜索這種更加復雜的算法。

安裝:

LInux:sudo apt-get install pymol

Fedora:yum install pymol

6.spaCy

這是一個商業的開源軟件。結合了Python Cython 優異的 NLP 工具。是快速的,最先進的自然語言處理工具。

網站:

https://github.com/proycon/pynlpl

安裝:

pip install spacy

7.Polyglot可以做印尼分詞,不過需要安裝包,基於Linux系統

Polyglot 支持大規模多語言應用程序的處理。它支持165種語言的分詞,196中語言的辨識,40種語言的專有名詞識別,16種語言的詞性標注,136種語言的情感分析,137種語言的嵌入,135種語言的形態分析,以及69種語言的翻譯。

網站:

https://pypi.python.org/pypi/polyglot

安裝

pip install polyglot

8.MontyLingua

MontyLingua 是一個免費的、功能強大的、端到端的英文處理工具。在 MontyLingua 輸入原始英文文本 ,輸出就會得到這段文本的語義解釋。它適用於信息檢索和提取,請求處理,問答系統。從英文文本中,它能提取出主動賓元組,形容詞、名詞和動詞短語,人名、地名、事件,日期和時間等語義信息。

網站:

http://web.media.mit.edu/~hugo/montylingua/

9.BLLIP Parser

BLLIP Parser(也叫做 Charniak-Johnson parser)是一個集成了生成成分分析器和最大熵排序的統計自然語言分析器。它包括命令行和python接口。

10.Quepy

Quepy 是一個 Python 框架,提供了將自然語言問題轉換成為數據庫查詢語言中的查詢。它可以方便地自定義自然語言中不同類型的問題和數據庫查詢。所以,通過 Quepy,僅僅修改幾行代碼,就可以構建你自己的自然語言查詢數據庫系統。

網站

https://github.com/machinalis/quepy

http://quepy.machinalis.com/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM