七夕至。各位同学今晚需要加班不?

如果不加,又没什么人需要陪,看我的安排!

近日,TinyMind的诗词达人秀上出现了一枚优秀的AI写词机,这小AI擅长宋词创作,行云流水,妙笔生花,以独特的文风与智慧艳压全场!咱们先围观几首~~

♥爱情♥

只有一川烟月,不管青鸿一梦,何处是高楼。老子不堪见,明日隔江风。

我们不难发现小宋在情场中干脆利落,不拖泥带水,专一且霸道!

蓦山溪

莺来多息。不似花枝处。妙力不知春,更不见、江南一片。

不怜花柳,容尽一年春,花外下,水风深,谁是相思处。

黄台池外,一断无人到。天草不知人,对一里、黄昏千片。

一年心事,谁似旧人愁,情易遣,泪花前,寂寞花前减。

可能在七夕这天,小宋更感孤独,旧事涌上心头,“谁似旧人愁”,多情总被无情恼,“情易遣,泪花前”,怕是在去年七夕小宋被放生了。。

这首词通篇虽不如人类作品的剧情连贯,但细细品味每一句,都能让人看到灵性~!

“天草不知人,对一里、黄昏千片”,黄昏千片,这样的神搭配,请收下我的膝盖!

满江红

风雨凄凉,又还是、一番春色。

春又老、春风吹柳,满庭花落。

花影未禁春又老,柳丝袅袅胭脂薄。

问几年、春色入东风,春无力。

花不尽,春无力。

春不住,花无力。

想东君、莫放春衫,为谁偷惜。

一笑相思千万斛,一杯一醉君须说。

问何时、一醉醉中仙,从今日。

本是悲愤基调,在小宋笔下更多是无奈。“花影未禁春又老,柳丝袅袅胭脂薄。”如果说这是AI的杰作,你会跟我一样首先质疑吧?最后一句更是为通篇的"无奈"找到了出口,“一醉醉中仙,从今日。”谁敢说上下文没有连贯性,请你承包小宋一年的酒钱!

作为新一代AI诗词创作界扛把子,小宋的作品是源源不断层出不穷的。咱们先赏析到此,下面大戏来了!

你想拥有这样一个灵魂写词机吗?!作者(TinyMind用户名:HataFeng)已将代码模型公开啦!!!下面请跟我手把手学会造一个写词机!!至于2号,3号会是什么性格,你定~

小宋的模型基于循环神经网络来搭建

模型主要结构:词嵌入 + 多层LSTM

词嵌入采用:skip-gram + dropout

循环神经网络采用:多层LSTM + dropout

输出层采用:softmax

参数共享采用:softmax层和词向量层参数共享

损失采用:交叉熵、平均损失

优化采用:SGD

评价方法采用:复杂度(perplexity) 公式:

代码运行:


