zoukankan      html  css  js  c++  java
  • 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解析器,解析得到结果!

  • 相关阅读:
    高阶篇:1.2)材料和工艺的选择
    高阶篇:4.1.1)QFDI(客户需求转换为设计要求)
    高阶篇:4)可靠性设计-总章
    高阶篇:1.5)如何选择更好的概念-Pugh矩阵法
    知识点篇:2)产品结构设计目标的分类
    高阶篇:1.1)竞品(标杆产品)的拆解和分析benchmarking
    支持向量机
    机器学习概述
    HDU_oj_2055 An easy problem
    HDU_oj_2054 A==B ?
  • 原文地址:https://www.cnblogs.com/panfengde/p/10314047.html
Copyright © 2011-2022 走看看