基于paddlehub的粉圈微博生成

该项目旨在通过预训练模型ERNIE-GEN创建能模仿粉丝行为的虚拟用户,生成粉圈微博并与真实用户互动。首先,从微博爬取粉丝内容作为数据集,然后对模型进行微调。经过训练后,模型可以生成特定话题的粉圈微博,以探讨社交媒体的现实与虚拟界限。最终目标是引发对社交媒体现象的反思。
摘要由CSDN通过智能技术生成

基于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"].values

with 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"].values

with 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 hub
!hub install Versailles

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

#finetune参考:https://aistudio.baidu.com/aistudio/projectdetail/1456984?channelType=0&channel=0
result = module.finetune(
    train_path='train.txt',
    dev_path='dev.txt',
    save_dir="Versailles_param",
    max_steps=1500,
    noise_prob=0.1,
    save_interval=500,
    max_encode_len=200,
    max_decode_len=200
)
# 将训练参数打包为hub model
module.export(params_path=result['last_save_path'], module_name="Versailles_8", author="lyp")

六- 运行预测

import paddlehub as hub

module = 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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值