前言
從高中開始接觸數(shù)學(xué)和統(tǒng)計(jì)學(xué)以來,我就一直對(duì)數(shù)字著迷。分析學(xué)(analytics)、數(shù)據(jù)科學(xué)以及最近的文本分析技術(shù)均出現(xiàn)較晚,大概是在幾年前,當(dāng)時(shí)關(guān)于大數(shù)據(jù)(big data)和數(shù)據(jù)分析的炒作越來越猛烈,甚至有些瘋狂。就個(gè)人而言,我認(rèn)為其中很多都是過度炒作,但是也有一些令人興奮的東西,因?yàn)檫@些技術(shù)在新工作、新發(fā)現(xiàn)以及解決人們先前認(rèn)為不可能解決的問題方面展現(xiàn)了巨大的可能性。
自然語言處理(Natural Language Processing,NLP)一直深深吸引著我,因?yàn)槿四X科學(xué)和人類認(rèn)知能力確實(shí)令人著迷。如果嘗試在機(jī)器中重塑這種傳遞信息、復(fù)雜思維和情緒的能力,那一定是令人驚喜的。當(dāng)然,盡管我們?cè)谡J(rèn)知計(jì)算(cognitive computing)和人工智能(Artificial Intelligence,AI)方面的發(fā)展突飛猛進(jìn),但現(xiàn)在尚且無法實(shí)現(xiàn)這一點(diǎn)。僅通過圖靈測(cè)試可能是不夠的,機(jī)器真正能復(fù)制人的方方面面嗎?
當(dāng)今,對(duì)于NLP和文本分析應(yīng)用,迫切需求從非結(jié)構(gòu)化、原始文本數(shù)據(jù)中提取有用信息和可行見解的能力。到目前為止,我一直在努力解決各種問題,面臨諸多挑戰(zhàn),并隨著時(shí)間的推移吸取了各種各樣的經(jīng)驗(yàn)教訓(xùn)。本書涵蓋了我在文本分析領(lǐng)域?qū)W到的大部分知識(shí),僅僅從一堆文本文檔中建立一個(gè)花哨的詞云是不夠的。
在學(xué)習(xí)文本分析方面,最大的問題或許不是信息缺乏,而是信息過多,通常這稱為信息過載(information overload)。海量的資源、文檔、論文、書籍和期刊包含了大量的理論資料、概念、技術(shù)和算法,它們常常使該領(lǐng)域的新手不知所措。解決問題的正確技術(shù)是什么?文本摘要如何真正有效?哪些才是解決多類文本分類的框架?通過將數(shù)學(xué)和理論概念與現(xiàn)實(shí)用例的Python實(shí)現(xiàn)相結(jié)合,本書嘗試解決這個(gè)問題,并幫助讀者避免迄今為止我所遇到的一些急迫問題。
本書采用了全面的和結(jié)構(gòu)化的介紹方法。首先,它在前幾章中介紹了自然語言理解和Python結(jié)構(gòu)的基礎(chǔ)知識(shí)。熟悉了基礎(chǔ)知識(shí)之后,其余章節(jié)將解決文本分析中的一些有趣問題,包括文本分類、聚類、相似性分析、文本摘要和主題模型。本書還將分析文本的結(jié)構(gòu)、語義、情感和觀點(diǎn)。對(duì)于每個(gè)主題,將介紹基本概念,并使用一些現(xiàn)實(shí)世界中的場(chǎng)景和數(shù)據(jù)來實(shí)現(xiàn)涵蓋每個(gè)概念的技術(shù)。本書的構(gòu)想是呈現(xiàn)一幅文本分析和NLP的藍(lán)海,并提供必要的工具、技術(shù)和知識(shí)以處理和解決工作中遇到的問題。我希望你能覺得本書很有幫助,并祝你在文本分析的世界中旅途愉快!
目錄
譯者序
前言
第1章自然語言基礎(chǔ)
1.1自然語言
1.1.1什么是自然語言
1.1.2語言哲學(xué)
1.1.3語言習(xí)得和用法
1.2語言學(xué)
1.3語言句法和結(jié)構(gòu)
1.3.1詞
1.3.2短語
1.3.3從句
1.3.4語法
1.3.5語序類型學(xué)
1.4語言語義
1.4.1詞匯語義關(guān)系
1.4.2語義網(wǎng)絡(luò)和模型
1.4.3語義表示
1.5文本語料庫
1.5.1文本語料庫標(biāo)注及使用
1.5.2熱門的語料庫
1.5.3訪問文本語料庫
1.6自然語言處理
1.6.1機(jī)器翻譯
1.6.2語音識(shí)別系統(tǒng)
1.6.3問答系統(tǒng)
1.6.4語境識(shí)別與消解
1.6.5文本摘要
1.6.6文本分類
1.7文本分析
1.8小結(jié)
第2章Python語言回顧
2.1了解Python
2.1.1Python之禪
2.1.2應(yīng)用:何時(shí)使用Python
2.1.3缺點(diǎn):何時(shí)不用Python
2.1.4Python實(shí)現(xiàn)和版本
2.2安裝和設(shè)置
2.2.1用哪個(gè)Python版本
2.2.2用哪個(gè)操作系統(tǒng)
2.2.3集成開發(fā)環(huán)境
2.2.4環(huán)境設(shè)置
2.2.5虛擬環(huán)境
2.3Python句法和結(jié)構(gòu)
2.4數(shù)據(jù)結(jié)構(gòu)和類型
2.4.1數(shù)值類型
2.4.2字符串
2.4.3列表
2.4.4集合
2.4.5字典
2.4.6元組
2.4.7文件
2.4.8雜項(xiàng)
2.5控制代碼流
2.5.1條件結(jié)構(gòu)
2.5.2循環(huán)結(jié)構(gòu)
2.5.3處理異常
2.6函數(shù)編程
2.6.1函數(shù)
2.6.2遞歸函數(shù)
2.6.3匿名函數(shù)
2.6.4迭代器
2.6.5分析器
2.6.6生成器
2.6.7itertools和functools模塊
2.7類
2.8使用文本
2.8.1字符串文字
2.8.2字符串操作和方法
2.9文本分析框架
2.10小結(jié)
第3章處理和理解文本
3.1文本切分
3.1.1句子切分
3.1.2詞語切分
3.2文本規(guī)范化
3.2.1文本清洗
3.2.2文本切分
3.2.3刪除特殊字符
3.2.4擴(kuò)展縮寫詞
3.2.5大小寫轉(zhuǎn)換
3.2.6刪除停用詞
3.2.7詞語校正
3.2.8詞干提取
3.2.9詞形還原
3.3理解文本句法和結(jié)構(gòu)
3.3.1安裝必要的依賴項(xiàng)
3.3.2機(jī)器學(xué)習(xí)重要概念
3.3.3詞性標(biāo)注
3.3.4淺層分析
3.3.5基于依存關(guān)系的分析
3.3.6基于成分結(jié)構(gòu)的分析
3.4小結(jié)
第4章文本分類
4.1什么是文本分類
4.2自動(dòng)文本分類
4.3文本分類的藍(lán)圖
4.4文本規(guī)范化處理
4.5特征提取
4.5.1詞袋模型
4.5.2TFIDF模型
4.5.3高級(jí)詞向量模型
4.6分類算法
4.6.1多項(xiàng)式樸素貝葉斯
4.6.2支持向量機(jī)
4.7評(píng)估分類模型
4.8建立一個(gè)多類分類系統(tǒng)
4.9應(yīng)用
4.10小結(jié)
第5章文本摘要
5.1文本摘要和信息提取
5.2重要概念
5.2.1文檔
5.2.2文本規(guī)范化
5.2.3特征提取
5.2.4特征矩陣
5.2.5奇異值分解
5.3文本規(guī)范化
5.4特征提取
5.5關(guān)鍵短語提取
5.5.1搭配
5.5.2基于權(quán)重標(biāo)簽的短語提取
5.6主題建模
5.6.1隱含語義索引
5.6.2隱含Dirichlet分布
5.6.3非負(fù)矩陣分解
5.6.4從產(chǎn)品評(píng)論中提取主題
5.7自動(dòng)文檔摘要
5.7.1隱含語義分析
5.7.2TextRank算法
5.7.3生成產(chǎn)品說明摘要
5.8小結(jié)
第6章文本相似度和聚類
6.1重要概念
6.1.1信息檢索
6.1.2特征工程
6.1.3相似度測(cè)量
6.1.4無監(jiān)督的機(jī)器學(xué)習(xí)算法
6.2文本規(guī)范化
6.3特征提取
6.4文本相似度
6.5詞項(xiàng)相似度分析
6.5.1漢明距離
6.5.2曼哈頓距離
6.5.3歐幾里得距離
6.5.4萊文斯坦編輯距離
6.5.5余弦距離和相似度
6.6文檔相似度分析
6.6.1余弦相似度
6.6.2海靈格-巴塔恰亞距離
6.6.3Okapi BM25排名
6.7文檔聚類
6.8最佳影片聚類分析
6.8.1kmeans聚類
6.8.2近鄰傳播聚類
6.8.3沃德凝聚層次聚類
6.9小結(jié)
第7章語義與情感分析
7.1語義分析
7.2探索WordNet
7.2.1理解同義詞集
7.2.2分析詞匯的語義關(guān)系
7.3詞義消歧
7.4命名實(shí)體識(shí)別
7.5分析語義表征
7.5.1命題邏輯
7.5.2一階邏輯
7.6情感分析
7.7IMDb電影評(píng)論的情感分析
7.7.1安裝依賴程序包
7.7.2準(zhǔn)備數(shù)據(jù)集
7.7.3有監(jiān)督的機(jī)器學(xué)習(xí)技術(shù)
7.7.4無監(jiān)督的詞典技術(shù)
7.7.5模型性能比較
7.8小結(jié)