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 不僅開始支援群組視訊通話,還可以在視訊通話時,判斷誰在說,並自動放大他的視訊視窗。乍看上去,很是驚豔。不過如果是基於聲網視訊通話