成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人

這篇文章給大家介紹如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),筠連網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:筠連等地區(qū)。筠連做網(wǎng)站價(jià)格咨詢:18982081108

1.原理介紹

首先,讓機(jī)器自動(dòng)做詩(shī),就需要運(yùn)用自然語(yǔ)言處理的手段,讓機(jī)器能夠?qū)W會(huì)理解“詩(shī)句”,進(jìn)而做出我們需要的詩(shī)句。如何讓機(jī)器“理解”詩(shī)句呢?我們用到了深度學(xué)習(xí)中的長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)。有點(diǎn)暈,不要急,我們后面會(huì)用白話給大家解釋。

LSTM是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變形,RNN能夠很好的解決自然語(yǔ)言處理的任務(wù),但是對(duì)于長(zhǎng)依賴的句子表現(xiàn)卻不是很好,例如:

如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人

上面的例子中后面使用“was”還是“were”取決于前面的單復(fù)數(shù)形式,但是由于“was”距離“dog”距離過(guò)長(zhǎng),所以RNN并不能夠很好的解決這個(gè)問(wèn)題。

為了解決上述的問(wèn)題,便引入了LSTM,為了更加直觀的解釋,我這里引入一個(gè)不是很恰當(dāng)?shù)睦?

比如我們正在看一場(chǎng)電影,我們能夠通過(guò)鏡頭的切換來(lái)了解故事的進(jìn)展。而且隨著故事的發(fā)展,我們會(huì)知道某些主角的性格,年齡,喜好等等,這些都不會(huì)隨著鏡頭的切換而立馬被忘掉,這些就是長(zhǎng)期記憶,而當(dāng)故事發(fā)生在某個(gè)特定的場(chǎng)景下,比如下面喜洋洋的這張圖:

如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人

通過(guò)我們對(duì)于這部動(dòng)漫的長(zhǎng)期記憶,我們知道這是喜洋洋在思考,而在這個(gè)鏡頭中,我們利用到了長(zhǎng)期記憶中關(guān)于“喜洋洋思考動(dòng)作”的記憶,而在該鏡頭下需要被用到的長(zhǎng)期記憶就被稱為“工作記憶”。

2.白話解釋LSTM

那么LSTM是如何工作的呢?

1).首先得讓LSTM學(xué)會(huì)遺忘

比如,當(dāng)一個(gè)鏡頭結(jié)束后,LSTM應(yīng)該忘記該鏡頭的位置,時(shí)間,或者說(shuō)忘記該鏡頭的所有信息。但是如果發(fā)生某一演員領(lǐng)了盒飯的事情,那么LSTM就應(yīng)該記住這個(gè)人已經(jīng)領(lǐng)盒飯了,這也跟我們觀看影片一樣,我們會(huì)選擇忘記一些記憶,而保留我們需要的記憶。所以LSTM應(yīng)該有能力知道當(dāng)有新的鏡頭輸入時(shí),什么該記住,什么該忘記。

2).其次是添加保留機(jī)制

當(dāng)LSTM輸入新的鏡頭信息時(shí),LSTM應(yīng)該去學(xué)習(xí)什么樣的信息值得使用和保存。然后是根據(jù)前面的兩條,當(dāng)有新的鏡頭輸入時(shí),LSTM會(huì)遺忘那些不需要的長(zhǎng)期記憶,然后學(xué)習(xí)輸入鏡頭中哪些值得使用,并將這些保存到長(zhǎng)期記憶當(dāng)中。

3).***是需要知道長(zhǎng)期記憶的哪些點(diǎn)要被立即使用

比如,我們看到影片當(dāng)中有個(gè)人在寫東西,那么我們可能會(huì)調(diào)用年齡這個(gè)長(zhǎng)期記憶(小學(xué)生可能在寫作業(yè),而大人可能再寫文案),但是年齡信息跟當(dāng)前的場(chǎng)景可能不相關(guān)。

4).因此LSTM只是學(xué)習(xí)它需要關(guān)注的部分,而不是一次使用所有的記憶。因此LSTM能夠很好的解決上述的問(wèn)題。下圖是對(duì)于LSTM的一個(gè)很形象的展示:

如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人

3.實(shí)戰(zhàn)機(jī)器人

