99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀用神經(jīng)網(wǎng)絡(luò)RNN模仿特朗普的語(yǔ)言風(fēng)格!
用神經(jīng)網(wǎng)絡(luò)RNN模仿特朗普的語(yǔ)言風(fēng)格!
2020-06-02
收藏

為了獲得更多民眾的支持,美國(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)源。

Twitter

非常規(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

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }