訂閱
糾錯
加入自媒體

誰在橢圓形辦公室發(fā)推:機器學(xué)習(xí)揭露川普推文的真實作者


川普的癖好

有時候數(shù)據(jù)科學(xué)更像是藝術(shù)而不是科學(xué)。在開始構(gòu)建模型的時候,我首先考慮自己作為人類如何識別一條推文是川普式的。然后盡我所能將這些“感覺”轉(zhuǎn)換為基于規(guī)則的代碼。有一些明顯的癖好,可以識別是否川普本人在鍵盤后面,例如,全部使用大寫,隨機大寫某個特定詞匯,以及無理由!地使用感嘆號。!

事實上,我的模型中最緊要的特征之一就是引用轉(zhuǎn)推?雌饋泶ㄆ詹恢廊绾卧谕铺厣限D(zhuǎn)推別人的推文。在整個33000條推文的語料庫中,僅有一條來自Android設(shè)備的方法正確的轉(zhuǎn)推。在其他轉(zhuǎn)推中,川普復(fù)制別人的推文,@用戶,然后用引號包圍推文,然后自己發(fā)布:

這些轉(zhuǎn)推經(jīng)常(并非總是)是像這樣的自我慶祝推文。在本文后面討論結(jié)果的部分,你會看到,川普傾向于大量@自己,其原因就是這樣的轉(zhuǎn)推。

風(fēng)格

這里的風(fēng)格特征指可以用來識別任何一個推特用戶的特征,而不是指川普的個人風(fēng)格。風(fēng)格特征包括每條推文的平均長度,每句話的平均長度,每個單詞的平均長度。我也考察了各種標(biāo)點符號的使用頻率(川普幾乎從不使用分號;他的助手們相對而言經(jīng)常使用分號)。@提及、#標(biāo)簽、URL的數(shù)目最終都成為強有力的預(yù)測特征。最后,在星期幾和一天的什么時間段發(fā)推也泄露了不少信息。

情感

我使用了C.J. Hutto的VADER包來提取每條推文的情感。VADER是Valence Aware Dictionary and sEntiment Reasoning的簡稱(因為,我猜,VADSR聽起來很蠢?),是一個為社交媒體特別調(diào)制的基于詞典和規(guī)則的工具。給定一個文本字符串,VADER為文本的消極性、積極性和中性各自輸出一個0到1之間的小數(shù),以及一個-1到1之間的匯總指標(biāo)。

關(guān)于VADER包的開發(fā)、驗證、評估的完整描述可以參考這篇論文。VADER的精髓是,包作者首先構(gòu)造了一個對應(yīng)情感的詞匯特征的列表(用簡單英語來說,“單詞和短語”),然后將這一列表與一些規(guī)則組合起來,這些規(guī)則表述了短語的語法結(jié)構(gòu)如何加強或減弱這一情感。VADER的表現(xiàn)(精確度96%)超過了人類(精確度84%)。

情緒

加拿大國家研究委員會(National Research Council of Canada)編制了一個超過14000單詞的詞典,其中每個單詞標(biāo)注了對應(yīng)2種情感(消極、積極)和8種情緒(憤怒、希望、厭惡、恐懼、快樂、悲傷、驚訝、信任)的評分。加拿大國家研究委員會十分友善地允許我訪問這一詞典,我編寫了一個Python腳本,遍歷推文中的每個單詞,通過查詢這一詞典得出單詞對應(yīng)的情緒。根據(jù)推文中包含的對應(yīng)相應(yīng)情緒的單詞的數(shù)目,給每條推文包含的每種情緒分配一個相應(yīng)的分?jǐn)?shù)。

遣詞

我使用tf-idf技術(shù)分析推文的遣詞,tf-idf是Term Frequency?—?Inverse Document Frequency(詞頻-逆向文檔頻率)的簡稱;旧,它衡量了文檔中的一個單詞的描述性和唯一性。例如,你希望分組一些新聞類文章,并向讀者推薦相似文章。你讓計算機讀取每篇文章,其中一篇的特征是提到了10次“棒球”。那么,“棒球”應(yīng)該是文章中一個相當(dāng)顯著的單詞!這是詞頻的部分。

