前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于seq2seq的中国对联自动配对技术实践

基于seq2seq的中国对联自动配对技术实践

作者头像
sparkexpert
发布2018-01-09 11:53:43
9700
发布2018-01-09 11:53:43
举报

Sequence to Sequence模型这种基于编码--解码的模型已经被谷歌成功应用于机器翻译上。而理论上任意的序列到序列的有监督问题都可以用这种模型。如上一篇文章写的古诗生成。包括这一篇实践性的对联配对。

对对联生成过程中,需要使用LSTM来实现,然后需要设置其编码与解码的相关参数。如下所示:

代码语言:javascript
复制
# 创建基本的LSTM单元
cells = [tf.contrib.rnn.DropoutWrapper(
        tf.contrib.rnn.BasicLSTMCell(embedding_dim), output_keep_prob=keep_prob
    ) for i in range(3)]

stacked_lstm = tf.contrib.rnn.MultiRNNCell(cells)

with tf.variable_scope('decoders') as scope:
    # feed_previous=False, for training
    decode_outputs, decode_state = tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq(
        encode_input,
        decode_input,
        stacked_lstm,
        num_encoder_symbols=input_vocab_size,
        num_decoder_symbols=output_vocab_size,
        embedding_size=embedding_dim)
    
    scope.reuse_variables()
    
    decode_outputs_test, decode_state_test = tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq(
        encode_input,
        decode_input,
        stacked_lstm,
        num_encoder_symbols=input_vocab_size,
        num_decoder_symbols=output_vocab_size,
        embedding_size=embedding_dim,
        feed_previous=True)

loss_weights = [tf.ones_like(l, dtype=tf.float32) for l in labels]
loss = tf.contrib.legacy_seq2seq.sequence_loss(decode_outputs, labels, loss_weights, output_vocab_size)

optimizer = tf.train.AdamOptimizer(0.001)
train_op = optimizer.minimize(loss)

(2) 测试例子如下:其中挂号内为原有的配对。

测试例子: 悼念先严三周年▁▁▁(痛表后生一片心▁▁▁) -> 诗留人间百年诗▁▁▁ 百岁人歌长寿酒▁▁▁(万载花开太平春▁▁▁) -> 千秋再爱自长春▁▁▁ 黄花酿酒三杯醉▁▁▁(绣阁增辉两烛燃▁▁▁) -> 碧水池霜百岁人▁▁▁ 艳阳照大厦春华竞发▁(甘露洒人间瑞气勃生▁) -> 看日开新地壮天更高▁ 延龄人种神仙草▁▁▁(纪竹新开甲子花▁▁▁) -> 蜜月欣逢百岁图▁▁▁

测试例子: 白发朱颜喜登上寿▁▁(丰衣足食乐享晚年▁▁) -> 丰山足食享享高秋▁▁ 体健神恰晚景好▁▁▁(书声墨韵老来红▁▁▁) -> 天明萱草喜无鸯▁▁▁ 大好良辰春光明媚▁▁(重开令甲上寿期颐▁▁) -> 文明盛世喜此如山▁▁ 宝马迎来云外客▁▁▁(香车送出月中仙▁▁▁) -> 金牛犁栋喜雄风▁▁▁ 莲子杯中金各酒▁▁▁(桃花盏上玉台诗▁▁▁) -> 桃香嫩柳柳丝凰▁▁▁

测试例子:

赏灯极乐繁华地▁▁▁(秉灯同游不夜天▁▁▁) -> 养手同来幸福花▁▁▁

寒笳送走人间腊▁▁▁(晓角吹回雪里春▁▁▁) -> 夜雨梅花蝶萝香▁▁▁

知识鼓满青春风帆▁▁(劳动展开爱情羽翼▁▁) -> 赤策文章浩气清风▁▁

贮在玉壶由人造▁▁▁(结成晶块夺天工▁▁▁) -> 誓知甘作口子余▁▁▁

灰飞薛管声谐凤▁▁▁(玉种蓝田兆梦熊▁▁▁) -> 何洁堪媳荐良仑▁▁▁

针对这两种测试,也验证了人工智能是否真的会创作。利用这种seq2seq写出的古诗或者对联,的确会出现训练集合外的句子,非常有意思,完全是创作的味道。不过呢,目前的仅仅还是测试例子,对语义上有些地方,特别是里面的思想和语义理解还有待深入。这可能需要更多的知识、常识、典故等的配合。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年05月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档