train集:

包含若干条与保险相关的问题,每一组问题对为一行,示意如下:



可分为四项,第三项为问题,第四项为答案:



1.build_vocab

统计训练集中出现的词,返回结果如下(一个包含3085个元素的dict,每个词作为一个key,value为这些词出现的顺序):

2. load_word_embedding(vocab,embedding_size)

vocab为第一步获取的词集,embedding_size=100

load_vectors()

获取预先训练好的保存在vectors.nobin中的词向量

返回的vector中保存有22353个词的向量



然后通过暴力匹配,获取vocab中每个词的词向量,存在embeddings中,embedding中的序数对应的是vacab中的key的value



3. load_train_list

获取保存在train中18540个问题与答案



4. load_test_list

获取保存在test.sample中的问题与答案,共10000条

在测试集中,共有20个问题,每个问题包含若干个正确答案与错误答案,共500个答案,由每一行的第一个元素标识,为1时为正确答案,为0时为错误答案

5.load_data(trainList,vocab,batch_size)

batch_size=256

encode_sent(vocab,string,size) 讲string中的词转换成vocab中所对应的的序号

得到一个batch_size的train_1(问题),train_2(正确答案), train_3(错误答案)

同时返回3个mask,用于标识数据集语句除去 < a > 后的真实的长度

6. LSTM Model



proj_size=100

初始化LSTM的参数



project_size=100

tparams={}

grad_params=[]

随机生成ndimndim的矩阵W,对其进行SVD分解得到 u,s,v,返回floatX的u,维度100100

初始化W,维度为100400



W_t=W

tparam[‘lstm_W’]=W_t

初始化U,维度为100
400,U_T=U,tparam[‘lstm_U’]=W_t



初始化b,b的维度为4001,初始化为0,b_t=b,tparam[‘lstm_b’]=b_t

grad_params=[W_t, U_t,b_t]

返回tparam和grad_params

返回后的分别赋值给tparam和self.params

初始化CNN的参数



filter_sizes=[1,2,3,5]

num_filters=500

proj_size=100

tparam={lstm_U, lstm_w, lstm_b} 之前lstm初始化时赋好的值

self.params=lstm赋好的self.params

对于filter_sizes中的每一个元素(以2为例):

filter_shape=(num_filters,1,filter_size,proj_size)=(500,1,2,100)

fan_in=filter_shape[1:]的乘积=200

fan_out=filter_shape[0]
np.prod(filter_shape[2:]) 500filter_shapefilter_sizeproj_size=100000

W_bound=

W初始化为最低值为-w_bound,最大值为w_bound,size=filter_shape

=tparams[‘cnn_w_2’]=W

初始化b为500
1维的向量

=tparams[‘cnn_b_2’]=b

grand_params+=[W,b]

最终返回tparams和grad_params 各含有11个元素

lookup_table=word_embedding

tparams[‘lookup_table’]=lookup_table





input1, input2, input3分别是问题,正确答案,错误答案



这一函数首先将input的训练集转成词向量模式的

将input的矩阵reshape成(sequence_len,batch_size, embedding_size)(100,256,100)的input_x



state_below就是input

nsteps=训练数据的sequence_len

n_samples=训练数据的batch_size

input=input*lstm_W+lstm_b

通过scan做lstm的相关步骤

得到的输出在输入CNN中,抽取特征,计算问题,正确答案,错误答案的相似度,余下的与QACNN类同

