本文由雲+社區發表web
| 導語 問答系統是信息檢索的一種高級形式,可以更加準確地理解用戶用天然語言提出的問題,並經過檢索語料庫、知識圖譜或問答知識庫返回簡潔、準確的匹配答案。相較於搜索引擎,問答系統能更好地理解用戶提問的真實意圖, 進一步能更有效地知足用戶的信息需求。問答系統是目前人工智能和天然語言處理領域中一個倍受關注並具備普遍發展前景的研究方向。算法
問答系統處理的對象主要包括用戶的問題以及答案。根據問題所屬的知識領域,問答系統可分爲面向限定域的問答系統、面向開放域的問答系統、以及面向經常使用問題集(Frequently Asked Questions, FAQ)的問答系統。依據答案來源,問答系統可分爲基於結構化數據的問答系統如KBQA、基於文本的問答系統如機器閱讀理解、以及基於問答對的問答系統如FAQ問答。此外,按照答案的反饋機制劃分,問答系統還能夠分爲基於檢索式的問答系統和基於生成式的問答系統。網絡
本文主要闡述FAQBot檢索型問答系統的相關研究和處理框架,以及深度學習在其中的應用。FAQ檢索型問答是根據用戶的新Query去FAQ知識庫找到最合適的答案並反饋給用戶。如圖所示:架構
其中,Qi是知識庫裏的標準問,Ai是標準問對應的答案。框架
具體處理流程爲:機器學習
能夠看出,FAQ問答系統的核心任務能夠抽象爲文本匹配任務。傳統文本匹配方法如信息檢索中的BM25,向量空間模型VSM等方法,主要解決字面類似度問題。然而因爲中文含義的豐富性,一般很難直接根據關鍵字匹配或者基於機器學習的淺層模型來肯定兩個句子之間的語義類似度。近幾年,利用神經網絡,尤爲是深度學習模型學習文本中深層的語義特徵,對文本作語義表示後進行語義匹配的方法開始被提出並應用於檢索式問答系統。基於深度學習的模型一方面可以節省人工提取特徵的大量人力物力。此外,相比於傳統方法,深度文本匹配模型可以從大量的樣本中自動提取出詞語之間的關係,並能結合短語匹配中的結構信息和文本匹配的層次化特性,發掘傳統模型很難發掘的隱含在大量數據中含義不明顯的特徵,更精細地描述文本匹配問題。分佈式
FAQ問答系統通常有兩種解決思路,一種是類似問題匹配,即對比用戶問題與現有FAQ知識庫中問題的類似度,返回用戶問題對應的最準確的答案,這種思路相似於text paraphrase;另外一種是問題答案對匹配,即對比用戶問題與FAQ知識庫中答案的匹配度,返回用戶問題對應的最準確的答案,這種思路爲答案選擇,即QA匹配。這兩個類型相通的地方在於均可以看做文本語義匹配,不少模型能同時在兩個任務上都獲得很好的效果,區別在於QA匹配存在問題與答案不一樣質的問題。ide
下面總結一些基於深度學習的文本匹配工做,但願可以拋磚引玉,若有遺漏或錯誤,歡迎補充或指出。函數
歸納來說,深度語義匹配模型能夠分爲兩大類,分別是representation-based method 和 interaction-based method。性能
1) Represention-based Method
框架圖以下:
這類算法首先將待匹配的兩個對象經過深度學習模型進行表示,以後計算這兩個表示之間的類似度即可輸出兩個對象的匹配度。這種方式下,更加側重對錶示層的構建,使其儘量充分地將待匹配的兩個對象都轉換成等長的語義表示向量。而後在兩個對象對應的兩個語義表示向量基礎上,進行匹配度的計算。針對匹配度函數f(x,y)的計算,一般有兩種方法,以下圖所示:一種是經過類似度度量函數進行計算,實際使用過程當中最經常使用的就是 cosine 函數,這種方式簡單高效,而且得分區間可控意義明確;另外一種方法是將兩個向量再接一個多層感知器網絡(MLP),經過數據去訓練擬合出一個匹配度得分,更加靈活擬合能力更強,但對訓練的要求也更高。
Represention-based Extended
上述的representation-based method存在的問題是直接基於句子的表示太粗糙,沒法準確進行文本匹配任務。受信息檢索領域的啓發,結合主題級別和單詞級別的匹配信息一般能夠得到更好的表現。因而進一步對句子表示進行擴展,加入細粒度匹配信息。框架圖以下:
2) Interaction-based Method
框架圖以下:
基於交互的方法是經過Interaction來對文本類似性建模。該方式更強調待匹配的兩個句子獲得更充分的交互,以及交互後的匹配。在表示層不會將句子轉換成一個總體表示向量,通常狀況下會保留和詞位置相對應的一組表示向量。首先基於表示層採用DNN或直接由word embedding獲得的句子表示,和詞位置對應的每一個向量體現了以本詞語爲核心的必定的全局信息;而後對兩個句子按詞對應交互,由此構建兩段文本之間的 matching pattern,這裏麪包括了更細緻更局部的文本交互信息;基於該匹配矩陣,能夠進一步使用DNN等來提取更高層次的匹配特徵,最後計算獲得最終匹配得分。Interaction-based 方法匹配建模更加細緻、充分,通常來講效果更好,但計算成本增長,更加適合一些效果精度要求高但對計算性能要求不高的場景。
下面總結了不一樣類型的深度學習文本匹配模型。能夠看出,深度文本匹配現有工做不少,本文將對近幾年的部分工做進行詳細介紹,其餘可參考對應文獻進行深刻閱讀。
首先介紹BCNN,它是ABCNN模型的基礎,即未添加Attention的模型。模型結構如圖所示:
輸入層:將輸入句子進行padding後轉化成詞向量便可; 卷積層:對句子表示進行卷積,使用wide conv的方式; pooling層:論文中使用了兩種pooling方式,一種是最後一個pooling層爲all-ap,還有一種是中間pooling層爲w-ap。區別就是池化時的窗口大小不一樣; 輸出層:接logistic 迴歸層作2分類。
ABCNN是在BCNN的基礎上加了兩種attention機制。模型結果以下圖:
(1)在輸入層加入attention
其原理爲將輸入拓展成雙通道。新添加的通道是attention feature map,即上圖中的藍色部分。首先計算attention matrix A,其每一個元素Aij表明句子1中第i個單詞對句子二中第j個單詞的match_score,這裏使用了Euclidean距離計算。而後再分別計算兩個句子的attention feature map。使用兩個矩陣W0,W1分別和A還有 A的轉置相乘,獲得與本來feature尺寸相同的feature map。W0和W1都是模型參數,可使用相同的W,即共享兩個矩陣。這樣咱們就將原始的輸入拓展成了兩個通道。
(2)在pooling層加入attention
Attention matrix A的計算方法與上述相同,獲得A後須要爲兩個句子分別計算attention權重向量,如上圖中的兩個虛線部分col-wise sum和row-wise sum。這兩個向量中的每一個元素分別表明了相應單詞在作Average Pooling時的權重。至關於pooling再也不是簡單的Average Pooling,而是根據計算出的Attention權重向量獲得的pooling。
給定一個(q,a)pair,q是問題,a是候選答案。首先獲得它們的詞向量,再使用biLSTM進行encoder,生成問題和答案的分佈式表示,而後利用餘弦類似度來衡量它們的距離。訓練目標是hinge loss。
在biLSTM表示輸出的基礎上進一步使用CNN,CNN能夠獲取biLSTM輸出的向量之間的局部信息。從而給出問題和答案的更多複合表示。
當biLSTM模型在問題和答案上長距離傳播依賴關係時,隱藏向量的固定寬度成爲瓶頸。經過動態調整問題答案的更多信息部分,可使用注意力機制來緩解這種弱點。在max/mean pooling前,每一個biLSTM輸出向量將乘以softmax權重,該權重由biLSTM的問題嵌入獲得。
QA_LSTM with attention中attention的設計是經過問題對答案的影響進行特徵加權,可是它忽略了答案對問題的影響。Attentive pooling networks同時將attention應用到問題和答案,提升算法的準確率。經過同時學習兩種輸入的表示以及它們之間的類似性測量,其創新點在於將Q和A這兩個輸入經過參數矩陣U投射到一個共同的表示空間,用Q和A的representation構造了一個矩陣G,分別對G的row和column作max pooling, 這樣就能分別能獲得Q和A的attention vector。AP_BILSTM模型框架圖以下:
AP_BILSTM模型的設計首先將問題和答案通過BILSTM抽取特徵,而後經過二者的特徵計算soft alignment,獲得的G矩陣表示了問題和答案相互做用的結果。對該矩陣的列取最大,即爲答案對問題的重要性得分,同理對該矩陣行取最大即爲問題對答案的重要性得分。這兩個向量再做爲attention向量分別和問題和答案表示相乘後獲得問題和答案新的表示,最後再作匹配。
2.2.4 AICNN[16]
以前關於答案選擇的研究一般忽略了數據中廣泛存在的冗餘和噪聲問題。 在本文中,設計一種新穎的注意力交互式神經網絡(AI-NN),以專一於那些有助於回答選擇的文本片斷。 問題答案的表示首先經過卷積神經網絡(CNN)或其餘神經網絡架構來學習。而後AI-NN學習兩個文本的每一個配對片斷的相互做用。 以後使用逐行和逐列池化來收集交互信息。以後採用注意機制來衡量每一個細分的重要性,並結合相互做用來得到問答的固定長度表示。 模型框架圖以下:
2.2.5 MVFNN[17]
上述基於神經網絡的方法經過計算注意力來考慮信息的幾個不一樣方面。 這些不一樣類型的注意力老是簡單地總結而且能夠被視爲「單一視圖」,不能從多個方面來審視問題和候選答案,致使嚴重的信息丟失。 要克服這個問題,此模型提出了一種多視圖融合神經網絡,其中每一個關注組件生成QA對的不一樣「視圖」,而且融合QA自己的特徵表示以造成更總體的表示。模型框架圖以下:
對於一個問題,可能會有一堆視圖來模擬其相應的答案。 在此模型中,根據直覺構建了四個視圖。 這四個視圖被命名爲查詢類型視圖,查詢主動詞視圖,查詢語義視圖和co-attention視圖。最後使用fusion RNN模型來對這些視圖進行融合。經過不一樣視圖的融合,能對兩個對象進行更準確的建模。
2.2.6 BiMPM[18]
針對基於交互這一類方法,通常是先對兩個句子的單元相互匹配,以後再彙集爲一個向量後作匹配。這種方式能夠捕捉到兩個句子之間的交互特徵,可是以前的方式只是基於詞級別的匹配可是忽略了其餘層級的信息。此外,匹配只是基於一個方向忽略了相反的方向。一種雙向的多角度匹配模型bilateral multi-perspective matching(BiMPM)解決了這方面的不足。模型框架以下圖:
模型自下而上一共包含五層,分別爲單詞表示層、上下文表示層、匹配層、聚合層和預測層,其中匹配層爲模型的核心,共提出了四種匹配策略,這裏的匹配能夠當作是attention機制。
單詞表示層:使用GloVe模型訓練向量,對字符embedding進行隨機初始化,單詞中的字符組成單詞的向量表示做爲LSTM網絡的輸入。
上下文表示層:使用BiLSTM對p和q進行表示。
匹配層:模型的核心層,包含四種匹配策略,分別是:Full-Matching、Maxpooling-Matching、Attentive-Matching和 Max-Attentive-Matching。四種匹配策略以下圖:
聚合層:利用BiLSTM對匹配層的輸出向量進行處理,取得p、q前向和後向最後一個time step的輸出進行鏈接後輸入到預測層。
預測層:softmax層,softmax函數分類。
上述是對近幾年部分深度文本匹配模型的總結,接下來則介紹基於深度模型的FAQBot。
3、基於深度學習的FAQBot實現
3.1 模型化流程
對於有大量問答記錄的場景例如智能客服,這些記錄裏面有不少高頻的知識點(知識點包括問題和答案)。這些高頻的知識點對應的問法一般並不惟一。即知識庫的結構爲一個問題集合對應同一個答案。針對FAQ數據有如下三種數據類型:
其中,標準問q、對應答案A以及該標準問q對應的全部類似問q1,q2,...,一塊兒組成一個知識點。一個知識點的樣例見下圖:
數據構造包含了兩個方面:
(1)訓練集測試集構造
測試集:將類似問中的第一條類似問q1做爲query,從FAQ知識庫的全部知識點中經過Lucene召回30個知識點做爲候選集
訓練集:包含兩部分,一部分是正例的構造,另外一部分是負例的構造,這兩部分數據的構造方式將直接影響到最終的效果。在正例的構造中,由於每一個知識點的第一個類似問是做爲測試集中出現的,因此在構造訓練集的時候排除掉全部知識點中的第一條類似問q1。這樣的話,有多於2個類似問的知識點還有多於的其餘類似問能夠用來構造訓練集。將這些識點中的標準問和從類似問的第二條開始(即[q2,q3,...,qn])能夠按照不一樣方式構造出正例和負例。
訓練集正例的構造:去除全部知識點中的第一條類似問q1,其餘類似問及標準問兩兩組合成正例pair對;對於類似問多的知識點進行剪切。
訓練集負例的構造的方式包括:
(2)數據加強策略
因爲深度學習須要較多的數據,爲了加強數據,咱們採用瞭如下策略:
基本框架通常都是將待匹配的兩個句子分別使用兩個encoder來獲取對應context信息,而後將兩者的context信息進行匹配,獲得匹配後的特徵信息。也能夠在匹配以後的特徵後面加上一些其餘的傳統文本特徵,將全部這些特徵進行concat。最後接上softmax層,作最終的分類。模型的框架以下圖所示:
Embedding層:使用word2vec和fasttext訓練詞向量和字符向量。
Encoder層:卷積具備局部特徵提取的功能, 因此可用 CNN 來提取句子中相似 n-gram 的關鍵信息,考慮文本的上下文信息。因而咱們採用textCNN[19]來對句子進行編碼表示,encoder過程見下圖:
Matching層:在獲得兩個句子的表示後,要針對兩個句子的表示進行matching操做。能夠根據須要構造出不少種類型的matching方式以下圖[20],咱們採用相對比較簡單的element-wise相加和相乘的方式來進行matching。
join層:在matching層以後獲得的兩個句子的共同表示以後,進一步引入額外的傳統特徵進行join操做,相似於下圖[21]。
引入interaction:上述步驟對兩個句子encoder時沒有考慮兩個句子之間的關聯。因而進一步引入更細緻更局部的句子交互信息,從而能捕捉到兩個句子之間的交互特徵,根據交互獲得的矩陣獲取兩個句子新的表示。如圖:
引入attention機制:採用注意機制使用權重向量來衡量句子不一樣部分重要性的不一樣。attention的計算主要思想沿用了AICNN和ABCNN中的幾種attention,分別是feature的attention,interaction後新的表示和句子原表示之間的attention。
[1] Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]// ACM International Conference on Conference on Information & Knowledge Management. ACM, 2013:2333-2338.
[2] Shen Y, He X, Gao J, et al. A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval[C]// Acm International Conference on Conference on Information & Knowledge Management. ACM, 2014:101-110.
[3] Hu B, Lu Z, Li H, et al. Convolutional Neural Network Architectures for Matching Natural Language Sentences[J]. Advances in Neural Information Processing Systems, 2015, 3:2042-2050.
[4] Qiu X, Huang X. Convolutional neural tensor network architecture for community-based question answering[C]// International Conference on Artificial Intelligence. AAAI Press, 2015:1305-1311.
[5] Palangi H, Deng L, Shen Y, et al. Deep Sentence Embedding Using Long Short-Term Memory Networks: Analysis and Application to Information Retrieval[J]. IEEE/ACM Transactions on Audio Speech & Language Processing, 2016, 24(4):694-707.
[6] Yin W, Schütze H. MultiGranCNN: An Architecture for General Matching of Text Chunks on Multiple Levels of Granularity[C]// Meeting of the Association for Computational Linguistics and the, International Joint Conference on Natural Language Processing. 2015:63-73.
[7] Wan S, Lan Y, Guo J, et al. A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations[J]. 2015:2835-2841.
[8] Hu B, Lu Z, Li H, et al. Convolutional Neural Network Architectures for Matching Natural Language Sentences[J]. Advances in Neural Information Processing Systems, 2015, 3:2042-2050.
[9] Pang L, Lan Y, Guo J, et al. Text Matching as Image Recognition[J]. 2016.
[10] Wan S, Lan Y, Xu J, et al. Match-SRNN: Modeling the Recursive Matching Structure with Spatial RNN[J]. Computers & Graphics, 2016, 28(5):731-745.
[11] Lu Z, Li H. A deep architecture for matching short texts[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2013:1367-1375.
[12] Yin W, Schütze H, Xiang B, et al. ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs[J]. Computer Science, 2015.
[13] Tan M, Santos C D, Xiang B, et al. LSTM-based Deep Learning Models for Non-factoid Answer Selection[J]. Computer Science, 2015.
[14] Tan M, Santos C D, Xiang B, et al. Improved Representation Learning for Question Answer Matching[C]// Meeting of the Association for Computational Linguistics. 2016:464-473.
[15] Santos C D, Tan M, Xiang B, et al. Attentive Pooling Networks[J]. 2016.
[16] X Zhang , S Li , L Sha , H Wang. Attentive Interactive Neural Networks for Answer Selection in Community Question Answering[C]// International Conference on Artificial Intelligence.
[17] L Sha , X Zhang , F Qian , B Chang , Z Sui. A Multi-View Fusion Neural Network for Answer Selection[C]// International Conference on Artificial Intelligence.
[18] Wang Z, Hamza W, Florian R. Bilateral Multi-Perspective Matching for Natural Language Sentences[C]// Twenty-Sixth International Joint Conference on Artificial Intelligence. 2017:4144-4150.
[19] Kim Y. Convolutional Neural Networks for Sentence Classification[J]. Eprint Arxiv, 2014.
[20] Wang S, Jiang J. A Compare-Aggregate Model for Matching Text Sequences[J]. 2016.
[21] Severyn A, Moschitti A. Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks[C]// The International ACM SIGIR Conference. ACM, 2015:373-382.
[22] Xiaodong Zhang, Xu Sun, Houfeng Wang. Duplicate Question Identification by Integrating FrameNet with Neural Networks[C]//In the Thirty-Second AAAI Conference on Artificial Intelligence (AAAI-18)
[23] Gong Y, Luo H, Zhang J. Natural Language Inference over Interaction Space[J]. 2018.
此文已由做者受權騰訊雲+社區在各渠道發佈
獲取更多新鮮技術乾貨,能夠關注咱們騰訊雲技術社區-雲加社區官方號及知乎機構號