然而,同一篇文章同樣提到了8次“說過”?雌饋磉@也是一個相當(dāng)顯著的單詞。但我們?nèi)祟惒⒉贿@么看;我們知道如果若干篇文章都提到了“棒球”,那么它們多半是關(guān)于同一主題的文章,不過如果若干篇文章都提到了“說過”,這并不能說明這些文章的相似性。因此我們查看集合內(nèi)的所有文章使用單詞“棒球”和“說過”的詞頻。比如,結(jié)果是,1000篇文章中,只有30篇提到了“棒球”,卻有870篇提到了“說過”。那么我們將這些單詞在所有文檔中的詞頻的倒數(shù)——1/30和1/870——乘以它們在單篇文章中的詞頻——10和8。這是逆向文檔頻率的部分。所以單詞“棒球”的評分是10/30 = 0.333,單詞“說過”的評分是8/870 = 0.009。我們?yōu)槊科臋n中的每個單詞進(jìn)行這樣的計算,然后看看哪些文章具有相同的高分單詞。這就是tf-idf。

為了減少我的模型的運算需求,我只考察了一元語法(unigram,單個單詞),沒有考察二元語法(bigram)和三元語法(trigram)。(tf-idf處理二元語法和三元語法的方法和處理單個單詞的方法一樣。)n元語法每增加一元,相應(yīng)的處理時間會指數(shù)級增長,并且我發(fā)現(xiàn)“Crooked Hillary”或“Lyin’ Ted Cruz”能被“crooked”和“l(fā)yin”代表。我同時忽略了在超過99%的推文中出現(xiàn)的詞匯(語料庫特定的停止詞),以及在不到1%的推文中出現(xiàn)的詞匯。我的這個項目大量使用了Python的scikit-learn包,它包含了一個tf-idf實現(xiàn)。

語法結(jié)構(gòu)

自然語言處理技術(shù)應(yīng)用到時效性較強的文本時,遇到的主要挑戰(zhàn)之一是事件隨時間發(fā)生變動。比如,川普競選期間的推文多次提到了“Crooked Hillary”和“Lyin’ Ted Cruz”,而川普現(xiàn)在的推文幾乎不提了。我希望刻畫川普推文更基本的形式,因此我使用NLTK將每條推文轉(zhuǎn)換成了詞類表示。

本質(zhì)上,這將每個單詞轉(zhuǎn)換成了它的詞類,也就是它在句子中的角色,例如,作為名詞的“羞辱”和作為動詞的“羞辱”被區(qū)分開來了。

這將短語“I had to fire General Flynn because he lied to the Vice President and the FBI”轉(zhuǎn)換成它的基本詞類表示“PRP VBD TO VB NNP NNP IN PRP VBD TO DT NNP NNP CC DT NNP”。我使用了Penn詞類標(biāo)記(PRP = 人稱代詞,VBD = 動詞過去式,TO = to,VB = 動詞原形,NNP = 單數(shù)形式的專有名詞,等等)。使用之前的tf-idf過程,不過這次忽略一元語法,轉(zhuǎn)而關(guān)注二元語法和三元語法,我可以提取更一般的川普或其助手發(fā)推方式。

最后,我使用Stanford Named Entity Recognition (NER) Tagger(斯坦福命名實體識別)將推文中的所有人名替換為“PERSON”,所有地名替換為“LOCATION”,所有組織替換為“ORGANIZATION”。這是概括推文的又一嘗試。目前為止,這一NER(命名實體識別)過程是處理這些推文時計算開銷最高的過程,如果我重新進(jìn)行這個項目,我可能會認(rèn)真考慮使用一個次優(yōu)的NER工具(不依賴高級的統(tǒng)計學(xué)習(xí)算法的工具),從而顯著提升處理時間。勿謂言之不預(yù)!

模型如何工作

他們做得好,非常好
<上一頁  1  2  3  4  下一頁>  
聲明: 本文系OFweek根據(jù)授權(quán)轉(zhuǎn)載自其它媒體或授權(quán)刊載,目的在于信息傳遞,并不代表本站贊同其觀點和對其真實性負(fù)責(zé),如有新聞稿件和圖片作品的內(nèi)容、版權(quán)以及其它問題的,請聯(lián)系我們。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關(guān)注公眾號
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯
    x
    *文字標(biāo)題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號