1. 程式人生 > >10 行程式碼,集算器實現寫詩機器人

10 行程式碼,集算器實現寫詩機器人

集算器不僅有大資料計算,還有詩和遠方。最近看到不少寫詩機器人的新聞,於是嘗試用集算器簡單地實現一個。這個實現真的很簡單,簡單到只有10幾行程式碼,請看實現步驟:

1.下載字典和詩詞

從網上找一個用於分詞的字典檔案,裡面記錄著每個中文詞彙的詞性。我從GitHub上找了一個,稍微處理之後儲存到集檔案dict.btx。

下載宋詞三百首的txt檔案,去掉空格和換行,以及其它文字以外的字元,得到一個長字串。

2.訓練

對上一步得到的長字串進行分詞,結果儲存到集檔案作為模板,實現程式碼如下:

A

B

C

1

=file("dict.btx")[email protected]().keys(WORD).index()

2

=create(WORD,LEN,T)

3

宋詞三百首宴山亭趙佶北行見杏花裁剪冰綃,輕疊數……

4

=len(A3)

>i=1

5

for (i<=A4)

>word3=A2.find(mid(A3,i,3) ), word2=A2.find(   mid(A3,i,2) ), word1=A2.find( mid(A3,i,1) )

6

if (word3!=null)

>A2.insert(0, word3.(WORD),3,word3.(T)), i=i+3

7

else if (word2!=null)

>A2.insert(0, word2.(WORD),2,word2.(T)), i=i+2

8

else if (word1!=null)

>A2.insert(0, word1.(WORD),1,word1.(T)), i=i+1

9

else

>i=i+1

10

=file("宋詞模型.txt")[email protected](A2)

A1讀取字典檔案,並且建立索引;

A2定義模板記錄的資料結構,三個欄位表示:詞、長度、詞性;

A5到A9是迴圈處理,對A3進行分詞,這裡最長只處理三個字組成的詞;

A10把結果儲存;

這一步得到一個模板,內容是《宋詞三百首》裡所有文字的分詞,以及這些分詞的詞性。

3.創作

創作的原理是找一首宋詞作為目標,得到它的每個分詞,根據分詞的長度和詞性,從上一步的模板裡隨機找一個詞進行替換。這裡選擇的是《水調歌頭·明月幾時有》,來看程式碼:

A

B

C

1

=file("宋詞模型.txt")[email protected]()

2

=file("dict.btx")[email protected]().keys(WORD).index()

3

明月幾時有,把酒問青天。不知天上宮闕,今夕是何年。我欲乘風歸去。惟恐瓊樓玉宇,高處不勝寒,起舞弄清影,何似在人間。

4

=len(A3)

>str="", i=1, words=null

5

for (i<=A4)

>word3=A2.find(mid(A3,i,3)   ),word2=A2.find( mid(A3,i,2) ), word1=A2.find( mid(A3,i,1) )

6

if (word3!=null)

>words=A1.select(LEN==3&&   T==word3.(T) ), i=i+3, str=str+words(1+rand(words.len())).(WORD)

7

else if (word2!=null)

>words=A1.select(LEN==2&&   T==word2.(T) ), i=i+2, str=str+words(1+rand(words.len())).(WORD)

8

else if (word1!=null)

>words=A1.select(LEN==1&&   T==word1.(T) ), i=i+1, str=str+words(1+rand(words.len())).(WORD)

9

else

>str=str+mid(A3,i,1), i=i+1

10

>output(str)

執行結果如下,這些“作品”雖然存在語法錯誤,但還是有模有樣的,總比我自己寫的要好很多。

晚秋無奈送,佇立鷓鴣天。已成西下黃葉,春寒疏何處。我又花下離別。酒醒陽關蕭蕭,如許悲歡霜,初見年少影,誰曾在斜陽。

春寒何在喧,不解煙雨任。梳洗江上西風,明月憐此地。誰先水聲惹起。相思洛陽曉色,幾許不成魂,不應相迎競,他未為梢頭。

而今幾度寄,相認問青天。催發江上蓬壺,黃昏發何處。別未御街可惜。輕吹江南那堪,先斷閒來閒,相逢拘束影,任又在舊事。

