脱单“神助攻” | 情话生成器,了解 python 就能玩

天作之程

共 3695字,需浏览 8分钟

 ·

2020-08-27 14:35

允中 发自 凹非寺
量子位 编辑 | 公众号 QbitAI
广大的钢铁直男们,七夕节快要到了,给女朋友的礼物下单了么?玫瑰鲜花预订好了么?烛光晚餐筹备了么?
什么?!还有没女朋友的或者还没有向女神表白的?
要想赢得女神芳心,文(甜)艺(言)情(蜜)话(语)也是不能少的!
但是,礼物的小贺卡上准备好要写什么了吗?打电话或者见面后准备说啥?还在说“XX,我爱你”,“XX,我们白头到老”么?还是一直挠头不知道怎么表达?
没关系,AI来拯救你!
AI情话、AI藏头诗、AI情诗大礼包开源上线啦!
为了在8月25日这天给钢铁直男们助攻一个浪漫优雅的七夕节,飞桨的研发人员也是蛮拼的!为了给开发者谋福利,加班加点在PaddleHub上线了AI情话和情诗模型!
话不多说,咱们直接看效果!

AI情话实测效果展示

输入:
你问我多喜欢你
生成:
你问我多喜欢你,
我也说不出来,
我心里明白,
我宁愿跟你吵架也不愿意去爱别人。
哎妈呀,泪奔了,哭的不要不要的!
再试试,输入:
你有打火机么?
生成:
你有打火机么? 没有啊!那你怎么点燃我的心的?
效果炸裂,这还只是一个AI情话功能。
要是再整首诗写在小卡片上,女神的心能瞬间化成一江春水向东流。。。

AI藏头诗实测效果展示

输入:
吾爱秋香
生成:
慕斯人不以官,
闲能有几人闲。
来莫作功名看,
满南山雪满山。
一战深藏功与名!
目前演示页限制是七言绝句,如果是需要其它的七言律诗、五言绝句和五言律诗,可以通过代码调用,效果也是妥妥的!
是不是着急了?我仿佛看到一群大老爷们儿向我杀来。
我这就把链接交出来,大家快来我们PaddleHub官网上体验吧:
https://www.paddlepaddle.org.cn/hub/scene/aiwriting

这是怎么做到的?

这样炸裂效果的背后,离不开顶尖的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 就能跑得动。
飞桨PaddleHub的开发者提供了AI情话、AI藏头诗、AI对联、AI写诗四种文本生成的示例代码,通过 Notebook 文件,我们能更形象地了解模型使用的完整过程。AI Studio项目地址如下:
https://aistudio.baidu.com/aistudio/projectdetail/746002
以下为调用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)
如下所示,运行脚本后就可以从服务器端拿到推理结果了。
飞桨的PaddleHub已经帮我们做好了各种处理过程。相信只要有一些 Python 基础,在本地预测、以及部署到服务器端都是没问题的。

更多预训练模型,马上了解PaddleHub

大家看到的AI情话,包括之前疫情期间开源的口罩人脸检测模型,都只是飞桨模型生态的冰山一角,更多的高质量的预训练模型,欢迎登录飞桨官网了解。
地址:https://www.paddlepaddle.org.cn/hublist
-END-

往期精彩推荐 --  

-- 1、在线代码编辑器,可以分享给任何人
-- 2、Python 造假数据,用Faker就够了
-- 3、在Python中玩转Json数据



--  留下你的“在看”呗!



浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报