(QACNN)自然语言处理:智能问答 IBM 保险QA QACNN 实现笔记
- follow: https://github.com/white127/insuranceQA-cnn-lstm
http://www.52nlp.cn/qa%E9%97%AE%E7%AD%94%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%8A%80%E6%9C%AF%E5%AE%9E%E7%8E%B0
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(错误答案)
6. QACNN Model
input1: 问题, input2:正向答案 input3:负向答案
word_embeddings: load_word_embedding中获取的3085个词的词向量
讲输入的内容为词序号的训练数据转换成词向量
将input拓展成4维的向量:(数量,1,每一句的词数量(此处统一为100),词向量的size)
设置filter,filter_sizes=[2,3,5]
对于每一个filter_size:
filter_shape=(num_filters,1,filter_size,embedding_size)=(500,1,2,100) (以第一个为例,下同理)
image_shape=(batch_size,1,sequence_len,embedding_size)=(256,1,100,100)
fan_in=filter_sizeembedding_size
fan_out=num_filtersfan_in
W_bound=0.00774
W初始化为最大值为W_bound,最小值为-w_bound,size为filter_shape=(500,1,2,100)的向量
偏置b初始化为[500,]的向量
卷积
对于问题input_x1:
1) (256,1,100,100)卷(500,1,2,100)
2) 然后最大池化,池化下采样后为(sequence_len-filter_size+1,1)=(99,1),也就是(256,500,99,1)
3) 然后输入tanh中 得到pooled_active
4)ouputs_1.append(pooled_active)
对正向答案input_2与负向答案input_3做相同的操作,得到ouputs_2.append(pooled_active), output_3.append(pooled_active)
self.params += [W,b]
遍历完filter_sizes中的3个元素后,得到各包含3个元素的ouputs_1,ouputs_2,ouputs_3,self.params
总共的filter数量为num_filter_total=500*3=1500
self.dbg_x1=input_x1
self.dbg_outputs_1=outputs_1[0].shape
将每个句子表示为(256,1500)的向量
使用dropout
计算问题与正向答案,问题与负向答案的cos夹角 cos12, cos13
计算损失函数得到cost
计算准确率
计算梯度
更新
epoch到一定数量时,validation
validation
加载test数据集得到问题,正向答案,负向答案 x1, x2, x3
__validation_model__输入问题,正向答案,负向答案,以及学习率,输出cos12, cos13
排序每一个问题中的cos12,根据分数最高的判断算法的正确性,如果排名最高的正确答案,则算法判断正确,否则,算法判断错误

总结:
该算法通过CNN学习得到一个模型,模型提取得到问题,正确答案,错误答案的相关特征,这些特征使得问题与正确答案相似,与错误答案不想似,最终从答案库中寻找到正确答案。
(QACNN)自然语言处理:智能问答 IBM 保险QA QACNN 实现笔记的更多相关文章
- (QA-LSTM)自然语言处理:智能问答 IBM 保险QA QA-LSTM 实现笔记.md
train集: 包含若干条与保险相关的问题,每一组问题对为一行,示意如下: 可分为四项,第三项为问题,第四项为答案: 1.build_vocab 统计训练集中出现的词,返回结果如下(一个包含3085个 ...
- 管正雄:基于预训练模型、智能运维的QA生成算法落地
分享嘉宾:管正雄 阿里云 高级算法工程师 出品平台:DataFunTalk 导读:面对海量的用户问题,有限的支持人员该如何高效服务好用户?智能QA生成模型给业务带来的提效以及如何高效地构建算法服务,为 ...
- Android之智能问答机器人
本文主要利用图灵机器人的接口,所做的一个简单的智能问答机器人 实现 由于发送与接收消息都是不同的listView,所以要用有两个listVeiw的布局文件 接收消息布局文件 <?xml vers ...
- springboot+lucene实现公众号关键词回复智能问答
一.场景简介 最近在做公众号关键词回复方面的智能问答相关功能,发现用户输入提问内容和我们运营配置的关键词匹配回复率极低,原因是我们采用的是数据库的Like匹配. 这种模糊匹配首先不是很智能,而且也没有 ...
- 智能问答中的NLU意图识别流程梳理
NLU意图识别的流程说明 基于智能问答的业务流程,所谓的NLU意图识别就是针对已知的训练语料(如语料格式为\((x,y)\)格式的元组列表,其中\(x\)为训练语料,\(y\)为期望输出类别或者称为意 ...
- 自然语言处理:问答 + CNN 笔记
参考 Applying Deep Learning To Answer Selection: A Study And An Open Task follow: http://www.52nlp.cn/ ...
- 基于百度ai,图灵机器人,Flask 实现的网站语音智能问答
准备以下模块中的函数 from aip import AipSpeech import time import os import requests APP_ID = '15420654' API_K ...
- Android 智能问答机器人的实现
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38498353 ,本文出自:[张鸿洋的博客] 今天看到一个ios写的图灵机器人,直 ...
- 开源VS商用,IBM区块链从Hyperledger到商用平台之道 | 对话IBM高级架构师【 笔记】(转)
https://www.toutiao.com/a6520005731867951619/?tt_from=weixin&utm_campaign=client_share× ...
随机推荐
- 【postman】postman测试API报错如下:TypeError: Failed to execute 'fetch' on 'Window': Invalid value 对中文支持不好
使用postman测试APi的时候,因为系统需要在header部带上登录用户的信息,所以 如下: 然后测试报错如下:TypeError: Failed to execute 'fetch' on 'W ...
- tar命令中的-C作用
一直不知道解压命令如何指定文件夹,今天学到了一个 -C 参数 tar zxvf test.tar.gz -C test 注释:上面的命令将 test.tar.gz 这个压缩包解压到当前目录下的 tes ...
- SilverLight:基础控件使用(5)-TreeView控件-基本使用
ylbtech-SilverLight-Basic-Control:基础控件使用(5)-TreeView控件-基本使用 前台编辑 后台逐个添加 后台绑定数据源 1.A,返回顶部TreeView控件(树 ...
- 计算广告、推荐系统论文以及DSP综述
http://www.huxmarket.com/detail/2966 DSP场景假定前提: 以CTR预估为例,向广告主以CPC(OCPC)方式收费,向ADX以CPM方式付费.投放计划受预算限制,在 ...
- Android Studio 设置项目Module编码,解决Android Studio项目执行时乱码问题
Android Studio的项目设置逻辑与Eclipse有非常大的差别.运行的操作为File->Setting->File Encodings然后来进行设置,如图所看到的: waterm ...
- construct-binary-tree-from-preorder-and-inorder-traversal——前序和中序求二叉树
Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume tha ...
- Linux基础(2)- 用户、群组和权限
一.用户.群组和权限 1) 新建用户natasha,uid为1100,gid为555,备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文 ...
- D堆的实现
实现上一篇博客(http://blog.csdn.net/buleriver/article/details/38469977)说的D堆.假设把mD设置成2.D堆就退化成二叉堆,也就是说.二叉堆是D堆 ...
- FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解(转)
1.StorageClient与StorageClient1的区别 相信使用happy_fish的FastDFS的童鞋们,一定都熟悉StorageClient了,或者你熟悉的是StorageClien ...
- Django中的模板和分页
模板 在Templates中添加母版: - 母版...html 母版(master.html)中可变化的地方加入: {%block content%}{%endblock%} 在子版 (usermg. ...