1. 程式人生 > >【原創】聊天機器人與自動問答技術

【原創】聊天機器人與自動問答技術

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               



聊天機器人與自動問答技術


作者:mjs (360電商技術)

引言

最近半年,微軟的聊天機器人小冰比較火,有些人對這方面的技術產生了興趣,恰好之前做過自動問答方面的一些簡單工作,這次寫一篇應景之作,供IT

技術男在坐馬桶時打發一會時間。

聊天機器人屬於自動問答(Question Answering)的一個方向,對它的研究很大一部分源自於圖靈測試。1995Dr. Richard開發設計了聊天機器人Alice,並於2000年和2001獲得了AI領域的最高榮譽洛伯納獎。國內也有過一些型別產品,比如2004年曾登入MSN的小i機器人。

但無論是在學術界還是產業界,聊天機器人的方向都不受重視,究其原因,從學術的角度講,核心技術是自動問答,那大家就直接研究自動問答好了;從產業的角度講,聊天機器人的實用價值有限,除了嚐鮮逗樂,誰會去跟一個機器沒完沒了的聊天呢。如果聊天機器人能回答有實用價值的問題,那就又回到了自動問答上:你只要回答使用者的實際問題就可以了,完全可以不理會諸如“我帥嗎”、“去你大爺”這樣的問題。

那為什麼已經消停近10年的聊天機器人又火了呢,我猜可能是手機使用者多,嚐鮮逗樂的人基數大,也可能和某個電商公司上市有關,萬事萬物都有聯絡,誰知道呢。

說完了歷史,我們開始面對枯燥的技術問題。自動問答是指使用者以自然語言提問的形式提出資訊查詢需求,系統依據對問題的分析,從各種資料資源中自動找出準確的答案。從系統功能上講,自動問答分為開放域自動問答和限定域自動問答。開放域是指不限定問題領域,使用者隨意提問,系統從海量資料中尋找答案;限定域是指系統事先宣告,只能回答某一個領域的問題,其他領域問題無法回答。

開放域和限定域,兩者的難度差別,沒做過的人也能想象出來。學術界對開放域自動問答研究的比較多,因為他們的輸出成果是發論文,所以專選困難的、別人沒做出來的事情做。產業界需要解決實際問題,並且要計算回報是否大於付出的成本,所以他們通常面向自己的領域,做限定域自動問答。目前市場上已經有很多限定域對話系統、基於

FAQ的問答系統等實際應用。

這裡主要從學術角度講一下開放域自動問答的技術實現。


技術方案

問答系統一般的體系結構

總體來看,一個典型的問答系統一般包含有:問題分析,文件和句段(passage)檢索,答案抽取和生成。在該體系結構下,系統接受使用者的問題並給出反應的一般過程如下圖:



開放域問答系統一般的體系結構

通過對使用者問題的分析,明確其預期的答案型別以及答案與問題中其它詞之間的約束關係,為答案抽取提供約束條件;相關文件檢索從海量文件集中檢索到包含答案的文件;通過文件句段檢索,從相關文件中提取出包含答案的文件塊,以進一步減少答案抽取所需處理的內容;而利用問題分析階段產生的各種約束條件,答案抽取和生成模組從文件句段中提取出答案。


問題分析


問題的分類

對問題的分類有不同的維度,可以單純根據問題型別分。我之前做過一個工作,對141670個真實問題進行分析,根據問句的形式和提問的內容將問句分為10大類,型別和比列如表1所示。

問句型別和比例

型別

實體(Entity)

方式(How)

判斷(Judge)

原因(Why)

數字(Number)

比例

32.10%

26.0%

13.72%

7.12%

6.45%

型別

人物(Human)

地點(Location)

時間(Time)

定義(Definition)

其他(Other)

比例

5.63%

2.40%

2.22%

1.32%

2.87%


從答案型別的角度分,可以把問題分為事實型問題、列舉型問題、定義型問題和互動型問題,限於篇幅,這裡不對每種問題型別舉例。

問題分類可看作是特殊的文字分類。相對於文字,問句一般比較簡短,可採用的特徵較少,但更容易進行深層的語法和語義分析。現有問題分類的方法主要有兩基於規則的方法和基於統計機器學習的方法,這裡不做展開介紹。


預期答案與問句詞之間的關係獲取

不同的答案提取演算法,需要不同的答案上下文約束條件。在預期答案與問句關鍵詞的關係方面,現有的表示方法有:

1)簡單共現關係。如對預期答案的約束條件就是答案與問句關鍵詞之間的共現關係,以及預期答案所屬的命名實體型別。