准备数据:sc.train 和 sc.vocab (已上传到tinymind 地址:https://www.tinymind.com/HataFeng/datasets/songci)

运行环境:

windows 或 tinymind 支持GPU或者CPU Tensorflow 1.4 python3.6 本地windows运行:

Cd code_path

python train.py --num_layers=2 --Optimizer="SGD" --learning_rate=0.1 --dataset="sc.train"

预测命令

python inference.py --train_dir="G:/test_data/songci/output/CT500_10_SGD"

代码框架:

  • 数据预处理模块

  • 模型模块

  • 预测模块

模块说明:

数据预处理模块

  • 整理数据

  • 编码

训练模块

  • 1.输入层:minibatch 词嵌入 + dropout

  • 2.处理层:网络结构采用多层LSTM + dropout

  • 3.输出层:softmax

  • 4.Lost:交叉熵

  • 5.优化:SGD或者adam

  • 6.评价:复杂度。

预测结构:

  • 1.输入层:词嵌入

  • 2.处理层:网络结构采用多层LSTM + dropout

  • 3.输出层:softmax

  • 4.Lost:交叉熵

  • 5.输出:top3 label 进行预测输出

代码说明文档

  • preprefile.ipynb 用空格对单词进行分割(切词后如下: 酒 泉 子 ( 十 之 一 ))

  • prefile.ipynb 按升序生成词表

  • encode.ipynb 将文本转化为单词编码(编码后如下:72 297 50 27 99 137 7 28 2)

  • train.py 训练程序

  • inference.py 预测模块

训练模块关键代码说明:


 # 定义使用LSTM结构为循环体结构且使用dropout的深层循环神经网络    # NUM_LAYERS 网络深度层数    # HIDDEN_SIZE 神经元数量    dropout_keep_prob = LSTM_KEEP_PROB if is_training else 1.0    lstm_cells = [        tf.nn.rnn_cell.DropoutWrapper(            tf.nn.rnn_cell.BasicLSTMCell(HIDDEN_SIZE),            output_keep_prob=dropout_keep_prob)        for _ in range(NUM_LAYERS)]    cell = tf.nn.rnn_cell.MultiRNNCell(lstm_cells)

    .....

    # 将输入单词转化为词向量    #skip-gram模型    inputs = tf.nn.embedding_lookup(embedding, self.input_data)

    # 对输入数据进行dropout    if is_training:        inputs = tf.nn.dropout(inputs, EMBEDDING_KEEP_PROB)

    ....

    # 收集LSTM不同时刻的输出    outputs = []    state = self.initial_state    with tf.variable_scope("RNN"):        for time_step in range(num_steps):            if time_step > 0: tf.get_variable_scope().reuse_variables()            cell_output, state = cell(inputs[:, time_step, :], state)            outputs.append(cell_output)

    output = tf.reshape(tf.concat(outputs, 1), [-1, HIDDEN_SIZE])

    if SHARE_EMB_AND_SOFTMAX:        weight = tf.transpose(embedding)    else:        weight = tf.get_variable("weight", [HIDDEN_SIZE, VOCAB_SIZE])

    bias = tf.get_variable("bias", [VOCAB_SIZE])    logits = tf.matmul(output, weight) + bias

    # 分类输出    self.predictions = tf.nn.softmax(logits, name='predictions')

    # 真实分布与预测分布的交叉熵    loss = tf.nn.sparse_softmax_cross_entropy_with_logits(        labels=tf.reshape(self.targets, [-1]),        logits=logits)    self.cost = tf.reduce_sum(loss) / batch_size    self.final_state = state

    # 梯度优化    print("FLAGS.Optimizer:", FLAGS.Optimizer)    if FLAGS.Optimizer == "adam":        print("use adma Optimizer  learning_rate:", LEARNING_RATE)        optimizer = tf.train.AdamOptimizer(learning_rate=LEARNING_RATE)    else:        optimizer = tf.train.GradientDescentOptimizer(learning_rate=LEARNING_RATE)

    # 训练步骤    self.train_op = optimizer.apply_gradients(zip(grads, trainable_variables), global_step=self.global_step)

天意事,谁堪得。

非易事,欢难说。

                  新一代AI杰出作家小宋想与小冰一比高低,请问你皮克谁?


更多关于小宋的诗词及详细说明请参考:

https://www.tinymind.cn/codes/97

想动手造写词机的同学请下载数据集:

https://www.tinymind.cn/articles/719

点击阅读原文,查看小宋的前世今生~

惊艳!基于RNN的AI写词机竟能写出如此优秀的情诗!相关推荐

  1. TinyMind AI诗词达人秀——我做过最酷的事,就是这个写词机了!

    在所有喜怒哀乐都能用"卧槽"两字表达的今天,唐诗宋词就像一股清泉,细细品味,甘甜自知.那些悲伤离别,经历过才懂得"一任阶前点滴到天明",家国天下,壮志难酬,最终 ...

  2. 基于腾讯AI Lab词向量进行未知词、短语向量补齐与域内相似词搜索

    (~免费广告位一则~) 数据下载地址: https://ai.tencent.com/ailab/nlp/en/embedding.html AI Lab开源大规模高质量中文词向量数据,800万中文词 ...

  3. 全宇宙最强AI 聊天机器人模型ChatGPT惊艳来袭,你还不上车?居然能写演讲稿和帮忙写代码

    目录 1.ChatGPT介绍 2.ChatGPT如何注册,国内不可用 3.VS Code下载安装ChatGPT 3.1 打开VS Code找到ChatGPT 3.2 ChatGPT 详细安装步骤: 3 ...

  4. 超赞!2021年最惊艳的38篇AI论文!

    转载于 :新智元 1.Zero-Shot Text-to-Image Generation https://arxiv.org/pdf/2102.12092.pdf 文本到图像的生成传统上侧重于为固定 ...

  5. AI做了什么,才能惊艳到你?

    2019独角兽企业重金招聘Python工程师标准>>> <倚天屠龙记>中,峨眉掌门斗敌不过,便使了倚天剑,寄希望于用天下最具杀伤力的兵器给自己战力多一份加成.如今,在各个 ...

  6. 罗技LogitechFlow技术--惊艳的多电脑切换体验

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他所拥有的.所以可以不学无术,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WEB安全.网络 ...

  7. 【写词笔记】第一部分

    写词不仅需要扎实的文字功底,还需要活跃的思想. 掌握了写词的方法,写词就会很容易,但写好词却是很难的. 第一[抓住灵感] 灵感只能给我们一个好的"动机",有了好的创作动机,再利用创 ...

  8. Ai绘画工具有哪些?推荐这7款效果惊艳的AI绘画神器

    2022虽然不是ai绘图这项技术诞生的时间,但却是到目前为止最爆火出圈的绘图元年. AI绘图(AI painting)就是以文生图(text2image),属于跨模态生成(Cross-modal ge ...

  9. 2018全球人工智能技术大会:AI做什么,才能惊艳到你?

    <倚天屠龙记>中,峨眉掌门斗敌不过,便使了倚天剑,寄希望于用天下最具杀伤力的兵器给自己战力多一份加成.如今,在各个行业的力求IT可以更多赋能企业创新核心的问题上,AI技术正在扮演倚天剑的角 ...

最新文章

  1. C/C++中各种类型int、long、double、char表示范围(最大最小值)
  2. IDEA 启动 Tomcat 乱码 解决办法
  3. 【转】ASP.NET之 关于触发Global.asax Session_End事件的经验
  4. 直播预告 | 从编码器与解码器端改进生成式句子摘要
  5. 介绍一个欧神写的剪贴板多端同步神器
  6. java找_Java基础之:查找
  7. python培训班靠谱吗-quot;quot;经常看到的python培训机构排名靠谱嘛?应该如何选择培训机构?...
  8. FreeSwitch视频会议,4路以上CPU占用暴增的原因
  9. hdu 1873“看病要排队”——优先队列的应用
  10. 解决maven打包 错误: 程序包com.sun.istack.internal不存在 - BBSMAX
  11. 资源分配博弈之纳什均衡和斯塔克尔伯格模型
  12. leetcode-第13题 罗马数字转整数
  13. 各大城市值得加入的互联网公司有哪些?
  14. 计算机科学的主要研究领域是,斯坦福大学计算机科学专业研究领域有哪些?
  15. Spyder启动闪退或打开项目编码报错
  16. Unity实现边缘轮廓高亮
  17. 如何写朋克摇滚原创歌曲
  18. 幼儿园教案我和计算机比本领,幼儿园说课稿:比本领
  19. 注册交管12123服务器异常,交管12123提示服务异常怎么解决
  20. 基于WebGL的虚拟太阳系漫游技术实现 ThingJS 科幻片

热门文章

  1. myeclipse快捷键大全
  2. VIRTUAL COMMUNITY INFORMATICS
  3. 利用计算机软件温度补偿,基于自主传感器信号调理芯片温度补偿的软件设计
  4. JSP基本语法:文件结构、脚本元素、指令元素、动作元素
  5. 数据 + 进化算法 = 数据驱动的进化优化?进化算法 PK 数学优化
  6. JS中Math函数的常用方法
  7. 精通JavaScript--07设计模式:行为型
  8. 日期类的时间从为什么是从1970年1月1日(格林威治时间)
  9. html css 布局知识概况
  10. linux下QT Creator常见错误及解决办法