一个小任务:给出一个问题和诺干个候选句子,从候选句子中选出答案,有没有好的实现方案?

一个小任务:类似于:“中国最大的内陆湖是哪个?”给出候选句子1.”中国最大的内陆湖,就是青海湖”2.“青海湖在中国内陆湖中最大的”等等 这种句子 然后根据句子找出答案 请问有什么实现的方案吗?

写了个答案,算是个科普向的,搬运到专栏

1 从“是什么”说起
这个问答属于传统的question-answer问题,比如例子上的

中国最大的淡水湖是___(转义,并不一定存在填空,但性质相同)

需要的结果,是补全出,青海湖这个结果

在英文中,我们称这种,给予一个query,回答一个词,作为“填空”,来回答的问题,称为“cloze style”的问题,来源于英语中的填字游戏

我们的input是一个query,一篇context,然后从文章中选取一个 存在于文章中的(point) 词,来做一个 填空 问题,将这个词作为output

现在,问题明确了,我们的任务,就是构建这个"端对端"的,input-output系统

2 从“为什么”谈谈

首先想说一说attention这个概念,以此导入后面的介绍

准确的描述请看

@Tao Lei

大神关于attention的回答

我们现在已经确定了两点

第一,我们所要找的"填空"词,必然是context中的一个

第二,判定这个词我们需不需要,主要取决与我们的query,也就是问题

那么很自然的就会想到,如果我们能够对context中的每个词,和这个query都构建一个函数,假设context = {word1,word2......},我们希望有一个量化的函数f(query,word_i) = value,然后我们只需要选择出max的那个词来进行"填空",就完成了

放到题目中,我们假设存在那么一个f

query:中国最大的淡水湖是哪一个?

f(query,青海湖) = 10

f(query,doge) = 1

f(query,野鸭湖) = 5

然后我们就max(),直接获得了青海湖这个答案

3 往"怎么做"说说

现在的问题变成了:

(1) 如何把这些离散的变量纳入函数去计算?

写过相关代码的,说一句embedding足够了,本质上就是用词向量去表达

简单解释一下,词向量就是用向量来把离散化的词来进行另一个形式的表达,比较好的词向量可以model到语义,具体来说就是,v1如果表达"青海湖",v2 表达 "抚仙湖",v3表达"青海".v4表达"云南",我们甚至可以直接做到v3 -v1 = v4-v2的神奇效果

但这显然不够

如果只是model到单个词,很大程度上浪费了文章信息,我们需要尽可能的涵盖上下文的意思,英文capture

我们希望,model出青海湖这个词的向量的时候,能包含"淡水湖,最大"之类的描述信息,这又如何做到呢

LSTM,时序神经网络RNN,一个经典的解决方案,embedding日常

看个热闹的话,这里,我们已经用一个向量表达了青海湖,还包含了一些它的属性信息,当然这个表达,只有计算机看得懂

(2) 如何构建合理的函数f?

第一篇开山的是这个

Teaching Machines to Read and Comprehend (Hermann et al., 2015)

Y. Cui, Z. Chen, S. Wei, S. Wang, T. Liu, G. Hu

蓝红部分做的就是所谓的capture的工作,也就是对词做了一个抽象,也对问题进行了一个抽象,在这个时候,训练了一个权重向量s,也就是attention

计算的思路也是非常清晰的,g就是我们之前试图寻找的那个f,表达的东西是一样的

秉承这个attention的思路,IBM搞出了一个更清晰的完全体,大概是1.0版本和1.1版本的关系,并且github上有完整的实现,能给一个比较好的参考

Text Understanding with the Attention Sum Reader Network (Kadlec et al., 2016)

Y. Cui, Z. Chen, S. Wei, S. Wang, T. Liu, G. Hu


网络的结构和计算非常简单,但是人家就有soa的效果

今年的Squad,stanford的全球性评测当中,科大讯飞andHIT和MSRA的两篇论文我记得第一第二,其中Aoa reader的论文和上两篇可以说是一脉相承的思路,只不过在对attention的利用上更近一层,MSRA的r-net有所不同,都是值得一读的文章,我在此贴一下paper的链接,这算是目前我知道的,这类问题的最好解决方案了

MSRA

aka.ms/rnet

Joint Laboratory of HIT and iFLYTEK Research

[1607.04423] Attention-over-Attention Neural Networks for Reading Comprehension

前一个复杂一些,后一个实现一下不难就是了,不过嘛,谁知道炼丹过程中有什么佐料呢

感谢观看

编辑于 2017-09-21

原文链接:https://zhuanlan.zhihu.com/p/29548295

