1. 程式人生 > >IBM沃森Watson答題過程全揭祕

IBM沃森Watson答題過程全揭祕

/gkimage/xn/13/dd/xn13dd.png

看到watson在Jeopardy!預賽中的驚人表現,你是否曾經想過,從watson看懂問題到給出答案,這個過程到底是怎麼樣的呢?難道watson真的和人類一樣,擁有了思考問題的能力?還是說watson僅僅是比Google優秀一點的搜尋引擎而已呢?

現在果殼網就以他回答的第一個問題為例,給大家解說一下watson工作的全過程。

主持人:Ken你站在1號位置,請選擇問題。

Ken:在電視節目上選這個我有點緊張……“美女挖起我*”,200美元。

*注:Chicks Dig Me,意為關於女考古學家的問題。

題目出現在大螢幕上,同時主持人開始大聲念出這個問題——

Kathleen Kenyon’s excavation of this city mentioned in Joshua shows that the walls had been repaired 17 times.

然後waston就開始行動了!

看問題——識別問題的文字

Watson通過攝像頭拍下螢幕上的文字,然後進行光學識別,得到以文字而不是影象形式儲存的題目文字:

Kathleen Kenyon對這個在Joshua中提到的城市的發掘表明,該城的城牆曾被修復17次。

理解問題——提取文字中的專有名詞等基本資訊

最先需要提取的基本資訊包括人名、地名、時間等。Waston將它們提取出來後, 和資料庫進行對比,然後對結果打上知識分類標籤。

在此題中,Watson看完問題後要做的第一件事情就是提取題目當中所有首字母大寫的詞,並在自己的資料庫裡進行搜尋,搜尋任務會被watson拆分成單獨的任務並下派給每一個處理器執行緒。

題中一共出現了三個首字母大寫的名詞,其中Kathleen Kenyon這兩個詞連在一起。所以watson一共會下發4個搜尋任務:分別在資料庫中搜索Kathleen,Kenyon,Kathleen Kenyon以及Joshua。

搜尋結果如下:

Kathleen 人名 /
Kenyon 人名/大學名/城市名 /
Kathleen Kenyon 人名 考古學家 女性
Joshua 書(章節)名/人名 《聖經•約書亞記》

分析問題——提取文字結構上的資訊,如詞性和由動作連線的相關關係等

由於搜尋的專有名詞常常不只一個標籤,所以接下來,watson需要再通過題中給出的其它詞語的性質和關係,幫助篩選這些專有名詞,得到它們更精確的含義。

Watson在這一步要對每一個詞以及它附近的詞進行搜尋,工作量非常大。但通過運用連詞、副詞和語句結構等等資訊可以減少很多冗餘的搜尋。

比如mentioned,shows,had,been,repaired這5個詞都有成為謂語動詞的可能。進行資料對比後發現,had和been只是repaired的時態,所以備選動詞減少到了3個。又根據that前後的詞,判斷出這是一個從句,則repaired退出競爭。最後,根據mentioned in Joshua這個短語判斷出mentioned也不是整個句子的謂語動詞。於是得出題目的語法結構:主謂賓結構,並且“shows”就是謂語。

同時不可忽視的一點是,Jeopardy的問題都是陳述句,是對答案進行的一種描述。因此通過關鍵詞this city,答案應該是一座城市。

再者題目分類為“美女挖起我”,而題幹中只有Kathleen Kenyon是女性考古學家,於是判斷真正有意義的名詞應該就是Kathleen Kenyon(以下簡稱KK)。

Mentioned in Joshua 說明答案應該在Joshua中提到過,結合它的分類標籤可以判斷Joshua應該是一本書而不是一個人。

此外,通過這一步,watson還會獲得題目中的一般資訊和答案之間的關係。比如:

KK’s excavation of this city. KK在答案城市做過考古發掘工作

the walls had been repaired 17 times 答案城市的城牆被修復過17次

KK ……shows……17times 城牆被修復過17次這一資訊,是從KK的發掘中發現的

