本文主要是總結最近學習的論文、書籍相關知識,主要是Natural Language Pracessing(自然語言處理,簡稱NLP)和Python挖掘維基百科Infobox等內容的知識。
此篇文章主要參考書籍《Natural Language Processing with Python》Python自然語言處理,希望對大家有所幫助。書籍下載地址:
官方網頁版書籍:[http://www.nltk.org/book/](http://www.nltk.org/book/)
CSDN下載地址:[http://download.csdn.net/detail/eastmount/8601705](http://download.csdn.net/detail/eastmount/8601705)
##一. 自然語言處理簡單介紹
所謂“自然語言”,是指人們日常交流使用的語言,如英語、印地語隨著不斷演化,很難用明確的規則來刻畫。
從廣義上,“自然語言處理”(Natural Language Processing簡稱NLP)包含所有計算機對自然語言進行的操作,從最簡單的通過計數詞出現的頻率來比較不同的寫作風格到最復雜的完全“理解”人所說的話。
基于NLP的技術應用日益廣泛,如手機和手持電腦支持輸入法聯想提示(predictive text)和手寫識別、網絡搜索引擎能搜到非結構化文本中的信息、機器翻譯能把中文文本翻譯成西班牙文等。
通過使用Python程序設計語言和自然語言工具包(NLTK,Natural Language Toolkit)的開源函數庫,本書包括自然語言處理的實際經驗。本書可以自學,也可以作為自然語言處理或計算機語言學課程的教科書,或是人工智能、文本挖掘、語料庫語言學課程的補充讀物。
本書為什么使用Python呢?
Python是一種簡單功能強大的變成語言,非常適合處理語言數據。
作為解釋語言,Python便于交互式變成;作為面向對象語言,Python允許數據和方法被方面的封裝和重用。作為動態語言,Python允許屬性等程序運行時才被添加到對象,允許變量自動類型轉換,提高開發效率。Python自帶強大的標準庫,包括圖像編程、數值處理和網絡連接等組件。


章節介紹包括:如何使用很短的Python程序分析感興趣的文本信息(1-3章)、結構化程序設計章節(第4章)、語言處理的主要內容:標注、分類和信息提取(5-7章)、探索分析句子、識別句法結構和構建表示句意的方法(8-10章)、最后一章講述如何有效管理語言數據(第11章)。
##二. NLTK環境配置
首先安裝Python,可在官網[https://www.python.org/](https://www.python.org/)下載。
Python對用戶友好的一個方式是你可以在交互式解釋器運行你的程序,通過一個簡單的交互式開發壞境(Interactive DeveLopment Environment,簡稱IDLE)的圖形接口訪問Python解釋器。后面配置NLTK就是在IDLE環境下進行。
然后下載NLTK,資料如下:
官網鏈接:[http://www.nltk.org/](http://www.nltk.org/)
安裝步驟:[http://www.nltk.org/install.html](http://www.nltk.org/install.html)
下載地址:[https://pypi.python.org/pypi/nltk](https://pypi.python.org/pypi/nltk)
由于我的電腦是windows系統,安裝的步驟如下圖所示:

安裝NLTK3.0

測試NLTK輸入代碼:
~~~
>>> import nltk
>>> nltk.download()
~~~
如下圖所示:

下載NLTK圖書集:使用nltk.download()瀏覽可用的軟件包,下載器上的Collections選項卡顯示軟件包如何被打包分組;選擇book標記所在行,獲取本書的例子和聯系所需的全部數據。可參考[資料](http://www.cnblogs.com/huangcong/archive/2011/08/29/2157437.html)。

點擊”Download“后安裝需要一定時間,最后選項book變成”Installed“:

同時如果無法下載,你可以對自己感興趣的選擇雙擊進行下載:

當數據下載到機器后,你可以使用Python解釋器加載其中一些,在Python提示符后輸入”from nltk.book import *”告訴解釋器從NLTK的book加載所有的文本,輸入text1找到相應的文本名字。如下圖所示:

此時你的NLTK配置成功。
##三. 自然語言處理常用方法
### 1.concordance函數
功能:搜索文本,在text1中輸入函數concordance(),查找《白鯨記》中的詞語monstrous。
~~~
>>> text1.concordance("monstrous")
~~~
提示:可以通過快捷鍵Alt+P獲取之前輸入的命令,共搜索11個匹配結果。

### 2.similar函數
功能:通過函數similar()可以查詢括號中相關詞在上下文中相似的詞語。詞語索引使我們看到此的上下文,如monstrous出現的上下文,如the_pictures和the_size。
~~~
>>> text1.similar("monstrous")
~~~
可以發現與monstrous(丑陋的)相似的大部分都是形容詞:curious(好奇的)、impalpable(無形的)、perilous(危險的)、lazy(懶惰的)等。

我的懷疑應該是和上下文語義結構有關,卻沒有“理解”它具體的詞義。如:the Monstrous Pictures、more monstrous stories、a monstrous size。很顯然monstrous充當修飾名詞的形容詞結構——冠詞+monstrous+名詞。
### 3.common_contexts函數
功能:函數common_contexts允許我們研究兩個或兩個以上的詞共同的上下文,如monstrous和very。
~~~
>>> text2.common_contexts(["monstrous","very"])
a_pretty is_pretty a_lucky am_glad be_glad
~~~
必須用方括號和圓括號把這些詞括起來,中間用逗號分隔。個人理解:似乎similar是與之相關的詞語,而common_contexts是相似的結構。

### 4.generate函數
功能:通過函數generate()產生一些隨機文本自動生成文章。
~~~
>>> text3.generate()
~~~
注意:第一次運行此命令時,由于要搜集詞序列的統計信息而執行得比較慢,每次運行它,輸出的文本都會不同。雖然文本是隨機的,但是它重用了源文本中的詞和短語,從而使我們能夠感覺到它的風格和內容。

報錯:”AttributeError: 'Text' object has noattribute 'generate'“其原因參照StackFlow:

理想輸出結果如下:

總結:最后希望這篇入門文章對大家有所幫助,如果有錯誤或不足之處,親海涵!后面還會深入的講解自然語言處理和Python挖掘相關知識;同時包括NLTK的更廣泛應用及理解。建議大家購買正版書籍閱讀,挺不錯的書籍《Python自然語言處理》作者:Steven Bird, Ewan Klein & Edward Loper。
(By:Eastmount 2015-4-16 晚上8點 [http://blog.csdn.net/eastmount/](http://blog.csdn.net/eastmount/))
- 前言
- [Python學習] 專題一.函數的基礎知識
- [Python學習] 專題二.條件語句和循環語句的基礎知識
- [Python學習] 專題三.字符串的基礎知識
- [Python學習] 簡單網絡爬蟲抓取博客文章及思想介紹
- [Python學習] 專題四.文件基礎知識
- [python學習] 簡單爬取維基百科程序語言消息盒
- [python學習] 簡單爬取圖片網站圖庫中圖片
- [python知識] 爬蟲知識之BeautifulSoup庫安裝及簡單介紹
- [python+nltk] 自然語言處理簡單介紹和NLTK壞境配置及入門知識(一)
- [python學習] 模仿瀏覽器下載CSDN源文并實現PDF格式備份
- [Python學習] 簡單爬取CSDN下載資源信息
- [Python] 專題五.列表基礎知識 二維list排序、獲取下標和處理txt文本實例
- [Python學習] 專題六.局部變量、全局變量global、導入模塊變量
- [python] 專題七.網絡編程之套接字Socket、TCP和UDP通信實例
- [python] 專題八.多線程編程之thread和threading