一点关于cloze-style问题的简谈相关推荐

  1. 异步复位同步释放_简谈同步复位和异步复位

    简谈同步复位和异步复位 大侠们,江湖偌大,有缘相见,欢迎一叙,今天来聊一聊数字电路设计中的同步复位和异步复位. 谈到同步复位和异步复位,那咱们就不得不来聊一聊复位这个词了.在数字逻辑电路设计中,电路通 ...

  2. .NET简谈组件程序设计之(上下文与同步域)

    我们继续学习.NET多线程技术,这篇文章的内容可能有点复杂.在打破常理之后,换一种新的思考模型最为头疼.这篇文章里面会涉及到一些不太常见的概念,比如:上下文.同步域等等.我也是最近才接触这些关于组件编 ...

  3. 简谈卷积—幽默笑话谈卷积

    简谈卷积-幽默笑话谈卷积 今天和大侠简单聊一聊卷积,话不多说,上货. 关于卷积,之前在大学时候学信号与系统的时候就感觉理解的不是很深刻,我于是心想一定要把卷积完全搞明白.经过一段时间的思考之后,有一些 ...

  4. 信息系统项目管理简谈

    项目管理是一个持续并且包括繁多事情的工作,一个项目的成功与项目的管理存在必然的关联,所以项目在执行过程中项目经理要做好各环节的管理工作,避免出现较大问题.项目管理过程包括众多的环节,下面结合个人的一点 ...

  5. 简谈人工智能发展史与伦理规范

    @[简谈人工智能发展] 人工智能发展简述 人工智能起源 二十世纪五十年代的时候,人工智能的概念首次被提出.1950年,马文·明斯基(被称为人工智能之父) 马文·明斯基是"人工智能之父&quo ...

  6. .NET简谈网络系统大局观

    我们都知道软件发展经历了很长一段路程,在软件刚刚起步的时候,有一批世界顶尖的科学家用自己整个的人生为我们创造了今天美好的信息世界,我印象最深的是我看过一本书,书名是<优雅人生>是专门介绍一 ...

  7. .NET简谈组件程序设计之(手动同步)

    在上一篇文章".NET简谈组件程序设计之(上下文与同步域) "中,我们学习了关于一些上下文和同步域的概念,可以利用这两个技术来进行自动同步. 今天我们主要学习怎么手动来执行同步,能 ...

  8. php谈谈你对分布式的理解,简谈关于对分布式处理的理解

    原标题:简谈关于对分布式处理的理解 最近这段时间一直在看分布式有关的东西,但是关于分布式自己还是不能很好的理解,所以本文对分布式基础概念进行下学习. 分布式处理 首先先了解一下分布式处理,分布式处理和 ...

  9. 简谈创建字典的几种方式

    简谈创建字典的几种方式 直接用键值对的形式写出 键值对之间用逗号隔开 dict0 = {'name': 'xxx', 'age': 23} 用dict函数 dict1 = dict()

最新文章

  1. 1. golang 语言环境安装
  2. leetcode算法题--视频拼接
  3. [软件更新]Adobe Photoshop Elements 8.0.0
  4. Py之pyecharts:基于大数据对人工智能进行各种可视化图表分析
  5. 函数(一.return)
  6. 前端学习(3156):react-hello-react之脚手架文件_src
  7. 双非毕业生,如何入职大厂
  8. docker常见面试题_测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)
  9. 矩阵计算的理论与方法_基于微带线的相位补偿方法分析
  10. Eclipse的版本、下载网址和安装
  11. 一个美观的gridview样式
  12. Java过滤微信昵称特殊字符
  13. win10安装系统教程
  14. H3C交换机基本命令
  15. 中间件小师妹 de 年度工作总结
  16. Linux第六章课后题6-4
  17. 游戏感:虚拟感觉的游戏设计师指南——第二章 游戏感与人类感知能力
  18. 吴恩达deeplearning.ai深度学习课程空白作业
  19. 【Nav2中文网】一、入门
  20. 怎么安装jdk6,怎么安装jdk-6u33-linux-i586.bin

热门文章

  1. Linux内存管理slub分配器
  2. 什么集成mysql_mysql集成部署
  3. oci mysql_Oracle常用的OCI函数
  4. java 打印三维数组_Java基础第三天_数组
  5. javascript犀牛书_犀牛书作者:最该忘记的JavaScript特性
  6. 十七、PHP框架Laravel学习笔记——模型的定义
  7. 安装 paddleocr 报错 gcc: error trying to exec ‘cc1‘: execvp: 没有那个文件或目录
  8. Visual Studio Code C++配置文件
  9. LeetCode 132. 分割回文串 II(DP)
  10. LeetCode 1428. 至少有一个 1 的最左端列(二分查找)