熱線電話:13121318867

登錄
首頁精彩閱讀用神經網絡RNN模仿特朗普的語言風格!
用神經網絡RNN模仿特朗普的語言風格!
2020-06-02
收藏

為了獲得更多民眾的支持,美國總統演講/發推時使用的語言通常都很「接地氣」,而現任總統唐納德·特朗普則更以「口無遮攔」著稱。由于「推特狂魔」已經為我們準備了大量訓練數據,現在讓我們嘗試一下如何使用循環神經網絡來模仿總統特朗普的語言風格。

誰了解最好的詞匯?

I know words. I have the best words.

在 2015 年 12 月 30 日舉行的南卡羅來納州競選會上,川普說出了上面這些話。這些「川普主義」的言論使得特朗普的粉絲更加喜歡他,但也使他成為其他人的笑柄。

無論每個人對他的看法如何,川普的說話方式毋庸置疑是十分獨特的:他的言語十分隨意且無視傳統句子結構約束。這類特點使他的講話十分具有辨識度。

正是這種獨特的風格吸引了我,我嘗試用機器學習來模仿它:生成看起來或聽起來像川普會說的文本。

數據收集與處理

要學習川普的說話風格,首先要獲取足夠多的語言樣本。我主要關注兩個主要的數據來源。

Twitter

非常規句子結構的例子。

川普的推特是收集其語言樣本最好的地方。川普的獨特之處在于他利用推特直接與美國百姓進行交流。此外,作為一名「明星人物」,他的言論已經被收集組織了起來(http://www.trumptwitterarchive.com/),這幫我省去了不少麻煩。一共大約有接近 31000 份推文可供使用。

總統致辭和演講

然而,除了他在網絡上表現出的一面,我還想更多地了解他作為總統更加正式的一面。為此,我收集了白宮簡報檔案提供的相關數據。借助 Python 工具我快速匯總了大約 420 份川普的演講稿以及評論講話。文本內容涵蓋了各類活動,如與外國政要會面、與國會議員進行會議以及頒獎典禮。

與推特不同的是,雖然每一個字都是由特朗普本人所寫或口述的,但這些文本還包含其他政治家或者記者所說的話。將川普所說的話與其他人的區分開來似乎是一項艱巨的任務。

正則表達式很強大。相信我。

輸入正則表達式,雖然名字聽起來很無聊但是功能絕對強大。

正則表達式允許你指定要搜索的模式;此模式可以包含任意數量的特定約束、通配符或其他限制,以保證返回的數據能夠滿足你的要求。

經過一些試驗和調整,我生成了一個復雜的正則表達式,它只返回總統的言論,而不會返回其他的詞或注釋。

處理文本還是不處理?這是個問題

通常處理文本的第一步是對其進行歸一化。歸一化的程度和復雜度根據需求而變,從簡單地刪除標點符號或大寫字母,到將單詞的所有變體規范化為基本形式。工作流示例見:https://towardsdatascience.com/into-a-textual-heart-of-darkness-39b3895ce21e。

然而,對我而言,歸一化過程中會丟失的具體特質和模式正是我需要保留的。所以,為了讓我生成的文本更加可信和真實,我選擇繞過大部分標準歸一化工作流程。

文本生成

馬爾可夫鏈

在深入研究深度學習模型之前,我們先來了解另一種常用的文本生成方法——馬爾可夫鏈。馬爾可夫鏈之前用作生成笑話文本的捷徑:比如使用馬爾可夫鏈基于星際迷航(https://twitter.com/captain_markov?lang=en)、辛普森一家(https://github.com/cshenton/simpsons_markov)劇本生成文本等實例。

馬爾可夫鏈是快速且粗糙的,它只關注當前的詞,以確定接下來的詞是什么。這種算法每次只關注當前的詞以及接下來可能會出現的詞。下一個詞是隨機選擇的,其概率與頻率成正比。下面用一個簡單的例子來說明:

簡化的馬爾可夫鏈例子,其中接著「taxes」出現的可以是「bigly」、「soon」或者句號。

現實生活中,如果川普說「taxes」一詞,70% 的情況下他會在說完「taxes」后接著說「bigly」,而馬爾可夫鏈 70% 的情況下會選擇「bigly」作為下一個詞。但有時候,他不會說「bigly」。有時他會結束句子,或者選擇另一個詞接在后面。馬爾可夫鏈很可能會選擇「bigly」,但它也有可能選擇其他可選的選項,這為生成的文本引入了一些不確定因素。

之后馬爾可夫鏈可能會不斷的生成下去,或者直到句子結束才停止。

對于快速且隨機的應用場景,馬爾可夫鏈可能非常適用,但是它一旦出錯也很容易看出來。由于馬爾可夫鏈只關心當前的單詞,因此它生成的句子很容易跑偏。一個一開始討論國內經濟的句子可能結束的時候在討論《誰是接班人》。

使用我有限的文本數據集,馬爾可夫鏈的大部分輸出是無意義的。但偶爾也會有「靈光一現」:

用推文訓練馬爾可夫鏈所生成的句子(種子詞為「FBI」)。

循環神經網絡

然而如果要訓練得到更加真實的文本,需要一些更復雜的算法。循環神經網絡RNN)已經成為許多文本或基于序列的應用的首選架構。RNN 的詳細內部工作原理不在本文的討論范圍之內。

這些神經元的顯著特征是它們具有各種內部「記憶」。單詞的選擇和語法很大程度上依賴于上下文,而這些「記憶」能夠跟蹤時態、主語和賓語等,這對生成連貫的句子是非常有用的。

這類網絡的缺點是它們的計算量非常大,在筆記本電腦上用模型將我的文本數據訓練一次要一個多小時,考慮到要這樣訓練大約 200 次,這類網絡不是很友好。

這里就需要云計算大展身手了。許多成熟的科技公司提供云服務,其中最大的是亞馬遜、谷歌和微軟。在需要大量 GPU 計算的實例中,之前需要一個小時的過程縮減為九十秒,時間減少大約四十倍!

評估

你能判斷這個句子是川普說的還是 RNN 生成的嗎?

California finally deserves a great Government to Make America Great Again! #Trump2016

這是從「特朗普對共和黨州長候選人的支持」推文(https://twitter.com/realDonaldTrump/status/997597940444221440)中生成的文本,但它可能會被當作特朗普在 2016 年大選前發布的推文。

我所實現的復雜版本的神經網絡(在循環層之前和之后有隱藏的全連接層)能夠在種子為 40 個或小于 40 個字符的情況下生成內部連貫的文本。

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.

而簡化版本的網絡在連貫性方面有所欠缺,但仍然能夠捕捉到特朗普總統講話的語言風格:

Obama. We'll have a lot of people that do we—okay? I'll tell you they were a little bit of it.

結語

雖然沒能一直產生足以欺騙你我的文本,但這種嘗試讓我看到了 RNN 的力量。簡而言之,這些網絡學習了拼寫、語法的某些方面,以及在特定情況下如何使用井號標簽和超鏈接。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