基于paddlehub的粉圈微博生成
基于paddlehub的粉圈微博生成
一-前言
靈感來源于中文互聯網中的大量垃圾信息與“僵尸粉”,以及大量的粉絲打榜內容。
在自然語言處理的幫助下,我們是否可以創造出能自主行動,甚至與真人用戶互動的虛擬用戶?人們能否識別ta是人還是ai?會與ta討論、甚至爭斗嗎?
本項目以某明星的粉絲為例,嘗試生成粉圈微博,并在微博上回復他人,觀察人類用戶的回復。
希望能將本項目作為一種嘗試,引起更多人對社交媒體的反思。
- 輸入:話題,如[XX電視劇],[XX晚安]
- 輸出:對應話題的粉圈微博
Github地址: https://github.com/sunyuqian1997/ghost-on-web
二-模型簡介
ERNIE-GEN 是面向生成任務的預訓練-微調框架,首次在預訓練階段加入span-by-span 生成任務,讓模型每次能夠生成一個語義完整的片段。在預訓練和微調中通過填充式生成機制和噪聲感知機制來緩解曝光偏差問題。此外, ERNIE-GEN 采樣多片段-多粒度目標文本采樣策略, 增強源文本和目標文本的關聯性,加強了編碼器和解碼器的交互。ernie_gen module是一個具備微調功能的module,可以快速完成特定場景module的制作。
https://www.paddlepaddle.org.cn/hubdetail?name=ernie_gen&en_category=TextGeneration
三-安裝環境
! pip install xlrd ! pip install paddlehub==1.8.0 ! pip install paddle-ernie==0.0.4.dev1四-準備數據集
我們使用Weibo-spider爬取了約1w條該明星的粉絲微博,并整理成“話題-正文”的格式。
Ernie-gen要求的格式為"序號\t輸入文本\t標簽",因此我們按要求處理.xlsx格式的文件,生成數據與驗證集。
import pandas as pd #xlsx數據格式:標簽/內容 df = pd.read_excel("train(1).xlsx") Keys = df["label"].values Txts = df["text_a"].valueswith open("train.txt", "w") as f:for i, k in enumerate(Keys):t = Txts[i]f.write("{}\t{}\t{}\n".format(i, k, t))df = pd.read_excel("dev.xlsx") Keys = df["label"].values Txts = df["text_a"].valueswith open("dev.txt", "w") as f:for i, k in enumerate(Keys):t = Txts[i]f.write("{}\t{}\t{}\n".format(i, k, t))五-Finetune并訓練
- train_path(str): 訓練集路徑。
- dev_path(str): 驗證集路徑。
- save_dir(str): 模型保存以及驗證集預測輸出路徑。
- max_steps(int): 最大訓練步數。
- noise_prob(float): 噪聲概率,詳見ernie gen論文。
- save_interval(int): 訓練時的模型保存間隔部署。驗證集將在模型保存完畢后進行預測。
- max_encode_len(int): 最長編碼長度。
- max_decode_len(int): 最長解碼長度。
六- 運行預測
import paddlehub as hubmodule = hub.Module(directory="/home/aistudio/Versailles_8/")test_texts = ['關鍵詞'] results = module.generate(texts=test_texts, use_gpu=True, beam_width=5) for result in results:print(result)七- 微博回復測試
待補充
參考鏈接
手把手教你使用預訓練模型ernie_gen進行finetune自己想要的場景
用Paddlepaddle做一個凡爾賽文學生成器
Weibo-spider
總結
以上是生活随笔為你收集整理的基于paddlehub的粉圈微博生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu下google 拼音输入法的
- 下一篇: 关于Nginx:Nginx在window