《Building Task-Oriented Dialogue Systems for Online Shopping》閱讀筆記
論文鏈接
一、簡介:
這是一篇十分實用的文章,本文構造了一個中文的電商平台的任務型對話系統,應該是部署在了淘寶或者京東平台上。作者闡述了在電商平台上海量產品數據帶來的困難以及提出的創新方案,在一段時間的運營後又分析了實際用戶使用中的對話日誌得到了一些有趣的結論。
二、系統總框架:
傳統的基於結構化本體的對話系統在新的領域需要專家來定義有哪些槽和可能的槽值,而在電商這種產品種類非常豐富產品數極大的平台中很難實現,作者進行了一些改進設計,將系統分為四大模塊 QU、ST、DM、PKB:
三、模塊詳解
(一)、問題理解( Query Understanding )
該模塊輸入 輸出 其中
- 表示句子的意圖 (如下圖)
- 表示句子中識別出來的產品的類別
- 表示產品屬性,通常用一個集合表示<屬性名,屬性值>
Eg. recommend me a Huawei phone with 5.2 inch screen M.I = Recommendation , M.C = Cellphone , M.A.Brand = Huawei and M.A.DisplaySize = 5.2 inches
- 意圖檢測(Query Intent Detection) --->
基於關鍵詞
- 從社區網站(百度知道)上搜集問題組成問題集,搜集的問題至少要包含1個產品名一個品牌名或在知識庫中的產品屬性名
- 分詞
- 使用LDA(Latent Dirichlet Allocation)做主題聚類
- 由眾包根據聚類的主題找出與購買相關的主題組成意圖集合
- 對於每一個意圖,由眾包選出意圖詞
- 返回標好意圖詞的意圖集合
有一些意圖比較特殊,Session-aware 意圖(這些句子很少出現在單輪問答中,需要聯繫上下文才能明確用戶意 圖):
- Add Filter Condition (增加過濾條件): 「太貴」、「小點的
- See-More (基於當前的過濾條件更多商品):「其它的」、「換一個」
- Negation (否定當前推薦商品):「不好」、「我不喜歡」
- 產品種類檢測(Product Category Detection) --->
這個檢測是基於CNN的方法,有一些微調:
- 由於電商數據量巨大,很多產品名都沒有embedding . 因此詞embedding的方式不合適,作者在這裡換成了字embedding,針對每一個詞進行embedding,然後通過word-n-gram的方式將幾個字的向量接在一起成一個長的向量,作者在這裡設置的長度為3。
- 使用CNN的前向傳播部分分別計算問題Q和產品種類C的語義向量,然後算兩向量的餘弦相似度,最後通過softmax找最大概率,算最大似然然後使用隨機梯度下降。
- 產品屬性檢測(Product Attribute Extraction) --->
產品屬性檢測主要是通過一個動態規劃演算法進行檢測。給定一個句子Q,通過如下公式得到該句子中含有的產品名和屬性:
如何計算呢?下面列出兩種情況:
- 對於屬性值為產品名的
找到用戶在電商平台上的輸入 以及用戶點擊的產品名p的鏈接 ,以下公式的目的就是找到用戶問題q替代本體庫中的詞p的概率。
2. 對於其它屬性值和屬性名
通過網路錨文本、知識庫別名等資源利用開放的信息檢索方法Hearst patterns 得到.
演算法思想大致根據得到的同義詞概率三元組 ,將句子分成n-gram後按動態規劃的方法比較n-gram詞與Para詞m的相似性,若相似則把m保留到T中,到句末的時候將T加入 中,最後通過計算找出 中概率最大的T,就可提出其中包含的屬性名及屬性值。
(二)、狀態轉換 ( State Tracking )
(三)、對話管理(Dialogue Management )
四、分析(End-to-End Analysis)
意圖檢測中第二項「Add Filter Condition」 的準確率只有百分之50.主要原因如下:
- 海量數據下的產品屬性檢測還是非常困難
2. 多輪對話下增加了檢測難度
五、評估
Evaluation on Product Category Detection
Evaluation on Utterance Type Classification
推薦閱讀:
TAG:對話系統 |