智慧問答系統,近兩年被炒得熱火朝天。然而,刨除花式PPT以及論文裡的各種黑科技,我們最想知道的其實是:這東西到底怎麼落地?
近日,百度開源了主要面向FAQ集合的問答系統框架AnyQ(ANswer Your Questions),該框架究竟如何?讓我們一起來看一下。
摘要
AnyQ是ANswer Your Questions 的縮寫,直指問答系統的核心業務:回答你的問題。 實際上,該專案包含面向FAQ集合的問答系統框架AnyQ以及文字語義匹配工具SimNet。
AnyQ採用了配置化、外掛化的設計,各功能均通過外掛形式加入,當前共開放了20+種外掛。開發者可以使用AnyQ系統快速構建和定製適用於特定業務場景的FAQ問答系統,並加速迭代和升級。
SimNet是百度自然語言處理部於2013年自主研發的語義匹配框架,該框架在百度各產品上廣泛應用,主要包括BOW、CNN、RNN、MM-DNN等核心網路結構形式,同時基於該框架也整合了學術界主流的語義匹配模型,如MatchPyramid、MV-LSTM、K-NRM等模型。SimNet使用PaddleFluid和Tensorflow實現,可方便實現模型擴充套件。使用SimNet構建出的模型可以便捷的加入AnyQ系統中,增強AnyQ系統的語義匹配能力
AnyQ 框架
AnyQ系統框架主要由Question Analysis、Retrieval、Matching、Re-Rank等部分組成,框架中包含的功能均通過外掛形式加入,如Analysis中的中文切詞,Retrieval中的倒排索引、語義索引,Matching中的Jaccard特徵、SimNet語義匹配特徵,當前共開放了20+種外掛。AnyQ系統的配置化、外掛化設計有助於開發者快速構建、快速定製適用於特定業務場景的FAQ問答系統,加速迭代和升級。 AnyQ的框架結構如下圖:
配置化
AnyQ系統整合了檢索和匹配的眾多外掛,通過配置的方式生效;以檢索方式和文字匹配相似度計算中的外掛為例:
- 檢索方式(Retrieval)
- 倒排索引:基於開源倒排索引Solr,加入百度開源分詞
- 語義檢索:基於SimNet語義表示,使用ANNOY進行ANN檢索
- 人工干預:通過提供精準答案,控制輸出
- 匹配計算(Matching)
- SimNet語義匹配:使用語義匹配SimNet架構訓練的模型,構建問題在語義層面的相似度
- Cosine相似度
- Jaccard相似度
- BM25
- 字面匹配相似度:在對中文問題進行切詞等處理之後,計算字面匹配特徵
- 語義匹配相似度
外掛化
除框架外,AnyQ的所有功能都是通過外掛形式加入,使用者自定義的外掛很容易加到AnyQ系統中,只需實現對應的介面即可,如自定義詞典載入、Question分析方法、檢索方式、匹配相似度、排序方式等,真正實現可定製和外掛化。
文字語義匹配框架SimNet
SimNet是百度自然語言處理部於2013年自主研發的語義匹配框架,該框架在百度各產品上廣泛應用,主要包括BOW、CNN、RNN、MM-DNN等核心網路結構形式,同時基於該框架也整合了學術界主流的語義匹配模型,如MatchPyramid、MV-LSTM、K-NRM等模型。SimNet使用PaddleFluid和Tensorflow實現,可方便實現模型擴充套件。使用SimNet構建出的模型可以便捷的加入AnyQ系統中,增強AnyQ系統的語義匹配能力。
按照文字語義匹配網路結構, 可將SimNet中實現的網路模型主要分為如下兩類:
Representation-based Models
如:BOW, CNN, RNN(LSTM, GRNN)
特點:文字匹配任務的兩端輸入,分別進行表示,之後將表示進行融合計算相似度;
Interaction-based Models
如:MatchPyramid, MV-LSTM, K-NRM, MM-DNN
特點:在得到文字word級別的序列表示之後,根據兩個序列表示計算相似度匹配矩陣,融合每個位置上的匹配資訊給出最終相似度打分;
SimNet使用PaddleFluid和Tensorflow實現,更多詳情訪問該開源專案
基於海量搜尋資料的語義模型
基於百度海量搜尋資料,官方訓練了一個SimNet-BOW語義匹配模型,在一些真實的FAQ問答場景中,該模型效果比基於字面的相似度方法AUC提升5%以上。
關注安卓綠色聯盟公眾號,獲取更多技術乾貨。