本書(shū)是一本介紹NLTK的書(shū),書(shū)中也介紹了很多有關(guān)Python語(yǔ)言的知識(shí)。本書(shū)首先幫助讀者掌握構(gòu)建系統(tǒng)NLP的要點(diǎn),并引導(dǎo)讀者探索數(shù)據(jù)科學(xué)相關(guān)的領(lǐng)域。除此之外,書(shū)中還介紹了很多有關(guān)于自然語(yǔ)言處理的重要知識(shí),讓讀者深入掌握一些Python里可以應(yīng)用到自然語(yǔ)言處理中的實(shí)用的工具和庫(kù)。通過(guò)學(xué)習(xí)本書(shū),讀者將對(duì)自然語(yǔ)言處理和機(jī)器學(xué)習(xí)有更加深入的認(rèn)識(shí),并能夠更好地利用Python語(yǔ)言處理眾多非結(jié)構(gòu)化的數(shù)據(jù)。
自然語(yǔ)言處理(NLP)屬于人工智能與計(jì)算機(jī)語(yǔ)言學(xué)的交叉領(lǐng)域,處理的是計(jì)算機(jī)與人類語(yǔ)言之間的交互問(wèn)題。隨著人機(jī)交互需求的日益增長(zhǎng),計(jì)算機(jī)具備處理當(dāng)前主要自然語(yǔ)言的能力已經(jīng)成為了一個(gè)必然趨勢(shì)。NLTK正是這一領(lǐng)域中一個(gè)強(qiáng)大而穩(wěn)健的工具包。
在這本書(shū)中,我們首先會(huì)介紹一些與NLP相關(guān)的知識(shí)。然后,我們會(huì)探討一些與數(shù)據(jù)科學(xué)相關(guān)的任務(wù),通過(guò)這些任務(wù)來(lái)學(xué)習(xí)如何從零開(kāi)始構(gòu)建自定義的標(biāo)識(shí)器和解析器。在此過(guò)程中,我們將會(huì)深度探索NLP領(lǐng)域的基本概念,為這一領(lǐng)域各種開(kāi)源的Python工具和庫(kù)提供具有實(shí)踐意義的見(jiàn)解。接下來(lái),我們將會(huì)介紹如何分析社交媒體網(wǎng)站,發(fā)現(xiàn)熱門話題,進(jìn)行輿情分析。zui后,我們還會(huì)介紹一些用于處理大規(guī)模文本的工具。
在閱讀完本書(shū)之后,您將會(huì)對(duì)NLP與數(shù)據(jù)科學(xué)領(lǐng)域中的概念有一個(gè)充分的了解,并能將這些知識(shí)應(yīng)用到日常工作中。
如果您是NLP或機(jī)器學(xué)習(xí)相關(guān)領(lǐng)域的愛(ài)好者,并有一些文本處理的經(jīng)驗(yàn),那么本書(shū)就是為你量身定做的。此外,這本書(shū)也是專業(yè)Python程序員快速學(xué)習(xí)NLTK庫(kù)的理想選擇。
通過(guò)本書(shū),你將學(xué)會(huì):
■ 了解自然語(yǔ)言的復(fù)雜性以及機(jī)器對(duì)它們的處理方式。
■ 如何利用標(biāo)識(shí)化處理手段清理文本歧義,并利用分塊操作更好地處理數(shù)據(jù)。
■ 探索不同標(biāo)簽類型的作用,并學(xué)習(xí)如何將句子標(biāo)簽化。
■ 如何根據(jù)自己的需要來(lái)創(chuàng)建自定義的解析器和標(biāo)識(shí)器。
■ 如何構(gòu)建出具有拼寫(xiě)檢查、搜索、機(jī)器翻譯以及問(wèn)答系統(tǒng)等功能的實(shí)用程序。
■ 如何通過(guò)信息爬取與捕獲的手段對(duì)相關(guān)數(shù)據(jù)內(nèi)容進(jìn)行檢索。
■ 如何通過(guò)特性的提取與選取,構(gòu)建出針對(duì)不同文本的分類系統(tǒng)。
■ 如何使用各種第三方Python庫(kù),如pandas、scikit-learn、matplotlib、gensim。
■ 如何對(duì)社交媒體網(wǎng)站進(jìn)行分析,包括發(fā)掘熱門話題、輿情分析等。
Nitin Hardeniya 數(shù)據(jù)科學(xué)家,擁有4年以上從業(yè)經(jīng)驗(yàn),期間分別任職于Fidelity、Groupon和[24]7等公司,其業(yè)務(wù)橫跨各個(gè)不同的領(lǐng)域。此外,他還擁有IIIT-H的計(jì)算語(yǔ)言學(xué)碩士學(xué)位,并且是5項(xiàng)客戶體驗(yàn)專利的作者。
第1章 自然語(yǔ)言處理簡(jiǎn)介 1
1.1 為什么要學(xué)習(xí)NLP 2
1.2 先從Python開(kāi)始吧 5
1.2.1 列表 5
1.2.2 自助功能 6
1.2.3 正則表達(dá)式 8
1.2.4 字典 9
1.2.5 編寫(xiě)函數(shù) 10
1.3 向NLTK邁進(jìn) 11
1.4 練習(xí) 16
1.5 小結(jié) 17
第2章 文本的歧義及其清理 18
2.1 何謂文本歧義 18
2.2 文本清理 20
2.3 語(yǔ)句分離器 21
2.4 標(biāo)識(shí)化處理 22
2.5 詞干提取 23
2.6 詞形還原 24
2.7 停用詞移除 25
2.8 罕見(jiàn)詞移除 26
2.9 拼寫(xiě)糾錯(cuò) 26
2.10 練習(xí) 27
2.11 小結(jié) 28
第3章 詞性標(biāo)注 29
3.1 何謂詞性標(biāo)注 29
3.1.1 Stanford標(biāo)注器 32
3.1.2 深入了解標(biāo)注器 33
3.1.3 順序性標(biāo)注器 35
3.1.4 Brill標(biāo)注器 37
3.1.5 基于機(jī)器學(xué)習(xí)的標(biāo)注器 37
3.2 命名實(shí)體識(shí)別(NER) 38
3.3 練習(xí) 40
3.4 小結(jié) 41
第4章 文本結(jié)構(gòu)解析 43
4.1 淺解析與深解析 43
4.2 兩種解析方法 44
4.3 為什么需要進(jìn)行解析 44
4.4 不同的解析器類型 46
4.4.1 遞歸下降解析器 46
4.4.2 移位-歸約解析器 46
4.4.3 圖表解析器 46
4.4.4 正則表達(dá)式解析器 47
4.5 依存性文本解析 48
4.6 語(yǔ)塊分解 50
4.7 信息提取 53
4.7.1 命名實(shí)體識(shí)別(NER) 53
4.7.2 關(guān)系提取 54
4.8 小結(jié) 55
第5章 NLP應(yīng)用 56
5.1 構(gòu)建第一個(gè)NLP應(yīng)用 57
5.2 其他NLP應(yīng)用 60
5.2.1 機(jī)器翻譯 60
5.2.2 統(tǒng)計(jì)型機(jī)器翻譯 61
5.2.3 信息檢索 62
5.2.4 語(yǔ)音識(shí)別 64
5.2.5 文本分類 65
5.2.6 信息提取 66
5.2.7 問(wèn)答系統(tǒng) 67
5.2.8 對(duì)話系統(tǒng) 67
5.2.9 詞義消歧 67
5.2.10 主題建模 68
5.2.11 語(yǔ)言檢測(cè) 68
5.2.12 光符識(shí)別 68
5.3 小結(jié) 68
第6章 文本分類 70
6.1 機(jī)器學(xué)習(xí) 71
6.2 文本分類 72
6.3 取樣操作 74
6.3.1 樸素貝葉斯法 76
6.3.2 決策樹(shù) 79
6.3.3 隨機(jī)梯度下降法 80
6.3.4 邏輯回歸 81
6.3.5 支持向量機(jī) 81
6.4 隨機(jī)森林算法 83
6.5 文本聚類 83
6.6 文本中的主題建模 84
6.7 參考資料 87
6.8 小結(jié) 87
第7章 Web爬蟲(chóng) 88
7.1 Web爬蟲(chóng) 88
7.2 編寫(xiě)第一個(gè)爬蟲(chóng)程序 89
7.3 Scrapy庫(kù)中的數(shù)據(jù)流 92
7.3.1 Scrapy庫(kù)的shell 93
7.3.2 目標(biāo)項(xiàng) 98
7.4 生成網(wǎng)站地圖的蜘蛛程序 99
7.5 目標(biāo)項(xiàng)管道 100
7.6 參考資料 102
7.7 小結(jié) 102
第8章 NLTK與其他Python庫(kù)的搭配
運(yùn)用 104
8.1 NumPy 104
8.1.1 多維數(shù)組 105
8.1.2 基本運(yùn)算 106
8.1.3 從數(shù)組中提取數(shù)據(jù) 107
8.1.4 復(fù)雜矩陣運(yùn)算 108
8.2 SciPy 112
8.2.1 線性代數(shù) 113
8.2.2 特征值與特征向量 113
8.2.3 稀疏矩陣 114
8.2.4 優(yōu)化措施 115
8.3 pandas 117
8.3.1 讀取數(shù)據(jù) 117
8.3.2 數(shù)列 119
8.3.3 列轉(zhuǎn)換 121
8.3.4 噪聲數(shù)據(jù) 121
8.4 matplotlib 123
8.4.1 子圖繪制 123
8.4.2 添加坐標(biāo)軸 124
8.4.3 散點(diǎn)圖繪制 125
8.4.4 條形圖繪制 126
8.4.5 3D繪圖 126
8.5 參考資料 126
8.6 小結(jié) 127
第9章 Python中的社交媒體挖掘 128
9.1 數(shù)據(jù)收集 128
9.2 數(shù)據(jù)提取 132
9.3 地理可視化 134
9.3.1 影響力檢測(cè) 135
9.3.2 Facebook 135
9.3.3 有影響力的朋友 139
9.4 小結(jié) 141
第10章 大規(guī)模文本挖掘 142
10.1 在Hadoop上使用Python的
不同方式 142
10.1.1 Python的流操作 143
10.1.2 Hive/Pig下的UDF 143
10.1.3 流封裝器 143
10.2 Hadoop上的NLTK 144
10.2.1 用戶定義函數(shù)
(UDF) 144
10.2.2 Python的流操作 146
10.3 Hadoop上的Scikit-learn 147
10.4 PySpark 150
10.5 小結(jié) 153