本發(fā)明實(shí)施例涉及計(jì)算機(jī)領(lǐng)域,并且更具體地,涉及一種用于人機(jī)對(duì)話的方法、神經(jīng)網(wǎng)絡(luò)系統(tǒng)和用戶設(shè)備。
背景技術(shù):
:隨著移動(dòng)互聯(lián)網(wǎng)和智能終端的快速發(fā)展,人機(jī)對(duì)話的應(yīng)用越來越廣泛。各大互聯(lián)網(wǎng)公司也推出各自的智能助手,例如AppleSiri、GoogleNow、微軟小娜(MicrosoftCortana)、FacebookM、百度度秘和微軟小冰等等。目前的智能助手能夠與人進(jìn)行簡(jiǎn)單的對(duì)話,并且完成一些基本的任務(wù)。智能助手的相關(guān)技術(shù)還需要不斷發(fā)展和改進(jìn),朝著更加擬人化、博學(xué)化、并且能夠完成更加復(fù)雜的任務(wù)的方向發(fā)展。人機(jī)對(duì)話涉及一系列技術(shù),例如:語音識(shí)別、自然語言理解、自然語言對(duì)話、自動(dòng)問答、搜索、推薦、語音合成等技術(shù)。其中,自動(dòng)問答技術(shù)是指自動(dòng)問答系統(tǒng)能夠直接對(duì)用戶用自然語言提出的問題給出答案。評(píng)價(jià)自動(dòng)問答的質(zhì)量的主要指標(biāo)是回答的正確性。自動(dòng)問答系統(tǒng)涉及多個(gè)方向不同的技術(shù),例如自然語言處理、信息檢索、知識(shí)庫等技術(shù)。根據(jù)問題的類型,自動(dòng)問答系統(tǒng)中有一類我們所關(guān)注的問答是回答事實(shí)型問題(factoidquestion)。工業(yè)界的自動(dòng)問答系統(tǒng)的例子包括IBMWatson、Google、Baidu和WolframAlpha等。知識(shí)庫技術(shù)是與自動(dòng)問答系統(tǒng)有著緊密聯(lián)系的技術(shù)。它涉及從數(shù)據(jù)中獲取結(jié)構(gòu)化的知識(shí)并對(duì)其進(jìn)行整理和融合,并在其基礎(chǔ)上進(jìn)行查詢和推理。在自動(dòng)問答技術(shù)中,語義解析過程是一個(gè)尚未完全解決的問題,自動(dòng)問答的答案通常面臨著自然語言多義性和歧義性的問題。自然語言對(duì)話技術(shù)是指自然語言對(duì)話系統(tǒng)能夠跟用戶進(jìn)行語義相關(guān)的對(duì)話,其評(píng)價(jià)指標(biāo)主要在于對(duì)話(回復(fù))的語義相關(guān)性和語言正確性(包括語言連貫和語法正確等)。自然語言對(duì)話系統(tǒng)的例子包括微軟小冰和百度百小度等。自然語言對(duì)話技術(shù)是自然語言處理領(lǐng)域一個(gè)很有挑戰(zhàn)的方向。近年來隨著深度學(xué)習(xí)技術(shù)的發(fā)展和應(yīng)用,發(fā)明了基于深度神經(jīng)網(wǎng)絡(luò)的自然語言對(duì)話系統(tǒng),其效果在一些數(shù)據(jù)上被證明顯著優(yōu)于傳統(tǒng)的技術(shù)?;谏疃壬窠?jīng)網(wǎng)絡(luò)的自然語言對(duì)話系統(tǒng)能夠產(chǎn)生語義相關(guān)的回復(fù),但由于模型本身的限制,無法保證回復(fù)語句的正確性。例如,對(duì)于“姚明有多高?”這一問題,其回復(fù)可能是“姚明身高1.7m?!保@個(gè)回復(fù)單從語言角度來講是合適的,但是從知識(shí)的角度來講是錯(cuò)誤的。因此,現(xiàn)有的技術(shù)或系統(tǒng)只考慮自動(dòng)問答,或只考慮自然語言對(duì)話,對(duì)對(duì)話中問題的回復(fù)的準(zhǔn)確率低。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種用于人機(jī)對(duì)話的方法、神經(jīng)網(wǎng)絡(luò)系統(tǒng)和用戶設(shè)備,可以與用戶進(jìn)行自然語言交互,并且依據(jù)知識(shí)庫作出基于事實(shí)的正確的自然語言答案。第一方面,本發(fā)明提供了一種用于人機(jī)對(duì)話的方法,包括:神經(jīng)網(wǎng)絡(luò)系統(tǒng)獲取用戶輸入的自然語言問題;所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)將所述自然語言問題轉(zhuǎn)化為問題向量;所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)從知識(shí)庫中通過文本檢索,獲得與所述自然語言問題相關(guān)的至少一個(gè)知識(shí)答案,每個(gè)所述知識(shí)答案與一個(gè)知識(shí)答案向量對(duì)應(yīng);所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)根據(jù)所述問題向量和至少一個(gè)所述知識(shí)答案向量,計(jì)算獲得基于所述知識(shí)庫的中間結(jié)果向量,所述中間結(jié)果向量用于指示所述問題向量和每個(gè)所述知識(shí)答案向量的相似度;所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)將所述問題向量和所述中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成所述自然語言問題的自然語言答案。其中,所述根據(jù)所述問題向量和至少一個(gè)所述知識(shí)答案向量,計(jì)算獲得基于所述知識(shí)庫的中間結(jié)果向量,包括:將所述問題向量和至少一個(gè)所述知識(shí)答案向量作為所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第二神經(jīng)網(wǎng)絡(luò)模塊的輸入,通過所述第二神經(jīng)網(wǎng)絡(luò)模塊計(jì)算所述問題向量與每個(gè)所述知識(shí)答案向量的相似度,其中,所述相似度構(gòu)成所述中間結(jié)果向量的元素。上述過程是神經(jīng)網(wǎng)絡(luò)系統(tǒng)的使用過程。可以在使用過程中,選擇出至少一個(gè)知識(shí)答案后計(jì)算知識(shí)答案向量。此外,也可以在神經(jīng)網(wǎng)絡(luò)系統(tǒng)的訓(xùn)練過程,提前將知識(shí)答案向量訓(xùn)練好。在一個(gè)例子中,所述知識(shí)答案為三元組,所述知識(shí)答案向量為三元組向量,所述三元組向量是將所述三元組作為所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第四神經(jīng)網(wǎng)絡(luò)模塊的輸入計(jì)算獲得的。具體地,所述三元組向量可以是根據(jù)以下步驟確定的:將所述三元組的主語、謂語和賓語分別用第一獨(dú)熱向量、第二獨(dú)熱向量和第三獨(dú)熱向量表示;將所述第一獨(dú)熱向量、所述第二獨(dú)熱向量和所述第三獨(dú)熱向量分別與投影矩陣運(yùn)算,獲得第一低維向量、第二低維向量和第三低維向量,其中,所述投影矩陣為所述第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù);根據(jù)所述第一低維向量、所述第二低維向量和所述第三低維向量,計(jì)算獲得所述三元組向量。在訓(xùn)練過程中,所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)的參數(shù),即所述第一神經(jīng)網(wǎng)絡(luò)模塊、所述第二神經(jīng)網(wǎng)絡(luò)模塊、所述第三神經(jīng)網(wǎng)絡(luò)模塊和所述第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù),可以是通過最大化訓(xùn)練數(shù)據(jù)上的似然函數(shù)的結(jié)果得到的,其中,所述訓(xùn)練數(shù)據(jù)包括多組所述自然語言問題和所述自然語言答案。其中,優(yōu)選地,可以采用隨機(jī)梯度下降算法來進(jìn)行訓(xùn)練。在第一方面的一種可選的實(shí)現(xiàn)方式中,將所述自然語言問題轉(zhuǎn)化為問題向量,可以包括:將所述自然語言問題作為所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第一神經(jīng)網(wǎng)絡(luò)模塊的輸入,將所述自然語言問題的詞序列表示為低維向量序列;通過所述第一神經(jīng)網(wǎng)絡(luò)模塊的遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)所述低維向量序列進(jìn)行運(yùn)算,獲得所述問題向量。在第一方面的一種可選的實(shí)現(xiàn)方式中,所述將所述問題向量和所述中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成所述自然語言問題的自然語言答案,可以包括:將所述問題向量和所述中間結(jié)果向量作為所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第三神經(jīng)網(wǎng)絡(luò)模塊的輸入,通過所述第三神經(jīng)網(wǎng)絡(luò)模塊的遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,計(jì)算以所述問題向量和所述中間結(jié)果向量作為條件的輸出序列的聯(lián)合概率,生成所述自然語言答案。在第一方面的一種可選的實(shí)現(xiàn)方式中,所述將所述問題向量和所述中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成所述自然語言問題的自然語言答案,包括:將所述問題向量和所述中間結(jié)果向量作為輸入,通過所述第三神經(jīng)網(wǎng)絡(luò)模塊的基于注意attention向量技術(shù)的遞歸神經(jīng)網(wǎng)絡(luò)模型,計(jì)算輸出序列的概率,生成所述自然語言答案。第二方面,提供了一種用于人機(jī)對(duì)話的神經(jīng)網(wǎng)絡(luò)系統(tǒng),包括獲取模塊、第一神經(jīng)網(wǎng)絡(luò)模塊、檢索模塊、第二神經(jīng)網(wǎng)絡(luò)模塊和第三神經(jīng)網(wǎng)絡(luò)模塊,用于執(zhí)行第一方面相應(yīng)的實(shí)現(xiàn)方式。其中,獲取模塊,用于獲取用戶輸入的自然語言問題;第一神經(jīng)網(wǎng)絡(luò)模塊,用于將所述獲取模塊獲取的所述自然語言問題轉(zhuǎn)化為問題向量;檢索模塊,用于從知識(shí)庫中通過文本檢索,獲得與所述獲取模塊獲取的所述自然語言問題相關(guān)的至少一個(gè)知識(shí)答案,每個(gè)所述知識(shí)答案與一個(gè)知識(shí)答案向量對(duì)應(yīng);第二神經(jīng)網(wǎng)絡(luò)模塊,用于根據(jù)所述第一神經(jīng)網(wǎng)絡(luò)模塊獲得的所述問題向量和所述檢索模塊獲得的至少一個(gè)所述知識(shí)答案向量,計(jì)算獲得基于所述知識(shí)庫的中間結(jié)果向量,所述中間結(jié)果向量用于指示所述問題向量和每個(gè)所述知識(shí)答案向量的相似度;第三神經(jīng)網(wǎng)絡(luò)模塊,用于將所述第一神經(jīng)網(wǎng)絡(luò)模塊獲得的所述問題向量和所述第二神經(jīng)網(wǎng)絡(luò)模塊獲得的所述中間結(jié)果向量作為作為輸入,通過計(jì)算輸出序列的概率,生成所述自然語言問題的自然語言答案。在第二方面的一種可選的實(shí)現(xiàn)方式中,所述第二神經(jīng)網(wǎng)絡(luò)模塊具體用于:將所述問題向量和至少一個(gè)所述知識(shí)答案向量作為輸入,計(jì)算所述問題向量與每個(gè)所述知識(shí)答案向量的相似度,其中,所述相似度構(gòu)成所述中間結(jié)果向量的元素。在第二方面的一種可選的實(shí)現(xiàn)方式中,所述知識(shí)答案為三元組,所述知識(shí)答案向量為三元組向量,所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)還包括:第四神經(jīng)網(wǎng)絡(luò)模塊,用于將所述三元組作為輸入,計(jì)算獲得所述三元組向量。在第二方面的一種可選的實(shí)現(xiàn)方式中,所述第四神經(jīng)網(wǎng)絡(luò)模塊具體用于:將所述三元組的主語、謂語和賓語分別用第一獨(dú)熱向量、第二獨(dú)熱向量和第三獨(dú)熱向量表示;將所述第一獨(dú)熱向量、所述第二獨(dú)熱向量和所述第三獨(dú)熱向量分別與投影矩陣運(yùn)算,獲得第一低維向量、第二低維向量和第三低維向量,其中,所述投影矩陣為所述第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù);根據(jù)所述第一低維向量、所述第二低維向量和所述第三低維向量,計(jì)算獲得所述三元組向量。在第二方面的一種可選的實(shí)現(xiàn)方式中,所述第一神經(jīng)網(wǎng)絡(luò)模塊具體用于:將所述自然語言問題作為輸入,將所述自然語言問題的詞序列表示為低維向量序列;通過遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)所述低維向量序列進(jìn)行運(yùn)算,獲得所述問題向量。在第二方面的一種可選的實(shí)現(xiàn)方式中,所述第三神經(jīng)網(wǎng)絡(luò)模塊具體用于:將所述問題向量和所述中間結(jié)果向量作為輸入,通過遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,計(jì)算以所述問題向量和所述中間結(jié)果向量作為條件的輸出序列的聯(lián)合概率,生成所述自然語言答案。在第二方面的一種可選的實(shí)現(xiàn)方式中,所述第三神經(jīng)網(wǎng)絡(luò)模塊具體用于:將所述問題向量和所述中間結(jié)果向量作為輸入,通過基于注意attention向量技術(shù)的遞歸神經(jīng)網(wǎng)絡(luò)模型,計(jì)算輸出序列的概率,生成所述自然語言答案。在第二方面的一種可選的實(shí)現(xiàn)方式中,所述第一神經(jīng)網(wǎng)絡(luò)模塊、所述第二神經(jīng)網(wǎng)絡(luò)模塊、所述第三神經(jīng)網(wǎng)絡(luò)模塊和所述第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù)是通過最大化訓(xùn)練數(shù)據(jù)上的似然函數(shù)結(jié)果得到的,其中,所述訓(xùn)練數(shù)據(jù)包括多組所述自然語言問題和所述自然語言答案。第三方面,提供了一種具有人機(jī)對(duì)話功能的用戶設(shè)備,包括輸入設(shè)備、處理器和存儲(chǔ)器,所述輸入設(shè)備用于獲取用戶的輸入,所述存儲(chǔ)器用于存儲(chǔ)指令,所述處理器用于執(zhí)行所述存儲(chǔ)器存儲(chǔ)的指令,以用于完成第一方面的相應(yīng)的實(shí)現(xiàn)方式,并且第三方面的用戶設(shè)備的各器件可以與第二方面的神經(jīng)網(wǎng)絡(luò)系統(tǒng)的相應(yīng)模塊對(duì)應(yīng)。優(yōu)選地,第三方面的用戶設(shè)備還可以包括輸出設(shè)備,以用于用于輸出所述神經(jīng)網(wǎng)絡(luò)系統(tǒng)生成的自然語言答案。本發(fā)明實(shí)施例提供的用于人機(jī)對(duì)話的方法、神經(jīng)網(wǎng)絡(luò)系統(tǒng)和用戶設(shè)備,通過將自然語言問題和知識(shí)庫向量化,通過向量計(jì)算,將對(duì)話和基于知識(shí)庫的問答結(jié)合,使之能夠與用戶進(jìn)行自然語言交互,并且依據(jù)知識(shí)庫作出基于事實(shí)的正確的自然語言答案。附圖說明為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是一種短文本對(duì)話模型的架構(gòu)的示意圖。圖2是本發(fā)明一個(gè)實(shí)施例的用于人機(jī)對(duì)話的訓(xùn)練過程的示意圖。圖3是第三神經(jīng)網(wǎng)絡(luò)模塊的計(jì)算流程的示意圖。圖4是本發(fā)明一個(gè)實(shí)施例的用于人機(jī)對(duì)話的方法的示意性流程圖。圖5是本發(fā)明一個(gè)實(shí)施例的用于人機(jī)對(duì)話的神經(jīng)網(wǎng)絡(luò)系統(tǒng)的示意性框圖。圖6是本發(fā)明一個(gè)實(shí)施例的具有人機(jī)對(duì)話功能的用戶設(shè)備的示意性框圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。下面首先簡(jiǎn)單介紹現(xiàn)有的幾種自動(dòng)問答系統(tǒng)和自然語言對(duì)話系統(tǒng)。基于信息檢索的自動(dòng)問答系統(tǒng):基于信息檢索的自動(dòng)問答技術(shù)通常分為三個(gè)步驟:?jiǎn)栴}分析、文檔檢索和答案抽取。其中,問題分析:利用自然語言處理技術(shù)對(duì)用戶提出的問題進(jìn)行分析,包括問題類型識(shí)別、中心詞提取、同義詞擴(kuò)展和問題轉(zhuǎn)述等。文檔檢索:根據(jù)問題分析步驟的輸出,對(duì)索引的文檔庫進(jìn)行檢索并排序,并從相關(guān)文檔中找出與問題相關(guān)的段落。答案抽?。簭奈臋n檢索步驟返回的相關(guān)段落中,根據(jù)問題的類型,對(duì)可能的答案片段進(jìn)行抽取和打分、排序,最后返回最相關(guān)的答案。上述三個(gè)步驟均存在一些技術(shù)挑戰(zhàn)(例如,問題類型識(shí)別、排序、答案抽取等),可能會(huì)導(dǎo)致問答系統(tǒng)的準(zhǔn)確率偏低。同時(shí),傳統(tǒng)的檢索系統(tǒng)無法處理字面失配的問題,例如問題為“姚明的老婆是誰?”,而文檔中的敘述為“姚明的太太…”,則此時(shí)由于“老婆”和“太太”的字面不匹配,可能會(huì)導(dǎo)致答案無法召回或錯(cuò)誤?;诮Y(jié)構(gòu)化知識(shí)庫的自動(dòng)問答系統(tǒng):基于結(jié)構(gòu)化知識(shí)庫的自動(dòng)問答技術(shù)首先從大量數(shù)據(jù)(通常是非結(jié)構(gòu)化或半結(jié)構(gòu)化的數(shù)據(jù))中獲取或挖掘結(jié)構(gòu)化的知識(shí),并構(gòu)建結(jié)構(gòu)化的知識(shí)庫。知識(shí)的結(jié)構(gòu)通常用三元組來表示:(主語(subject),謂詞(predicate),賓語(object))。主語通常是一個(gè)實(shí)體,賓語可能是另一個(gè)實(shí)體或?qū)傩?,謂詞表明兩者的關(guān)系。例如,(姚明,妻子,葉莉)就是一個(gè)三元組。知識(shí)庫由多個(gè)三元組構(gòu)成,通??梢杂脠D的結(jié)構(gòu)表示(實(shí)體為圖的節(jié)點(diǎn),關(guān)系為邊)。類似的概念包括語義網(wǎng)(semanticweb),本體庫(ontology),關(guān)系數(shù)據(jù)(linkeddata)和知識(shí)圖譜(knowledgegraph)等。由于知識(shí)庫通常從多個(gè)數(shù)據(jù)源獲取,那么知識(shí)的融合和消歧也是構(gòu)建知識(shí)庫的工作之一。上述自動(dòng)化構(gòu)建的知識(shí)庫的過程可能存在準(zhǔn)確率的問題,因此必要的情況下,會(huì)加入人力來進(jìn)行校準(zhǔn)。知識(shí)庫構(gòu)建好后,則可以在其上進(jìn)行查詢和推理。由于知識(shí)庫是結(jié)構(gòu)化數(shù)據(jù),因此可以使用關(guān)系數(shù)據(jù)庫或圖數(shù)據(jù)庫存儲(chǔ),并在其上通過結(jié)構(gòu)化數(shù)據(jù)的查詢語句(例如結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL)和簡(jiǎn)單協(xié)議和RDF查詢語言(SimpleProtocolandRDFQueryLanguage,SparQL)等,其中,RDF是指資源描述框架(ResourceDescriptionFramework))進(jìn)行查詢。對(duì)于用戶輸入的自然語言,需要將其轉(zhuǎn)化為特定的查詢語言,這一過程通常稱為語義解析(semanticparsing)。語義解析是自然語言處理中一個(gè)很有挑戰(zhàn)的問題。上述技術(shù)面臨兩方面的挑戰(zhàn):一方面,大規(guī)模知識(shí)庫的建立是一個(gè)復(fù)雜的過程,目前的自然語言處理技術(shù)還不能做到完全的自動(dòng)化,往往需要人工的干預(yù)來校準(zhǔn);另一方面,語義解析同樣是一個(gè)尚未完全解決的問題,也面臨著自然語言多義性和歧義性的問題。在當(dāng)前的現(xiàn)有技術(shù)中,工業(yè)界的自動(dòng)問答系統(tǒng),可以采用現(xiàn)有技術(shù)一和現(xiàn)有技術(shù)二兩種技術(shù)(基于信息檢索和基于知識(shí)庫)的混合技術(shù)。基于信息檢索的自然語言對(duì)話系統(tǒng):基于信息檢索的自然語言對(duì)話技術(shù)將大規(guī)模的對(duì)話語料以“原文-回復(fù)”對(duì)的方式進(jìn)行索引。在線對(duì)話時(shí),通過搜索找到與用戶輸入相似的原文,并將其對(duì)應(yīng)的回復(fù)返回給用戶。然而,當(dāng)用戶輸入與庫中語料匹配度較低時(shí),無法保證系統(tǒng)返回語義相關(guān)的對(duì)話。簡(jiǎn)單來講,該系統(tǒng)沒有可擴(kuò)展性,也無法產(chǎn)生語料從沒有的回復(fù)?;跈C(jī)器翻譯模型的自然語言對(duì)話系統(tǒng):將原文或回復(fù)類比為機(jī)器翻譯中的源語言(例如英語)和目標(biāo)語言(例如漢語)。然后套用統(tǒng)計(jì)機(jī)器翻譯的方法(例如,基于短語的機(jī)器翻譯)來訓(xùn)練。測(cè)試(即使用系統(tǒng))時(shí),以用戶輸入作為統(tǒng)計(jì)翻譯模型的源語言輸入,經(jīng)過翻譯模型,生成目標(biāo)語言序列,即給用戶的回復(fù)。機(jī)器翻譯模型在實(shí)際短文本對(duì)話數(shù)據(jù)上的表現(xiàn)并不好,其主要原因是對(duì)話數(shù)據(jù)中的數(shù)據(jù)分布不同于機(jī)器翻譯中的雙語“平行語料”。對(duì)話數(shù)據(jù)中,對(duì)于同一個(gè)原文,可能有很多不同的回復(fù)。機(jī)器翻譯模型中主要考慮詞和詞之間的線性映射關(guān)系,這種復(fù)雜的映射關(guān)系可能是導(dǎo)致機(jī)器翻譯模型失敗的原因?;谏疃壬窠?jīng)網(wǎng)絡(luò)的自然語言對(duì)話系統(tǒng):隨著深度學(xué)習(xí)的發(fā)展,學(xué)術(shù)界提出了一種基于深度神經(jīng)網(wǎng)絡(luò)架構(gòu)的“序列到序列”學(xué)習(xí)(sequence-to-sequencelearning)模型。基于深度神經(jīng)網(wǎng)絡(luò)的自然語言對(duì)話技術(shù)被用于在大規(guī)模的對(duì)話語料訓(xùn)練得到自然語言對(duì)話系統(tǒng)。該系統(tǒng)接受用戶的輸入序列,然后通過多層神經(jīng)網(wǎng)絡(luò)的計(jì)算,逐詞的輸出回復(fù)的序列。圖1是一種短文本對(duì)話模型的架構(gòu)的示意圖。具體地,輸入的自然語言序列經(jīng)過編碼器(Encoder),被轉(zhuǎn)化為中間表示向量,再經(jīng)過解碼器(Decoder)順序生成輸出序列。其中,解碼器和編碼器分別通過遞歸神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)實(shí)現(xiàn),并且在解碼的每一個(gè)步驟中,都通過一種attention向量技術(shù)來更加有目的確定下一步輸出?;谏疃壬窠?jīng)網(wǎng)絡(luò)的自然語言對(duì)話系統(tǒng)在效果上由于基于檢索和基于機(jī)器翻譯的對(duì)話系統(tǒng)。雖然能夠產(chǎn)生語義相關(guān)的回復(fù),但由于模型本身的限制,無法保證回復(fù)語句的正確性。例如對(duì)于“姚明有多高?”這一問題,其回復(fù)可能是“姚明身高1.7m?!?,這個(gè)回復(fù)單從語言角度來講是合適的,但是從知識(shí)的角度來講是錯(cuò)誤的。因此如何讓基于深度神經(jīng)網(wǎng)絡(luò)的自然語言對(duì)話系統(tǒng)返回知識(shí)正確的對(duì)話,是一個(gè)有實(shí)際意義的問題,也是本發(fā)明所關(guān)注的問題。注意(attention)向量技術(shù):attention向量技術(shù)能夠起到對(duì)齊原問題和已輸出的答案部分,從而幫助神經(jīng)網(wǎng)絡(luò)系統(tǒng)更加準(zhǔn)確的輸出下一個(gè)詞,其效果在機(jī)器翻譯和短文本對(duì)話中都得到了驗(yàn)證。attention向量通常如下計(jì)算:其中,是編碼器的狀態(tài)向量集合,αj,i是動(dòng)態(tài)的加權(quán)系數(shù)。αj,i通常如下計(jì)算:其中,aj,i=f(sj-1,hi)。這里,sj-1表示解碼器(Decoder)的第j-1個(gè)狀態(tài)向量,f是一個(gè)帶參數(shù)的神經(jīng)網(wǎng)絡(luò)模型。f的一種常用的形式是:其中,va,Wa,Ua為參數(shù)向量或矩陣。利用這種計(jì)算方式,每次解碼器產(chǎn)生一個(gè)詞時(shí),都會(huì)動(dòng)態(tài)的參考編碼器的狀態(tài)向量,而這種動(dòng)態(tài)的權(quán)重是由解碼器的上一個(gè)狀態(tài)向量和編碼器所有的狀態(tài)向量的函數(shù)決定的。綜上所述,現(xiàn)有的技術(shù)或系統(tǒng)只考慮自動(dòng)問答,或只考慮自然語言對(duì)話,對(duì)對(duì)話中問題的回復(fù)的準(zhǔn)確率低。本發(fā)明以基于深度神經(jīng)網(wǎng)絡(luò)的自然語言對(duì)話系統(tǒng)為部分基礎(chǔ),通過深度學(xué)習(xí)技術(shù),將自然語言對(duì)話和基于知識(shí)庫的問答相結(jié)合,使得系統(tǒng)能夠在對(duì)話中對(duì)用戶的提問作出知識(shí)上正確的自然語言回復(fù)。應(yīng)理解,本發(fā)明實(shí)施例所提供的用于人機(jī)對(duì)話的方法是一種基于神經(jīng)網(wǎng)絡(luò)模型的自然語言對(duì)話式問答的方法,所提供的用于人機(jī)對(duì)話的神經(jīng)網(wǎng)絡(luò)系統(tǒng)是一種基于神經(jīng)網(wǎng)絡(luò)模型的自然語言對(duì)話式問答系統(tǒng)。作為一個(gè)機(jī)器學(xué)習(xí)模型,基于神經(jīng)網(wǎng)絡(luò)模型的自然語言對(duì)話式問答系統(tǒng)可以分為訓(xùn)練和使用兩個(gè)階段。訓(xùn)練階段是根據(jù)訓(xùn)練數(shù)據(jù),通過反向傳播算法或者隨機(jī)梯度下降算法等,最大化訓(xùn)練數(shù)據(jù)上的似然函數(shù)來確定神經(jīng)網(wǎng)絡(luò)系統(tǒng)中各模塊的參數(shù)。在本發(fā)明實(shí)施例中,所使用的訓(xùn)練數(shù)據(jù)可以由這樣的實(shí)例構(gòu)成:(問題,答案,匹配的三元組)。例如:?jiǎn)栴}:姚明有多高?答案:他有2.29m,非常非常高。匹配的三元組:(姚明,身高,2.29m)或者:?jiǎn)栴}:紅樓夢(mèng)是誰寫的?答案:是清代的曹雪芹。匹配的三元組:(紅樓夢(mèng),作者,曹雪芹)使用階段是基于已經(jīng)構(gòu)建的知識(shí)庫,以用戶的自然語言問題為輸入,通過神經(jīng)網(wǎng)絡(luò)系統(tǒng)中各個(gè)模型的計(jì)算,產(chǎn)生自然語言答案返回給用戶。為了便于理解,下面從訓(xùn)練階段開始進(jìn)行介紹。首先構(gòu)建結(jié)構(gòu)化知識(shí)庫(本文中也可以簡(jiǎn)稱為知識(shí)庫)和訓(xùn)練數(shù)據(jù)。知識(shí)庫基于一些“事實(shí)”(facts)組成。結(jié)構(gòu)化的知識(shí)庫中包括記錄(records)或者“元組(tuple)”。具體地,可以從互聯(lián)網(wǎng)獲取結(jié)構(gòu)化知識(shí)庫。在本發(fā)明實(shí)施例中,知識(shí)庫具體可以由多個(gè)三元組構(gòu)成,也可以由包括多條結(jié)構(gòu)化的記錄的數(shù)據(jù)庫構(gòu)成,本發(fā)明實(shí)施例對(duì)此不作限定。以知識(shí)庫由多個(gè)三元組構(gòu)成為例,可以從百度百科、互動(dòng)百科、豆瓣等百科知識(shí)網(wǎng)站抓取網(wǎng)頁,并通過對(duì)網(wǎng)頁中的表格解析得到結(jié)構(gòu)化的三元組。經(jīng)過進(jìn)一步的處理,例如可以包括去噪、合并等處理。最終抽取得到多個(gè)三元組,構(gòu)成結(jié)構(gòu)化知識(shí)庫??梢詮幕ヂ?lián)網(wǎng)獲取訓(xùn)練數(shù)據(jù),該訓(xùn)練數(shù)據(jù)可以是自然語言問答對(duì)話數(shù)據(jù)。在本發(fā)明實(shí)施例中,可以從百度知道、搜搜問問等社區(qū)問答網(wǎng)站抓取網(wǎng)頁,并解析其中的“問題-答案”對(duì),抽取出多個(gè)“問題-答案”對(duì)。在訓(xùn)練過程中,可以逐一掃描上述“問題-答案”對(duì)數(shù)據(jù),檢查是否與知識(shí)庫中的某個(gè)或多個(gè)三元組“匹配”,其中,“匹配”的定義可以是:1、三元組的subject出現(xiàn)在問題中;2、三元組的object出現(xiàn)在答案中;3、三元組的object不出現(xiàn)在問題中。應(yīng)理解,本發(fā)明實(shí)施例中,知識(shí)庫的大小和訓(xùn)練數(shù)據(jù)的大小可以根據(jù)訓(xùn)練需要進(jìn)行調(diào)整。在一個(gè)具體的例子中,結(jié)構(gòu)化知識(shí)庫中可以包括5.5M個(gè)三元組,“問題-答案”對(duì)可以包括132M個(gè),從中選取出696K個(gè)“問題-答案”對(duì)作為訓(xùn)練數(shù)據(jù)。在本發(fā)明實(shí)施例中,每個(gè)詞可以對(duì)應(yīng)一個(gè)獨(dú)熱(one-hot)向量。所謂獨(dú)熱向量是指,例如,對(duì)于某種語言而言,共有A個(gè)詞,對(duì)每一個(gè)詞進(jìn)行編號(hào),任一個(gè)詞對(duì)應(yīng)一個(gè)獨(dú)熱向量,該獨(dú)熱向量具有M維,其中該詞的編號(hào)對(duì)應(yīng)的元素為1,其余的元素為零。獨(dú)熱向量為高維向量。設(shè)輸入的自然語言問題為序列x=(x1,x2,...,xT),即將自然語言問題分解為T個(gè)詞,分別對(duì)應(yīng)x1,x2,...,xT。xi為獨(dú)熱向量。設(shè)輸出的自然語言答案為y=(y1,y2,...,yT′),即自然語言答案為T′個(gè)詞組合而成的,T′個(gè)詞分別對(duì)應(yīng)y1,y2,...,yT′。yi為獨(dú)熱向量。三元組為t=(ts,tp,to),ts/p/o均為獨(dú)熱向量,分別表示三元組中的主語、謂詞和賓語。圖2是本發(fā)明一個(gè)實(shí)施例的用于人機(jī)對(duì)話的訓(xùn)練過程的示意圖。如圖2所示,其主要包括以下步驟:S210,將結(jié)構(gòu)化知識(shí)庫的三元組作為神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第四神經(jīng)網(wǎng)絡(luò)模塊的輸入,計(jì)算得到三元組向量。應(yīng)理解,本實(shí)施例是以三元組為例進(jìn)行說明的,但知識(shí)庫不限于三元組形式,也可以是其它的結(jié)構(gòu)化的形式。具體地,結(jié)構(gòu)化知識(shí)庫由N個(gè)三元組組成,每個(gè)三元組由主語、謂詞、賓語三項(xiàng)組成,不同三元組的項(xiàng)可能存在重復(fù)。因此,知識(shí)庫中包含有限個(gè)項(xiàng)。通過第一投影矩陣Wt,將知識(shí)庫中所有的項(xiàng)(即詞)映射為下列低維向量:即為ts/p/o的低維向量的表示。根據(jù)詞的低維向量的表示,可以進(jìn)一步得到三元組向量。其中,一種可選的方式是求平均,即:應(yīng)理解,求平均只是一種可實(shí)現(xiàn)的方式,還可以通過其它的方式根據(jù)詞的低維向量得到三元組向量,本發(fā)明實(shí)施例對(duì)此不作限定。綜上,三元組向量是根據(jù)以下步驟確定的:將該三元組的主語、謂語和賓語分別用第一獨(dú)熱向量、第二獨(dú)熱向量和第三獨(dú)熱向量表示;將該第一獨(dú)熱向量、該第二獨(dú)熱向量和該第三獨(dú)熱向量分別與投影矩陣運(yùn)算,獲得第一低維向量、第二低維向量和第三低維向量,其中,該投影矩陣為該第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù);根據(jù)該第一低維向量、該第二低維向量和該第三低維向量,計(jì)算獲得該三元組向量。知識(shí)庫中所有的三元組向量的集合可以構(gòu)成知識(shí)庫的低維向量的表示。其中,第一投影矩陣Wt即為第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù),后續(xù)在訓(xùn)練過程中需要訓(xùn)練的即包括該參數(shù)。應(yīng)理解,第四神經(jīng)網(wǎng)絡(luò)模塊中還可以包括其它的參數(shù),本發(fā)明實(shí)施例對(duì)此不作限定。S220,獲取用戶輸入的自然語言問題。這里,自然語言問題可以由用戶通過麥克風(fēng)等進(jìn)行語音輸入,也可以通過鍵盤、鼠標(biāo)等進(jìn)行文字或圖形的輸入,還可以是其它的一些輸入形式,系統(tǒng)根據(jù)用戶輸入的自然語言問題能夠轉(zhuǎn)化為序列x=(x1,x2,...,xT)即可,本發(fā)明實(shí)施例對(duì)具體的輸入形式不作限定。S230,將自然語言問題轉(zhuǎn)化為問題向量??梢詫⒆匀徽Z言問題作為神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第一神經(jīng)網(wǎng)絡(luò)模塊的輸入,計(jì)算獲得該自然語言問題對(duì)應(yīng)的問題向量。具體地,用戶輸入的多個(gè)自然語言問題可以看作是多個(gè)長(zhǎng)度變化的詞序列x=(x1,x2,...,xT)(例如“姚明有多高?”是三個(gè)詞,“紅樓夢(mèng)的作者是誰?”是五個(gè)詞)。將該詞序列映射為低維向量序列。再將低維向量序列通過第一神經(jīng)網(wǎng)絡(luò)模塊(第一神經(jīng)網(wǎng)絡(luò)模塊可以基于遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型等,下面的描述以遞歸神經(jīng)網(wǎng)絡(luò)模型為例進(jìn)行展開)計(jì)算得到一組長(zhǎng)度固定(即不管是多長(zhǎng)多短的問題,都可以轉(zhuǎn)化為一個(gè)定長(zhǎng)的向量,比如一個(gè)1000維的向量)的向量集合,可以稱這些向量為問題向量。這些問題向量構(gòu)成了自然語言問題在低維空間上的表示。換而言之,可以將自然語言問題中的詞分別映射為高維的獨(dú)熱向量x1,x2,...,xT。繼而,將各詞映射為低維向量,表示為其中,Wx為第二投影矩陣。之后,可以再通過遞歸神經(jīng)網(wǎng)絡(luò)模型對(duì)輸入序列進(jìn)行編碼,獲得問題向量。遞歸神經(jīng)網(wǎng)絡(luò)模型的每個(gè)隱藏狀態(tài)(hiddenstate)變量通過如下方式遞歸計(jì)算:其中,h0可以為任意向量,例如可以是一個(gè)零向量;fh是多層神經(jīng)網(wǎng)絡(luò)函數(shù)。在本發(fā)明實(shí)施例中,一種簡(jiǎn)單的實(shí)現(xiàn)的方式是其中,是sigmoid函數(shù)在本發(fā)明實(shí)施例中,還可以使用更復(fù)雜的長(zhǎng)短期記憶(LongShort-TermMemory,LSTM)神經(jīng)網(wǎng)絡(luò)模型或者門控遞歸單元(GatedRecurrentUnit,GRU)模型來對(duì)fh進(jìn)行建模。由此得到的遞歸神經(jīng)網(wǎng)絡(luò)模型的隱藏狀態(tài)變量,隱藏狀態(tài)變量和詞的向量的表示共同構(gòu)成了輸入問題的向量表示其中,第二投影矩陣Wx為第一神經(jīng)網(wǎng)絡(luò)模塊的參數(shù),fh中還可以包括一些參數(shù),后續(xù)在訓(xùn)練過程中需要訓(xùn)練的即包括這些參數(shù)。應(yīng)理解,第一神經(jīng)網(wǎng)絡(luò)模塊中還可以包括其它的參數(shù),本發(fā)明實(shí)施例對(duì)此不作限定。應(yīng)理解,本發(fā)明實(shí)施例中,第一神經(jīng)網(wǎng)絡(luò)模塊將自然語言問題轉(zhuǎn)化為問題向量的方法可以有多種。例如,通過RNN的編碼器(即基于遞歸神經(jīng)網(wǎng)絡(luò)模型)將自然語言問題轉(zhuǎn)化為問題向量,或者通過卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)的編碼器(即基于卷積神經(jīng)網(wǎng)絡(luò)模型)將自然語言問題轉(zhuǎn)化為問題向量,等等,本發(fā)明實(shí)施例對(duì)此不作限定。綜上,將該自然語言問題轉(zhuǎn)化為問題向量,可以包括:將該自然語言問題作為該神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第一神經(jīng)網(wǎng)絡(luò)模塊的輸入,將該自然語言問題的詞序列表示為低維向量序列;通過該第一神經(jīng)網(wǎng)絡(luò)模塊的遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)該低維向量序列進(jìn)行運(yùn)算,獲得該問題向量。S240,從知識(shí)庫中通過文本檢索(textretrieval),獲得與該自然語言問題相關(guān)的至少一個(gè)知識(shí)答案,每個(gè)該知識(shí)答案與一個(gè)知識(shí)答案向量對(duì)應(yīng)。以知識(shí)答案為三元組為例,則是獲得與自然語言問題相關(guān)的至少一個(gè)三元組,其中,至少一個(gè)三元組與至少一個(gè)三元組向量對(duì)應(yīng)。即,對(duì)于每個(gè)自然語言問題,可以通過文本檢索的方式找到相關(guān)的候選三元組集合,進(jìn)而得到候選的三元組向量集合。S250,該神經(jīng)網(wǎng)絡(luò)系統(tǒng)根據(jù)該問題向量和至少一個(gè)該知識(shí)答案向量,計(jì)算獲得基于該知識(shí)庫的中間結(jié)果向量,該中間結(jié)果向量用于指示該問題向量和每個(gè)該知識(shí)答案向量的相似度。仍以知識(shí)答案向量為三元組向量為例,可以將問題向量和至少一個(gè)三元組向量作為神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第二神經(jīng)網(wǎng)絡(luò)模塊的輸入,計(jì)算獲得基于結(jié)構(gòu)化知識(shí)庫的中間結(jié)果向量。具體而言,第二神經(jīng)網(wǎng)絡(luò)模塊的作用為將問題向量和從知識(shí)庫中搜索出的相關(guān)的三元組的向量進(jìn)行結(jié)合與匹配,輸出匹配結(jié)果的向量作為中間結(jié)果向量。計(jì)算問題向量與至少一個(gè)三元組中每個(gè)三元組的三元組向量表示的相似度,然后輸出以相似度作為元素的中間結(jié)果向量。該中間結(jié)果向量構(gòu)成了問題與知識(shí)庫中候選三元組匹配結(jié)果的表示。更具體地,對(duì)于候選的三元組向量集合中的每個(gè)三元組向量t,其與問題向量的相似度通過如下方式計(jì)算:S(x,t)=qTMut其中,上式中q為問題的向量表示H的分量,即q可以從H中得到。一種可選的計(jì)算方式是另一種可選的計(jì)算方式是q=hT,當(dāng)然還可以通過其它方式從H中得到q,本發(fā)明實(shí)施例對(duì)此不作限定。上式中M為匹配參數(shù)矩陣。設(shè)有K個(gè)候選三元組向量此時(shí)令r=(r1,...,rK),其中,向量r構(gòu)成了問題與知識(shí)庫的匹配結(jié)果的表示,即中間結(jié)果向量。綜上,根據(jù)該問題向量和至少一個(gè)該知識(shí)答案向量,計(jì)算獲得基于該知識(shí)庫的中間結(jié)果向量,可以包括:將該問題向量和至少一個(gè)該知識(shí)答案向量作為該神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第二神經(jīng)網(wǎng)絡(luò)模塊的輸入,通過該第二神經(jīng)網(wǎng)絡(luò)模塊計(jì)算該問題向量與每個(gè)該知識(shí)答案向量的相似度,其中,該相似度構(gòu)成該中間結(jié)果向量的元素。S260,將該問題向量和該中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成該自然語言問題的自然語言答案。換而言之,將問題向量和中間結(jié)果向量作為神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第三神經(jīng)網(wǎng)絡(luò)模塊的輸入,計(jì)算獲得自然語言問題的自然語言答案。第三神經(jīng)網(wǎng)絡(luò)模塊的作用為將問題向量與匹配結(jié)果的中間結(jié)果向量進(jìn)行綜合,并輸出自然語言答案。具體地,以問題向量和中間結(jié)果向量為輸入,通過第三神經(jīng)網(wǎng)絡(luò)模塊(如,可以基于遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型等)產(chǎn)生一組自然語言的符號(hào)序列,此符號(hào)序列即為輸出的自然語言答案。具體而言,以H和r作為輸入,逐詞產(chǎn)生自然語言的答案序列y=(y1,y2,...,yT′),計(jì)算時(shí)依據(jù)下列公式:p(yj|y1,...,yj-1,x,r)=p(yj|sj,H,r)其中,sj為遞歸神經(jīng)網(wǎng)絡(luò)模型的狀態(tài)變量。由于產(chǎn)生的答案中包含兩類詞:第一類是輔助性的自然語言,第二類是真實(shí)的答案。用二元變量zj來表示這兩種類型(為0表示第一類,為1表示第二類),則:p(yj|yj-1,sj,H,r)=p(zj=0|yj-1,sj)p(yj|yj-1,sj,z=0)+p(zj=1|yj-1,sj)p(yj|z=1,r)其中,p()為聯(lián)合概率函數(shù),以問題向量H和中間結(jié)果向量r作為條件,用于計(jì)算輸出序列的概率。作為一種優(yōu)選地實(shí)施例,對(duì)于p(zj|yj-1,sj)=fz(yj-1,sj),其中,狀態(tài)變量sj=fs(sj-1,yj-1,cj)。在本發(fā)明實(shí)施例中,可以使用LSTM神經(jīng)網(wǎng)絡(luò)模型或者GRU模型來對(duì)fz和fs進(jìn)行建模。注意,其中的cj是隨位置動(dòng)態(tài)變化的attention向量,αj,i∝a(sj-1,hi)。這種attention向量技術(shù)能夠起到對(duì)齊原問題和已輸出的答案部分,從而幫助更加準(zhǔn)確的輸出下一個(gè)詞。p(yj|yj-1,sj,z=0)是產(chǎn)生下一個(gè)自然語言詞語的概率,其建模方式與zj相仿。而對(duì)于答案類型的詞語,p(yj=k|z=1,r)=rk。圖3示出了第三神經(jīng)網(wǎng)絡(luò)模塊的計(jì)算流程的示意圖。應(yīng)理解,在使用階段,生成答案序列的下一詞時(shí),應(yīng)使得聯(lián)合概率結(jié)果最大。在訓(xùn)練階段,可以通過使用優(yōu)化算法(例如隨機(jī)梯度下降算法等),不斷調(diào)整第一神經(jīng)網(wǎng)絡(luò)模塊、第二神經(jīng)網(wǎng)絡(luò)模塊、第三神經(jīng)網(wǎng)絡(luò)模塊和第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù),使得訓(xùn)練數(shù)據(jù)上的似然函數(shù)maxθ∑ilogp(y(i)|x(i))的結(jié)果最大化。綜上,將該問題向量和該中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成該自然語言問題的自然語言答案,可以包括:將該問題向量和該中間結(jié)果向量作為該神經(jīng)網(wǎng)絡(luò)系統(tǒng)的第三神經(jīng)網(wǎng)絡(luò)模塊的輸入,通過該第三神經(jīng)網(wǎng)絡(luò)模塊的遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,計(jì)算以該問題向量和該中間結(jié)果向量作為條件的輸出序列的聯(lián)合概率,生成該自然語言答案。優(yōu)選地,將該問題向量和該中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成該自然語言問題的自然語言答案,可以包括:將該問題向量和該中間結(jié)果向量作為輸入,通過該第三神經(jīng)網(wǎng)絡(luò)模塊的基于注意(attention)向量技術(shù)的遞歸神經(jīng)網(wǎng)絡(luò)模型,計(jì)算輸出序列的概率,生成該自然語言答案。以上詳細(xì)介紹了神經(jīng)網(wǎng)絡(luò)系統(tǒng)中各神經(jīng)網(wǎng)絡(luò)模塊的算法,以及訓(xùn)練階段。使用階段與訓(xùn)練階段的原理相似,如圖4所示的用于人機(jī)對(duì)話的方法300,其可以包括:S310,神經(jīng)網(wǎng)絡(luò)系統(tǒng)獲取用戶輸入的自然語言問題。S320,該神經(jīng)網(wǎng)絡(luò)系統(tǒng)將該自然語言問題轉(zhuǎn)化為問題向量。S330,該神經(jīng)網(wǎng)絡(luò)系統(tǒng)從知識(shí)庫中通過文本檢索,獲得與該自然語言問題相關(guān)的至少一個(gè)知識(shí)答案,每個(gè)該知識(shí)答案與一個(gè)知識(shí)答案向量對(duì)應(yīng)。S340,該神經(jīng)網(wǎng)絡(luò)系統(tǒng)根據(jù)該問題向量和至少一個(gè)該知識(shí)答案向量,計(jì)算獲得基于該知識(shí)庫的中間結(jié)果向量,該中間結(jié)果向量用于指示該問題向量和每個(gè)該知識(shí)答案向量的相似度。S350,該神經(jīng)網(wǎng)絡(luò)系統(tǒng)將該問題向量和該中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成該自然語言問題的自然語言答案。應(yīng)理解。三元組向量可以是在訓(xùn)練階段是已經(jīng)計(jì)算好的,在使用階段確定三元組向量不是必需的。本發(fā)明實(shí)施例提供了一種用于人機(jī)對(duì)話的方法,該方法通過將自然語言問題和知識(shí)庫向量化,通過向量計(jì)算,將對(duì)話和基于知識(shí)庫的問答結(jié)合,能夠與用戶進(jìn)行自然語言交互,并且依據(jù)知識(shí)庫作出基于事實(shí)的正確的自然語言答案。實(shí)現(xiàn)本發(fā)明實(shí)施例中的模型后,在訓(xùn)練數(shù)據(jù)采樣300個(gè)例子,以及在“問題-答案”對(duì)再選取出300個(gè)“問題-答案”對(duì)作為測(cè)試數(shù)據(jù)。人工過濾掉其中錯(cuò)誤的例子,對(duì)模型的問答準(zhǔn)確率(答對(duì)的問題占問題總數(shù)的比例)進(jìn)行評(píng)估。選擇了兩種系統(tǒng)作為比較:1)基于知識(shí)庫的信息檢索問答系統(tǒng)(現(xiàn)有技術(shù)一);2)基于深度神經(jīng)網(wǎng)絡(luò)的對(duì)話系統(tǒng)(現(xiàn)有技術(shù)五)。問答準(zhǔn)確率的評(píng)估結(jié)果如表1.表1模型訓(xùn)練數(shù)據(jù)測(cè)試數(shù)據(jù)基于知識(shí)庫的信息檢索問答系統(tǒng)40%36%基于深度神經(jīng)網(wǎng)絡(luò)的對(duì)話系統(tǒng)15%19%本發(fā)明實(shí)施例46%47%從評(píng)估結(jié)果可以看出,本發(fā)明實(shí)施例的方案優(yōu)于已有的兩個(gè)方案,說明本發(fā)明實(shí)施例的系統(tǒng)能夠一定程度的捕捉到自然語言問題的語義,與知識(shí)庫中的知識(shí)做到語義上的匹配,并給出答案。同時(shí),本發(fā)明實(shí)施例的方案能夠產(chǎn)生自然語言的答案,而基于檢索的問答系統(tǒng)無法保證做到這一點(diǎn)。上面詳細(xì)介紹了本發(fā)明實(shí)施例的用于人機(jī)對(duì)話的方法,下面介紹本發(fā)明實(shí)施例的用于人機(jī)對(duì)話的神經(jīng)網(wǎng)絡(luò)系統(tǒng)。圖5是本發(fā)明實(shí)施例的用于人機(jī)對(duì)話的神經(jīng)網(wǎng)絡(luò)系統(tǒng)400的示意性框圖。如圖5所示,用于人機(jī)對(duì)話的神經(jīng)網(wǎng)絡(luò)系統(tǒng)400包括:獲取模塊410,用于獲取用戶輸入的自然語言問題;第一神經(jīng)網(wǎng)絡(luò)模塊420,用于將該獲取模塊410獲取的該自然語言問題轉(zhuǎn)化為問題向量;檢索模塊430,用于從知識(shí)庫中通過文本檢索,獲得與該獲取模塊410獲取的該自然語言問題相關(guān)的至少一個(gè)知識(shí)答案,每個(gè)該知識(shí)答案與一個(gè)知識(shí)答案向量對(duì)應(yīng);第二神經(jīng)網(wǎng)絡(luò)模塊440,用于根據(jù)該第一神經(jīng)網(wǎng)絡(luò)模塊420獲得的該問題向量和該檢索模塊430獲得的至少一個(gè)該知識(shí)答案向量,計(jì)算獲得基于該知識(shí)庫的中間結(jié)果向量,該中間結(jié)果向量用于指示該問題向量和每個(gè)該知識(shí)答案向量的相似度;第三神經(jīng)網(wǎng)絡(luò)模塊450,用于將該第一神經(jīng)網(wǎng)絡(luò)模塊420獲得的該問題向量和該第二神經(jīng)網(wǎng)絡(luò)模塊440獲得的該中間結(jié)果向量作為作為輸入,通過計(jì)算輸出序列的概率,生成該自然語言問題的自然語言答案。本發(fā)明實(shí)施例提供了一種用于人機(jī)對(duì)話的神經(jīng)網(wǎng)絡(luò)系統(tǒng),該神經(jīng)網(wǎng)絡(luò)系統(tǒng)通過將自然語言問題和知識(shí)庫向量化,通過向量計(jì)算得到基于知識(shí)庫的,表示自然語言問題和知識(shí)庫答案相似度的中間結(jié)果向量,再根據(jù)問題向量和中間結(jié)果向量計(jì)算得到基于事實(shí)的正確的自然語言答案??蛇x地,作為一個(gè)實(shí)施例,該知識(shí)答案為三元組,該知識(shí)答案向量為三元組向量,該神經(jīng)網(wǎng)絡(luò)系統(tǒng)400還可以包括:第四神經(jīng)網(wǎng)絡(luò)模塊,用于將該三元組作為輸入,計(jì)算獲得該三元組向量。在本發(fā)明實(shí)施例中,可選地,該第四神經(jīng)網(wǎng)絡(luò)模塊具體可以用于:將該三元組的主語、謂語和賓語分別用第一獨(dú)熱向量、第二獨(dú)熱向量和第三獨(dú)熱向量表示;將該第一獨(dú)熱向量、該第二獨(dú)熱向量和該第三獨(dú)熱向量分別與投影矩陣運(yùn)算,獲得第一低維向量、第二低維向量和第三低維向量,其中,該投影矩陣為該第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù);根據(jù)該第一低維向量、該第二低維向量和該第三低維向量,計(jì)算獲得該三元組向量??蛇x地,作為一個(gè)實(shí)施例,該第一神經(jīng)網(wǎng)絡(luò)模塊420、該第二神經(jīng)網(wǎng)絡(luò)模塊440、該第三神經(jīng)網(wǎng)絡(luò)模塊450和該第四神經(jīng)網(wǎng)絡(luò)模塊的參數(shù)可以是通過最大化訓(xùn)練數(shù)據(jù)上的似然函數(shù)結(jié)果得到的,其中,該訓(xùn)練數(shù)據(jù)包括多組該自然語言問題和該自然語言答案。在本發(fā)明實(shí)施例中,可選地,該第一神經(jīng)網(wǎng)絡(luò)模塊420具體可以用于:將該自然語言問題作為輸入,將該自然語言問題的詞序列表示為低維向量序列;通過遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)該低維向量序列進(jìn)行運(yùn)算,獲得該問題向量。在本發(fā)明實(shí)施例中,可選地,該第二神經(jīng)網(wǎng)絡(luò)模塊440具體可以用于:將所述問題向量和至少一個(gè)所述知識(shí)答案向量作為輸入,計(jì)算所述問題向量與每個(gè)所述知識(shí)答案向量的相似度,其中,所述相似度構(gòu)成所述中間結(jié)果向量的元素。在本發(fā)明實(shí)施例中,可選地,該第三神經(jīng)網(wǎng)絡(luò)模塊450具體可以用于:將該問題向量和該中間結(jié)果向量作為輸入,通過遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,計(jì)算以該問題向量和該中間結(jié)果向量作為條件的輸出序列的聯(lián)合概率,生成該自然語言答案。在本發(fā)明實(shí)施例中,可選地,該第三神經(jīng)網(wǎng)絡(luò)模塊450具體可以用于:將該問題向量和該中間結(jié)果向量作為輸入,通過基于注意attention向量技術(shù)的遞歸神經(jīng)網(wǎng)絡(luò)模型,計(jì)算輸出序列的概率,生成該自然語言答案。應(yīng)注意,本發(fā)明實(shí)施例中,獲取模塊410可以由輸入設(shè)備實(shí)現(xiàn),第一神經(jīng)網(wǎng)絡(luò)模塊420、檢索模塊430、第二神經(jīng)網(wǎng)絡(luò)模塊440、第三神經(jīng)網(wǎng)絡(luò)模塊450和第四神經(jīng)網(wǎng)絡(luò)模塊可以由處理器實(shí)現(xiàn)。如圖6所示,神經(jīng)網(wǎng)絡(luò)系統(tǒng)可以部署于具有人機(jī)對(duì)話功能的用戶設(shè)備500中,該用戶設(shè)備可以包括處理器510、輸入設(shè)備520和存儲(chǔ)器530,其中,存儲(chǔ)器530可以用于存儲(chǔ)處理器510執(zhí)行的代碼等。自然語言答案的輸出可以通過輸出設(shè)備540實(shí)現(xiàn)。其中,輸入設(shè)備520用于獲取用戶輸入的自然語言問題,所述存儲(chǔ)器530用于存儲(chǔ)由所述處理器510執(zhí)行的指令,所述指令可以包括:將所述自然語言問題轉(zhuǎn)化為問題向量;從知識(shí)庫中通過文本檢索,獲得與所述自然語言問題相關(guān)的至少一個(gè)知識(shí)答案,每個(gè)所述知識(shí)答案與一個(gè)知識(shí)答案向量對(duì)應(yīng);根據(jù)所述問題向量和至少一個(gè)所述知識(shí)答案向量,計(jì)算獲得基于所述知識(shí)庫的中間結(jié)果向量,所述中間結(jié)果向量用于指示所述問題向量和每個(gè)所述知識(shí)答案向量的相似度;將所述問題向量和所述中間結(jié)果向量作為輸入,通過計(jì)算輸出序列的概率,生成所述自然語言問題的自然語言答案??蛇x地,作為一個(gè)實(shí)施例,所述處理器510用于:將所述問題向量和至少一個(gè)所述知識(shí)答案向量作為輸入,計(jì)算所述問題向量與每個(gè)所述知識(shí)答案向量的相似度,其中,所述相似度構(gòu)成所述中間結(jié)果向量的元素??蛇x地,作為一個(gè)實(shí)施例,所述知識(shí)答案為三元組,所述知識(shí)答案向量為三元組向量,所述處理器510還用于:將所述三元組的主語、謂語和賓語分別用第一獨(dú)熱向量、第二獨(dú)熱向量和第三獨(dú)熱向量表示;將所述第一獨(dú)熱向量、所述第二獨(dú)熱向量和所述第三獨(dú)熱向量分別與投影矩陣運(yùn)算,獲得第一低維向量、第二低維向量和第三低維向量;根據(jù)所述第一低維向量、所述第二低維向量和所述第三低維向量,計(jì)算獲得所述三元組向量??蛇x地,作為一個(gè)實(shí)施例,所述處理器510用于:將所述自然語言問題作為輸入,將所述自然語言問題的詞序列表示為低維向量序列;通過遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,對(duì)所述低維向量序列進(jìn)行運(yùn)算,獲得所述問題向量??蛇x地,作為一個(gè)實(shí)施例,所述處理器510用于:將所述問題向量和所述中間結(jié)果向量作為輸入,通過遞歸神經(jīng)網(wǎng)絡(luò)模型或卷積神經(jīng)網(wǎng)絡(luò)模型,計(jì)算以所述問題向量和所述中間結(jié)果向量作為條件的輸出序列的聯(lián)合概率,生成所述自然語言答案。可選地,作為一個(gè)實(shí)施例,所述處理器510用于:將所述問題向量和所述中間結(jié)果向量作為輸入,通過基于注意attention向量技術(shù)的遞歸神經(jīng)網(wǎng)絡(luò)模型,計(jì)算輸出序列的概率,生成所述自然語言答案。用戶設(shè)備500中的各個(gè)組件通過總線系統(tǒng)550耦合在一起,其中總線系統(tǒng)550除包括數(shù)據(jù)總線之外,還包括電源總線、控制總線和狀態(tài)信號(hào)總線。圖5所示的神經(jīng)網(wǎng)絡(luò)系統(tǒng)400或圖6所示的用戶設(shè)備500能夠?qū)崿F(xiàn)前述圖2至圖4的實(shí)施例中所實(shí)現(xiàn)的各個(gè)過程,為避免重復(fù),這里不再贅述。應(yīng)注意,本發(fā)明上述方法實(shí)施例可以應(yīng)用于處理器中,或者由處理器實(shí)現(xiàn)。處理器可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過程中,上述方法實(shí)施例的各步驟可以通過處理器中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器可以是通用處理器、數(shù)字信號(hào)處理器(DigitalSignalProcessor,DSP)、專用集成電路(ApplicationSpecificIntegratedCircuit,ASIC)、現(xiàn)成可編程門陣列(FieldProgrammableGateArray,F(xiàn)PGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器,處理器讀取存儲(chǔ)器中的信息,結(jié)合其硬件完成上述方法的步驟??梢岳斫猓景l(fā)明實(shí)施例中的存儲(chǔ)器可以是易失性存儲(chǔ)器或非易失性存儲(chǔ)器,或可包括易失性和非易失性存儲(chǔ)器兩者。其中,非易失性存儲(chǔ)器可以是只讀存儲(chǔ)器(Read-OnlyMemory,ROM)、可編程只讀存儲(chǔ)器(ProgrammableROM,PROM)、可擦除可編程只讀存儲(chǔ)器(ErasablePROM,EPROM)、電可擦除可編程只讀存儲(chǔ)器(ElectricallyEPROM,EEPROM)或閃存。易失性存儲(chǔ)器可以是隨機(jī)存取存儲(chǔ)器(RandomAccessMemory,RAM),其用作外部高速緩存。通過示例性但不是限制性說明,許多形式的RAM可用,例如靜態(tài)隨機(jī)存取存儲(chǔ)器(StaticRAM,SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DynamicRAM,DRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SynchronousDRAM,SDRAM)、雙倍數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DoubleDataRateSDRAM,DDRSDRAM)、增強(qiáng)型同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(EnhancedSDRAM,ESDRAM)、同步連接動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SynchlinkDRAM,SLDRAM)和直接內(nèi)存總線隨機(jī)存取存儲(chǔ)器(DirectRambusRAM,DRRAM)。應(yīng)注意,本文描述的系統(tǒng)和方法的存儲(chǔ)器旨在包括但不限于這些和任意其它適合類型的存儲(chǔ)器。本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(Read-OnlyMemory,ROM)、隨機(jī)存取存儲(chǔ)器(RandomAccessMemory,RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁1 2 3