这是ACL2018的一篇Best papers.
解决的是论坛提问中对posts的信息补全的问题
用到的数据是StackExchange的数据
场景
论坛求助中的一些posts并不完善,有些问题直接开问,并没有包含如 自己系统版本号,环境 等信息的说明,这种问题很难得到确切的回答。
作者通过NN的方法想办法去补全这些信息在问题中,应用场景可能就是,当作者要发布的时候,系统会自动提示作者需要补全哪些信息。
大致思路
作者受到 EVPI 的启发 (EVPI是衡量, 得到了信息X,会对我有多大的帮助的指标)
设计了这样一个函数:
来衡量:
p p 是 post, 是候选集 Q Q 中的一个问题, 是针对 qi q i 的一个回答。
P[aj|p,qi] P [ a j | p , q i ] 是对于 p p , , 得到答案 aj a j 的概率。
U(p+aj) U ( p + a j ) 是得到 aj a j , 对 p p 有效的程度
生成候选集
作者先通过Lucene(一个文本检索系统) 找到与目标post 最相近的10个 posts, 看这些posts 下面有哪些 clarifying questions (就是发布一个post之后,被问到的需要补全信息的问题,如what is the version of your os?) 组成一个问题集
Q
Q
那对于一个问题, 其中有哪些是posts针对问题重新编辑了,这些编辑进去的信息也被组成一个集合 , 称为答案集。
所以问题就是,一个post
p
p
对应一个问题集;
同时对于每个
qi
q
i
, 也对应一个答案集
A
A
。
以下一些数学标记,结合全文来看:
就是一个前馈神经网络,
^ ^ 是指对text的所有词向量平均得到的向量表示;
¯ ¯ 是对text的每个词向量输入lstm之后的隐藏状态层做平均得到的向量表示Answer modeling
因为有候选集,所以就要衡量一下 对于 p p , , 得到答案 aj a j 的概率。
dist(Fans(p¯,qi¯),aj^)=1−cos_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^)+λ∑j∈Q(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 ¯ ) ) )总损失函数
就是综合考虑两部分损失
∑i∑jlossans(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这类问题也没有很深的理解,只是记录一下。