化妆品排行榜
  1. 首页 >
  2. 美妆资讯 >
  3. 美妆 >
  1. 如何用 GPT2 和 BERT 建立一个可信的 reddit 自动回复机器人?

美妆资讯
如何用 GPT2 和 BERT 建立一个可信的 reddit 自动回复机器人?
2023-08-05

上个月,我尝试构建一个 reddit 评论机器人,通过结合两个预先训练的深度学习模型 GPT-2 和 BERT 生成自然语言回复。在这里我想一步一步地介绍一下我的工作,这样其他人就可以用我所建立的东西来工作了。如果愿意,可以直接跳转到项目代码://p1-tt.byteimg.com/origin/pgc-image/RqXZfSTI19Hua5.jpg" style="width: 650px;">

这里有很多步骤,但我希望它们不要太混乱。以下是我将在这篇文章中解释的步骤。

步骤 0:从你最喜欢的 reddit 文章中获取一些 reddit 评论数据,并将其格式化为类似「comment[SEP]reply」的字符串

步骤 1:微调 GPT-2 以生成格式为「comment[SEP]reply」的 reddit 文本

步骤 2:微调两个 BERT 分类器:

a: 区分真实回复和 GPT-2 生成的回复

b: 预测评论将获得多少次支持

步骤 3:使用 praw 下载当前评论

步骤 4:使用微调的 GPT2 为每个评论生成多个回复

步骤 5:将生成的回复传递给两个 BERT 模型,以生成对真实性和投票数的预测

步骤 6:使用一些标准来选择要提交的回复

步骤 7:使用 praw 提交所选评论

步骤 8:享受成果!

获取大量 reddit 评论数据

与任何机器学习项目一样,只有获得用于训练模型的数据,才能启动项目。

我用来微调模型的数据来自之前检索到的 reddit 评论大型数据库://p1-tt.byteimg.com/origin/pgc-image/RqXZfT7IEWGZq9.jpg" style="width: 650px;">

基于BERT 的支持票预测的 ROC 曲线

在模型交叉验证性能的支持下,我很高兴将它连接到一个实时评论系统,并开始发布我的机器人的想法!

用PRAW拉实时评论

尽管我可以使用 bigquery 上的数据生成训练集,但大多数数据实际上都是几个月前的。在社交媒体网站上回复几个月前的评论是一件非常不正常的事情,因此能够以某种方式从 reddit 上获取最新的数据非常重要。

幸运的是,我可以使用 praw 库和下面的代码片段,从几个我认为会产生一些有趣响应的 reddit 中的前 5 个「上升」帖子中获取所有评论。

for subreddit_name in ['sciencefiction',

'artificial',

'scifi',

'BurningMan',

'writing',

'MachineLearning',

'randonauts']:

subreddit = reddit.subreddit(subreddit_name)

for h in subreddit.rising(limit=5):

我可以在生成器和鉴别器中运行每条评论以生成一个回复。

运行生成器和鉴别器

最后,我只需要构建一些东西来重新加载所有经过微调的模型,并通过它们传递新的 reddit 评论来获得回复。在理想的情况下,我会在一个脚本中运行 GPT-2 和 BERT 模型。不幸的是,设计人员在实现 gpt2-simple 包的过程中有一个怪癖,使得在同一个环境中无法实例化两个计算图。

所以,我自己运行了一个 GPT-2 生成器 notebook(https://drive.google.com/open?id=1Z-sXQUsC7kHfLVQSpluTR-SqnBavh9qC),下载最新的评论,生成一批候选回复,并将它们存储在我的 Google 驱动器上的 csv 文件中。然后,我在一个单独的 BERT 鉴别器 notebook(https://drive.google.com/open?id=1mWRwK1pY34joZul5gBeMortfTu8M9OPC)中重新加载了候选的回复,选择最好的回复并将其提交回 reddit。

你可以在项目的 github repo(https://github.com/lots-of-things/gpt2-bert-reddit-bot)或 Google Drive文件夹(https://drive.google.com/open?id=1by97qt6TBpi_o644uKnYmQE5AJB1ybMK)中查看整个工作流。如果你认为事情可以解释得更清楚,或者你发现了错误,请将问题提交给项目。

最后一步:享受成果

我在 tupperware party 的 reddit 帐户下提交了所有回复(希望不会因为商标问题而被关闭)。你可以在这里(https://www.bonkerfield.org/2020/02/combining-gpt-2-and-bert/#replies)查看模型输出的一些亮点,或者查看注释的完整列表,以检查系统输出的所有内容。我也在 Google Drive 上共享了一个文件夹(https://drive.google.com/drive/folders/1a2MhIqL6jvyJ-3bGCXAweLbYtNXSUei7?usp=sharing),其中包含了所有的候选答案以及 BERT 模型中的分数。

最后,我知道在创作这样的作品时,肯定有一些伦理上的考虑。所以,请尽量负责任地使用这个工具。

via:https://www.bonkerfield.org/2020/02/reddit-bot-gpt2-bert/

雷锋网雷锋网雷锋网

版权声明:CosMeDna所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系删除!

本文链接://www.cosmedna.com/article/383343279.html