閱讀839 返回首頁    go 阿裏雲 go 技術社區[雲棲]


不幸的人各有不幸嗎?文本分析流浪漢乞討標語牌後發現的套路(附代碼)


0?wx_fmt=png


流浪者慣用一張手寫標語牌來表達自己,我們對數百名紐約街頭流浪者手中的標語做了文本分析,想看看他們希望傳達的聲音。


紐約的無家可歸者普遍使用兩種乞討方式:一種是在十字路口的角落或地鐵站與站之間的車廂裏反複嘮叨他們的困境,這種方式在要到一點小錢的同時也會招致周圍遊客的厭惡。另一種方式是舉一個紙質標語牌,在上麵寫上他們要說的話。


標語牌顯然更具優勢。因為相比於口頭表述,文字掃一眼更快,增減更靈活並允許他人自由選擇看或不看。不幸的是,我們大多數人路過乞討者時都會選擇忽視那些標語牌。這種行為是最方便的,也是最現實的。畢竟在紐約有超過6萬名乞討者,關注他們每一個似乎不是很現實。


所以,假設你平時並沒有注意這些標語牌,你覺得他們一般都寫了些什麼?

 

0?wx_fmt=gif

上圖:在穀歌上輸入詞條“紐約無家可歸者的標牌”後給出的搜索結果

 

弄明白紐約無家可歸者標語牌上

文字內容的第1步

 

事實上,搜集和轉錄這些數據就夠寫一篇博客了,這裏隻做一些概括性的描述。首先在google、推特和Instagram (一個免費提供在線圖片及影片分享的社交應用)上搜索“New York City homeless sign”或類似的詞條,你會得到幾百張來自新聞報道、社交媒體的貼文和個人攝影的可用照片。


但是這些標語牌往往難以轉錄。因為這些照片一般質量較差,沒有聚焦,或是拍攝角度太偏。即使一個標語牌的文字完全清晰可見,也會存在一些其他問題。如乞討者可能會使用一些特殊(經常是錯誤)的拚寫、標點符號、換行符和手寫字體。有時他們所表達的信息並非簡單一句話,而是幾乎沒有任何線索連接成句的各種想法。

 

0?wx_fmt=png

#nychomeless#homeless#heraldsquare

上圖:例舉紐約無家可歸者寫的一句有語病的句子


些標語可能有淩亂、想法模煳的特點,這些會造成轉錄困難。


我們可以使用一些修正標準來規整文本內容,以方便進一步描述和分析,例如糾正一些簡單的書寫錯誤和使用完整拚寫代替符號表述(“4” 換成 “for”, “+” 換成 “and”)。我們再使用R語言提供的文本挖掘包忽略掉大小寫、換行符和其他標點符號之間的不一致,最終得到標準化的數據。


匯集了244條標語用於文本分析

流浪者們的聲音