在這一步中,每一個問題會被分解為若干子問題來解決。如果不能直接得到某個子問題的答案,則該問題又會被分解為若干子問題進行解決;有時候甚至需要引入新的問題來得到某個問題的答案。直到獲得所有答案為止。

這是一種“扇出”的結構,可以理解為“分而治之”的策略。此外,每一次問題分割可能都有幾種不同的方法,那麼watson會同時嘗試所有不同的分法。實際上一個包含二十個詞的普通問題可能會最終被分解為上萬個子問題。

解答問題——搜尋自身儲存的結構資料和非結構資料

由於題中得到了“KK在答案城市做過考古發掘工作”這一資訊,所以watson將會搜尋自身資料庫中KK的資料(由於已經組織成一定的結構,所以稱為結構資料),看看能不能找到相關資訊。如下表所示Kathleen Kenyon的資料: 

性別
職業 考古學家
主要成就 在1952-1958年發掘過耶利哥(Jericho)城。在1961-1967年發掘過耶路撒冷(Jerusalem)城。

此外,Watson儲存了海量的百科全書、論文文獻等等以文章方式儲存的資料,它們之中也會有相關的資訊。但由於這些資料沒有經過整理和組織(稱為非結構資料),所以watson必須通過非常費力的文字搜尋來取得資訊。這個過程中又會用到前面用過的提取專有名詞、詞性、文字結構等方式。

由“答案城市在《聖經•約書亞記(Joshua)》中提到過”這一線索可知,搜尋《約書亞記》全文並判斷哪些名詞是城市的名字是必須的。此外,KK曾經發表過的考古學論文也應該在搜尋範圍之列。

《約書亞記》中提到至少3個城市,耶路撒冷、耶利哥、拉吉。當然某篇KK發表的論文中也許提到了,耶利哥的城牆曾被修復17次。

分析雙關資訊的可能性

由於人類語言的模糊性和二義性,通常watson需要分析題目的題外之意來進一步增加理解的正確性。這通常也是依賴於和資料庫中預存的、可能帶有二義性的表達語庫進行對比來實現的。這一步最難,也是watson最沒有信心的一步。

幸運的是,在這個題目中並無雙關資訊。

判斷各個答案的正確可能性

Watson運用上百種演算法對可能的答案進行評估,包括答案的類別、性質是否正確,答案涉及的時間、地點是否正確,詞性、語法結構是否符合要求等等。

《約書亞記》中提到的所有城市就是備選答案庫。它至少提到了耶利哥、耶路撒冷、拉吉這三個城市,相關資料如下:

城市 相關資訊
耶利哥 KK曾經發掘過耶利哥。KK在某個文獻中提到了耶利哥的城牆曾被修復17次
耶路撒冷 KK曾經發掘過耶路撒冷。
拉吉未 找到KK發掘過拉吉的記錄。

Watson產生的判斷結果:

耶利哥(Jericho):97%

耶路撒冷(Jerusalem):42%

拉吉(Lachish):7%

正確度最高的答案,若正確度高於51% 就發出訊號驅動執行器,按下按鍵。

不知大家是否注意到了,watson所在的位置,答題按鈕的上方有一個專門用於按鍵的裝置。即使是超級計算機,也需要在物理世界按下按鍵才能答題!這應該是Jeopardy!製作人提出的要求。

耶利哥的正確度高達97%,高於51%。所以在主持人結束問題描述的一瞬間,watson就發出了一個訊號給按鍵裝置,按下蜂鳴器的開關,搶到了答題權。

回答問題——語音合成,發出問題格式的語音

由於Jeopardy!的遊戲規則是題幹以答案形式給出,而答案反要以問題形式給出。所以watson需要用“What is XXX”或者“Who is XXX”之類的格式來回答問題。

Watson判斷了一下,耶利哥在此處是個地名而不是人名,所以答案應該是“What is Jericho ?”。然後,watson只需要一個語音合成引擎將這個答案的文字轉換成語音並播放出來就可以了。