本發(fā)明涉及智能機(jī)器人領(lǐng)域,具體地說,涉及一種基于深度學(xué)習(xí)的機(jī)器人對話交互方法及裝置。
背景技術(shù):
當(dāng)前的機(jī)器人行業(yè)發(fā)展迅速,特別是聊天類的機(jī)器人已經(jīng)被越來越多的人所接受。聊天機(jī)器人(chatterbot)是一個用來模擬人類對話或聊天的程序。聊天機(jī)器人產(chǎn)生的原因是,研發(fā)者把自己感興趣的回答放到數(shù)據(jù)庫中,當(dāng)一個問題被拋給聊天機(jī)器人時,它通過相似度匹配算法,從數(shù)據(jù)庫中找到最相近的問題,然后根據(jù)問題與答案的對應(yīng)關(guān)系,給出最貼切的答案,回復(fù)給它的聊伴。
因此,在對話系統(tǒng)中就需要維護(hù)一個龐大的知識庫以供檢索。每當(dāng)接收到用戶的聊天語句之后,系統(tǒng)就會到知識庫中檢索出與用戶的詢問意思相同的語句,然后把語句對應(yīng)的答案返回給對話模塊,這樣便形成了問答交互。
然而,由于中文博大精深,同樣一個句子通常會有很多種表達(dá)方式。甚至,在某些情況下,僅僅是個別的詞匯差異便有可能改變整個句子的意思。因此,想要判定兩個語句的意思是否相同事實上是一件很困難的事情。
傳統(tǒng)的NLP(Natural Lanuage)技術(shù)一般都是基于TF-IDF或者編輯距離等方式,這些方式基本都只會考慮詞之間的相似度,而忽略了組成句子以后的語義。
因此,目前需要提供一種能夠準(zhǔn)確地獲取兩個語句之間的相似程度的方法和裝置。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于,提供一種基于深度學(xué)習(xí)的機(jī)器人對話交互方法及裝置來解決上述技術(shù)問題。在本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互方法中,其包括以下步驟:
接收用戶輸入的對話語句;
抽取所述對話語句中的各個語義特征單元,并根據(jù)所述語義特征單元進(jìn)行知識庫檢索以得到近似對話語句;
在學(xué)習(xí)模型中分別生成對應(yīng)于輸入的對話語句和近似對話語句的句類向量和句向量,并輸出針對輸入的對話語句的句向量與句類向量組合和針對近似對話語句的句向量與句類向量組合之間的相似度;
選擇相似度最高的近似對話語句所對應(yīng)的答復(fù)語句進(jìn)行輸出。
在一個實施例中,本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互方法優(yōu)選地包括:
通過神經(jīng)網(wǎng)絡(luò)對所述學(xué)習(xí)模型進(jìn)行訓(xùn)練學(xué)習(xí)以提高所輸出的相似度值的準(zhǔn)確度。
在一個實施例中,本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互方法優(yōu)選地包括對所述學(xué)習(xí)模型進(jìn)行訓(xùn)練的步驟:
在抽取所述對話語句中的各個語義特征單元時,首先進(jìn)行分詞以將對話語句轉(zhuǎn)換為詞向量;
將所述詞向量按順序組成矩陣;
將所述矩陣輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以分別得到生成句向量和句類向量的子模型;
將兩個語句的句向量和句類向量輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以得到生成相似度值的總模型。
在一個實施例中,根據(jù)本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互方法,優(yōu)選的是,所述相似度通過余弦相似度計算
根據(jù)本發(fā)明的另一個方面,還提供了一種基于深度學(xué)習(xí)的機(jī)器人對話交互裝置。該裝置包括:
對話語句接收模塊,其用以接收用戶輸入的對話語句;
特征單元抽取模塊,其用以抽取所述對話語句中的各個語義特征單元,并根據(jù)所述語義特征單元進(jìn)行知識庫檢索以得到近似對話語句;
向量生成模塊,其用以在學(xué)習(xí)模型中分別生成對應(yīng)于輸入的對話語句和近似對話語句的句類向量和句向量,并輸出針對輸入的對話語句的句向量與句類向量組合和針對近似對話語句的句向量與句類向量組合之間的相似度;
語句選擇輸出模塊,其用以選擇相似度最高的近似對話語句所對應(yīng)的答復(fù)語句進(jìn)行輸出。
在一個實施例中,本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互裝置優(yōu)選地還包括:
訓(xùn)練模塊,其用以通過神經(jīng)網(wǎng)絡(luò)對所述學(xué)習(xí)模型進(jìn)行訓(xùn)練學(xué)習(xí)以提高所輸出的相似度值的準(zhǔn)確度。
在一個實施例中,根據(jù)本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互裝置,優(yōu)選的是,在所述訓(xùn)練模塊中還包括:
轉(zhuǎn)換單元,其用以在抽取所述對話語句中的各個語義特征單元時,首先進(jìn)行分詞以將對話語句轉(zhuǎn)換為詞向量;
矩陣單元,其用以將所述詞向量按順序組成矩陣;
子模型生成單元,其用以將所述矩陣輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以分別得到生成句向量和句類向量的子模型;
總模型生成單元,其用以將兩個語句的句向量和句類向量輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以得到生成相似度值的總模型。
在一個實施例中,根據(jù)本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互裝置,優(yōu)選的是,所述相似度通過余弦相似度計算。
本發(fā)明的有利之處在于,根據(jù)本發(fā)明,機(jī)器人不僅可以根據(jù)中文單個詞來判斷語義,還能夠判斷這些詞組成的語句語義以及由相同單詞構(gòu)成的不同語句之間的相似程度,從而更精確地針對交談對象的意圖找到貼切回答進(jìn)行輸出,大大提高了人機(jī)交互體驗效果。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖說明
附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例共同用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1顯示了根據(jù)本發(fā)明一個實施例的進(jìn)行深度學(xué)習(xí)的機(jī)器人對話交互方法的總體流程圖;
圖2顯示了根據(jù)本發(fā)明一個實施例的采用神經(jīng)網(wǎng)絡(luò)對學(xué)習(xí)模型進(jìn)行訓(xùn)練以進(jìn)行深度學(xué)習(xí)的方法流程圖;
圖3顯示了根據(jù)本發(fā)明的一個實施例的針對單個語句進(jìn)行向量拼接分析的原理圖;
圖4顯示了根據(jù)本發(fā)明的一個實施例的分析兩個語句的相似度的原理圖;
圖5顯示了根據(jù)本發(fā)明一個實施例的基于深度學(xué)習(xí)的機(jī)器人對話交互裝置的結(jié)構(gòu)框圖;以及
圖6顯示了根據(jù)本發(fā)明一個實施例的訓(xùn)練模塊的內(nèi)部結(jié)構(gòu)框圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖對本發(fā)明實施例作進(jìn)一步地詳細(xì)說明。
由于中文中不同句型的形式意思都很不一樣,而傳統(tǒng)判斷句子相似的方法,會忽略掉句型對句子含義的影響,這會導(dǎo)致判斷相似句子的準(zhǔn)確率降低。因此本申請?zhí)峁┝艘环N結(jié)合句型進(jìn)行句子相似度判斷的方法,以提高在智能機(jī)器人與用戶進(jìn)行交互時,對用戶輸入的語句進(jìn)行相似匹配的正確率。
如圖1所示,其中顯示了根據(jù)本發(fā)明原理的進(jìn)行深度學(xué)習(xí)的機(jī)器人對話交互方法的總體流程圖。
在圖1中,機(jī)器人對話交互方法開始于步驟S101。在起始步驟中,一般系統(tǒng)會進(jìn)行一些參數(shù)的初始化操作等。接下來,進(jìn)行到步驟S102,在該步驟中,機(jī)器人接收用戶輸入的對話語句。機(jī)器人接收的方式隨用戶輸入的對話語句的輸入方式而不同。例如,如果用戶輸入的對話語句為一段文本,則機(jī)器人通過掃描或者其他文本輸入方式獲取該對話語句。如果用戶輸入的對話語句為一段語音,則機(jī)器人可通過音頻輸入接口獲取該語音,同時啟用音頻轉(zhuǎn)文本功能將其轉(zhuǎn)化為相應(yīng)的文本。
在步驟S103中,系統(tǒng)抽取對話語句中的各個語義特征單元,并根據(jù)語義特征單元進(jìn)行知識庫檢索以得到近似對話語句。具體說,對于對話語句“我喜歡你!”系統(tǒng)將抽取出“我”“喜歡”“你”以及“!”這些語義特征單元。在中文語義表達(dá)中,標(biāo)點符號具有很強(qiáng)的意思表達(dá),因此本發(fā)明在抽取語義特征單元時,也會抽取標(biāo)點來作為一個語義特征。此外,如果是一段語音,則機(jī)器人會感知這段語音中的語氣,了解該語句屬于陳述句、疑問句、反問句中的哪一類。例如,對于用戶輸入的反問語句“你難道不知道他去上班了嗎?”,系統(tǒng)如果檢索出陳述語句“他去上班了。”與其進(jìn)行比較,則反問句中的標(biāo)點符號以及其中的“難道”等語義特征單元是非常有必要提取出來,從而作為判斷這兩個語句相似的基準(zhǔn),即使它們中包含的很多其他語義特征單元相同也不相似。
接下來,在步驟S104中,在學(xué)習(xí)模型中分別生成對應(yīng)于輸入的對話語句和近似對話語句的句類向量和句向量,并輸出針對輸入的對話語句的句向量與句類向量組合和針對近似對話語句的句向量與句類向量組合之間的相似度。句類向量由上述提到的可表示本語句屬于哪一類語句的語義特征單元構(gòu)成,或者由它們變形而得到的句類標(biāo)記構(gòu)成。一般地,從語氣上對句子進(jìn)行分類,可包括陳述句、疑問句、祈使句和感嘆句。
如圖2所示,其中詳細(xì)顯示了根據(jù)本發(fā)明對學(xué)習(xí)模型進(jìn)行訓(xùn)練的過程。
在圖2中,步驟S201,在抽取所述對話語句中的各個語義特征單元時,首先進(jìn)行分詞以將對話語句轉(zhuǎn)換為詞向量。接下來,在步驟S202中,將這些詞向量按順序組成矩陣。將矩陣輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以分別得到生成句向量和句類向量的子模型,步驟S203。將兩個語句的句向量和句類向量輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以得到生成相似度值的總模型,步驟S204。
具體而言,圖2所顯示的流程步驟還可通過圖3的方式表達(dá)出來。如圖3所示,其中詳細(xì)顯示了根據(jù)本發(fā)明的原理針對單個輸入語句生成句向量與句類向量組合的示意圖。如圖3所示,在本發(fā)明中,使用得到的語料和學(xué)習(xí)模型文件,先對句子進(jìn)行分詞。然后將句子轉(zhuǎn)換為詞向量,將詞向量順序拼接起來得到一個二維的矩陣。
具體地,圖3中顯示的所輸入的一個語句包含了詞1、詞2…詞7。這里詞的含義已經(jīng)不完全是“詞”,例如語句中的“我”。而應(yīng)該還包括語氣詞以及標(biāo)點符號這些能夠單個或者組合起來區(qū)分句類的單元。因此,這里也將“詞”稱為語義特征單元。當(dāng)按照一定規(guī)則將語句切割成單個的詞或者語義特征單元之后,便會進(jìn)行向量變換操作。變換后的向量以矩陣的形式出現(xiàn)。接下來,將矩陣輸入到不同的兩個初始學(xué)習(xí)模型中通過神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。第一個模型訓(xùn)練后得到一個句向量,第二個模型訓(xùn)練后得到一個句類向量。然后通過拼接的方式,將兩個向量組合起來。
以上是針對單個語句的訓(xùn)練結(jié)果。
如圖4顯示的,當(dāng)將兩個語句都輸入到同一個學(xué)習(xí)模型中后,分別得到兩個拼接的向量。然后,根據(jù)余弦相似度比較得出它們之間的相似度分值。
學(xué)習(xí)模型最終會輸出一個例如0到1之間的分值。在本發(fā)明中,可以定義0為不相似,而1為相似。學(xué)習(xí)模型會根據(jù)距離正確值的差異來反復(fù)調(diào)整其中的權(quán)重,最后訓(xùn)練出一個合適的模型。通過該訓(xùn)練后的模型,當(dāng)輸入兩個不同的語句后,可以得出較為準(zhǔn)確的能夠反應(yīng)它們是否相似以及相似程度的結(jié)果。
也就是說,對于任意兩個語句,經(jīng)過本發(fā)明訓(xùn)練的模型都可以得到一個分值。這個分值越接近1表示越相似,可以認(rèn)為定義一個閾值,例如0.5,大于該閾值的分?jǐn)?shù)可以表示這兩個語句是相似的,分?jǐn)?shù)越大,表示相似程度越高。
例如針對語句“我喜歡你”陳述句句類,和“你喜歡我嗎?”疑問句句類,經(jīng)過上述過程之后會得到不相似的判斷結(jié)果。雖然它們的基本詞匯都相同,但是句類不同,所表達(dá)的含義完全不同。這樣,機(jī)器人才會根據(jù)該結(jié)果繼續(xù)檢索知識庫,以找到最匹配的答案語句來。
再比如,另一個語句“積分能干什么”疑問句句類,“積分可以干啥?”疑問句句類,在經(jīng)過上述過程之后,雖然其中的個別詞匯并不相同,但是最終得到的相似度分值卻接近1,因此得出相似的判斷結(jié)果。
另一個例子,語句“你難道不知道他去上班了嗎?”反問句句類,“他去上班了?!标愂鼍渚漕悾m然后一語句的全部詞匯都包含在前一語句中,但是句類完全不同。經(jīng)過上述訓(xùn)練模型后,發(fā)現(xiàn)他們的相似度也接近1,得出相似的判斷結(jié)果。這是因為,前一語句中的個別語義特征單元與其句類向量結(jié)合起來修正了單純靠詞匯分割判斷的句子含義的結(jié)果。
本發(fā)明的學(xué)習(xí)模型分為三個部分來實現(xiàn)。第一個部分主要實現(xiàn)的功能是,使用神經(jīng)網(wǎng)絡(luò)訓(xùn)練的模型得出語句的句類。第二個部分是使用神經(jīng)網(wǎng)絡(luò)訓(xùn)練的模型得到一個句子的句向量表示。而第三部分是合并上述信息計算相似度分值。在計算相似度分值的步驟中,首選通過計算余弦相似度來確定出相似度最高的語句。
接下來,在步驟S105中,選擇相似度最高的近似對話語句所對應(yīng)的答復(fù)語句進(jìn)行輸出。所述相似度通過余弦相似度計算最后,方法運行到步驟S106便結(jié)束操作。
由于本發(fā)明的方法描述的是在計算機(jī)系統(tǒng)中實現(xiàn)的。該計算機(jī)系統(tǒng)例如可以設(shè)置在機(jī)器人的控制核心處理器中。例如,本文所述的方法可以實現(xiàn)為能以控制邏輯來執(zhí)行的軟件,其由機(jī)器人控制系統(tǒng)中的CPU來執(zhí)行。本文所述的功能可以實現(xiàn)為存儲在非暫時性有形計算機(jī)可讀介質(zhì)中的程序指令集合。當(dāng)以這種方式實現(xiàn)時,該計算機(jī)程序包括一組指令,當(dāng)該組指令由計算機(jī)運行時其促使計算機(jī)執(zhí)行能實施上述功能的方法??删幊踢壿嬁梢詴簳r或永久地安裝在非暫時性有形計算機(jī)可讀介質(zhì)中,例如只讀存儲器芯片、計算機(jī)存儲器、磁盤或其他存儲介質(zhì)。除了以軟件來實現(xiàn)之外,本文所述的邏輯可利用分立部件、集成電路、與可編程邏輯設(shè)備(諸如,現(xiàn)場可編程門陣列(FPGA)或微處理器)結(jié)合使用的可編程邏輯,或者包括它們?nèi)我饨M合的任何其他設(shè)備來體現(xiàn)。所有此類實施例旨在落入本發(fā)明的范圍之內(nèi)。
因此,根據(jù)本發(fā)明的另一個方面,還提供了一種基于深度學(xué)習(xí)的機(jī)器人對話交互裝置500。如圖5所示,裝置500包括:
對話語句接收模塊501,其用以接收用戶輸入的對話語句;
特征單元抽取模塊502,其用以抽取所述對話語句中的各個語義特征單元,并根據(jù)所述語義特征單元進(jìn)行知識庫檢索以得到近似對話語句;
向量生成模塊503,其用以在學(xué)習(xí)模型中分別生成對應(yīng)于輸入的對話語句和近似對話語句的句類向量和句向量,并輸出針對輸入的對話語句的句向量與句類向量組合和針對近似對話語句的句向量與句類向量組合之間的相似度;
語句選擇輸出模塊504,其用以選擇相似度最高的近似對話語句所對應(yīng)的答復(fù)語句進(jìn)行輸出。
在一個實施例中,本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互裝置優(yōu)選地還包括:
訓(xùn)練模塊505,其用以通過神經(jīng)網(wǎng)絡(luò)對所述學(xué)習(xí)模型進(jìn)行訓(xùn)練學(xué)習(xí)以提高所輸出的相似度值的準(zhǔn)確度。
如圖6所示,在一個實施例中,根據(jù)本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互裝置500,優(yōu)選的是,在所述訓(xùn)練模塊505中還包括以下部分:
轉(zhuǎn)換單元505a,其用以在抽取所述對話語句中的各個語義特征單元時,首先進(jìn)行分詞以將對話語句轉(zhuǎn)換為詞向量;
矩陣單元505b,其用以將所述詞向量按順序組成矩陣;
子模型生成單元505c,其用以將所述矩陣輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以分別得到生成句向量和句類向量的子模型;
總模型生成單元505d,其用以將兩個語句的句向量和句類向量輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練以得到生成相似度值的總模型。
在一個實施例中,根據(jù)本發(fā)明的基于深度學(xué)習(xí)的機(jī)器人對話交互裝置,優(yōu)選的是,所述相似度通過余弦相似度計算。
應(yīng)該理解的是,本發(fā)明所公開的實施例不限于這里所公開的特定結(jié)構(gòu)、處理步驟或材料,而應(yīng)當(dāng)延伸到相關(guān)領(lǐng)域的普通技術(shù)人員所理解的這些特征的等同替代。還應(yīng)當(dāng)理解的是,在此使用的術(shù)語僅用于描述特定實施例的目的,而并不意味著限制。
說明書中提到的“一個實施例”或“實施例”意指結(jié)合實施例描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因此,說明書通篇各個地方出現(xiàn)的短語“一個實施例”或“實施例”并不一定均指同一個實施例。
雖然本發(fā)明所公開的實施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所公開的精神和范圍的前提下,可以在實施的形式上及細(xì)節(jié)上作任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。