下面便是實(shí)戰(zhàn)的環(huán)節(jié),雖然LSTM效果非常出色,但是仍舊需要對(duì)于數(shù)據(jù)的預(yù)處理工作,LSTM需要將每個(gè)詩(shī)句處理成相同的長(zhǎng)度,而且需要將漢字轉(zhuǎn)換成為數(shù)字形式。那么如何進(jìn)行預(yù)處理呢,主要分為3步  :

  • 讀入數(shù)據(jù),我們收集了眾多的詩(shī)詞數(shù)據(jù)

  • 統(tǒng)計(jì)每一個(gè)字出現(xiàn)的次數(shù),同時(shí)以其出現(xiàn)的次數(shù)作為每個(gè)漢字的id。

  • 在產(chǎn)生批量數(shù)據(jù)的時(shí)候,我們需要將每一個(gè)詩(shī)句的長(zhǎng)度都統(tǒng)一到同樣的長(zhǎng)度,因此,對(duì)于長(zhǎng)度不夠的句子,我們會(huì)以“*”進(jìn)行填充

  • 所以在***的效果展示的時(shí)候,可能在詩(shī)句中出現(xiàn)“*”的字樣。數(shù)據(jù)預(yù)處理的部分代碼如下圖所示:

如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人

上述的代碼中主要完成了下面幾步:

1).首先是讀入數(shù)據(jù),并將句長(zhǎng)大于100的進(jìn)行縮減,刪掉100個(gè)字符后面的部分。

2).然后在每個(gè)句子的開頭和結(jié)尾加入‘^’和‘$’作為句子的標(biāo)志。對(duì)于句長(zhǎng)小于MIN_LENGTH的直接刪除

3).***將處理好的詩(shī)句,進(jìn)行字?jǐn)?shù)的統(tǒng)計(jì),統(tǒng)計(jì)每個(gè)字出現(xiàn)的次數(shù),并按照出現(xiàn)的次數(shù)作為每個(gè)漢字的id。

對(duì)于數(shù)據(jù)預(yù)處理部分的代碼,我都進(jìn)行了注釋,方便大家進(jìn)行理解,對(duì)于我們對(duì)于數(shù)據(jù)處理,以及python語(yǔ)句的理解都有極大的幫助。

模型的訓(xùn)練,需要確保電腦中已經(jīng)配置了tensorflow和numpy庫(kù)。當(dāng)模型訓(xùn)練完成后,我們可以直接對(duì)于模型進(jìn)行調(diào)用,嵌入到我們的聊天機(jī)器人程序中,來(lái)實(shí)現(xiàn)我們的聊天機(jī)器人(對(duì)于聊天機(jī)器人的介紹,可以參照文末歷史文章)。

下面是部分代碼的展示:

如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人

4. 效果展示

說(shuō)了這么多,我們來(lái)看一些訓(xùn)練完的機(jī)器人作詩(shī)的效果

如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人

在圖A中展示了做詩(shī)機(jī)器人效果,機(jī)器人輸出“請(qǐng)輸入藏頭詩(shī)提示:”,當(dāng)我們輸入藏頭詩(shī)提示時(shí),機(jī)器人便會(huì)做出符合我們要求的藏頭詩(shī)。

在圖B中展示了有“*”字符存在的情況,當(dāng)然由于中華文化的博大精深,也受制于訓(xùn)練資料的限制,當(dāng)我們的藏頭詩(shī)提示中存在沒(méi)有在訓(xùn)練資料里出現(xiàn)的字符時(shí),機(jī)器人便會(huì)提示該字符不在字典中,

在如圖C中紅色標(biāo)識(shí)出來(lái)的部分,會(huì)處理異常的情況,提示不在字典中!

關(guān)于如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享名稱:如何用Python寫個(gè)會(huì)做詩(shī)的機(jī)器人
當(dāng)前鏈接:http://jinyejixie.com/article46/pgejhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、虛擬主機(jī)、靜態(tài)網(wǎng)站、微信公眾號(hào)網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
邹平县| 延安市| 民和| 当阳市| 马尔康县| 双流县| 承德市| 肃南| 庆云县| 鸡西市| 永善县| 灌阳县| 阳江市| 衡水市| 鸡东县| 青州市| 宜都市| 柳江县| 会泽县| 屏东县| 晋中市| 长治市| 同德县| 藁城市| 浮山县| 沙河市| 金秀| 甘洛县| 德州市| 安徽省| 牡丹江市| 常州市| 保亭| 临邑县| 武强县| 历史| 方城县| 封开县| 屏边| 富阳市| 长顺县|