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解析器,解析得到结果!

原文地址:https://www.cnblogs.com/panfengde/p/10314047.html

时间: 2024-07-30 21:38:36

seq2seq聊天模型(一)的相关文章

seq2seq聊天模型(三)—— attention 模型

注意力seq2seq模型 大部分的seq2seq模型,对所有的输入,一视同仁,同等处理. 但实际上,输出是由输入的各个重点部分产生的. 比如: (举例使用,实际比重不是这样) 对于输出"晚上", 各个输入所占比重: 今天-50%,晚上-50%,吃-100%,什么-0% 对于输出"吃", 各个输入所占比重: 今天-0%,晚上-0%,吃-100%,什么-0% 特别是在seq2seq的看图说话应用情景中 睡觉还握着笔的baby 这里的重点就是baby,笔!通过这些重点,生

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

背景 利用 luojiangtao 这位大神https://github.com/luojiangtao/ChatBot_web 的代码,灵感来源http://www.shareditor.com/blogshow?blogId=118 一个lstm单元让聊天机器人学会甄嬛体. 以鲁迅先生的狂人日志为语料,将每连续的两句话作为encoder输入和decoder输入来训练,生成文章时用机器人的输出作为输入循环得到100个句子. 结果如下: 很好的月光,我不见他.便旧走也吃走.一个要以一也.后个来人

自动聊天机器人项目班 [一门课搞定聊天机器人]

打造传统NLP聊天机器人第1课 聊天机器人的基础模型与综述知识点1:行业与业界综述实战项目:最简单的Rule-Base聊天机器人第2课 NLP基础及扫盲知识点1:NLP基本算法实战项目:经典NLP问题与解法第3课 用基础机器学习方法制作聊天机器人知识点1:神经网络与基础实战项目:说学逗唱的基础机器人打造深度学习聊天机器人第4课 深度学习基础及扫盲知识点1:深度学习基础算法实战项目:经典深度学习问题与解法第5课 深度学习聊天机器人原理知识点1:seq2seq生成模型知识点2:user modeli

NLP实践TensorFlow打造聊天机器人

<p>想要课程的请访问 icourse8.com/nlp_tensorflow.html</p> <p>想要课程的请访问 icourse8.com/nlp_tensorflow.html</p> <h5>更多课程请访问icourse8.com,慕课网全集都有,还有跟多机构课程</h5> <h5>无论是入门,还是提高,总有一门课程适合你</h5> <div>icourse8.com/nlp_tenso

Android开发之聊天室

本案例目的在于开发一个简单的聊天室功能,所有代码都是本人调试修改之后可以正常使用,主要功能在于通过多线程技术由服务器接收客户端的请求,之后将聊天内容发送给每个接入服务器的每个客户端.另外实现了登录功能,只有登录验证之后才可以实现聊天.具体的技术细节在本栏目不涉及,主要是多线程基于Socket,具体代码如下: 首先是简易的聊天模型图: 客户端代码如下: 功能为指定socket连接的ip地址和端口号,客户端分为2个线程A和B,其中A线程负责登录连接,B线程分为2个子线程,第一个是向服务器发送数据,第

TensorFlow文本摘要生成 - 基于注意力的序列到序列模型

1 相关背景 维基百科对自动摘要生成的定义是, "使用计算机程序对一段文本进行处理, 生成一段长度被压缩的摘要, 并且这个摘要能保留原始文本的大部分重要信息". 摘要生成算法主要分为抽取型(Extraction-based)和概括型(Abstraction-based)两类. 传统的摘要生成系统大部分都是抽取型的, 这类方法从给定的文章中, 抽取关键的句子或者短语, 并重新拼接成一小段摘要, 而不对原本的内容做创造性的修改. 这类抽取型算法工程上已经有很多开源的解决办法了, 例如Git

comet反向Ajax模型原理与模型(笔记一)

comet反向Ajax模型原理与模型(笔记一) 网页实时聊天有两种方式: 第一种:不断的查询是否有新消息,耗费资源,并非真正的实时 第二种:使用反向Ajax,页面不断开,一有数据就立即发送,真正的实时 我们先简单做一个页面不断开的浏览器页面: 1 ob_start(); 2 3 <?php 4 5 /* 反向Ajax原理 6 7 * comet 反向ajax 8 9 * 又叫服务器推技术 server push 10 11 * 在"实时聊天","消息推送"中,

一个关于vue+mysql+express的全栈项目(五)------ 实时聊天部分socket.io

一.基于web端的实时通讯,我们都知道有websocket,为了快速开发,本项目我们采用socket.io(客户端使用socket.io-client) Socket.io是一个WebSocket库,包括了客户端的js和服务器端的nodejs,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用.它会自动根据浏览器从WebSocket.AJAX长轮询.Iframe流等等各种方式中选择最佳的方式来实现网络实时应用,非常方便和人性化,而且支持的浏览器最低达IE5.5 socket.io特点: 实

Scala 学习 (七) 并发编程模型Akka

一,Akka简介 二,Akka中的Actor模型 三,Akka实战案例之HelloActor 四,Akka实战案例之PingPong 五,案例基于 Actor 的聊天模型 正文 一,Akka简介 写并发程序很难.程序员不得不处理线程.锁和竞态条件等等,这个过程很容易出错,而且会导致程序代码难以阅读.测试和维护.Akka 是 JVM 平台上构建高并发.分布式和容错应用的工具包和运行时.Akka 用 Scala 语言写成,同时提供了 Scala 和 JAVA 的开发接口 二,Akka中的Actor模