最後,我們匯集了244條標語用於文本分析(數據集鏈接:https://github.com/PerplexCity/Sign_From_Below/blob/master/transcribed_signs.csv)對於文本挖掘而言,244條文本的語料庫相對來說較小。通常,《戰爭與和平》這樣大塊頭的書或推特上百萬條的文本才會以下麵的方式進行分析。然而,我們還是找到了合理可信的規律。


幸福的人都是相似的,不幸的人則各有各的不幸。盡管如此,通過對這幾百條標語進行篩選,我們還是可以發現,乞討者想要通過標誌牌說服他人所采用的幾種固定套路:大部分情況下他們會把自己描述成更值得同情的對象,例如懷孕的母親,退伍的軍人,或搶劫受害者。有些人會嚐試一些小聰明(我打賭你看了這句話會留下1美元),其他的則比較典型(我和老虎伍茲有一段緋聞,看看我現在的下場)。


通常他們會先一步回答你的疑惑。如:為什麼他們沒有家?(丈夫去世、沒有保險、丟失一切、無家可歸、你能幫幫我嗎、上帝保佑你、感恩節快樂)。為什麼他們不去其他地方?(需要一張車票、賺得35美元去新澤西州大西洋城、那裏我有地方住並且有一個工作機會)。

0?wx_fmt=jpeg


雖然有很多奇聞軼事,但這是一個數據博客,所以我們需要數據來說明問題。


前25個出現頻率最高的單詞


0?wx_fmt=png

上圖:紐約無家可歸者的標牌上使用頻率最高的25個單詞


如上述詞頻表所示,無家可歸者的優先表述是尋求幫助(“help”)和表明自己無家可歸(“homeless”),並始終保持禮貌(“please”)。


在文本挖掘中,像“and”或 “the”一類的常見詞經常會被去掉,因為他們會稀釋整個高頻詞匯表。有趣的是,在這個樣本中這些詞並沒有被去掉,但竟也沒有排到我們詞頻表的最前麵。這說明兩個問題:首先,無家可歸者不太可能會去使用這些如此容易被預測到的詞,可能是為了節省空間和提高瀏覽速度;其次,這也表明無家可歸者使用“help” 和 “homeless”這些詞的頻率非常高,正如一般的文本使用“the”(4%)這類普遍的術語一樣。


你可能會把上圖的y軸看作是獨立的一些單詞,但是也可以把他們看作是一元語法(unigrams,比如大數據的unigram形式為:大/數/據),或者是N元語法(n-gram,語言學專業術語,表示n個單詞組成的序列)的最簡單形式。我們可以對二元詞(bigram,兩個單詞組成的短語)的頻率進行排序,如下:


0?wx_fmt=png

【由於我們不能使用bigrams(雙單詞)的頻率除以單詞數量得到相對頻率,所以x軸向左對齊表示絕對頻率】


可以看到,第一個圖表中一些單詞的搭配在了上圖中聚集到了一起。比如,“Please” 和“help”使用很頻繁,它們聯合在一起使用也很頻繁,類似的還有“God” 和 “bless”。


需要注意到是,這種創建二元詞(bigrams)、三元詞(trigrams)和其他多元詞的方式是根據原有文本來模擬產生新文本的基礎。我們也可以嚐試隨機選擇一些詞來偽造一個自然的句子,通過這種方式得到的句子讀起來跛腳可笑。但是如果你知道哪些序列是合理的,你就可以拚湊出短語和句子,就像拚火車一樣。


一個簡單的例子,假如你使用“please”作為開頭,二元詞(bigrams)頻率表能預測下一個單詞“help”,然後你可以連接到“thank,” “you,” “God,” 和 “bless”,即馬爾可夫文本生成鏈,它是網絡機器模仿人類寫作的原理。


多元詞(n-gram)的單詞數越多,模擬的寫作看起來就越接近於人類,因為你使用的基於真實文本的片段單元更長。下圖是在無家可歸者標語樣本上使用trigrams生成短句的示例。其中一些結果看起來毫無意義,但其他的你能想象到或許是來自某個真實的標語:


0?wx_fmt=gif

上圖:無家可歸者標語模擬結果的截圖


呃,這裏我們使用這些標語生成假文本似乎玩笑開得有點過了,畢竟現在紐約及其他城市無家可歸還是一個很嚴重的問題。我們的分析就到這裏了。如果你對文本挖掘很感興趣,並且想要進一步了解Andrey Kotov的這個項目或者其中使用的R語言知識,兩者都提到了本文。你也可以查看博客使用的分析數據和程序,鏈接在文章的最後。


最後,如果你想要幫助這些無家可歸的人,可以捐款給Bowery Mission,它為紐約的流浪者提供住所、食物和衣服。

原文發布時間為:2017-02-05

本文來自雲棲社區合作夥伴“大數據文摘”,了解相關信息可以關注“BigDataDigest”微信公眾號

最後更新:2017-05-25 18:32:07

  上一篇:go  機器學習與人工智能將應用於哪些安全領域?
  下一篇:go  數據科學家和工程師:各霸一方,一旦聯手,所向披靡