人工智能AI教你寫情話,藏頭詩,分分鍾拿下她


廣大的鋼鐵直男們,你有女朋友了嗎?表白了嗎?被拒了么?

什么?!還有沒女朋友的或者還沒有向女神表白的?

要想贏得女神芳心,文(甜)藝(言)情(蜜)話(語)也是不能少的!

但是,禮物的小賀卡上准備好要寫什么了嗎?打電話或者見面后准備說啥?還在說“XX,我愛你”,“XX,我們白頭到老”么?還是一直撓頭不知道怎么表達?

沒關系,AI來拯救你!

AI情話、AI藏頭詩、AI情詩大禮包開源上線啦!

話不多說,咱們直接看效果!

AI情話實測效果展示

 

 

 

哎媽呀,淚奔了,哭的不要不要的!

 

效果炸裂,這還只是一個AI情話功能。

要是再整首詩寫在小卡片上,女神的心能瞬間化成一江春水向東流。。。

AI藏頭詩實測效果展示

 

 

 

一戰深藏功與名!

目前演示頁限制是七言絕句,如果是需要其它的七言律詩、五言絕句和五言律詩,可以通過代碼調用,效果也是妥妥的!

是不是着急了?我仿佛看到一群大老爺們兒向我殺來。

 

AI對聯實測效果展示

 

 

 

AI作詩實測效果展示

 

 

數據集介紹

詩歌:采用chinese-poetry中開源的300萬行唐、宋詩訓練數據,將詩的前2行作為模型輸入,其余作為輸出。最終得到ernie_gen_poetry module

藏頭詩:將chinese-poetry中的300萬行唐、宋詩划分為了五言絕句、七言絕句、五言律詩、七言律詩四組數據集,每組數據集中取每行的首字作為模型輸入,完整的詩作為輸出。產出ernie_gen_acrostic_poetry module,可在模型加載的時候指定五言或七言,絕句或律詩,體驗頁只展示了七言絕句。

對聯:采用couplet-clean-dataset開源的74w對聯數據,上聯作為輸入,下聯作為輸出。產出ernie_gen_couplet

情話:采用網絡搜集的情話情書數據,對於情書數據采用滑動窗口的方式切分為多句情話,最終得到4.3w行情話數據,將情話中的第一句話作為輸入,整句話作為輸出,產出ernie_gen_lover_words module

 

 

 

 

 

 

我這就把鏈接交出來:https://github.com/PaddlePaddle/PaddleHub

 

這是怎么做到的?

這樣炸裂效果的背后,離不開頂尖的ERNIE-GEN 算法加持,什么?不知道ERNIE-GEN?ERNIE聽說過吧,NLP領域模型中的帶頭大哥,曾經斬獲多項大獎!后來經過不斷研發,ERNIE又衍生出了很多其它模型或組件,形成了ERNIE家族!ERNIE-GEN就是其中優秀一員。

熱心的說明:下面是講技術的環節,想了解怎么用的小伙伴可以快速往下滑

ERNIE-GEN是面向生成任務的預訓練-微調框架,首次在預訓練階段加入span-by-span 生成任務,讓模型每次能夠生成一個語義完整的片段。在預訓練和微調中通過填充式生成機制和噪聲感知機制來緩解曝光偏差問題。此外, ERNIE-GEN 采用多片段-多粒度目標文本采樣策略, 增強源文本和目標文本的關聯性,加強了編碼器和解碼器的交互。 

更多詳情參考論文ERNIE-GEN:An Enhanced Multi-Flow Pre-training and Fine-tuning Framework for Natural Language Generation

這些由ERNIE-GEN算法衍生出的AI情話(ernie_gen_lover_words)、AI藏頭詩(ernie_gen_acrostic_poetry)等模型在微調時首先通過加載ERNIE 1.0中文模型參數完成熱啟動,然后采用開發者在網絡上搜集到的情詩、情話數據,基於ERNIE-GEN框架進行微調。與傳統的Seq2Seq做法相比,該模型實際使用效果具備更強的泛化能力,即使是微調使用的數據集中沒見過的詞匯或句子,模型也能夠理解。

