整理到第四天愈來愈心虛了,由於發現好多專業的技術都不知道,好比關於語義的分析提取之類的,後面打算專門針對這些專業性的「玩法」整理下。那麼今天,就繼續整理下人機問答的原理實現吧!html
更多內容參考:java
在不少的領域其實都須要這樣一個問答系統,問答系統有不少種交互的方式。先來目擊一下問答系統的風采吧:mysql
想要體驗一下的話,能夠點擊傳送門算法
關於這種問答系統,好壞的評測很簡單,直接人工肉眼就能判斷出來回答的是不是本身想要的,所以小白的體驗用戶也能夠直觀的評測一個問答系統效果是否足夠好。sql
首先能夠設想一下:數據庫
若是如今只使用java和mysql(想要個頁面也能夠加上js\html....),那麼只要咱們的數據庫裏問答的內容足夠多,就能支撐這樣的問答系統。不過數據支持的搜索過於簡單,只支持普通的%
的模糊搜索。網絡
接下來,咱們能夠引入一些分詞工具(lucene),或者直接藉助全文檢索的系統(solr、elasticsearch)。這樣咱們輸入的內容就能夠以全文檢索的形式進行查詢了。不過基於全文檢索,即TF-IDF詞頻逆文檔頻率算法,效果仍然有限,好比一些詞語的位置沒法識別、同義詞等沒法識別。iphone
爲了解決這個問題,能夠再引入一些天然語言處理的技術手段,好比實現一些同義詞的識別、詞性的轉換等等。機器學習
總結起來,大體的流程就是:elasticsearch
基於問答庫的作法,已經能實現一個基本的問答系統了。可是他其實並不智能,由於全部的答案都須要事先錄入好。沒有準備的問題,就沒法找到對應的答案....試想一下,人類說話的方式多種多樣,稍微變一下,就可能得不到想要的答案,這得是多麼爛的系統啊。
隨着最近知識圖譜的興起,人機問答系統又迎來了一波春天....關於知識圖譜能夠簡單的說一下,知識圖譜裏面有這樣幾種類型:
有了這樣的定義,就能夠基於咱們本身擁有的知識庫創建知識圖譜了。
舉個例子,在電商領域阿迪、耐克、三樓、白色都是實體,阿迪
和白色
之間是一種屬性的關係,好比顏色
,所以能夠獲得這樣的圖:
阿
迪與耐克之間又有一些關係,好比競爭
:
有了這樣的知識圖譜以後,咱們就能夠進行一些智能的搜索了。
在問答系統系統中通常有這樣幾種方法:
語義解析一聽就是跟語言學有關的東西,因爲我缺乏這方面的背景,因此只能講個大概,也許還會有不少紕漏。咱們在小學學習語文的時候,老師就教過主謂賓定狀補
,如今不知道你們還記不記得:
好比明明(主語)在不二心(狀語)吃(謂語)了六個(補語)超好吃(定語)的肉包子(賓語)
,而在英文裏面詞性又不同了,英文中不是主謂賓定狀補
而是名詞``代次``形容詞``副詞``動詞
...通常來講爲了統一表示,在天然語言處理裏面,都是使用統一的代號進行處理的,好比:
S表示句子;NP、VP、PP是名詞、動詞、介詞短語(短語級別);N、V、P分別是名詞、動詞、介詞。
好比下面兩個語法樹:
那麼有了這樣的語法樹,就能夠基於語法樹造成特定的查詢語言,直接基於知識庫進行查詢了,好比轉化成SPARQL
進行查詢,好比:
Number of dramas starring Tom Cruise?
能夠轉化成查詢語言:
信息提取的方式,跟以前的語義樹查詢的方式稍有不一樣。對於這樣的問題:
what is the name of Justin Bieber brother?
會造成語法的依存樹,而後根據依存樹再生成問題圖:
基於這樣的問題圖,咱們很容易能到知識圖譜裏面查詢到相關的實體,而後獲得基於這個實體的子圖。獲得子圖後,就能夠從這個實體出發,把全部的關係對應的實體都作爲回答的候選集。固然不只僅是一層的關係,也能夠收集兩層的圖做爲候選集。有了這樣的候選集就剩下尋找最優答案的問題了,尋找答案的方法有不少,好比抽取答案的特徵與問題的特徵兩兩組合,基於樸素貝葉斯算法選取機率最大的候選答案。
說完基於特徵的信息提取,就要說說這個word embedding,word embedding是一種概念,即區別於普通的One hot編碼。
那麼在問答系統中,就是對問題進行特徵的提取,而後轉變成word embedding的表示方法;再對知識庫中的答案提取特徵,造成word embedding,最終基於計算二者的關係,來尋找最匹配的答案。這種基於word embedding的表達方式尋找最佳的匹配,也被應用到了推薦系統的場景,所以仍是值得好好研究一下的。
因爲word embedding其實也是基於特徵詞的,所以在提取特徵詞的時候都會忽略掉位置等等的因素。好比,謝霆鋒的爸爸是誰?
和謝霆鋒是誰的爸爸?
就是兩個徹底不一樣的問題。可是在深度學習中,若是使用一些循環神經網絡,就能夠把每一個詞做爲下一個詞分析的輸入,也就變相的考慮了詞語的順序特徵。具體的就不詳談了,能力有限...
對深度學習如何在問答系統中應用,能夠參考知乎專欄——揭開知識庫問答KB-QA的面紗