昨夜無處應,不知闌珊處。映帶樓上王孫,如今來有時。任更點點飄香。垂涎池塘鞦韆,到處望斷天,酒醒衰草影,我尤把天涯。

選擇一首發到朋友圈,居然得到不少點贊。

實現原理是同詞性替換,根據這個還可以實現寫唐詩的功能。如果對模板檔案進一步調整,根據韻律和平仄優化詞性,效果會更好。這就是屬於人工智慧的人工勞動了,需要專業知識和辛苦付出,不是一下可以達成的。

感興趣的同學可以下載附件。

相關推薦

10 程式碼實現機器人

集算器不僅有大資料計算,還有詩和遠方。最近看到不少寫詩機器人的新聞,於是嘗試用集算器簡單地實現一個。這個實現真的很簡單,簡單到只有10幾行程式碼,請看實現步驟: 1.下載字典和詩詞 從網上找一個用於分詞的字典檔案,裡面記錄著每個中文詞彙的詞性。我從GitHub上找了一

10 程式碼實現機器人

可閱讀原文:http://c.raqsoft.com.cn/article/1536756719594?r=alice 集算器不僅有大資料計算,還有詩和遠方。最近看到不少寫詩機器人的新聞,於是嘗試用集算器簡單地實現一個。這個實現真的很簡單,簡單到只有10幾行程式碼,請看實現步驟:  

10 程式碼實現數字識別

識別手寫的阿拉伯數字,對於人類來說十分簡單,但是對於程式來說還是有些複雜的。   不過隨著機器學習技術的普及,使用10幾行程式碼,實現一個能夠識別手寫數字的程式,並不是一件難事。這是因為有太多的機器學習模型可以拿來直接用,比如tensorflow、caffe,在python下

10程式碼實現機器人

集算器不僅有大資料計算,還有詩和遠方。最近看到不少寫詩機器人的新聞,於是嘗試用集算器簡單地實現一個。這個實現真的很簡單,簡單到只有10幾行程式碼,請看實現步驟: 1下載字典和詩詞 從網上找一個用於分詞的字典檔案,裡面記錄著每個中文詞彙的詞性。我從GitHub

如何利用十程式碼繞過防毒軟體實現免殺?

我原本打算寫一篇冗長的部落格講述針對不同防毒軟體的繞過技術,但當我開始著手寫教程的第一章並上傳樣本到 virustotal 後,我震驚了!樣本得到了 0/56 的檢測率。於是我決定扔掉先前的長篇大論,轉而記錄這個快速、令

實現記錄合併

  表1(T1)中儲存了單獨的id和name欄位,部分源資料如下:   id    name   1     a   2     b   3     c   4     d   5     e    表2(T2)中儲存了多個id組成的ids欄位,其值如下:

實現文字比對

       控制檯命令、JAVA、python、perl都可以進行簡單的文字比對,但這些工具不擅長集合運算、結構化運算,編寫多執行緒程式碼較複雜,處理多欄位對比、大檔案對比、異構檔案對比等情況時很繁瑣。        免費的集算器支援集合運算、遊標運算、結構化運算,簡化了多執行緒程式碼,可以彌補上述不足。

資料結構 | 30程式碼手把手帶你實現Trie樹

本文始發於個人公眾號:**TechFlow**,原創不易,求個關注 今天是演算法和資料結構專題的第28篇文章,我們一起來聊聊一個經典的字串處理資料結構——Trie。 在之前的4篇文章當中我們介紹了關於博弈論的一些演算法,其中應用最廣也是最重要的就是最後的SG函式。瞭解到這些之後,足夠我們應付常見的博弈

500程式碼教你用python個微信飛機大戰

這幾天在重溫微信小遊戲的飛機大戰,玩著玩著就在思考人生了,這飛機大戰怎麼就可以做的那麼好,操作簡單,簡單上手。 幫助蹲廁族、YP族、飯圈女孩在無聊之餘可以有一樣東西讓他們振作起來!讓他們的左手 / 右手有節奏有韻律的朝著同一個方向來回移動起來! 這是史詩級的發明,是濃墨重彩的一筆,是…… 在一陣抽搐後,我

Python實現ImageAI 視訊中目標檢測10程式碼

