文本是一種特殊的非結(jié)構(gòu)化數(shù)據(jù),在當今的大數(shù)據(jù)時代,其價值日趨凸顯。本書利用開源而強大的R軟件,對文本數(shù)據(jù)挖掘的概念、技術(shù)及技巧進行了系統(tǒng)的介紹。本書共11章,內(nèi)容包括:走進文本數(shù)據(jù)挖掘,R語言快速入門,字符串的基本處理,用好正則表達式,導入各類文本數(shù)據(jù),對各類文本數(shù)據(jù)進行預處理,文本特征提取的4種方法,基于機器學習的文本分類方法,文本情感分析,文本可視化,文本數(shù)據(jù)挖掘項目實踐。本書還提供了豐富的應(yīng)用案例和程序源代碼引導讀者高效學習。
本書適合對文本數(shù)據(jù)挖掘感興趣的學生、科研人員和數(shù)據(jù)科學從業(yè)者閱讀。同時,本書還可以作為工具書,為需要經(jīng)常進行文本數(shù)據(jù)挖掘的讀者提供快速檢索。
適讀人群 :本書適合對文本數(shù)據(jù)挖掘感興趣的學生、科研人員和數(shù)據(jù)科學從業(yè)者閱讀。同時,本書還可以作為工具書,為需要經(jīng)常進行文本數(shù)據(jù)挖掘的讀者提供快速檢索。 知乎R語言方面的大V新作
深入淺出地介紹文本數(shù)據(jù)挖掘技術(shù)原理與方法
簡明扼要地介紹R語言編程基礎(chǔ)
結(jié)合大量實例循序漸進地講解基于R語言的文本數(shù)據(jù)挖掘步驟、方法、技巧
文本作為重要的非結(jié)構(gòu)化數(shù)據(jù)之一,其相關(guān)方面的數(shù)據(jù)挖掘在醫(yī)療健康、市場營銷、電商媒體、數(shù)字人文等各種場景中都有重要的應(yīng)用。例如,對電子病歷的規(guī)范化文本數(shù)據(jù)進行提取,可以量化病人的診斷結(jié)果,提出合理建議;在點評類平臺中對消費者的評論進行關(guān)鍵詞提取,可以對店家的服務(wù)進行評估;在公共社交平臺上對某一個話題的文本進行提取和情感量化,可以獲知大眾對某一個話題的看法,把握相關(guān)輿情。這些應(yīng)用都有著巨大的價值提升潛力,而要發(fā)掘這些潛力則需要掌握體系化的文本數(shù)據(jù)挖掘方法。
對于文本數(shù)據(jù)挖掘工具而言,除了基于圖形交互界面的軟件(如Tableau)外,還有基于命令行的通用開源軟件,如R和Python。雖然利用Python來做自然語言處理和文本數(shù)據(jù)分析的資料非常多,但是隨著文本數(shù)據(jù)挖掘日漸普及,各行各業(yè)的科研人員和從業(yè)者都需要發(fā)掘文本的價值,并希望快速習得一些實用的工具來對文本進行分析。Python需要初學者具備更多的計算機編程知識,才能發(fā)揮其效力;而R語言作為一個面向統(tǒng)計和可視化的開源工具,逐漸受到更多來自工業(yè)界和科研界的認可。R語言的開發(fā)者在設(shè)計工具的時候通常認為用戶也沒有太多的計算機編程基礎(chǔ),所以在各種軟件包中通過提供“傻瓜式”的函數(shù)操作,讓使用者僅僅通過復制粘貼較少的代碼,就能夠直接對自己的數(shù)據(jù)進行復雜的數(shù)據(jù)操作與分析,這是R語言的一大特點。
本書立足于R語言在文本數(shù)據(jù)挖掘領(lǐng)域的發(fā)展前沿,對文本數(shù)據(jù)挖掘的基本概念和實現(xiàn)方法進行了系統(tǒng)介紹,并利用大量實際案例和通用代碼來引導讀者進行實踐和思考。通過閱讀本書,讀者可以循序漸進地掌握文本數(shù)據(jù)挖掘中的各種概念、方法和工具,完成日常學習和工作中的文本分析任務(wù)。
本書內(nèi)容
第 1 章,走進文本數(shù)據(jù)挖掘。對文本數(shù)據(jù)挖掘進行了綜合的介紹,內(nèi)容包括什么是文本數(shù)據(jù)挖掘、為什么要進行文本數(shù)據(jù)挖掘和文本數(shù)據(jù)挖掘的基本框架,并對文本數(shù)據(jù)挖掘的常用軟件工具進行了概述。
第 2 章,文本數(shù)據(jù)挖掘利器—R語言。向初學者介紹R語言的基本使用方法,包括軟件的安裝、環(huán)境的配置、數(shù)據(jù)結(jié)構(gòu)與類型、編程基礎(chǔ)和數(shù)據(jù)操作方法。
第 3 章,從基礎(chǔ)做起1—字符串的基本處理。主要利用stringr包作為工具,講述各式各樣的字符串操作及其在R中的實現(xiàn)方法。
第 4 章,從基礎(chǔ)做起2—用好正則表達式。介紹了正則表達式的基本概念,包括通配符、簡寫字符集和反向引用等,并結(jié)合實例引導讀者進行實踐。
第 5 章,步入正題—導入各類文本數(shù)據(jù)。介紹了如何把本地各種格式的文本數(shù)據(jù)導入到R環(huán)境中,并講述了如何進行編碼格式的識別和文本數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)化。
第 6 章,更進一步—對各類文本數(shù)據(jù)進行預處理。針對文本數(shù)據(jù)清洗這一主題,對文本切分、去除停用詞、詞干提取、詞性標注等預處理任務(wù)進行了介紹。
第 7 章,上手文本數(shù)據(jù)挖掘—文本特征提取的4種方法。主要介紹了文本特征提取的方法,包括TF-IDF特征提取、各種詞嵌入的方法以及文檔向量化。
第 8 章,文本分類—基于機器學習的方法。從無監(jiān)督和有監(jiān)督兩個方面,介紹了文本數(shù)據(jù)分類的基本方法,并給出相關(guān)的實踐代碼。
第 9 章,深入理解文本內(nèi)涵—文本情感分析。分別對如何進行英文情感分析和中文情感分析進行了介紹,并給出通用案例和系統(tǒng)實現(xiàn)過程。
第 10 章,文本數(shù)據(jù)的直觀表達—文本可視化。聚焦于文本可視化,介紹了如何利用文本信息繪制條形圖、克利夫蘭點圖、矩形樹狀圖、詞云圖、詞匯位置分布圖、網(wǎng)絡(luò)圖等。
第 11 章,舉一反三—文本數(shù)據(jù)挖掘項目實踐。利用3個典型的文本分析案例,來引導讀者對情感分析、文本分類和關(guān)鍵詞提取進行學習和實踐。
本書特點
? 深入淺出,簡單易學:本書不需要讀者具有文本挖掘或R語言的基礎(chǔ)知識,循序漸進地帶領(lǐng)讀者掌握文本數(shù)據(jù)挖掘中的各種知識以及文本分析在R語言中的實現(xiàn)方法。
? 代碼豐富,實踐性強:本書幾乎在所有文本分析任務(wù)中都提供了簡潔可行的R語言實現(xiàn)代碼,讀者可以通過實踐來體會每一步文本挖掘操作。通過反復練習,可以習得其中的技巧,并運用在自己的文本數(shù)據(jù)挖掘任務(wù)中。
? 體系完備,系統(tǒng)性強:本書介紹了文本數(shù)據(jù)挖掘基本任務(wù)的方方面面,從文本數(shù)據(jù)的導入和預處理到分析、建模和可視化。有利于讀者對整體知識結(jié)構(gòu)的把握,從而在解決文本數(shù)據(jù)挖掘問題的時候具有更加全面而細致的考慮。
? 內(nèi)容新穎,緊跟前沿:文本數(shù)據(jù)挖掘作為經(jīng)典的知識體系不會過時,但是軟件工具卻在一直在更新迭代。本書參考了大量近3年內(nèi)的R軟件包及其幫助文檔,緊跟技術(shù)發(fā)展潮流,讓讀者能夠習得較為先進的實現(xiàn)技術(shù),提高編寫代碼的效率。
適用對象
本書適合需要對文本數(shù)據(jù)挖掘進行了解和運用的在校大學生、科研人員和數(shù)據(jù)分析從業(yè)者,尤其適合初學者入門,同時能夠為來自各行各業(yè)(新聞媒體、人文社科、醫(yī)療健康、生物醫(yī)藥、環(huán)境生態(tài)、市場營銷等)對文本數(shù)據(jù)分析感興趣的廣大讀者提供技術(shù)參考。
本書作者
本書在編寫過程中參考了國內(nèi)外大量的文本挖掘與R語言實現(xiàn)的相關(guān)資料。本書的完成首先要感謝R語言開源社區(qū),他們不知疲倦的努力和無私的分享讓R語言在文本數(shù)據(jù)挖掘中越發(fā)強大。同時,需要對復旦大學圖書館情報研究部進行致謝,我在這里擔任助管期間得到了很多鍛煉和啟示。還要感謝謝琳老師、趙斌教授和中國科學院文獻情報中心科學計量小組在本書編寫期間對我的支持。感謝機械工業(yè)出版社各位編輯專業(yè)的工作。最后,感謝我的父母,無論在任何時候都給予我無私的愛。
由于作者水平有限,書中難免出現(xiàn)錯誤和不足之處,敬請廣大讀者批評指正。希望本書能夠讓各位讀者從零到一、從無到有地獲知文本數(shù)據(jù)挖掘的基本概念,并習得利用R語言進行文本數(shù)據(jù)挖掘的技術(shù)技巧。
黃天元
黃天元,復旦大學理學博士。熱愛數(shù)據(jù)科學與開源工具,致力于利用數(shù)據(jù)科學迅速積累行業(yè)經(jīng)驗優(yōu)勢和科學知識發(fā)現(xiàn),研究領(lǐng)域包括但不限于信息計量、機器學習、數(shù)據(jù)可視化、應(yīng)用統(tǒng)計建模、知識圖譜等。在CRAN上維護了3個下載量破萬的R包(akc、tidyfst、tidyft),著有《R語言高效數(shù)據(jù)處理指南》一書,并設(shè)有知乎專欄“R語言數(shù)據(jù)挖掘”,關(guān)注人數(shù)9000+。
目錄
前言
第1章 走進文本數(shù)據(jù)挖掘1
1.1 什么是文本數(shù)據(jù)挖掘1
1.2 為什么要做文本數(shù)據(jù)挖掘2
1.3 如何進行文本數(shù)據(jù)挖掘2
1.3.1 文本數(shù)據(jù)挖掘的流程2
1.3.2 文本數(shù)據(jù)挖掘的基本任務(wù)及方法4
1.4 文本數(shù)據(jù)挖掘軟件工具概覽5
第2章 文本數(shù)據(jù)挖掘利器—R語言7
2.1 開發(fā)環(huán)境配置7
2.1.1 下載并安裝R軟件7
2.1.2 包的管理8
2.1.3 版本升級9
2.1.4 集成開發(fā)環(huán)境10
2.2 R的基本數(shù)據(jù)類型11
2.2.1 數(shù)值型12
2.2.2 邏輯型12
2.2.3 字符型12
2.2.4 因子型13
2.3 R的常用數(shù)據(jù)結(jié)構(gòu)13
2.3.1 向量13
2.3.2 矩陣14
2.3.3 列表14
2.3.4 數(shù)據(jù)框15
2.4 R的基礎(chǔ)編程知識15
2.4.1 賦值15
2.4.2 函數(shù)16
2.4.3 強制類型轉(zhuǎn)換16
2.4.4 條件判斷17
2.4.5 循環(huán)操作17
2.5 數(shù)據(jù)操作入門19
2.5.1 文件讀寫19
2.5.2 數(shù)據(jù)框的檢視25
2.5.3 單表操作28
2.5.4 多表操作37
2.5.5 缺失值處理42
2.5.6 長寬數(shù)據(jù)轉(zhuǎn)換46
第3章 從基礎(chǔ)做起1—字符串的基本處理51
3.1 字符串的構(gòu)造51
3.2 字符串的辨識、計數(shù)與定位52
3.3 字符串的提取53
3.4 字符串的定制化輸出54
3.5 字符串的替換與刪除56
3.6 字符串的拼接與拆分57
3.7 字符串的排序57
第4章 從基礎(chǔ)做起2—用好正則表達式59
4.1 通配符解析59
4.1.1 點運算符(“.”)60
4.1.2 字符集(“[]”)60
4.1.3 否定字符集(“[^ ]”)61
4.1.4 出現(xiàn)0次或更多(“*”)61
4.1.5 出現(xiàn)1次或更多(“+”)62
4.1.6 出現(xiàn)0次或1次(“?”)62
4.1.7 出現(xiàn)次數(shù)范圍限制(“{}”)62
4.1.8 特征標群(“(...)”)62
4.1.9 或運算符(“|”)63
4.1.10 轉(zhuǎn)義字符(“\\\\”)63
4.1.11 匹配開頭部分(“^”)63
4.1.12 匹配結(jié)尾部分(“$”)64
4.2 反向引用64
4.3 簡寫字符集65
4.4 貪婪匹配與惰性匹配66
4.5 零寬斷言67
4.5.1 正先行斷言(“?=...”)67
4.5.2 負先行斷言(“?!...”)68
4.5.3 正后發(fā)斷言(“?<= ...”)68
4.5.4 負后發(fā)斷言(“?4.5.5 提取括號中的內(nèi)容68
第5章 步入正題—導入各類文本數(shù)據(jù)70
5.1 readtext包簡介70
5.2 不同格式文本文件的導入70
5.2.1 讀取txt文件71
5.2.2 讀取csv/tsv文件72
5.2.3 讀取json文件74
5.2.4 讀取pdf文件74
5.2.5 讀取Word文件75
5.2.6 讀取html文件75
5.2.7 讀取壓縮包75
5.3 讀入不同編碼格式的文檔76
5.4 文件數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)化77
第6章 更進一步—對各類文本數(shù)據(jù)進行預處理79
6.1 拼寫糾錯79
6.2 文本切分80
6.2.1 段落切分81
6.2.2 句子切分82
6.2.3 詞語切分82
6.2.4 n元切分85
6.2.5 字符切分85
6.3 去除標點86
6.4 去除停用詞86
6.5 擴展縮寫87
6.6 詞干提取87
6.7 詞形還原與詞性標注88
6.8 批量文檔預處理90
第7章 上手文本數(shù)據(jù)挖掘—文本特征提取的4種方法92
7.1 基本特征提取92
7.2 基于TF-IDF的特征提取94
7.3 詞嵌入96
7.3.1 基于BOW96
7.3.2 基于word2vec98
7.3.3 基于GloVe100
7.3.4 基于fastText101
7.4 文檔向量化:doc2vec102
第8章 文本分類—基于機器學習的方法105
8.1 無監(jiān)督分類105
8.1.1 基于文本相似度的聚類105
8.1.2 基于網(wǎng)絡(luò)集群識別的自動化聚類120
8.1.3 基于主題模型的分類125
8.2 有監(jiān)督分類129
8.2.1 二分類129
8.2.2 多分類136
第9章 深入理解文本內(nèi)涵—文本情感分析142
9.1 英文情感分析142
9.1.1 RSentiment143
9.1.2 sentimentr144
9.1.3 SentimentAnalysis145
9.1.4 meanr147
9.1.5 sentometrics148
9.2 中文情感分析151
9.2.1 環(huán)境與數(shù)據(jù)準備151
9.2.2 情感詞典準備151
9.2.3 中文分詞152
9.2.4 分值計算152
9.2.5 小結(jié)152
第10章 文本數(shù)據(jù)的直觀表達—文本可視化153
10.1 條形圖153
10.2 克利夫蘭點圖155
10.3 矩形樹狀圖156
10.4 詞云157
10.5 詞匯位置分布圖159
10.6 網(wǎng)絡(luò)圖164
10.7 雙文檔對比可視化167
第11章 舉一反三—文本數(shù)據(jù)挖掘項目實踐170
11.1 情感分析案例:量化中文新聞報道中的情感走勢170
11.2 文本分類案例:基于詞袋模型對英文期刊摘要來源進行分類176
11.3 關(guān)鍵詞提取案例:根據(jù)CRAN的介紹文本提取R包關(guān)鍵字181