【我們為什麼挑選這篇文章】做過研究都知道,找資料真的是件麻煩的事。對某個主題感興趣後,該如何去找出其他相關的資料,又該如何去完整的呈現,這都是在做簡單的文本分析時會遇到的問題。

身為前中文系看到這篇文只覺悔恨啊,我是不是該去學個R語言之類的,之前寫小論文都找文本找到不要不要的。(責任編輯:林子鈞)

作者:大數據文摘(微信公眾號:bigdatadigest)

1、對文章產生好奇

在資料科學中,幾乎做所有事情的第一步都是產生好奇,文本挖掘也不例外。

文本挖掘應用領域無比廣泛,可以與電影臺本、歌詞、聊天記錄等產生奇妙的化學反應:如南方公園的對話,電影對白的文本挖掘和分析等也都是受到了文本挖掘的啟發;近期大資料文摘相關文章《從戀愛到婚後的短信詞頻圖發生了這些變化,你中了幾槍?》帶各位分析了聊天記錄中隱藏的文本資訊;而對各類歌詞的文本資訊分析,也頗有意思。(點擊查看《這四十年來的香港歌壇在唱些什麼》、《分析了42萬字的歌詞,為了搞清楚民謠歌手們在唱些什麼》)

當然,你也可以像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來開始你的文本挖掘之旅吧 !

原文連結:https://www.datacamp.com/community/blog/text-mining-in-r-and-python-tips#gs.AwiKxRk

(本文 經原作者 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈想用R和Python做文本挖掘又不知如何下手?方法來了!〉。)