Python實現Imageai,視訊中目標檢測10行程式碼 ImageAI 提供方便,靈活和強大的方法來對視訊進行物件檢測和跟蹤。目前僅支援當前最先進的 RetinaNet 演算法進行物件檢測和跟蹤 from imageai.Detection import VideoObjectDetec

10程式碼實現目標檢測請收下這份教程

翻譯 | 林椿眄編輯 | 阿司匹林出品 | AI科技大本營(公眾號ID:rgznai100)作為人工智慧的

[tensorflow應用之路]10程式碼實現一個完整的SVM分類

SVM是一種常用的機器學習分類器模型,其原理為最大化類間隔(被稱為支援向量),來達到分類的目的。它是一種有監督的模型。 SVM原理簡述 SVM通過預測值y′=wx+by′=wx+b與真實值yy之間的差值實現最大間隔分類。即 wx+b⩾1,y=1wx+b

詞雲製作沒那麼難Python 10 程式碼實現了!

  寫在前面 想必大家有一個問題。什麼是詞雲呢? 詞雲又叫名字雲,是對文字資料中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文字資料的主要表達意思。、 網頁上有許多詞雲的效果圖:  

(倉庫版)發布黑科技獲得用戶好評

集群組表 並行列存 數據存儲 數據計算 2018年5月16日,集算器(倉庫版)攜帶多項黑科技正式發布。在發布之前的應用驗證中,倉庫版就已經用實力贏得了用戶的好評。北京銀行用戶在評價倉庫版時表示:在數據分析實踐中,高並發訪問、大數據量計算造成的系統響應時間過長的問題,始終沒有得到很好的解決。集算

10 程式碼實現簡訊傳送!把頻率調快點不就成了轟炸機了?超簡單

最近工作上有個需求,當爬蟲程式遇到異常的時候,需要通知相應的人員進行修復。如果是國外可能是通過郵件的方式來通知,但國內除了萬年不變的 qq 郵箱,大部分人都不會去再申請其他的賬號,qq 郵箱也是閒的蛋疼的時候才會瞄一眼。你還記得上次看郵箱的內容是什麼時候嗎? 所以在國內最好的通知方式是通過手機簡

知物由學 | 只要5程式碼就可以實現AI影象識別

“知物由學”是網易雲易盾打造的一個品牌欄目,詞語出自漢·王充《論衡·實知》。人,能力有高下之分,學習才知道事物的道理,而後才有智慧,不去求問就不會知道。“知物由學”希望通過一篇篇技術乾貨、趨勢解讀、人物思考和沉澱給你帶來收穫的同時,也希望開啟你的眼界,成就不一樣的你。 本文作者:Moses Olafenwa

1 程式碼實現微信訊息傳送

還是接食行生鮮簽到的問題,之前我們講到,將簽到結果通過簡訊傳送到手機,但是我發現 twilio 有些不穩定,為了防止漏籤,我在伺服器上設定了兩次定時任務,通常情況下第一個收不到簡訊,第二個才會收到。 看到最近好多大神寫操作微信的文章,於是,我又想,是不是可以將訊息傳送到微信上? 微信傳送訊息有如下幾個思路:

10 程式碼實現數字識別

可直接閱讀原文:http://c.raqsoft.com.cn/article/1540374496048?r=alice 識別手寫的阿拉伯數字,對於人類來說十分簡單,但是對於程式來說還是有些複雜的。   不過隨著機器學習技術的普及,使用10幾行程式碼,實現一個能夠識別手

10程式碼教你用Python掃描Excel表格自動生成條形碼!

  一、需求分析 條形碼應用廣泛,尤其是人事、財務和庫管等等崗位,常需根據excel檔案成批生成條碼,如果是經常性天天做,用excel的自己控制元件還是很枯燥煩人的。 當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢? 學習Python

“兩程式碼實現FaceTime的新多人視訊通話效果

一年一度的 WWDC 開幕了。我們看了來自各個勤勞媒體的回顧與解讀。在這些新功能中,最吸引我們的還是最新更新的 FaceTime。 這次 FaceTime 不僅開始支援群組視訊通話,還可以在視訊通話時,判斷誰在說,並自動放大他的視訊視窗。乍看上去,很是驚豔。不過如果是基於聲網視訊通話