【论文笔记】Learning to ask good questions: Ranking clarification questions using Neural Expected Value

这是ACL2018的一篇Best papers.
解决的是论坛提问中对posts的信息补全的问题
用到的数据是StackExchange的数据

场景

论坛求助中的一些posts并不完善,有些问题直接开问,并没有包含如 自己系统版本号,环境 等信息的说明,这种问题很难得到确切的回答。

作者通过NN的方法想办法去补全这些信息在问题中,应用场景可能就是,当作者要发布的时候,系统会自动提示作者需要补全哪些信息。

大致思路

作者受到 EVPI 的启发 (EVPI是衡量, 得到了信息X,会对我有多大的帮助的指标)
设计了这样一个函数:

EVPI(qi|p)=ajAP[aj|p,qi]U(p+aj) E V P I ( q i | p ) = ∑ a j ∈ A P [ a j | p , q i ] U ( p + a j )

来衡量:
p p 是 post, qi 是候选集 Q Q 中的一个问题, aj是针对 qi q i 的一个回答。

P[aj|p,qi] P [ a j | p , q i ] 是对于 p p , qi, 得到答案 aj a j 的概率。

U(p+aj) U ( p + a j ) 是得到 aj a j , 对 p p 有效的程度

生成候选集

作者先通过Lucene(一个文本检索系统) 找到与目标post p 最相近的10个 posts, 看这些posts 下面有哪些 clarifying questions (就是发布一个post之后,被问到的需要补全信息的问题,如what is the version of your os?) 组成一个问题集 Q Q
那对于一个问题, 其中有哪些是posts针对问题重新编辑了,这些编辑进去的信息也被组成一个集合 A, 称为答案集。

所以问题就是,一个post p p 对应一个问题集Q
同时对于每个 qi q i , 也对应一个答案集 A A

以下一些数学标记,结合全文来看:
F() 就是一个前馈神经网络,
^ ^ 是指对text的所有词向量平均得到的向量表示;
¯ ¯ 是对text的每个词向量输入lstm之后的隐藏状态层做平均得到的向量表示

Answer modeling

因为有候选集,所以就要衡量一下 对于 p p , qi, 得到答案 aj a j 的概率。

dist(Fans(p¯,qi¯),aj^)=1cos_sim(Fans(p¯,qi¯),aj^) d i s t ( F a n s ( p ¯ , q i ¯ ) , a j ^ ) = 1 − c o s _ s i m ( F a n s ( p ¯ , q i ¯ ) , a j ^ )

这里用 Fans(p¯,qi¯) F a n s ( p ¯ , q i ¯ ) 来做一个 answer 的 representation 来和真实的answer做距离,这里其实我不太理解为什么这个函数能够表征一些答案的信息

这个的概率为:
P[aj|p,qi]=exp(dist(Fans(p¯,qi¯),aj^)) P [ a j | p , q i ] = e x p ( − d i s t ( F a n s ( p ¯ , q i ¯ ) , a j ^ ) )

这里的值域也感觉有待商榷,好像不是 [0,1]

优化loss函数就是:

lossans(pi,qi,ai,Q)=dist(Fans(pi¯,qi¯),aj^)+λjQ(dist(Fans(pi¯,qi¯),aj^)cos_sim(qi^,qj^)) l o s s a n s ( p i , q i , a i , Q ) = d i s t ( F a n s ( p i ¯ , q i ¯ ) , a j ^ ) + λ ∑ j ∈ Q ( d i s t ( F a n s ( p i ¯ , q i ¯ ) , a j ^ ) ∗ c o s _ s i m ( q i ^ , q j ^ ) )

后半部分是把所有问题和当前问题 qi q i 的相似度做权重考虑所有问题。

可用性计算

这里直接用这个函数来衡量:

U(pi+aj)=σ(Futil(pi¯,pj¯,aj¯)) U ( p i + a j ) = σ ( F u t i l ( p i ¯ , p j ¯ , a j ¯ ) )

σ σ 表示概率的意思

其实这是一个有监督的二分类问题,就是: 有帮助( y=1 y = 1 ),没有帮助( y=0 y = 0 ) 两个类别。

所以这部分的损失函数就用交叉熵来衡量:
lossutil(yi,pi¯,qj¯,aj¯)=yilog(σ(Futil(pi¯,pj¯,aj¯))) l o s s u t i l ( y i , p i ¯ , q j ¯ , a j ¯ ) = y i l o g ( σ ( F u t i l ( p i ¯ , p j ¯ , a j ¯ ) ) )

总损失函数

就是综合考虑两部分损失

ijlossans(pi¯,qi¯,ai¯,Qi)+lossutil(yi,pj¯,qj¯,aj¯) ∑ i ∑ j l o s s a n s ( p i ¯ , q i ¯ , a i ¯ , Q i ) + l o s s u t i l ( y i , p j ¯ , q j ¯ , a j ¯ )

理解

作者把问题分解为两部分,其实模型本身很简单,也没有用到复杂的NN,也只是LSTM,由于刚刚接触,对QA这类问题也没有很深的理解,只是记录一下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值