2) 句法依存關係。把問句表示成預期答案與問句關鍵詞及這些詞彙之間的句法依存關係。

3)淺層語義關係。對問句進行淺層語義分析,將問題表示成核心詞與語義角色的集合。


相關文件和文件句段檢索


事實型和列舉型問題的相關文件檢索

為了減少答案抽取所需處理的資料量,需要從海量的文件集中檢索出可能包含答案的相關文件。對於問答的檢索,需要解決的問題有:檢索模型的選擇,需要檢出的文件數量、查詢輸入的構造與反饋技術的應用。

檢索模型主要有向量空間模型、布林模型和統計語言模型。MoldovanHarabagiu的研究表明,布林模型更適合於問答系統[1,2],主要是布林模型更容易構造反饋結構。若檢索結果太多,可以增加查詢關鍵詞以加強查詢條件;若檢索結果太少而找不到答案,則可以減少查詢關鍵詞。

檢出的文件數量上,應該返回儘量多的文件,以確保包含答案的文件在檢索結果中。但另一方面,返回太多的檢索結果,會導致後續的答案抽取效能下降。原因是返回的結果越多,其中包含的不相關文件也就越多,這反而影響了答案的抽取。

根據問句構造檢索的查詢輸入有很多方法。最簡單的是將問句中非停用詞作為查詢關鍵詞,缺點是,有些不包含關鍵詞的文件卻包含答案。因此,需要進行關鍵詞擴充套件等處理。擴充套件的方法主要有:

1) 詞幹提取(stemming)。這個主要適用於英語;

2)偽相關反饋。這個適合資料少的情況,對問答容易產生噪音干擾;

3) 同義詞和語義相關詞擴充套件方法。這是最有效,也是使用最多的方法。主要包括基於特定知識庫的擴充套件、基於檢索結果的擴充套件和基於統計機器學習方法的擴充套件。


事實型和列舉型問題的相關文件句段檢索

在檢索到的相關文件中,進一步把可能包含答案的文件句段提取出來,以減少答案抽取所需處理的內容。這也是目前很多問答系統採用的方法。

1)句段的切分

進行文件句段檢索時,首要的問題是如何將一個文件切成多個句段。有些將相關文件句段定義為一個句子,有些定義為n個句子,還有些定義為一個連續的詞序列,序列邊界可以在一個句子的中間,有些把一個子話題作為一個句段。

2)句段檢索方法

最簡單的是計算句段和問題之間匹配的詞個數,將該數目作為句段的排序權值,還有些是計算問題和句段之間的餘弦相似度。和相關文件的檢索相類似,很多包含答案的句段,並不一定包含問句關鍵詞,這需要用WordNet等同義詞資源來對詞進行擴充套件。

3)句段檢索的文件範圍

參與TREC評測的問答系統中,大部分都是先從海量資料集中檢索出可能包含答案的文件,然後在這少量的文件中進行句段檢索。但有一些系統,是直接在整個原始資料集中進行相關句段檢索。


定義型問題的相關文件檢索

定義型問題的特點是問題中包含很少的限定資訊,因而使查詢輸入構造更困難。如問題What is the vagus nerve?,其中的Whatisthe三個詞都屬於檢索的停用詞,可用的查詢關鍵詞只有待定義的目標詞vagus nerve。但如果只用定義目標作為查詢關鍵詞,則檢索時會返回太多的文件,使真正包含定義的文件淹沒在檢索結果中,最終影響了定義資訊的抽取。

因此,定義型問題的文件檢索需要有查詢擴充套件。顯然,這種擴充套件必須要利用現有的各種知識資源,如舍費爾德大學的Gaizauskas[3]利用了WordNet、大英百科全書、Web來獲取擴充套件詞。擴充套件時,從WordNet中查詢對定義目標詞的註釋, 從百科全書中查詢包含定義目標詞的句子,從Web檢索包含滿足模式的且包含定義目標詞的句子,然後從這些註釋或者句子中選擇關鍵詞作為對定義目標詞的擴充套件。


答案的抽取和生成

在檢索出可能包含答案的文件句段之後,需要將滿足約束條件的候選答案抽取出來,並對候選答案進行排序或者去重等處理,生成最終的答案返回給使用者。


事實型與列舉型問題的答案抽取排序

對於簡單事實型問題,一般都是採用某個答案抽取方法,從排好序的相關文件句段中抽取出多個候選答案,然後對這些候選答案進行排序,排名第一的被作為最終答案返回。

對於列舉型問題,許多研究都是使用和事實型問題相同的答案抽取和排序方法,只是在返回結果時,將排序分值超過一定閾值的多個候選答案作為最終結果。也有研究利用各種線上知識庫和網頁中的表格來抽取答案。

對已有答案抽取方法進行總結,可以歸類為:

1)基於詞袋模型的簡單匹配

在文件句段中抽取和預期答案型別相一致的命名實體作為候選答案。對答案排序時,可以綜合其所在文件句段的排序和在所有文件句段中出現的次數作為排序分值。

2)基於表層模式匹配

基本思想是,問題的答案和問句關鍵詞之間總有某些特定的表層關係。因此,演算法不使用太多深層的語言處理,而是從文件句段中抽取出滿足規則模式的候選答案。候選答案的排序要綜合考慮所在文件句段的排序分值、規則權值、出現總次數。模式構造方式有手工構造方式和自動學習方式。

3)基於語法結構比較

基本思想是,如果候選句子中的候選答案與問句詞之間的語法結構,和在問題中疑問短語與問句詞之間的語法結構能良好匹配,則該候選答案很可能是正確答案。比較方法有:基於語法結構模式的匹配;語法結構的嚴格匹配; 語法結構的統計匹配

4)基於海量資料的冗餘特性

基本思想就是在海量的文件集中,總會存在和問題描述方式相近的答案句子;而且一般來說,正確答案與問句關鍵詞在檢索結果中共現的次數要相對更多。因此,可以不用複雜的語言處理技術,而使用淺層語言技術輔助簡單統計方法就可確定答案,同時取得不錯的效能。

Web是海量資料的最好例項。從近幾年參與TREC問答評測的系統看,幾乎都會利用Web,同時會明顯提高系統性能。

5)基於答案的邏輯推理驗證

使用邏輯推理進行答案選擇和驗證的研究主要在LCC公司的MoldovanHarabagiu所帶領的研究組,他們的系統也在歷次TREC問答評測中取得了最好的效能。

基本思想是:從相關文件句段中抽取出多個滿足問題預期答案型別的命名實體作為候選答案,根據這些候選答案在文件句段和Web上出現的次數等因素對它們進行初始排序;然後,利用邏輯推理的方法驗證這些候選答案的正確性,驗證正確則為最終答案[4]

6)基於多特徵的統計機器學習方法

利用特定型別的單一特徵總會存在不足。一種方法是將多種特徵結合起來,發揮它們在不同條件下各自的優勢。

這種型別系統的經典之一是IBM的統計問答系統[5],用最大熵模型的概率大小來選擇答案。特徵包括:1)句子特徵:問題和候選句間匹配的詞和依存弧的分值等;2)實體特徵:候選句中是否包含期望的命名實體型別;3)語言特徵:候選答案是否是特定動詞的主語或賓語等;4)詞彙模式特徵:候選句是否匹配某種詞彙模式;5)候選答案的Web冗餘特徵。


定義型問題的答案抽取和生成

從現有的系統看,從相關文件中抽取、生成定義包含這幾步:1) 候選定義句子抽取:從文件中抽取出對目標進行描述、定義的句子;2)候選句子排序:對句子的重要程度進行區分;3)冗餘資訊去除:去除和已有句子在描述上重複的句子,去除句子中對目標定義無意義的部分;4)定義生成:將沒有冗餘資訊的候選句子組織、綜合成流利的定義描述。

1)候選定義句子抽取與排序

抽取候選定義句子時,許多系統都利用規則來識別句子,而規則的設計都是利用各種特定的表徵定義型句子的特徵(稱為定義型語言構造,definitional linguistic contructs)。這些特徵包括:詞法-語法表層模式(<TARGET>, the $NNP);語法解析樹的模式;同位語(Appositives);系動詞(Copulas);定語從句(Relative Clauses);謂詞和動詞短語(Predicates and Verb Phrases)

對候選定義句進行排序時,一般是首先給定義目標構造一個質心向量(centroid vector),然後依據各個候選句和該質心向量的相似度大小對候選句排序。質心向量中的詞來源於全部候選句子,是和定義目標緊密相關、在外部資源(如Web、線上百科全書、知識辭典)中和定義目標經常共現的詞。也有系統利用外部資源中的定義,對和外部定義有較高覆蓋度的候選句子增加額外的權值。

2)候選定義句子中冗餘資訊過濾與去除。

一個是冗餘句子過濾,大多是採用多文件文摘中的方法,主要有基於詞的句子過濾,和基於n-gram覆蓋的句子過濾[6]。另外一個是冗餘短語去除。在候選定義句子中,不可避免會有一些與目標定義無關的短語。採用的去除方法主要也是多文件文摘中已有的方法,如用特定的詞法-語法特徵識別冗餘短語,然後將這些短語刪除。


互動式問答中的答案抽取與生成

互動式問答的特點就是系統和使用者之間有“對話”,這種對話並不只是“使用者問”和“系統答”的過程。在互動過程中,一方面,使用者輸入不僅有特定資訊查詢的問題,也有屬於對話的禮節性語句;另一方面,系統也可以主動提問或者提示,通過協商來明晰使用者的真正需求。

聊天機器人是互動式問答的一種主要形式,這個容易理解,大家都熟悉的微軟小冰就是聊天機器人。以前的方法主要是模板匹配。如約克大學的Quarteroni[7]AIML直譯器來實現對話介面管理,對一般禮節性的應答採用模式匹配方法從問/答模式庫中選擇答案。模式庫的建立一方面藉助人工設計,另一方面利用模擬試驗來獲取。

AIML(Artificial Intelligence Markup Language),是一種基於XML的人工智慧標記語言,來源於那個叫Alice的聊天機器人。下面是一個AIML的例子:

<category>

       <pattern>聊什麼呢</pattern>

       <template>一起聊電影好嗎</template>

</category>

<category>

       <pattern></pattern>

       <that>一起聊電影好嗎</that>

       <template>那你喜歡什麼電影</template>

</category>

<category>

       <pattern></pattern>

       <template>什麼意思</template>

</category>

   另外一種就是基於隱式反饋的答案正確性自動評估。即通過使用者後續的反應,對輸出結果進行自動評估,然後根據評估結果對後續的檢索、答案抽取方法進行調整和改進。還有可以通過“建議”和“提示”問題輸出答案。在互動過程中,系統在給出答案的同時,也自動給出一些使用者在後續可能會提出的問題,則會顯著提高使用者的滿意度。


總結

上面主要對學術界在自動問答領域所做的研究做了一下概述,產業界的相關工作沒有涉及,產業界似乎沒有人做過開放域自動問答,主要是對某一領域做限定域自動問答,比如針對自己的業務,做基於FAQ的自動問答;或者是針對某一場景做自動語音對話,等等。

但產業界的工作一般不公開,具體是怎麼做的,別人也不清楚。另外,我的經驗是,產業界通常不會像學術界那樣,應用高深的理論和複雜的方法去解決問題,通常是使用簡單得不能再簡單的方式處理問題,這樣做會導致一個結果:雖然做出了一個實用的系統,但是沒有什麼可說的,或者說出來之後,別人一聽就明白了,然後說:“啊,這麼簡單,你們也沒做什麼呀”。

就像我之前做過的所謂自動問答:先選出人工事先回答好的問答對存起來,使用者提問時,就和問答對的問題做匹配,匹配上了,就返回答案,匹配不上,就去搜索。嗯,就這麼簡單。

參考文獻

[1]   Moldovan D., Pasca M., Harabagiu S., and Surdeanu M. Performance issues and error analysis in an open-domain question answering system. ACM Transactions on Information Systems, 200321(2):133--154.

[2]   Harabagiu S., Moldovan D., Pasca M., Mihalcea R., Bunescu R., Girju R., Rus V., and Morarescu P. Falcon: Boosting knowledge for answer engines. In: Proceedings of the Ninth Text REtrieval Conference

[3]   Gaizauskas R., Greenwood M. A., Hepple M., Roberts I., Saggion H. and Sargaison M.The University of Sheffield’s TREC 2003 Q&A Experiments. In: Proceedings of the 12th Text Retrieval

[4]   Harabagiu S., Moldovan D. I., Clark C., Bowden M., Hickl A. and Wang P. Employing Two Question Answering Systems in TREC-2005. In: Proceedings of the 14th Retrieval Conference (TREC 2005). Gaithersburg: NIST Special Publication: 2005.

[5]   Ittycheriah A., Franz M., and Roukos S. IBM’s statistical question answering system—TREC-10. InProceedings of the 10th Text REtrieval Conference (TREC 2001). Gaithersburg,Maryland: NIST Special Publication, 2002.

[6]   Cui H., Kan M.-Y. and Chua T.-S. Soft Pattern Matching Models for Definitional Question Answeringto appear in ACM Transactions on Information Systems (TOIS). 2007. http://www.cuihang.com.

[7]   Quarteroni S., Manandhar S.. A Chatbot-based Interactive Question Answering System. Proceedings of the 11th Workshop on the Semantics and Pragmatics of Dialogue. Trento, Italy, 2007. 83–90.