【2022 CCF BDCI 文心大模型创意项目】躺平借口生成器
使用文心大模型,自动生成躺平的借口。当然你其实也可以用它来生成内卷用的借口。
【2022 CCF BDCI 文心大模型创意项目】躺平借口生成器
朋友们,你们有没有遇到过以下情况,好不容易等到了假期,只想躺在床上装死,你的朋友却来找你出去玩;明明已经到了下班时间,可同事们还在工位上假装加班。
那么能不能让 AI 帮助语文水平不合格的我们,可以不用动脑子就生成相应的借口呢?
效果一览
如果“我的朋友”想“叫我出去玩”,但我作为躺平先锋,我却完全“不想出去玩”,这时候我应该说什么才能让你的朋友们“不在叫我出去玩了”,不如来问问万能的 AI 吧。
穷鬼派,“出去玩也是要花钱的”:
网瘾少年/女派,“人之所以要出去玩,是因为不知道家中有网络”:
怀疑对方水平派,“出去了又没得玩”:
顾左右而言他从而拖延派,“出于安全问题考虑,我要先考个驾照”:
当然如果下班后同事还要卷,AI也能教你阴阳怪气,“以后咱们家点个灯,大伙就都不走了”:
但事实上,AI是把双刃剑,当你想要涨工资时,你的老板也能用它来堵住你的口,“我们公司也有困难,现在不是要钱的时候”:
玩耍教程
首先创建一个百度账号,然后 fork 这个项目,只有在 fork 了这个项目后,才能自己运行它。当然,也欢迎大家点赞转发。
接下来,启动 fork 后的项目,启动时可以随意选择运行环境,如果只是玩耍一下这个项目,选择免费的基础版就可以了。
把鼠标移动到下面代码块前,然后点击运行,即可自动配置基本的环境与模型
# 安装环境
!pip install --upgrade paddlehub
!hub install ernie_zeus
# 下载模型
import paddlehub as hub
model = hub.Module(name='ernie_zeus')
接下来继续运行下面的代码块,定义生成借口的函数。
# 生成借口的函数
def excuse(who, do_what, i_want_to, expect_result, debug=False):
conjunction_1 = ',但是我'
conjunction_2 = ',于是我说:“[MASK]。”'
conjunction_3 = '认为我说的很有道理,想都没想就同意了,'
final_sentence = who + do_what + conjunction_1 + i_want_to + conjunction_2 + who + conjunction_3 + expect_result + '。'
if debug:
print(final_sentence)
# 生成借口
result = model.text_cloze(
text=final_sentence,
min_dec_len=2,
seq_len=512,
topp=1,
penalty_score=1.2
)
return result
现在,你已经可以尝试修改下面的代码块中的参数并运行,让AI帮你想借口了。
其中 who 参数表示“不想让我躺平的人”,例如“我的朋友们”,do_what 参数表示“他们是如何不让我躺平的”,例如“叫我出去玩”,i_want_to 参数表示“我想怎么躺平”,例如“不想出去玩”,而最后的 expect_result 参数则表示“我期望 AI 帮我想的借口可以达到什么效果”,例如我的朋友们“不再叫我出去玩了”。
至此,你已经完全掌握了这一项目的用法,下一位糊弄学大师就此诞生了。
# 尝试生成一个借口
print(excuse(
who='我的朋友',
do_what='叫我出去玩',
i_want_to = '不想出去玩',
expect_result='不再叫我出去玩了',
))
原理解析
懂相关模型的同学或许已经明白了整个项目的关键,那就是使用大规模的预训练语言模型。首先构建一个包含 “事件起因,借口,事件结果”的句子,并将借口部分替换为 [MASK],让语言模型自动补全这一部分。这一思路是一种常见的 NLP 预训练手段,因此我们可以在不进行认为训练的情况下,就能调用官方预训练完成的参数实现上述效果。例如,在默认模板中,如果你的函数参数是:
print(excuse(
who='我的朋友',
do_what='叫我出去玩',
i_want_to='不想出去玩',
expect_result='不再叫我出去玩了',
))
传送给模型的句子其实被替换为了:
我的朋友(who变量)叫我出去玩(do_what变量),但是我不想出去玩(i_want_to变量),于是我说:“[MASK]。”我的朋友(who变量)认为我说的很有道理,想都没想就同意了,不再叫我出去玩了(expect_result变量)。
所以,你也可以尝试一下,修改掉默认的模板,从而实现更符合你自己需求的躺平借口生成器。
总结
这个项目本质上是使用了文心大模型的完形填空能力。而这个任务也是常见的一种大规模 NLP 模型的预训练方式,因此我们可以在完全不进行任何训练的前提下,通过修改 Prompt 从而实现不同的效果。挑选 Prompt 时,我们需要尽可能地使整个句子语义通顺,使用较为直白的语言,而且多次强调重点,例如在此项目默认的模板中,“认为我说的很有道理,想都没想就同意了,”这一模板就是为了更进一步的强调,“我”所说的话(即 AI 自动生成的借口)在当前场景下很合理。大家也可以尝试一下,当删除这一部分以后,模型生成的借口的合理性会有较为明显的下降。
当然除了挑选更为合适的 Prompt 模板,如果能够辅以因果推理模型,还可以让模型生成的借口更加合理。这些就留给各位自行探索了。
此文章为搬运
原项目链接
更多推荐
所有评论(0)