例如輸入“小編帶大家了解一下程序員情人節”,將會輸出:

實際上“程序員”“數據庫”這些詞是從未出現在情話數據集中的,但是得益於知識增強的語義表示模型ERNIE帶來的泛化能力,使模型仍然能夠領悟到二者之間的關系。同時ERNIE-GEN獨特的填充生成機制和噪聲感知生成的策略,使得微調后模型文本生成效果更加自然流暢,相比傳統的基於RNN結合Seq2Seq的生成做法,所需的訓練數據量更小,而且文本生成效果更有內涵。

正如模型輸出所言,希望在七夕這一天,我們的程序都能夠正常的工作,大家可以放心地過個愉快的情人節。

想知道怎么用嗎?

整個預訓練模型只要求安裝PaddlePaddle 與 PaddleHub,諸位兄弟只需要了解基礎 Python 就能跑得動。

 

以下為調用AI情話預訓練模型的代碼:

import paddlehub as hub

#導入預訓練模型

module = hub.Module(name="ernie_gen_lover_words")

#准備輸入開頭數據
 
test_texts = ['情人節']
 
#執行文本生成
 
results = module.generate(texts=test_texts, use_gpu=True, beam_width=5)
 
#打印輸出結果
 
for result in results:
 
    print(result)

 

運行這個腳本后,我們就可以收貨了。

哎呀,甜度太高了,有點上頭。

[2020-08-21 20:58:08,095] [    INFO] - Installing ernie_gen_lover_words module
 
[2020-08-21 20:58:08,097] [    INFO] - Module ernie_gen_lover_words already installed in /home/aistudio/.paddlehub/modules/ernie_gen_lover_words
 
['情人節,我願做一條魚,任你紅燒、白煮、清蒸,然后躺在你溫柔的胃里。', '情人節,對你的思念太重,壓斷了電話線,燒壞了手機卡,掏盡了錢包袋,吃光了安眠葯,哎!可我還是思念你。', '情人節,對你的思念太重,壓斷了電話線,燒壞了手機卡,掏盡了錢包袋,吃光了安眠葯,哎!可我還是思念你,祝你情人節快樂!', '情人節,對你的思念太重,壓斷了電話線,燒壞了手機卡,掏盡了錢包袋,吃光了安眠葯,唉!可我還是思念你,祝你情人節快樂!', '情人節,對你的思念太重,壓斷了電話線,燒壞了手機卡,掏盡了錢包袋,吃光了安眠葯,哎!可是我還是思念你。']

如果有服務化部署的需求,借助 PaddleHub,服務器端的部署也非常簡單,直接用一條命令行在服務器啟動模型就行了:

!hub serving start -m ernie_gen_lover_words -p 8866

  

是的,就是這么簡單,一行搞定服務器端!相比手動配置各種參數或者調用各種框架,PaddleHub的服務器端部署實在是太好用了。

只要在服務器端完成部署,剩下在客戶端調用就問題不大了。如下為客戶端向服務器端發送請求做推理的示例腳本,包括制定要推理的輸入文本、發送推理請求、返回並保存推理結果幾個部分。

 
import requests
 
import json
 
 
 
# 發送HTTP請求
 
 
 
data = {'texts':['情人節'],
 
        'use_gpu':False, 'beam_width':5}
 
headers = {"Content-type": "application/json"}
 
url = "http://127.0.0.1:8866/predict/ernie_gen_lover_words"
 
r = requests.post(url=url, headers=headers, data=json.dumps(data))
 
 
 
# 保存結果
 
results = r.json()["results"]
 
for result in results:
 
    print(result)

  

如下所示,運行腳本后就可以從服務器端拿到推理結果了。

 

結尾:歡迎加入我們一起學習

最后,拿起你的小手機,點贊收藏,加扣群,里面有更多更好玩的資料源碼分享。

正所謂,來者都是客,咳咳,不對,是你有一塊錢,我有一塊錢,我們合在一起就是兩塊錢,知識,是可以互相交流的^_^

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM