無從下手落地問答系統?實用百度開源框架了解一下

安卓綠色聯盟發表於2019-03-04

智慧問答系統,近兩年被炒得熱火朝天。然而,刨除花式PPT以及論文裡的各種黑科技,我們最想知道的其實是:這東西到底怎麼落地?

近日,百度開源了主要面向FAQ集合的問答系統框架AnyQ(ANswer Your Questions),該框架究竟如何?讓我們一起來看一下。

image

摘要

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的框架結構如下圖:

image

配置化

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%以上。

關注安卓綠色聯盟公眾號,獲取更多技術乾貨。

image

相關文章