自然語言處理(NLP)是有關計算語言學與人工智能的研究領域之一。NLP主要關注人機交互,它提供了計算機和人類之間的無縫交互,使得計算機在機器學習的幫助下理解人類語言。
本書詳細介紹如何使用Python執行各種自然語言處理(NLP)任務,并幫助讀者掌握利用Python設計和構建基于NLP的應用的實踐。本書引導讀者應用機器學習工具來開發各種各樣的模型。對于訓練數據的創建和主要NLP應用的實現,例如命名實體識別、問答系統、語篇分析、詞義消歧、信息檢索、情感分析、文本摘要以及指代消解等,本書都進行了清晰的介紹。本書有助于讀者使用NLTK創建NLP項目并成為相關領域的專家。
通過閱讀本書,你將能夠:
● 實現字符串匹配算法以及標準化技術;
● 實現統計語言建模技術;
● 深刻理解詞干提取器、詞形還原器、形態分析器以及形態生成器的開發;
● 開發搜索引擎并實現詞性標注和統計建模(包含n-gram方法)等相關概念;
● 熟悉諸如樹型庫建設、CFG建設、CYK以及Earley線圖解析算法等相關概念;
● 開發基于NER的系統并理解和應用情感分析的相關概念;
● 理解并實現信息檢索和文本摘要等相關概念;
● 開發語篇分析系統以及基于指代消解的系統。
精通Python自然語言處理 內容簡介
自然語言處理是計算語言學和人工智能之中與人機交互相關的領域之一。
本書是學習自然語言處理的一本綜合學習指南,介紹了如何用Python實現各種NLP任務,以幫助讀者創建基于真實生活應用的項目。全書共10章,分別涉及字符串操作、統計語言建模、形態學、詞性標注、語法解析、語義分析、情感分析、信息檢索、語篇分析和NLP系統評估等主題。
本書適合熟悉Python語言并對自然語言處理開發有一定了解和興趣的讀者閱讀參考。
精通Python自然語言處理 目錄
前言
第1章 字符串操作
1.1 切分
1.2 標準化
1.3 替換和校正標識符
1.4 在文本上應用Zipf定律
1.5 相似性度量
1.6 小結
第2章 統計語言建模
2.1 理解單詞頻率
2.2 在MLE模型上應用平滑
2.3 為MLE開發一個回退機制
2.4 應用數據的插值以便獲取混合搭配
2.5 通過復雜度來評估語言模型
2.6 在語言建模中應用Metropolis-Hastings算法
2.7 在語言處理中應用Gibbs采樣法
2.8 小結
第3章 形態學:在實踐中學習
3.1 形態學簡介
3.2 理解詞干提取器
3.3 理解詞形還原
3.4 為非英文語言開發詞干提取器
3.5 形態分析器
3.6 形態生成器
3.7 搜索引擎
3.8 小結
第4章 詞性標注:單詞識別
4.1 詞性標注簡介
4.2 創建詞性標注語料庫
4.3 選擇一種機器學習算法
4.4 涉及n-gram的統計建模
4.5 使用詞性標注語料庫開發分塊器
4.6 小結
第5章 語法解析:分析訓練資料
5.1 語法解析簡介
5.2 Treebank建設
5.3 從Treebank提取上下文無關文法規則
5.4 從CFG創建概率上下文無關文法
5.5 CYK線圖解析算法
5.6 Earley線圖解析算法
5.7 小結
第6章 語義分析:意義很重要
6.1 語義分析簡介
6.2 使用Wordnet生成同義詞集id
6.3 使用Wordnet進行詞義消歧
6.4 小結
第7章 情感分析:我很快樂
7.1 情感分析簡介
7.2 小結
第8章 信息檢索:訪問信息
8.1 信息檢索簡介
8.2 向量空間評分及查詢操作符關聯
8.3 使用隱性語義索引開發IR系統
8.4 文本摘要
8.5 問答系統
8.6 小結
第9章 語篇分析:理解才是可信的
9.1 語篇分析簡介
9.2 小結
第10章 NLP系統評估:性能分析
10.1 NLP系統評估要點
10.2 IR系統的評估
10.3 錯誤識別指標
10.4 基于詞匯搭配的指標
10.5 基于句法匹配的指標
10.6 使用淺層語義匹配的指標
10.7 小結
精通Python自然語言處理 精彩文摘
自然語言處理(Natural Language Processing,NLP)關注的是自然語言與計算機之間的交互。它是人工智能(Artificial Intelligence,AI)和計算語言學的主要分支之一。它提供了計算機和人類之間的無縫交互并使得計算機能夠在機器學習的幫助下理解人類語言。在編程語言(例如C、C++、Java、Python等)里用于表示一個文件或文檔內容的基礎數據類型被稱為字符串。在本章中,我們將探索各種可以在字符串上執行的操作,這些操作將有助于完成各種NLP任務。
本章將包含以下主題:
·文本切分。
·文本標準化。
·替換和校正標識符。
·在文本上應用Zipf定律。
·使用編輯距離算法執行相似性度量。
·使用Jaccard系數執行相似性度量。
·使用Smith Waterman算法執行相似性度量。
切分可以認為是將文本分割成更小的并被稱作標識符的模塊的過程,它被認為是NLP的一個重要步驟。
當安裝好NLTK包并且Python的交互式開發環境(IDLE)也運行起來時,我們就可以將文本或者段落切分成獨立的語句。為了實現切分,我們可以導入語句切分函數,該函數的參數即為需要被切分的文本。
sent_tokenize函數使用了NLTK包的一個叫作PunktSentenceTokenizer類的實例。基于那些可以標記句子開始和結束的字母和標點符號,NLTK中的這個實例已經被訓練用于對不同的歐洲語言執行切分。