(QA-LSTM)自然语言处理:智能问答 IBM 保险QA QA-LSTM 实现笔记.md的更多相关文章

  1. (QACNN)自然语言处理:智能问答 IBM 保险QA QACNN 实现笔记

    follow: https://github.com/white127/insuranceQA-cnn-lstm http://www.52nlp.cn/qa%E9%97%AE%E7%AD%94%E7 ...

  2. Android之智能问答机器人

    本文主要利用图灵机器人的接口,所做的一个简单的智能问答机器人 实现 由于发送与接收消息都是不同的listView,所以要用有两个listVeiw的布局文件 接收消息布局文件 <?xml vers ...

  3. springboot+lucene实现公众号关键词回复智能问答

    一.场景简介 最近在做公众号关键词回复方面的智能问答相关功能,发现用户输入提问内容和我们运营配置的关键词匹配回复率极低,原因是我们采用的是数据库的Like匹配. 这种模糊匹配首先不是很智能,而且也没有 ...

  4. 智能问答中的NLU意图识别流程梳理

    NLU意图识别的流程说明 基于智能问答的业务流程,所谓的NLU意图识别就是针对已知的训练语料(如语料格式为\((x,y)\)格式的元组列表,其中\(x\)为训练语料,\(y\)为期望输出类别或者称为意 ...

  5. 自然语言处理:问答 + CNN 笔记

    参考 Applying Deep Learning To Answer Selection: A Study And An Open Task follow: http://www.52nlp.cn/ ...

  6. 基于百度ai,图灵机器人,Flask 实现的网站语音智能问答

    准备以下模块中的函数 from aip import AipSpeech import time import os import requests APP_ID = '15420654' API_K ...

  7. Android 智能问答机器人的实现

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38498353 ,本文出自:[张鸿洋的博客] 今天看到一个ios写的图灵机器人,直 ...

  8. 《IBM BPM实战指南》读书笔记

    理论 BPM不是一个IT术语,更不是因技术的发展而起源的,相反,BPM自始至终都是管理学的术语和概念.它关注的一直都是效率.成本.利润.质量等核心问题.BPM是一门学科和一种方法论,只是现代的企业管理 ...

  9. 深度学习原理与框架-递归神经网络-RNN网络基本框架(代码?) 1.rnn.LSTMCell(生成单层LSTM) 2.rnn.DropoutWrapper(对rnn进行dropout操作) 3.tf.contrib.rnn.MultiRNNCell(堆叠多层LSTM) 4.mlstm_cell.zero_state(state初始化) 5.mlstm_cell(进行LSTM求解)

    问题:LSTM的输出值output和state是否是一样的 1. rnn.LSTMCell(num_hidden, reuse=tf.get_variable_scope().reuse)  # 构建 ...

随机推荐

  1. 深入理解Activity启动流程(一)–Activity启动的概要流程

    概述 Android中启动某个Activity,将先启动Activity所在的应用.应用启动时会启动一个以应用包名为进程名的进程,该进程有一个主线程,叫ActivityThread,也叫做UI线程. ...

  2. Boost.Asio c++ 网络编程翻译(18)

    同步服务端 同步服务端也相当简单.它须要两个线程,一个负责接收新的client.另外一个负责处理已经存在的client. 它不能使用单线程:等带一个新的client是一个堵塞操作,所以我们须要另外一个 ...

  3. 详解在Visual Studio中使用git版本系统(图文)

    http://www.codesky.net/article/201111/123474.html 这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指正. 第一 ...

  4. 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)

    试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有120多个字段.现在合同每一次变更时都需要对合同原始信息进行归档一次,版本号依次递增.那么我们就要新建一张合同历史表, ...

  5. 使用EA生成多层次的代码框架

    最近工作期间发现了一个非常棒的UML软件[Enterprise Architect UML 建模工具]简称EA,在该软件上绘制框架层面的类之间关系后,可以自动生成相关语言的代码. EA上目前支持的语言 ...

  6. shell-判断循环

    shell条件测试 test 每个完整的合理的编程语言都具有条件判断的功能. bash可以使用test命令,[]和()操作,还有if/then结构 字符串判断 -n string 判断字符串长度非零 ...

  7. ListView优化总结(二)--Android

    3.使用Activity和Delegate与适配器交互 这个内容是从书里看到的,通过托付模式帮助开发人员把全部的业务逻辑从适配器中移到Activity中. 以下是加入电话号码的样例,列表中每一行都有一 ...

  8. Vue 资源

    一. 资源教程 综合类 vuejs 英文资料 Vue中文资料总汇 Vue.js 的一些资源索引 vue资料 入门类 vue 快速入门 Vue.js 中文系列视频教程 on Laravist 英文教程 ...

  9. asyncio协程与并发

    并发编程 Python的并发实现有三种方法. 多线程 多进程 协程(生成器) 基本概念 串行:同时只能执行单个任务 并行:同时执行多个任务 在Python中,虽然严格说来多线程与协程都是串行的,但其效 ...

  10. 第 3 章 第 1 题 精简冗余 if 语句问题 使用数组实现

    问题分析 输入:用户个人收入 输出:该用户要缴纳的个人所得税 约束:不允许使用过多的 if 语句 解答思路 最简单的方法是根据不同的税率区间,创建多个 if 语句来求解.但如此一来便会有 25 个 i ...