1、對文章産生好奇
在資料科學中,幾乎做所有事情的第一步都是産生好奇,文本挖掘也不例外。
當然,你也可以像stackoverflow的資料科學家david robinson一樣對社交網絡上的文本産生興趣。他在幾個星期前他的部落格中對于川普的推特資料産生了好奇:“我看到一個假設……僅僅需要對資料進行調查”。
每一個非雙曲線的推文是從蘋果手機(他的從業人員)發送的。每一個雙曲線推文是從android手機(從他本人)手機發送的。pic.twitter.com/gwr6d8h5ed
——todd vaziri(@ tvaziri 2016年8月6日)
也許,如果你對驗證假設不是那麼感興趣,那你可能覺得文字圖雲非常炫酷,并且自己也想嘗試創造這種文字圖雲。
2、獲得你需要的知識和技能
當你産生了好奇,就到了時間來設計你的遊戲,并開始展開對文本挖掘知識和技能的學習。你可以輕松地通過完成一些教程和課程來做到這一點。
在這些課程中你應該注意的是:他們給你介紹的資料科學工作流程中至少需要有以下一些步驟,如資料準備或預處理、資料探索、資料分析等。
資料大學營為那些正在準備開始文本挖掘的人準備了一些材料:近日,泰德kwartler寫了一篇關于谷歌趨勢和雅虎股票服務的文本挖掘資料教程。這種易于遵循的r教程,可以讓你一邊實際操作一邊學習文本挖掘,這對于文本挖掘的的初學者來說是一個很好的開始。
此外,ted kwartler也是資料大學營r課程 “文本挖掘:詞袋”的講師,這門課會向你介紹各種分析方法和資料可視化的内容,讓你通過文本挖掘技術對實際生活案例進行操作和研究。
另一方面,你也會有一些不僅限于r的其他材料。如果想學習python,你可以看看以下這些教程和/或課程:用python進行文本分析,或者你也可以浏覽這個介紹kaggle的教程。
你是否對其他的教程資源更感興趣呢?可以去資料大學營中的了解資料科學 - python&r的教程!
—— 閱讀更多:http://scl.io/j3ndhnun#gs.w_xhh_i
3,詞,詞,詞 - 尋找你的資料
一旦你勾勒出了你需要分析和可視化資料資料的基本概念,就是時候去尋找資料了!
請相信我們當我們告訴你,有很多方法可以讓你得到你想要的資料。除了提到過的谷歌趨勢和雅虎,你也可以從以下方式通路資料:
推特! r和python的提供包或庫,将允許你連接配接到twitter的api和檢索推文。你将在下一節了解更多關于這部分的内容。
網際網路檔案館,是一個非營利性的圖書館。囊括了數以百萬計的免費圖書、電影、軟體、音樂、網站等。
gutenberg計劃提供超過55,000本免費電子書。這些電子書大多數都跟文學有關,是以如果你想要分析莎士比亞,簡·奧斯汀,愛倫坡的作品,這将是一個很好的來源。
對于學術方法類的文本挖掘,你可以使用jstor的資料研究。這是一個免費的自助服務工具,讓計算機科學家、數字人文主義者和其他研究人員選擇和jstor的内容進行互動。
如果你正在尋找做文本挖掘的系列或電影,就像是上面給出的例子,你可能要考慮下載下傳字幕。一個簡單的谷歌搜尋絕對可以為你提供你需要的内容,進而形成自己的語料庫開始文本挖掘。你也可以從corpora語料庫得到你的資料。衆所周知的兩個語料庫的是:路透社語料庫和布朗語料庫。
路透社語料庫。有人會說路透社語料庫不是最多樣化的語料庫使用,但是如果你剛開始學做文本挖掘,它還是非常不錯的。
布朗語料庫是按流派分類的文本,包括了500個資源。
正如你所看到的,尋找資料有無窮的可能性。所有包含文本的資源都可以成為你文本挖掘案例研究的課題。
—— 閱讀更多在:http://scl.io/j3ndhnun#gs.s_ufjhq
4.尋找合适的工具來完成工作
現在你已經發現了你的資料來源,你可能要使用合适的工具,讓他們成為你的所有物,并對其進行分析。 這些你跟着學習的教程和課程将會教給你使用一些工具作為開始。 但是,這取決于你跟進的課程或教程,你可能會錯過一些其他資料。要想完整的學習挖掘技術,下面将介紹一些r中用于文本挖掘的軟體包: tm包,毫無疑問,是r在文本挖掘中最常用的包。這個包通常用于更多特定的軟體包,例如像twitter的包,您可以使用從twitter網站提取的推文和追随者。 用r進行網絡爬蟲,你應該使用rvest庫。有關使用rvest的一個簡短的教程,去這裡。 如果使用python,你可以使用這些庫: 自然語言工具包,包含在nltk包中。因為你很容易獲得超過50個語料庫和詞彙資源,這個包是非常有用的。你可以看到這個頁面上的這些清單。
如果你想挖掘twitter資料,你有很多資料包的選擇。其中一個使用的比較多的是tweepy包。對于web爬蟲,scrapy包就會派上用場提取你的網站需要的資料。也可以考慮使用urllib2的,一包打開的urls。但是,有時requests包會更加推薦,它甚至可能使用起來更友善。有人說,它“更加人性化”,因為一些諸如,設定使用者代理,并請求一個頁面隻有一行的代碼的事情,他使用起來更友善。你有時會看到一些人推薦urllib包,但urlib包似乎不是太流行的:大多數開發人員會推薦他們覺得特别有用和使用過的一到兩個包。
——閱讀更多在:http://scl.io/j3ndhnun#gs.s_ufjhq
5. 好的開始是成功的一半 — 預處理你的資料
當我告訴你資料科學家用他們80%的時間來清洗資料,你可能不會驚訝。在這件事上,文本挖掘也不會例外。文本資料可以很雜亂,是以你應該確定你花了足夠的時間來清洗它。如果你不确定預處理你的資料意味着什麼,那一些标準的預處理步驟包括:抽取文本和結構,這樣就可以有你想要處理的文本格式了;去掉停用詞,比如“that” 或者“and”;詞幹提取。這個可以借助于詞典或者語言學的規則/算法,比如porter算法。這些步驟看起來很難,不過預處理你的資料并不需要嚴格這樣做。因為大多數時候,我們前面提到的庫和軟體包已經可以幫到你很多了。比如說r語言的tm庫裡的内置函數可以幫你做一些預處理工作,像是詞幹提取,去掉停用詞,删除空格,把單詞轉換成小寫等等。
類似地,python的nltk包的内置函數也可以幫你做許多預處理工作。不過,你仍然可以将資料預處理再進一步,比如用正規表達式來提取一些你感興趣的文本模式。這樣,你也可以加快資料清洗的過程。對于python,你可以用re庫。對于r,有一堆的函數可以幫到你,比如grep()傳回pattern的比對項的下标, grepl()傳回pattern是否比對的邏輯值, regexpr()和gregexpr()傳回的結果包含了比對的具體位置和字元串長度資訊, sub()和gsub()傳回替換之後的文本, strsplit()可以拆分字元串。如果你想了解更多這些r中的函數和正規表達式,你可以檢視這個頁面:
https://www.rdocumentation.org/packages/base/versions/3.3.1/topics/regex
6.資料科學家的漫遊奇境記 — 探索你的資料
現在,你将迫不及待地開始分析你的資料。不過,在你開始之前,看一看你的資料總是一個不錯的主意。借助于上面提到的庫或包,可以幫你快速開始探索資料的幾點想法:建立一個“文檔字詞矩陣”:這個矩陣中的元素,代表在語料庫的某個文檔中某個字詞(一個單詞或者連續出現的n個單詞“n-gram”)出現的頻率;建好這個矩陣之後,你就可以用一個直方圖來可視化你的語料庫中的字詞頻率。你也許還對語料庫中的兩個或多個字詞的關聯感興趣;可視化你得語料庫,你可以做一個文字雲(word cloud)。在r中,你可以使用wordcloud庫。在python裡也有這個包,一樣的名字。
7.提高你的文本挖掘技能
當你用前面提到的工具對你的資料做了預處理和一些基本的文本分析之後,你可能會想用你的資料集來拓寬你的文本挖掘技術。因為文本挖掘技術真的有很多很多,而你現在隻看到了冰山之一角。首先,你應該想着去探索一下文本挖掘和自然語言處理(natural language processing, nlp)之間有什麼不同。r中的許多nlp庫可以在這裡找到:https://www.rdocumentation.org/taskviews#naturallanguageprocessing 有了nlp,你會發現命名實體識别(named entity recognition),詞性标注與解析(part-of-speech tagger & parse),文本情感分析…等等技術。對于python,你可以用nltk包。完整的nltk文本情感分析手冊可以在這裡找到:http://streamhacker.com/2010/05/10/text-classification-sentiment-analysis-naive-bayes-classifier/
除了這些包,你可以在深度學習和主題模型(比如隐含狄利克雷分布lda)等方法中找到更多工具。下面列出了一些你可以使用的包:python包[趙文2] :詞嵌入模型(word2vec)可以用gensim包,還有glove包。如果想要更深入了解深度學習,你該看看theano包。最後,如果你想用lda,可以用gensim包。r語言包:詞嵌入可以用text2vec。如果你對文本情感分析感興趣,可以用syuzhet加tm。topicmodels非常适合主題模型。這些包,還遠不能囊括所有。因為文本挖掘是個大熱門,近年的成果還有許多等待你去發現,而且它還會繼續熱下去,比如用于多媒體挖掘,多語言文本挖掘等等。
8.不隻是單詞 — 可視化你的結果
别忘了傳達你的分析結果!
視覺呈現會更吸引人。你的可視化就是你要講的故事。是以别遲疑,把你分析的結果或者關系可視化出來吧。python和r都有專門的軟體包來幫你做這件事。用這些專門的資料可視化庫來呈現你的結果吧:對于python,你可以用networkx來可視化複雜的網絡。不過matplotlib在可視化其它資料時也很友善。還有plotly,也很友善,可以線上制作互動式、達到出版品質的圖檔。對于那些資料可視化的熱情粉絲們的一點建議:試着把python和javascript的d3庫聯系起來,後者可以進行動态的資料操控和可視化,讓你觀衆成為資料可視化過程裡的活躍參與者。
對于r語言,除了這些你已經知道的庫,比如總是很好用的ggplot2,你還可以用igraph庫來分析社交網站上關注、被關注和轉發之間的關系。你還想要更多?試着檢視一下plotly和networkd3庫,來把r和javascript或ldavis庫連結到互動式可視化模型中去。 用datacamp來開始你的文本挖掘之旅吧 !
原文釋出時間為:2017-03-02
本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号