中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python寫個會做詩的機器人

發布時間:2021-10-26 18:01:31 來源:億速云 閱讀:263 作者:柒染 欄目:編程語言

這篇文章給大家介紹如何用Python寫個會做詩的機器人,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1.原理介紹

首先,讓機器自動做詩,就需要運用自然語言處理的手段,讓機器能夠學會理解“詩句”,進而做出我們需要的詩句。如何讓機器“理解”詩句呢?我們用到了深度學習中的長短期記憶網絡(LSTM)。有點暈,不要急,我們后面會用白話給大家解釋。

LSTM是循環神經網絡(RNN)的一種變形,RNN能夠很好的解決自然語言處理的任務,但是對于長依賴的句子表現卻不是很好,例如:

如何用Python寫個會做詩的機器人

上面的例子中后面使用“was”還是“were”取決于前面的單復數形式,但是由于“was”距離“dog”距離過長,所以RNN并不能夠很好的解決這個問題。

為了解決上述的問題,便引入了LSTM,為了更加直觀的解釋,我這里引入一個不是很恰當的例子:

比如我們正在看一場電影,我們能夠通過鏡頭的切換來了解故事的進展。而且隨著故事的發展,我們會知道某些主角的性格,年齡,喜好等等,這些都不會隨著鏡頭的切換而立馬被忘掉,這些就是長期記憶,而當故事發生在某個特定的場景下,比如下面喜洋洋的這張圖:

如何用Python寫個會做詩的機器人

通過我們對于這部動漫的長期記憶,我們知道這是喜洋洋在思考,而在這個鏡頭中,我們利用到了長期記憶中關于“喜洋洋思考動作”的記憶,而在該鏡頭下需要被用到的長期記憶就被稱為“工作記憶”。

2.白話解釋LSTM

那么LSTM是如何工作的呢?

1).首先得讓LSTM學會遺忘

比如,當一個鏡頭結束后,LSTM應該忘記該鏡頭的位置,時間,或者說忘記該鏡頭的所有信息。但是如果發生某一演員領了盒飯的事情,那么LSTM就應該記住這個人已經領盒飯了,這也跟我們觀看影片一樣,我們會選擇忘記一些記憶,而保留我們需要的記憶。所以LSTM應該有能力知道當有新的鏡頭輸入時,什么該記住,什么該忘記。

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

當LSTM輸入新的鏡頭信息時,LSTM應該去學習什么樣的信息值得使用和保存。然后是根據前面的兩條,當有新的鏡頭輸入時,LSTM會遺忘那些不需要的長期記憶,然后學習輸入鏡頭中哪些值得使用,并將這些保存到長期記憶當中。

3).***是需要知道長期記憶的哪些點要被立即使用

比如,我們看到影片當中有個人在寫東西,那么我們可能會調用年齡這個長期記憶(小學生可能在寫作業,而大人可能再寫文案),但是年齡信息跟當前的場景可能不相關。

4).因此LSTM只是學習它需要關注的部分,而不是一次使用所有的記憶。因此LSTM能夠很好的解決上述的問題。下圖是對于LSTM的一個很形象的展示:

如何用Python寫個會做詩的機器人

3.實戰機器人

下面便是實戰的環節,雖然LSTM效果非常出色,但是仍舊需要對于數據的預處理工作,LSTM需要將每個詩句處理成相同的長度,而且需要將漢字轉換成為數字形式。那么如何進行預處理呢,主要分為3步  :

  • 讀入數據,我們收集了眾多的詩詞數據

  • 統計每一個字出現的次數,同時以其出現的次數作為每個漢字的id。

  • 在產生批量數據的時候,我們需要將每一個詩句的長度都統一到同樣的長度,因此,對于長度不夠的句子,我們會以“*”進行填充

  • 所以在***的效果展示的時候,可能在詩句中出現“*”的字樣。數據預處理的部分代碼如下圖所示:

如何用Python寫個會做詩的機器人

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

1).首先是讀入數據,并將句長大于100的進行縮減,刪掉100個字符后面的部分。

2).然后在每個句子的開頭和結尾加入‘^’和‘$’作為句子的標志。對于句長小于MIN_LENGTH的直接刪除

3).***將處理好的詩句,進行字數的統計,統計每個字出現的次數,并按照出現的次數作為每個漢字的id。

對于數據預處理部分的代碼,我都進行了注釋,方便大家進行理解,對于我們對于數據處理,以及python語句的理解都有極大的幫助。

模型的訓練,需要確保電腦中已經配置了tensorflow和numpy庫。當模型訓練完成后,我們可以直接對于模型進行調用,嵌入到我們的聊天機器人程序中,來實現我們的聊天機器人(對于聊天機器人的介紹,可以參照文末歷史文章)。

下面是部分代碼的展示:

如何用Python寫個會做詩的機器人

4. 效果展示

說了這么多,我們來看一些訓練完的機器人作詩的效果

如何用Python寫個會做詩的機器人

在圖A中展示了做詩機器人效果,機器人輸出“請輸入藏頭詩提示:”,當我們輸入藏頭詩提示時,機器人便會做出符合我們要求的藏頭詩。

在圖B中展示了有“*”字符存在的情況,當然由于中華文化的博大精深,也受制于訓練資料的限制,當我們的藏頭詩提示中存在沒有在訓練資料里出現的字符時,機器人便會提示該字符不在字典中,

在如圖C中紅色標識出來的部分,會處理異常的情況,提示不在字典中!

關于如何用Python寫個會做詩的機器人就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜川县| 津南区| 安平县| 贡觉县| 鹿泉市| 夹江县| 铁岭县| 江门市| 南安市| 西充县| 闻喜县| 定襄县| 汾阳市| 文化| 安溪县| 康保县| 武安市| 镇康县| 舒兰市| 太谷县| 祁东县| 赞皇县| 河间市| 龙胜| 越西县| 台前县| 伽师县| 新建县| 老河口市| 大足县| 德州市| 集贤县| 密云县| 泰来县| 永靖县| 马关县| 兴仁县| 兰考县| 雅江县| 水富县| 安塞县|