
為了獲得更多民眾的支持,美國(guó)總統(tǒng)演講/發(fā)推時(shí)使用的語(yǔ)言通常都很「接地氣」,而現(xiàn)任總統(tǒng)唐納德·特朗普則更以「口無(wú)遮攔」著稱(chēng)。由于「推特狂魔」已經(jīng)為我們準(zhǔn)備了大量訓(xùn)練數(shù)據(jù),現(xiàn)在讓我們嘗試一下如何使用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)模仿總統(tǒng)特朗普的語(yǔ)言風(fēng)格。
誰(shuí)了解最好的詞匯?
I know words. I have the best words.
在 2015 年 12 月 30 日舉行的南卡羅來(lái)納州競(jìng)選會(huì)上,川普說(shuō)出了上面這些話。這些「川普主義」的言論使得特朗普的粉絲更加喜歡他,但也使他成為其他人的笑柄。
無(wú)論每個(gè)人對(duì)他的看法如何,川普的說(shuō)話方式毋庸置疑是十分獨(dú)特的:他的言語(yǔ)十分隨意且無(wú)視傳統(tǒng)句子結(jié)構(gòu)約束。這類(lèi)特點(diǎn)使他的講話十分具有辨識(shí)度。
正是這種獨(dú)特的風(fēng)格吸引了我,我嘗試用機(jī)器學(xué)習(xí)來(lái)模仿它:生成看起來(lái)或聽(tīng)起來(lái)像川普會(huì)說(shuō)的文本。
數(shù)據(jù)收集與處理
要學(xué)習(xí)川普的說(shuō)話風(fēng)格,首先要獲取足夠多的語(yǔ)言樣本。我主要關(guān)注兩個(gè)主要的數(shù)據(jù)來(lái)源。
非常規(guī)句子結(jié)構(gòu)的例子。
川普的推特是收集其語(yǔ)言樣本最好的地方。川普的獨(dú)特之處在于他利用推特直接與美國(guó)百姓進(jìn)行交流。此外,作為一名「明星人物」,他的言論已經(jīng)被收集組織了起來(lái)(http://www.trumptwitterarchive.com/),這幫我省去了不少麻煩。一共大約有接近 31000 份推文可供使用。
總統(tǒng)致辭和演講
然而,除了他在網(wǎng)絡(luò)上表現(xiàn)出的一面,我還想更多地了解他作為總統(tǒng)更加正式的一面。為此,我收集了白宮簡(jiǎn)報(bào)檔案提供的相關(guān)數(shù)據(jù)。借助 Python 工具我快速匯總了大約 420 份川普的演講稿以及評(píng)論講話。文本內(nèi)容涵蓋了各類(lèi)活動(dòng),如與外國(guó)政要會(huì)面、與國(guó)會(huì)議員進(jìn)行會(huì)議以及頒獎(jiǎng)典禮。
與推特不同的是,雖然每一個(gè)字都是由特朗普本人所寫(xiě)或口述的,但這些文本還包含其他政治家或者記者所說(shuō)的話。將川普所說(shuō)的話與其他人的區(qū)分開(kāi)來(lái)似乎是一項(xiàng)艱巨的任務(wù)。
正則表達(dá)式很強(qiáng)大。相信我。
輸入正則表達(dá)式,雖然名字聽(tīng)起來(lái)很無(wú)聊但是功能絕對(duì)強(qiáng)大。
正則表達(dá)式允許你指定要搜索的模式;此模式可以包含任意數(shù)量的特定約束、通配符或其他限制,以保證返回的數(shù)據(jù)能夠滿足你的要求。
經(jīng)過(guò)一些試驗(yàn)和調(diào)整,我生成了一個(gè)復(fù)雜的正則表達(dá)式,它只返回總統(tǒng)的言論,而不會(huì)返回其他的詞或注釋。
處理文本還是不處理?這是個(gè)問(wèn)題
通常處理文本的第一步是對(duì)其進(jìn)行歸一化。歸一化的程度和復(fù)雜度根據(jù)需求而變,從簡(jiǎn)單地刪除標(biāo)點(diǎn)符號(hào)或大寫(xiě)字母,到將單詞的所有變體規(guī)范化為基本形式。工作流示例見(jiàn):https://towardsdatascience.com/into-a-textual-heart-of-darkness-39b3895ce21e。
然而,對(duì)我而言,歸一化過(guò)程中會(huì)丟失的具體特質(zhì)和模式正是我需要保留的。所以,為了讓我生成的文本更加可信和真實(shí),我選擇繞過(guò)大部分標(biāo)準(zhǔn)歸一化工作流程。
文本生成
馬爾可夫鏈
在深入研究深度學(xué)習(xí)模型之前,我們先來(lái)了解另一種常用的文本生成方法——馬爾可夫鏈。馬爾可夫鏈之前用作生成笑話文本的捷徑:比如使用馬爾可夫鏈基于星際迷航(https://twitter.com/captain_markov?lang=en)、辛普森一家(https://github.com/cshenton/simpsons_markov)劇本生成文本等實(shí)例。
馬爾可夫鏈?zhǔn)强焖偾掖植诘?,它只關(guān)注當(dāng)前的詞,以確定接下來(lái)的詞是什么。這種算法每次只關(guān)注當(dāng)前的詞以及接下來(lái)可能會(huì)出現(xiàn)的詞。下一個(gè)詞是隨機(jī)選擇的,其概率與頻率成正比。下面用一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明:
簡(jiǎn)化的馬爾可夫鏈例子,其中接著「taxes」出現(xiàn)的可以是「bigly」、「soon」或者句號(hào)。
現(xiàn)實(shí)生活中,如果川普說(shuō)「taxes」一詞,70% 的情況下他會(huì)在說(shuō)完「taxes」后接著說(shuō)「bigly」,而馬爾可夫鏈 70% 的情況下會(huì)選擇「bigly」作為下一個(gè)詞。但有時(shí)候,他不會(huì)說(shuō)「bigly」。有時(shí)他會(huì)結(jié)束句子,或者選擇另一個(gè)詞接在后面。馬爾可夫鏈很可能會(huì)選擇「bigly」,但它也有可能選擇其他可選的選項(xiàng),這為生成的文本引入了一些不確定因素。
之后馬爾可夫鏈可能會(huì)不斷的生成下去,或者直到句子結(jié)束才停止。
對(duì)于快速且隨機(jī)的應(yīng)用場(chǎng)景,馬爾可夫鏈可能非常適用,但是它一旦出錯(cuò)也很容易看出來(lái)。由于馬爾可夫鏈只關(guān)心當(dāng)前的單詞,因此它生成的句子很容易跑偏。一個(gè)一開(kāi)始討論國(guó)內(nèi)經(jīng)濟(jì)的句子可能結(jié)束的時(shí)候在討論《誰(shuí)是接班人》。
使用我有限的文本數(shù)據(jù)集,馬爾可夫鏈的大部分輸出是無(wú)意義的。但偶爾也會(huì)有「靈光一現(xiàn)」:
用推文訓(xùn)練馬爾可夫鏈所生成的句子(種子詞為「FBI」)。
循環(huán)神經(jīng)網(wǎng)絡(luò)
然而如果要訓(xùn)練得到更加真實(shí)的文本,需要一些更復(fù)雜的算法。循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)已經(jīng)成為許多文本或基于序列的應(yīng)用的首選架構(gòu)。RNN 的詳細(xì)內(nèi)部工作原理不在本文的討論范圍之內(nèi)。
這些神經(jīng)元的顯著特征是它們具有各種內(nèi)部「記憶」。單詞的選擇和語(yǔ)法很大程度上依賴于上下文,而這些「記憶」能夠跟蹤時(shí)態(tài)、主語(yǔ)和賓語(yǔ)等,這對(duì)生成連貫的句子是非常有用的。
這類(lèi)網(wǎng)絡(luò)的缺點(diǎn)是它們的計(jì)算量非常大,在筆記本電腦上用模型將我的文本數(shù)據(jù)訓(xùn)練一次要一個(gè)多小時(shí),考慮到要這樣訓(xùn)練大約 200 次,這類(lèi)網(wǎng)絡(luò)不是很友好。
這里就需要云計(jì)算大展身手了。許多成熟的科技公司提供云服務(wù),其中最大的是亞馬遜、谷歌和微軟。在需要大量 GPU 計(jì)算的實(shí)例中,之前需要一個(gè)小時(shí)的過(guò)程縮減為九十秒,時(shí)間減少大約四十倍!
評(píng)估
你能判斷這個(gè)句子是川普說(shuō)的還是 RNN 生成的嗎?
California finally deserves a great Government to Make America Great Again! #Trump2016
這是從「特朗普對(duì)共和黨州長(zhǎng)候選人的支持」推文(https://twitter.com/realDonaldTrump/status/997597940444221440)中生成的文本,但它可能會(huì)被當(dāng)作特朗普在 2016 年大選前發(fā)布的推文。
我所實(shí)現(xiàn)的復(fù)雜版本的神經(jīng)網(wǎng)絡(luò)(在循環(huán)層之前和之后有隱藏的全連接層)能夠在種子為 40 個(gè)或小于 40 個(gè)字符的情況下生成內(nèi)部連貫的文本。
I want them all to get together and I want people that can look at the farms.
China has agreed to buy massive amounts of the world—and stop what a massive American deal.
而簡(jiǎn)化版本的網(wǎng)絡(luò)在連貫性方面有所欠缺,但仍然能夠捕捉到特朗普總統(tǒng)講話的語(yǔ)言風(fēng)格:
Obama. We'll have a lot of people that do we—okay? I'll tell you they were a little bit of it.
結(jié)語(yǔ)
雖然沒(méi)能一直產(chǎn)生足以欺騙你我的文本,但這種嘗試讓我看到了 RNN 的力量。簡(jiǎn)而言之,這些網(wǎng)絡(luò)學(xué)習(xí)了拼寫(xiě)、語(yǔ)法的某些方面,以及在特定情況下如何使用井號(hào)標(biāo)簽和超鏈接。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱(chēng) BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專(zhuān)注于從單 ...
2025-07-09year_month數(shù)據(jù)類(lèi)型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類(lèi)型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門(mén)控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書(shū)考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專(zhuān)業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開(kāi)啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03