這是ACL2018的一篇Best papers.
解決的是論壇提問中對posts的信息補全的問題
用到的數據是StackExchange的數據
場景
論壇求助中的一些posts並不完善,有些問題直接開問,並沒有包含如 自己系統版本號,環境 等信息的說明,這種問題很難得到確切的回答。
作者通過NN的方法想辦法去補全這些信息在問題中,應用場景可能就是,當作者要發佈的時候,系統會自動提示作者需要補全哪些信息。
大致思路
作者受到 EVPI 的啓發 (EVPI是衡量, 得到了信息X,會對我有多大的幫助的指標)
設計了這樣一個函數:
來衡量:
是 post, 是候選集 中的一個問題, 是針對 的一個回答。
是對於 , , 得到答案 的概率。
是得到 , 對 有效的程度
生成候選集
作者先通過Lucene(一個文本檢索系統) 找到與目標post 最相近的10個 posts, 看這些posts 下面有哪些 clarifying questions (就是發佈一個post之後,被問到的需要補全信息的問題,如what is the version of your os?) 組成一個問題集
那對於一個問題, 其中有哪些是posts針對問題重新編輯了,這些編輯進去的信息也被組成一個集合 , 稱爲答案集。
所以問題就是,一個post 對應一個問題集 ;
同時對於每個 , 也對應一個答案集 。
以下一些數學標記,結合全文來看:
就是一個前饋神經網絡,
是指對text的所有詞向量平均得到的向量表示;
是對text的每個詞向量輸入lstm之後的隱藏狀態層做平均得到的向量表示
Answer modeling
因爲有候選集,所以就要衡量一下 對於 , , 得到答案 的概率。
這裏用 來做一個 answer 的 representation 來和真實的answer做距離,這裏其實我不太理解爲什麼這個函數能夠表徵一些答案的信息
這個的概率爲:
這裏的值域也感覺有待商榷,好像不是 [0,1]
優化loss函數就是:
後半部分是把所有問題和當前問題 的相似度做權重考慮所有問題。
可用性計算
這裏直接用這個函數來衡量:
表示概率的意思
其實這是一個有監督的二分類問題,就是: 有幫助( ),沒有幫助( ) 兩個類別。
所以這部分的損失函數就用交叉熵來衡量:
總損失函數
就是綜合考慮兩部分損失
理解
作者把問題分解爲兩部分,其實模型本身很簡單,也沒有用到複雜的NN,也只是LSTM,由於剛剛接觸,對QA這類問題也沒有很深的理解,只是記錄一下。