誰在橢圓形辦公室發推:機器學習揭露川普推文的真實作者
川普的癖好
有時候數據科學更像是藝術而不是科學。在開始構建模型的時候,我首先考慮自己作為人類如何識別一條推文是川普式的。然后盡我所能將這些“感覺”轉換為基于規則的代碼。有一些明顯的癖好,可以識別是否川普本人在鍵盤后面,例如,全部使用大寫,隨機大寫某個特定詞匯,以及無理由!地使用感嘆號!!!
事實上,我的模型中最緊要的特征之一就是引用轉推。看起來川普不知道如何在推特上轉推別人的推文。在整個33000條推文的語料庫中,僅有一條來自Android設備的方法正確的轉推。在其他轉推中,川普復制別人的推文,@用戶,然后用引號包圍推文,然后自己發布:
這些轉推經常(并非總是)是像這樣的自我慶祝推文。在本文后面討論結果的部分,你會看到,川普傾向于大量@自己,其原因就是這樣的轉推。
風格
這里的風格特征指可以用來識別任何一個推特用戶的特征,而不是指川普的個人風格。風格特征包括每條推文的平均長度,每句話的平均長度,每個單詞的平均長度。我也考察了各種標點符號的使用頻率(川普幾乎從不使用分號;他的助手們相對而言經常使用分號)。@提及、#標簽、URL的數目最終都成為強有力的預測特征。最后,在星期幾和一天的什么時間段發推也泄露了不少信息。
情感
我使用了C.J. Hutto的VADER包來提取每條推文的情感。VADER是Valence Aware Dictionary and sEntiment Reasoning的簡稱(因為,我猜,VADSR聽起來很蠢?),是一個為社交媒體特別調制的基于詞典和規則的工具。給定一個文本字符串,VADER為文本的消極性、積極性和中性各自輸出一個0到1之間的小數,以及一個-1到1之間的匯總指標。
關于VADER包的開發、驗證、評估的完整描述可以參考這篇論文。VADER的精髓是,包作者首先構造了一個對應情感的詞匯特征的列表(用簡單英語來說,“單詞和短語”),然后將這一列表與一些規則組合起來,這些規則表述了短語的語法結構如何加強或減弱這一情感。VADER的表現(精確度96%)超過了人類(精確度84%)。
情緒
加拿大國家研究委員會(National Research Council of Canada)編制了一個超過14000單詞的詞典,其中每個單詞標注了對應2種情感(消極、積極)和8種情緒(憤怒、希望、厭惡、恐懼、快樂、悲傷、驚訝、信任)的評分。加拿大國家研究委員會十分友善地允許我訪問這一詞典,我編寫了一個Python腳本,遍歷推文中的每個單詞,通過查詢這一詞典得出單詞對應的情緒。根據推文中包含的對應相應情緒的單詞的數目,給每條推文包含的每種情緒分配一個相應的分數。
遣詞
我使用tf-idf技術分析推文的遣詞,tf-idf是Term Frequency?—?Inverse Document Frequency(詞頻-逆向文檔頻率)的簡稱。基本上,它衡量了文檔中的一個單詞的描述性和唯一性。例如,你希望分組一些新聞類文章,并向讀者推薦相似文章。你讓計算機讀取每篇文章,其中一篇的特征是提到了10次“棒球”。那么,“棒球”應該是文章中一個相當顯著的單詞!這是詞頻的部分。
然而,同一篇文章同樣提到了8次“說過”。看起來這也是一個相當顯著的單詞。但我們人類并不這么看;我們知道如果若干篇文章都提到了“棒球”,那么它們多半是關于同一主題的文章,不過如果若干篇文章都提到了“說過”,這并不能說明這些文章的相似性。因此我們查看集合內的所有文章使用單詞“棒球”和“說過”的詞頻。比如,結果是,1000篇文章中,只有30篇提到了“棒球”,卻有870篇提到了“說過”。那么我們將這些單詞在所有文檔中的詞頻的倒數——1/30和1/870——乘以它們在單篇文章中的詞頻——10和8。這是逆向文檔頻率的部分。所以單詞“棒球”的評分是10/30 = 0.333,單詞“說過”的評分是8/870 = 0.009。我們為每篇文檔中的每個單詞進行這樣的計算,然后看看哪些文章具有相同的高分單詞。這就是tf-idf。
為了減少我的模型的運算需求,我只考察了一元語法(unigram,單個單詞),沒有考察二元語法(bigram)和三元語法(trigram)。(tf-idf處理二元語法和三元語法的方法和處理單個單詞的方法一樣。)n元語法每增加一元,相應的處理時間會指數級增長,并且我發現“Crooked Hillary”或“Lyin’ Ted Cruz”能被“crooked”和“lyin”代表。我同時忽略了在超過99%的推文中出現的詞匯(語料庫特定的停止詞),以及在不到1%的推文中出現的詞匯。我的這個項目大量使用了Python的scikit-learn包,它包含了一個tf-idf實現。
語法結構
將自然語言處理技術應用到時效性較強的文本時,遇到的主要挑戰之一是事件隨時間發生變動。比如,川普競選期間的推文多次提到了“Crooked Hillary”和“Lyin’ Ted Cruz”,而川普現在的推文幾乎不提了。我希望刻畫川普推文更基本的形式,因此我使用NLTK將每條推文轉換成了詞類表示。
本質上,這將每個單詞轉換成了它的詞類,也就是它在句子中的角色,例如,作為名詞的“羞辱”和作為動詞的“羞辱”被區分開來了。
這將短語“I had to fire General Flynn because he lied to the Vice President and the FBI”轉換成它的基本詞類表示“PRP VBD TO VB NNP NNP IN PRP VBD TO DT NNP NNP CC DT NNP”。我使用了Penn詞類標記(PRP = 人稱代詞,VBD = 動詞過去式,TO = to,VB = 動詞原形,NNP = 單數形式的專有名詞,等等)。使用之前的tf-idf過程,不過這次忽略一元語法,轉而關注二元語法和三元語法,我可以提取更一般的川普或其助手發推方式。
最后,我使用Stanford Named Entity Recognition (NER) Tagger(斯坦福命名實體識別)將推文中的所有人名替換為“PERSON”,所有地名替換為“LOCATION”,所有組織替換為“ORGANIZATION”。這是概括推文的又一嘗試。目前為止,這一NER(命名實體識別)過程是處理這些推文時計算開銷最高的過程,如果我重新進行這個項目,我可能會認真考慮使用一個次優的NER工具(不依賴高級的統計學習算法的工具),從而顯著提升處理時間。勿謂言之不預!
模型如何工作
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 4 Tesla AI5芯片最新進展總結
- 5 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 6 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 7 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 8 2026,人形機器人只贏了面子
- 9 DeepSeek降價90%:價格屠夫不是身份,是戰略
- 10 AI Infra產業鏈卡在哪里了?


分享













