seq2seq聊天模型

Posted panfengde

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了seq2seq聊天模型相关的知识,希望对你有一定的参考价值。

最近完成了sqe2seq聊天模型,磕磕碰碰的遇到不少问题,最终总算是做出来了,并符合自己的预期结果。

本文目的

利用流程图,从理论方面,回顾,总结seq2seq模型,

seq2seq概念

你给模型一段输入,它返回一段输出!

可以用在这些情景,聊天模型、翻译、看图说话、主旨提取等等涉及自然语言的层面,用途较广泛

例如:

输入"今天中午吃什么",
输出"吃兰州拉面"。

seq2seq是通过encoder编译器将一段输入,编译,汇聚成一个状态。再通过decoder解析器,解析该状态,返回一个输出!

encoder和decoder都是建立再LSTM或者RNN的基础上。


运行流程

1. 分词

输入"今天中午吃什么"

通过结巴分词工具,分词为["今天", "中午", "吃", "什么"]

输出结果为:输入通过seq2seq的计算后,输出结果为["吃", "拉州", "拉面"]

2. 分词向量化

对于分词最终都会转换为相应的向量
我采用了两种方法,将分词转换为向量
1.随机定义分词的向量,训练过程中,不断的修改,最终形成分词向量。

(下面代码,可以忽略)

 self.dec_Wemb = tf.get_variable(‘embedding‘, 
                       initializer=tf.random_uniform([dec_vocab_size + 2, self.dec_emb_size]), 
                       dtype=tf.float32)

2.使用gesim工具,将分词转换为向量。(我认为这个好,拓展性广很多)

for world in all_words_list:
    # ["_GAO_", "_PAD_", "*",
    if world == "_GAO_" or world == "_PAD_" or world == "*":
        continue
    try:
        embedding.append(model[world].tolist())
    except KeyError:
        embedding.append([0.5] * vim)

3.seq2seq核心运作如下流程图

这里是基础模型(还有attention模型,schedule模型等)
模型的核心点都是在encoder处,编译整理输入状态,传递给decoder解析器,解析得到结果!
技术分享图片











以上是关于seq2seq聊天模型的主要内容,如果未能解决你的问题,请参考以下文章

Seq2Seq sequence-to-sequence模型 简介

flask+seq2seq实现聊天机器人在线群聊

深度学习利用深度学习监控女朋友的微信聊天?

Seq2Seq 模型学会在几次迭代后只输出 EOS 令牌 (<\s>)

自然语言处理之seq2seq模型

利用seq2seq 聊天机器人做出鲁迅体