本發(fā)明涉及自然語言處理技術(shù)領(lǐng)域,尤其涉及一種智能問答方法及系統(tǒng)。
背景技術(shù):
智能問答系統(tǒng)是基于海量互聯(lián)網(wǎng)數(shù)據(jù)推理和對語言深度語義理解的智能系統(tǒng)。智能問答機(jī)器系統(tǒng)不僅可以回答知識類的問題,還可用于醫(yī)療、教育、生活、科技等各種與人們生活息息相關(guān)的領(lǐng)域,大幅提升人們獲取信息的效率。
現(xiàn)有的智能問答系統(tǒng)主要是基于社區(qū)的問答,通過對歷史用戶問題/回答數(shù)據(jù)進(jìn)行挖掘,計算用戶問題與問答站點中已有的問題之間的相似度,返回相似度高的用戶回答。
上述智能問答系統(tǒng)存在的缺陷在于:語句被當(dāng)成詞袋模型進(jìn)行處理,導(dǎo)致缺乏對句法結(jié)構(gòu)的理解;對一些特殊情況缺乏有效的處理能力,使得系統(tǒng)缺乏魯棒性。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供一種智能問答方法及系統(tǒng),通過對字詞進(jìn)行處理可以提高對特殊情況的處理能力,提高方法的魯棒性。
第一方面,本發(fā)明提供了一種智能問答方法,包括:
從用戶終端獲取用戶輸入的問題并使用分詞器對其分詞;
將分詞后的用戶輸入的問題與問答庫中的每個問題依次比較,以獲取所述問答庫中的每個問題的相似度;所述問答庫通過選取預(yù)設(shè)數(shù)量的由一一對應(yīng)的問題與答案構(gòu)成的問答對構(gòu)建;
對所述問答庫中的每個問題的相似度進(jìn)行排序,將相似度排序靠前的n個問答對傳輸至所述用戶終端,n為正整數(shù)。
可選地,所述相似度是通過對詞義相似度、語序相似度和句子長度維數(shù)加權(quán)求和所得到的數(shù)值。
可選地,所述將分詞后的用戶輸入的問題與問答庫中的每個問題依次比較,以獲取所述問答庫中的每個問題的相似度的步驟包括:
根據(jù)所述分詞在所述問答庫中檢索候選問題,并對所述候選問題進(jìn)行排序;
從排序后的候選問題中取前m個問答對與所輸入的問題進(jìn)行相似度計算,m>n。
可選地,使用分詞器對所述輸入的問題進(jìn)行分詞的步驟之后,所述方法還包括:
將所述輸入的問題的分詞與停用表進(jìn)行匹配,去除上述分詞中的停用詞。
可選地,采用tf-idf算法檢索候選問答對并對候選問答對進(jìn)行排序。
可選地,所述從排序后的候選問題中取前m個問答對與所輸入的問題進(jìn)行相似度計算的步驟包括:
從輸入的問題與問答庫中每個問題選擇連續(xù)出現(xiàn)的至少兩個分詞;
計算所述至少兩個分詞的內(nèi)聚程度;所述內(nèi)聚程度innerlevel通過以下公式計算:
式中,p(a)表示分詞a出現(xiàn)的概率;p(b)表示分詞b出現(xiàn)的概率;p(ab)表示分詞a與分詞b同時出現(xiàn)的概率;
將內(nèi)聚程度超過預(yù)設(shè)內(nèi)聚程度值的分詞進(jìn)行合并。
可選地,所述將內(nèi)聚程度超過預(yù)設(shè)內(nèi)聚程度值的分詞進(jìn)行合并的步驟之后,所述方法還包括:
采用tf-idf算法對m個問答對進(jìn)行排序,并且每個分詞的得分作為詞語相似度權(quán)重。
可選地,本發(fā)明實施例提供的智能問答方法還包括:
當(dāng)從所述問題庫中找到的候選問答對為n1個時,n1<n,采用拒絕算法對該n1個問答對進(jìn)行剔除;
所述拒絕算法為:
除去形容詞與副詞后,若第一候選問答對中不包含詞語動態(tài)權(quán)重排序靠前的前n2個分詞及其擴(kuò)展詞時,拒絕該問答對;
或者,
計算該n1個候選問答對中前面一個與后面一個候選問答對的得分差值百分比;
當(dāng)該得分差值百分比小于預(yù)設(shè)得分差值百分比時,則拒絕后面一個候選問答對以其之后的所有問答對。
第二方面,本發(fā)明實施例還提供了一種智能問答系統(tǒng),基于上文所述的智能問答方法實現(xiàn),所述系統(tǒng)包括:
問答庫構(gòu)建模塊,用于選取預(yù)設(shè)數(shù)量的由一一對應(yīng)的問題與答案構(gòu)成的問答對構(gòu)建問答庫;
分詞獲取模塊,用于從用戶終端獲取用戶輸入的問題并使用分詞器對其分詞;
相似度計算模塊,用于將分詞后的用戶輸入的問題與問答庫中的每個問題依次比較,以獲取所述問答庫中的每個問題的相似度;
問答對返回模塊,用于對所述問答庫中的每個問題的相似度進(jìn)行排序,將相似度排序靠前的n個問答對傳輸至所述用戶終端。
可選地,所述相似度計算模塊用于執(zhí)行以下步驟:
根據(jù)所述分詞在所述問答庫中檢索候選問題,并對所述候選問題進(jìn)行排序;
從排序后的候選問題中取前m個問答對與所輸入的問題進(jìn)行相似度計算,m<n。
由上述技術(shù)方案可知,本發(fā)明通過對用戶輸入問題的語句進(jìn)行分詞,然后利用分詞與問答庫中的每個問題依次比較,計算問題的相似度;根據(jù)相似對每個問題進(jìn)行排序,返回排序靠前的n個問答對作為最終結(jié)果。本發(fā)明能夠適應(yīng)不同的專業(yè)領(lǐng)域,可以解決現(xiàn)有技術(shù)中利用詞袋模型進(jìn)行處理時缺乏對句法結(jié)構(gòu)理解的情況,以及一些特殊情況下無法有效處理的情況。
附圖說明
通過參考附圖會更加清楚的理解本發(fā)明的特征和優(yōu)點,附圖是示意性的而不應(yīng)理解為對本發(fā)明進(jìn)行任何限制,在附圖中:
圖1是本發(fā)明實施例提供的一種智能問答方法框圖;
圖2是本發(fā)明實施例提供的拒絕算法流程示意圖;
圖3是本發(fā)明實施例提供的一種智能問答方法處理流程示意圖;
圖4是本發(fā)明實施例提供的一種智能問答系統(tǒng)框圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
第一方面,本發(fā)明提供了一種智能問答方法,如圖1所示,包括:
s1、從用戶終端獲取用戶輸入的問題并使用分詞器對其分詞;
s2、將分詞后的用戶輸入的問題與問答庫中的每個問題依次比較,以獲取所述問答庫中的每個問題的相似度;所述問答庫通過選取預(yù)設(shè)數(shù)量的由一一對應(yīng)的問題與答案構(gòu)成的問答對構(gòu)建;
s3、對所述問答庫中的每個問題的相似度進(jìn)行排序,將相似度排序靠前的n個問答對傳輸至所述用戶終端,n為正整數(shù)。
需要說明的是,上述語句是本發(fā)明提供的方法處理的對象。本發(fā)明實施例中用戶輸入的問題是以語句的形式呈現(xiàn)的,問答庫的問題與答案是以語句或者分詞的形式呈現(xiàn)的。本領(lǐng)域技術(shù)人員應(yīng)該知道,至于用戶開始時以例如文字、圖片還是音頻等不同形式輸入的問題最后都需要轉(zhuǎn)換成語句的形式呈現(xiàn)。
下面結(jié)合實施例與附圖對本發(fā)明提供的智能問答方法各步驟作進(jìn)一步說明。
本發(fā)明實施例中需要先構(gòu)建問答庫,采集來自某個領(lǐng)域的預(yù)設(shè)數(shù)量的一一對應(yīng)的問題與答案形成的問答對,構(gòu)建上述問答庫。需要說明的是,上述問答對中的問題語句已經(jīng)分詞,可以方便的根據(jù)每個詞進(jìn)行檢索。還需要說明的是,上述問答庫中問答對的預(yù)設(shè)數(shù)量越大越好,檢索所得的結(jié)果也就越接近用戶所需要的答案。
本發(fā)明實施例獲取用戶輸入的問題后,使用分詞器對該輸入的問題進(jìn)行分詞。需要說明的是,由于有些分詞會停止使用或者使用的頻率極低,優(yōu)選地,本發(fā)明將所述輸入的問題的分詞與停用表進(jìn)行匹配,去除上述分詞中的停用詞。
將該輸入的問題的分詞與問答庫中的每個問題依次比較,以獲取問答庫中每個問題的相似度。優(yōu)選地,本發(fā)明中計算相似度采用以下步驟:
根據(jù)所述分詞在所述問答庫中檢索候選問題,并對所述候選問題進(jìn)行排序;
從排序后的候選問題中取前m個問答對與所輸入的問題進(jìn)行相似度計算,m<n。
優(yōu)選地,本發(fā)明采用tf-idf算法在該問答庫中檢索候選問題。需要說明的是,由于tf-idf算法是現(xiàn)有技術(shù)中常用的信息檢索與數(shù)據(jù)挖掘方法,本領(lǐng)域技術(shù)人員可以根據(jù)具體情況進(jìn)行選擇,本發(fā)明不作限定。
本發(fā)明中,相似度是通過對詞義相似度、語序相似度和句子長度維數(shù)加權(quán)求和所得到的數(shù)值,包括:
1、詞義相似度計算。在分詞的層次上對輸入的問題的語句與問答庫中的每一個問題的相似度進(jìn)行打分。兩個語句中的詞語相似度越高,那么兩個語句的語義越相近。
實際應(yīng)用中,分詞器因為缺乏專業(yè)領(lǐng)域知識,在對輸入的問題進(jìn)行分詞時往往傾向于細(xì)粒度分詞。細(xì)粒度分詞是指,將語句按照盡可能小的詞語進(jìn)行分詞。例如專業(yè)詞匯“中國銀行”被分為“中國”和“銀行”兩個詞。本發(fā)明實施例中,對類似上述的專業(yè)詞詞匯進(jìn)行合并,包括:
從輸入的問題與問答庫中每個問題選擇連續(xù)出現(xiàn)的至少兩個分詞;例如分詞后的兩個語句:
a:(中國)(銀行)(提供)(哪些)(種類)(的)(貸款);
b:(中國)(銀行)(有)(什么)(類別)(的)(貸款);
(中國)(銀行)和(的)(貸款)都作為合并候選集。
計算上述至少兩個分詞的內(nèi)聚程度;其中內(nèi)聚程度通過以下公式計算:
式中,p(a)表示分詞a出現(xiàn)的概率;p(b)表示分詞b出現(xiàn)的概率;p(ab)表示分詞a與分詞b同時出現(xiàn)的概率;
將內(nèi)聚程度超過預(yù)設(shè)內(nèi)聚程度值的分詞進(jìn)行合并。
需要說明的是,上述預(yù)設(shè)內(nèi)聚程度值可以根據(jù)具體使用場合進(jìn)行設(shè)置,本發(fā)明不作限定。
本發(fā)明實施例中,對獲取的前m個問答對中的連續(xù)分詞進(jìn)行合并后,繼續(xù)采用tf-idf算法對該前m個候選問答對檢索與排序。并且將本次tf-idf算法所計算的詞語得分作為詞語相似度的權(quán)重。
需要說明的是,輸入的問題中部分分詞有可能存在近義詞。優(yōu)選地,本發(fā)明實施例中還對合并后的輸入的問題進(jìn)行近義詞擴(kuò)展。然后利用哈工大詞林?jǐn)U展版計算所選取的m個候選問答對的詞義相似度,計算方式如下:
2、語序相似度計算。計算兩個語句中對應(yīng)分詞出現(xiàn)的順序。分詞順序相似度越高,則兩個語句相似度得分越高。計算公式如下:
如s1:“我借你錢”和s2:“你借我錢”兩句話的順序相似度為:
3、語句長度的維度。當(dāng)相似度一樣的時候,往往較短的句子對原問題的匹配度越高,所以本發(fā)明中優(yōu)先選擇較短的句子。
句子長度得分為:e-length,length為句子長度。
實際應(yīng)用中,本發(fā)明提供的方法有可能會出現(xiàn)針對用戶所提問題在問答庫中沒有合適的答案,或者合適的答案不足n個,此時本發(fā)明采用拒絕算法,將前n1個候選問答對進(jìn)行剔除返回給用戶。本發(fā)明主要分為兩種拒絕方案,即全拒絕和部分拒絕,如圖2所示:
1、當(dāng)出現(xiàn)以下情況時,包括:(1)句長小于等于15個分詞數(shù):除去形容詞和副詞后,第一候選問題中不包含詞語動態(tài)權(quán)重最高的那個詞及其擴(kuò)展詞;(2)句長大于15個分詞數(shù):除去形容詞和副詞后,第一候選問題中不包含詞語動態(tài)權(quán)重最高的前三個詞及其擴(kuò)展詞;拒絕該n1個候選問答對。
2、當(dāng)計算前n1個候選問答對中后面一個與前面一個得分差值的百分比;當(dāng)該得分差值百分比小于預(yù)設(shè)得分差值百分比時,則拒絕后面一個候選問答對以其之后的所有問答對。
為說明本發(fā)明實施例提供的智能問答方法的優(yōu)越性以及通用性,將該方法應(yīng)用于金融領(lǐng)域中進(jìn)行驗證。
首先,在金融領(lǐng)域中,選取20萬條問答對構(gòu)建金融領(lǐng)域的問答庫。該問答對來源于新浪愛問中的銀行保險等與金融領(lǐng)域相關(guān)的問答對板塊。
如圖3所示,用戶輸入“銀行卡密碼設(shè)置如何更安全”,對該語句進(jìn)行分詞得到表達(dá)式(1):(銀行)(卡)(密碼)(如何)(設(shè)置)(更)(安全)。
在本金融領(lǐng)域的問答庫中利用tf-idf算法匹配上述語句的分詞,并將排序靠前的500個問答對作為候選問答對。
結(jié)合上述500個候選問答對對表示式(1)中分詞進(jìn)行細(xì)粒度合并得到表達(dá)式(2):(銀行卡)(密碼)(如何)(設(shè)置)(更)(安全)。
根據(jù)近義詞典對表達(dá)式(2)中的分詞進(jìn)行近義詞擴(kuò)展得到表達(dá)式(3):(銀行卡-借記卡-信用卡)(密碼)(如何)(設(shè)置)(更)(安全-保險)。
對表達(dá)式(3)利用tf-idf算法計算上述各個分詞的詞語權(quán)重得到表達(dá)式(4):(銀行卡-借記卡-信用卡0.7)(密碼0.9)(如何0.3)(設(shè)置0.2)(更0.05)(安全-保險0.7)。
對上述500個候選問答對進(jìn)行語句相似度計算。
根據(jù)上述詞語權(quán)重系統(tǒng)、語句相似度以及句子長度維數(shù)獲取用戶輸入的問題的相似度得到排序靠前的5個候選問答句。對該5個候選問答句采用拒絕算法得到最終結(jié)果反饋給用戶。
表1本實施例用戶輸入問題的反饋結(jié)果
第二方面,本發(fā)明實施例還提供了一種智能問答系統(tǒng),基于權(quán)利上文所述的智能問答方法實現(xiàn),如圖4所示,所述系統(tǒng)包括:
問答庫構(gòu)建模塊,用于選取預(yù)設(shè)數(shù)量的由一一對應(yīng)的問題與答案構(gòu)成的問答對構(gòu)建問答庫;
分詞獲取模塊,用于將用戶輸入的問題進(jìn)行分詞;
相似度計算模塊,用于將分詞后的用戶輸入的問題與所述問答庫中的每個問題依次比較,以獲取所述問答庫中的每個問題的相似度;
問答對返回模塊,用于對所述問答庫中的每個問題的相似度進(jìn)行排序,返回相似度排序靠前的n個問答對,n為正整數(shù)。
用于權(quán)利所述相似度計算模塊用于執(zhí)行以下步驟:
根據(jù)所述分詞在所述問答庫中檢索候選問題,并對所述候選問題進(jìn)行排序;
從排序后的候選問題中取前m個問答對與所輸入的問題進(jìn)行相似度計算,m<n。
由上可以看出,本發(fā)明實施例提供的智能問答系統(tǒng)基于上文所述的智能問答方法實現(xiàn),因而可以解決同樣的技術(shù)問題,并取得相同的技術(shù)效果,在此不再一一贅述。
綜上所述,本發(fā)明實施例提供的智能問答方法及系統(tǒng),通過對用戶輸入的問題進(jìn)行分詞、細(xì)粒度合并、近義詞擴(kuò)展以及兩次tfidf計算等過程,并對所獲取的候選問答對采用拒絕算法從而得到最終結(jié)果。本發(fā)明可以提高對特殊情況的處理能力,提高方法的魯棒性。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(dsp)來實現(xiàn)根據(jù)本發(fā)明實施例的一種瀏覽器終端的設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說明書的范圍當(dāng)中。