Python自然語言處理工具NLTK學習導引及相關資料
NLTK 大概是最知名的Python自然語言處理工具了,全稱"Natural Language Toolkit", 誕生於賓夕法尼亞大學,以研究和教學為目的而生,因此也特別適合入門學習。NLTK雖然主要面向英文,但是它的很多NLP模型或者模塊是語言無關的,因此如果某種語言有了初步的Tokenization或者分詞,NLTK的很多工具包是可以復用的。
關於NLTK,網上已經有了很多介紹資料,當然首推的NLTK學習資料依然是官方出的在線書籍 NLTK Book:Natural Language Processing with Python – Analyzing Text with the Natural Language Toolkit,目前基於Python 3 和 NLTK 3 ,可以在線免費閱讀和學習。早期的時候還有一個基於Python 2 的老版本:http://www.nltk.org/book_1ed/ ,被 OReilly 正式出版過,2012年的時候,國內的陳濤同學無償翻譯過一個中文版,我還在這裡推薦過:推薦《用Python進行自然語言處理》中文翻譯-NLTK配套書,後來纔有了基於此版本的更正式的中文翻譯版:《Python自然語言處理》。不過如果英文ok的話,優先推薦看目前官方的最新版本:http://www.nltk.org/book/
幾年前我嘗試寫英文博客,覺得可以從NLTK的入門介紹開始,所以寫了一個英文系列:Dive into NLTK,基於Python 2,感興趣的同學可以關註:
Part I: Getting Started with NLTK
Part II: Sentence Tokenize and Word TokenizePart III: Part-Of-Speech Tagging and POS TaggerPart IV: Stemming and LemmatizationPart V: Using Stanford Text Analysis Tools in Python
Part VI: Add Stanford Word Segmenter Interface for Python NLTKPart VII: A Preliminary Study on Text ClassificationPart VIII: Using External Maximum Entropy Modeling Libraries for Text ClassificationPart IX: From Text Classification to Sentiment AnalysisPart X: Play With Word2Vec Models based on NLTK Corpus
Part XI: From Word2Vec to WordNet這個過程中使用了NLTK中嵌入的斯坦福大學文本分析工具包,發現少了斯坦福中文分詞器,所以當時動手加了一個:Python自然語言處理實踐: 在NLTK中使用斯坦福中文分詞器
斯坦福大學自然語言處理組是世界知名的NLP研究小組,他們提供了一系列開源的Java文本分析工具,包括分詞器(Word Segmenter),詞性標註工具(Part-Of-Speech Tagger),命名實體識別工具(Named Entity Recognizer),句法分析器(Parser)等,可喜的事,他們還為這些工具訓練了相應的中文模型,支持中文文本處理。在使用NLTK的過程中,發現當前版本的NLTK已經提供了相應的斯坦福文本處理工具介面,包括詞性標註,命名實體識別和句法分析器的介面,不過可惜的是,沒有提供分詞器的介面。在google無果和閱讀了相應的代碼後,我決定照貓畫虎為NLTK寫一個斯坦福中文分詞器介面,這樣可以方便的在Python中調用斯坦福文本處理工具。
後來,這個版本在 NLTK 3.2 官方版本中被正式引入:stanford_segmenter.py ,我也可以小自豪一下為NLTK做過一點微小的貢獻: