本發(fā)明實(shí)施例涉及智能聊天技術(shù),尤其涉及一種基于人工智能的聊天數(shù)據(jù)的生成方法、裝置及計(jì)算機(jī)設(shè)備。
背景技術(shù):
人工智能(artificialintelligence,ai)是研究、開發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué)。人工智能是計(jì)算機(jī)科學(xué)的一個分支,它企圖了解智能的實(shí)質(zhì),并生產(chǎn)出一種新的能以人類智能相似的方式做出反應(yīng)的智能機(jī)器,該領(lǐng)域的研究包括機(jī)器人、語言識別、圖像識別、自然語言處理和專家系統(tǒng)等。
智能聊天表示機(jī)器根據(jù)用戶輸入的語句進(jìn)行智能回復(fù)的過程。隨著智能聊天技術(shù)的發(fā)展,智能聊天技術(shù)從對固定語句進(jìn)行固定內(nèi)容的回復(fù),逐漸演變?yōu)橥ㄟ^對用戶輸入的語句的語義進(jìn)行回復(fù)。
現(xiàn)有技術(shù)中聊天系統(tǒng)通過對語義進(jìn)行分析,實(shí)現(xiàn)根據(jù)對話的上下文進(jìn)行建模,然后預(yù)測下一條對話。例如,采用卷積神經(jīng)網(wǎng)絡(luò)對輪內(nèi)會話進(jìn)行語義表示,然后使用循環(huán)神經(jīng)網(wǎng)絡(luò)對輪間會話進(jìn)行序列表示。最后,以末端的序列表示作為初始狀態(tài),應(yīng)用循環(huán)神經(jīng)網(wǎng)絡(luò)生成會話。
然而,聊天系統(tǒng)在生成回復(fù)數(shù)據(jù)時(shí),所基于的是數(shù)據(jù)對應(yīng)的客觀信息,進(jìn)而無法基于用戶主觀信息進(jìn)行回復(fù),聊天回合數(shù)較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于人工智能的聊天數(shù)據(jù)的生成方法、裝置及計(jì)算機(jī)設(shè)備,以實(shí)現(xiàn)聊天系統(tǒng)根據(jù)用戶興趣進(jìn)行回復(fù),提高聊天回合數(shù),使聊天系統(tǒng)更加智能。
第一方面,本發(fā)明實(shí)施例提供了一種基于人工智能的聊天數(shù)據(jù)的生成方法,包括:
根據(jù)用戶輸入的聊天數(shù)據(jù)確定第一語料序列;
將第一語料序列和用戶興趣標(biāo)簽代入注意力模型進(jìn)行計(jì)算,得出目標(biāo)詞匯;
將目標(biāo)詞匯作為聊天數(shù)據(jù)的回復(fù)數(shù)據(jù)進(jìn)行反饋。
第二方面,本發(fā)明實(shí)施例還提供了一種基于人工智能的聊天數(shù)據(jù)的生成裝置,包括:
第一語料序列確定模塊,用于根據(jù)用戶輸入的聊天數(shù)據(jù)確定第一語料序列;
目標(biāo)詞匯計(jì)算模塊,用于將第一語料序列確定模塊確定的第一語料序列和用戶興趣標(biāo)簽代入注意力模型進(jìn)行計(jì)算,得出目標(biāo)詞匯;
聊天數(shù)據(jù)反饋模塊,用于將目標(biāo)詞匯計(jì)算模塊計(jì)算的目標(biāo)詞匯作為聊天數(shù)據(jù)的回復(fù)數(shù)據(jù)進(jìn)行反饋。
第三方面,本發(fā)明實(shí)施例還提供了一種計(jì)算機(jī)設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,處理器執(zhí)行程序時(shí)實(shí)現(xiàn)如第一方面所示的基于人工智能的聊天數(shù)據(jù)的生成方法。
本發(fā)明實(shí)施例提供的技術(shù)方案能夠根據(jù)用戶輸入的聊天數(shù)據(jù)確定第一語料序列,然后將第一語料序列和用戶興趣標(biāo)簽代入注意力模型進(jìn)行計(jì)算,得出目標(biāo)詞匯;最后,將目標(biāo)詞匯作為聊天數(shù)據(jù)的回復(fù)數(shù)據(jù)進(jìn)行反饋。相對于現(xiàn)有技術(shù)在僅根據(jù)上下文生成回復(fù)數(shù)據(jù),本發(fā)明實(shí)施例能夠基于用戶輸入的第一預(yù)料序列和用戶興趣標(biāo)簽,通過注意力模型生成作為回復(fù)數(shù)據(jù)的目標(biāo)詞匯。進(jìn)而使得基于注意力模型得到的目標(biāo)詞匯不僅關(guān)注上下文信息且關(guān)注用戶興趣標(biāo)簽,使得聊天系統(tǒng)能夠根據(jù)用戶的主觀興趣與用戶進(jìn)行聊天,提高聊天回合數(shù)。
附圖說明
圖1是本發(fā)明實(shí)施例一提供的一個基于人工智能的聊天數(shù)據(jù)的生成方法的流程圖;
圖2是本發(fā)明實(shí)施例一中的編碼端算法示意圖;
圖3是本發(fā)明實(shí)施例一提供的另一個基于人工智能的聊天數(shù)據(jù)的生成方法的流程圖;
圖4是本發(fā)明實(shí)施例一中的解碼端算法示意圖;
圖5是本發(fā)明實(shí)施例二中的基于人工智能的聊天數(shù)據(jù)的生成裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實(shí)施例三中的計(jì)算機(jī)設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)說明。可以理解的是,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
實(shí)施例一
圖1為本發(fā)明實(shí)施例一提供的基于人工智能的聊天數(shù)據(jù)的生成方法的流程圖,本實(shí)施例可適用于用戶與機(jī)器進(jìn)行智能聊天的情況,該方法可以由運(yùn)行有聊天系統(tǒng)的服務(wù)器或終端來執(zhí)行,具體包括如下步驟:
步驟110、根據(jù)用戶輸入的聊天數(shù)據(jù)確定第一語料序列。
聊天數(shù)據(jù)可以為用戶輸入的文本格式數(shù)據(jù),也可以為用戶輸入的音頻格式數(shù)據(jù)。如果由終端執(zhí)行本實(shí)施例所示方法,則終端能通過輸入設(shè)備獲取用戶輸入的聊天數(shù)據(jù)。如果由服務(wù)器執(zhí)行本實(shí)施例所示方法,則首先由終端獲取用戶輸入的聊天數(shù)據(jù),然后將聊天數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至該服務(wù)器。
如果聊天數(shù)據(jù)為音頻格式數(shù)據(jù),則將音頻格式數(shù)據(jù)轉(zhuǎn)換為文本格式數(shù)據(jù)。將音頻格式數(shù)據(jù)轉(zhuǎn)換為文本格式數(shù)據(jù)可以由終端執(zhí)行也可以由具有轉(zhuǎn)寫功能的服務(wù)器執(zhí)行。
可通過預(yù)設(shè)向量轉(zhuǎn)換模型得到文本格式的聊天數(shù)據(jù)的向量表示,即第一語料序列。預(yù)設(shè)向量轉(zhuǎn)換模型可以為向量空間模型(vectorspacemodel,vsm)。通過向量空間模型等轉(zhuǎn)換模型能夠?qū)⑽谋靖袷降牧奶鞌?shù)據(jù)轉(zhuǎn)換成第一語料序列。
步驟120、將第一語料序列和用戶興趣標(biāo)簽代入注意力模型進(jìn)行計(jì)算,得出目標(biāo)詞匯。
本實(shí)施例提供了一種使用預(yù)設(shè)循環(huán)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行用戶興趣相關(guān)的會話生成方案。其中,預(yù)設(shè)循環(huán)神經(jīng)網(wǎng)絡(luò)模型可以為lstm(longshort-termmemory)循環(huán)神經(jīng)網(wǎng)絡(luò)或gru(gatedrecurrentunit)循環(huán)神經(jīng)網(wǎng)絡(luò),為了方便說明以lstm循環(huán)神經(jīng)網(wǎng)絡(luò)為例進(jìn)行說明。
lstm循環(huán)神經(jīng)網(wǎng)絡(luò)分為模型訓(xùn)練和模型預(yù)測兩個階段。其中,模型訓(xùn)練包括訓(xùn)練數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)和優(yōu)化算法三個階段。
訓(xùn)練數(shù)據(jù)準(zhǔn)備階段包括:預(yù)先收集用戶興趣標(biāo)簽以及興趣標(biāo)簽下的會話對。對興趣標(biāo)簽生成興趣標(biāo)簽詞表,對會話對生成會話對詞表。
在一種實(shí)現(xiàn)方式中,首先,獲取至少一個用戶的會話記錄;
具體的,讀取人工客服對話的聊天記錄,將該聊天記錄作為語料。
其次,對會話記錄中每個語句對應(yīng)的第二語料序列進(jìn)行分詞處理,得到至少一個分詞詞匯;
獲取語料后,使用分詞工具對語料進(jìn)行逐條分析,依次對每個語句進(jìn)行分詞處理。分詞工具用于將一個句子拆分為獨(dú)立的詞匯。例如,“我好久沒有運(yùn)動了”,經(jīng)過分詞處理得到“我”、“好久”、“沒有”、“運(yùn)動”、“了”五個詞匯。
再次,統(tǒng)計(jì)每個分詞詞匯出現(xiàn)的概率值;
得到獨(dú)立的詞匯后,統(tǒng)計(jì)每個詞匯出現(xiàn)的頻率或次數(shù)。
最后,根據(jù)每個分詞詞匯出現(xiàn)的概率值確定詞表空間。
將頻率或次數(shù)最好的前n個關(guān)鍵詞匯添加到詞表。n的數(shù)值可根據(jù)應(yīng)用需求進(jìn)行選擇,n越高可識別詞匯的覆蓋率越高,但是訓(xùn)練和預(yù)測的效率越低。未添加到詞表中的詞匯,使用預(yù)設(shè)標(biāo)識進(jìn)行標(biāo)識。預(yù)設(shè)標(biāo)識可以為“unkown(未知)”。除了刪除n個關(guān)鍵詞匯、unkown詞匯,還包括標(biāo)記為“start(開始)”和“end(結(jié)束)”的詞匯?!皊tart(開始)”詞匯為解碼端初始詞,“end(結(jié)束)”詞匯解碼端結(jié)束詞。此時(shí),詞表一共包含n個關(guān)鍵詞匯、“unkown(未知)”詞匯、“start(開始)”詞匯以及“end(結(jié)束)”詞匯。根據(jù)詞匯在詞表中對應(yīng)的需要,將語料中會話對逐一轉(zhuǎn)換成序號。
同理,對用戶的興趣標(biāo)簽也進(jìn)行詞表生成(假設(shè)興趣標(biāo)簽詞表大小為m)和未登錄詞unkown標(biāo)記處理,配置start和end詞匯標(biāo)識。至此,訓(xùn)練數(shù)據(jù)準(zhǔn)備完畢。其中,用戶的興趣標(biāo)簽可以根據(jù)用戶的行為特征進(jìn)行確定。例如,根據(jù)用戶的運(yùn)動參數(shù)確定用戶喜愛的運(yùn)動,以及用戶的運(yùn)動時(shí)段,根據(jù)用戶喜愛的運(yùn)動以及運(yùn)動時(shí)段確定興趣標(biāo)簽。又例如,根據(jù)用戶安裝的應(yīng)用程序確定用戶需要的應(yīng)用類型,根據(jù)應(yīng)用類型確定興趣標(biāo)簽。
模型設(shè)計(jì)階段包括:序列生成模型主要包含編碼端和解碼端兩部分,算法主體是由兩個循環(huán)神經(jīng)網(wǎng)絡(luò)模型組成。
具體的,編碼端的算法結(jié)構(gòu)如圖2所示,其中,xi,i=1,2,…,n,分別表示用戶輸入語句經(jīng)過分詞處理得到的詞匯,x1到xn組成源端會話的詞匯序列,在任意的時(shí)刻t,xt的計(jì)算如公式一:
it=σ(wixt+uiht-1+bi)
ft=σ(wfxt+ufht-1+bf)
ot=σ(woxt+uoht-1+bo)
其中,b是偏置項(xiàng),符號
上式能夠?qū)崿F(xiàn)lstm(long-shorttermmemory)循環(huán)神經(jīng)網(wǎng)絡(luò),即通過“門”這種機(jī)制,將當(dāng)前詞匯xt的信息和前續(xù)詞匯序列的信息ht-1綜合建模后,生成當(dāng)前詞匯序列的信息ht。得到的每個詞匯序列的信息h為編碼端的運(yùn)算結(jié)果。
進(jìn)一步的,為了使lstm循環(huán)神經(jīng)網(wǎng)絡(luò)表義更加豐富和準(zhǔn)確,在沿正向處理一遍詞匯序列,生成h1,h2,…,hn之后,沿反向,按照同樣的運(yùn)算處理詞匯序列,生成rh1,rh2,…,rhn。然后,將對應(yīng)位置上的ht,rhn-t拼接形成優(yōu)化的輸出cht,最終編碼端生成序列的ch1,ch2,…,chn為第一預(yù)料序列。
解碼端為帶注意力機(jī)制的解碼端,具體執(zhí)行流程如圖3所示,在進(jìn)行解碼時(shí),依次遍歷編碼端得到的第一語料序列ch1,ch2,…,chn,遍歷時(shí)采用lstm循環(huán)神經(jīng)網(wǎng)絡(luò)作為基礎(chǔ)的遍歷策略。同解編端不一樣的是:一,序列遍歷過程中需要對編碼端結(jié)果按注意力模型進(jìn)行加權(quán)求和,生成上下文信息;二,序列遍歷過程中產(chǎn)出的隱層結(jié)果需要預(yù)測出對應(yīng)的目標(biāo)詞匯,特別是在解碼階段,該目標(biāo)詞匯會作為下一輪迭代的輸入。通過結(jié)合集束搜索(beamsearch)算法利用解碼端算法產(chǎn)出概率最大的那個解碼序列作為當(dāng)前的會話回復(fù)給用戶。具體過程如下:
步驟121、將第一語料序列中的預(yù)設(shè)詞匯確定為第二語料序列的起始詞匯。
示例性的,將編碼階段沿反向編碼得到的第一個詞匯rhn確定為第二語料序列的起始詞匯。
步驟122、從起始詞匯開始對第二語料序列進(jìn)行序列遍歷。
使用lstm(long-shorttermmemory)循環(huán)神經(jīng)網(wǎng)絡(luò)的遍歷機(jī)制對第二語料序列進(jìn)行遍歷,在每個遍歷過程中對第一語料序列進(jìn)行加權(quán)求和后,根據(jù)加權(quán)求和結(jié)果、用戶興趣標(biāo)簽以及起始詞匯,確定第一個回復(fù)數(shù)據(jù)。然后,將第一個回復(fù)數(shù)據(jù)作為起始詞匯,參考加權(quán)求和結(jié)果和用戶興趣標(biāo)簽結(jié)算第二個回復(fù)數(shù)據(jù)。以此類推,直至得到的回復(fù)數(shù)據(jù)具有end標(biāo)識。在任意一次遍歷過程中,當(dāng)前遍歷的詞匯為當(dāng)前詞匯。每次遍歷可通過步驟123至步驟125的方式進(jìn)行實(shí)施。
步驟123、在任意一個遍歷過程中,對當(dāng)前詞匯按注意力模型進(jìn)行加權(quán)求和,生成上下文信息,當(dāng)前詞匯為當(dāng)前遍歷到的第二語料序列的詞匯。
對當(dāng)前詞匯按注意力模型進(jìn)行加權(quán)求和,可具體通過下述方式進(jìn)行實(shí)施:首先,根據(jù)當(dāng)前詞匯和用戶興趣標(biāo)簽生成權(quán)重信息。然后,根據(jù)權(quán)重信息對用戶興趣標(biāo)簽進(jìn)行加權(quán)求和。
根據(jù)起始詞匯以及第一語料序列計(jì)算,計(jì)算起始詞匯相對于第一語料序列中各個詞匯的權(quán)重信息。然后,根據(jù)相對于第一語料序列中各個詞匯的權(quán)重信息和第一語料序列進(jìn)行加權(quán)求和。
步驟124、根據(jù)上下文信息、用戶興趣標(biāo)簽和迭代起始詞匯計(jì)算目標(biāo)詞匯。
具體的,在計(jì)算任意一組目標(biāo)詞匯時(shí),可通過下屬方式進(jìn)行實(shí)施:
步驟401、根據(jù)上下文信息、用戶興趣標(biāo)簽以及迭代起始詞匯計(jì)算隱層信息。
其中,上下文信息為根據(jù)第一語料序列進(jìn)行求和得到的信息,迭代起始詞匯為編碼階段沿反向得到第一個詞匯rhn。如圖4所示,隱層信息依次為s1、s2…sn。每個遍歷回合得到一個隱層信息??梢愿鶕?jù)下述公式二計(jì)算隱層信息st。
步驟402、將隱層信息作線性變換投影到詞表空間。
詞表空間可以為第二語料序列組成的第二語料庫。由于詞匯可轉(zhuǎn)換為向量表示,因此按照向量的維度,對隱層信息對應(yīng)的響鈴?fù)队?fullconnect)到次表空間進(jìn)行比對。
步驟403、在詞表空間中預(yù)測第一詞匯為下一個詞匯的概率,第一詞匯為詞表空間中任意一個詞匯。
softmax操作能夠預(yù)測隱層信息對應(yīng)的下一個詞匯的概率pi。分別得出次表空間中各詞匯作為隱層信息對應(yīng)的下一個詞匯的概率pi。
步驟404、根據(jù)概率確定目標(biāo)詞匯。
將詞表空間中概率pi最高的k個詞匯確定為目標(biāo)詞匯sn。然后,對k個詞匯中的每個詞匯作為迭代起始詞匯。在得到多組目標(biāo)詞匯序列后,選取概率值最高的目標(biāo)詞匯組作為回復(fù)數(shù)據(jù)。
例如,假設(shè)每個k個詞匯中每個詞匯均得到l個目標(biāo)詞匯,則進(jìn)過一輪迭代運(yùn)算后,得到k*l個目標(biāo)詞匯組。分別計(jì)算每個目標(biāo)詞匯組對應(yīng)的概率,選取概率值最高的目標(biāo)詞匯組作為回復(fù)數(shù)據(jù)。
步驟125、如果目標(biāo)詞匯未滿足截止條件,則將目標(biāo)詞匯作為新的迭代起始詞匯進(jìn)行迭代,直至得到滿足截止條件的目標(biāo)詞匯。
其中,截止條件,包括:目標(biāo)詞匯為預(yù)設(shè)結(jié)束詞匯;和/或,已得到的目標(biāo)詞匯的數(shù)量達(dá)到預(yù)設(shè)長度。
預(yù)設(shè)結(jié)束詞匯為具有end標(biāo)識的詞匯??梢詫⒘奶煊涗浀钠骄L度作為預(yù)設(shè)長度。也可以從聊天記錄中查找具有第一語料序列中詞匯對應(yīng)的回復(fù)數(shù)據(jù)。
步驟130、將目標(biāo)詞匯作為聊天數(shù)據(jù)的回復(fù)數(shù)據(jù)進(jìn)行反饋。
將回復(fù)數(shù)據(jù)轉(zhuǎn)換為用戶輸入格式匹配的格式,如文本格式或音頻格式。如果由終端執(zhí)行本實(shí)施例所示步驟,則通過終端輸出接口顯示文本格式的回復(fù)數(shù)據(jù),或播放音頻格式的回復(fù)數(shù)據(jù)。如果由服務(wù)器執(zhí)行,則將回復(fù)數(shù)據(jù)發(fā)送至用戶終端,由用戶終端輸出回復(fù)數(shù)據(jù)。
下面通過一個具體使用場景對上述方法進(jìn)行實(shí)施:
在任意的時(shí)刻t,源端會話的詞匯序列xi,i=1,2,…,n,xt的計(jì)算使用上述公式一:
it=σ(wixt+uiht-1+bi)
ft=σ(wfxt+ufht-1+bf)
ot=σ(woxt+uoht-1+bo)
其中,w,u表示矩陣,b是偏置項(xiàng),符號
通過公式一可得到用戶輸入的任意一個詞匯xt對應(yīng)的詞匯序列信息ht。沿正向處理一遍詞匯序列,生成h1,h2,…,hn。然后,還沿反向,按照同樣的運(yùn)算處理詞匯序列,生成rh1,rh2,…,rhn。最后,將對應(yīng)位置上的ht,rhn-t拼接形成新的輸出cht,生成序列第一語料序列ch1,ch2,…,chn。
注意力模型的基本公式為,公式二:
it=σ(wixt+uist-1+aiat+bi)
ft=σ(wfxt+ufst-1+afat+bf)
ot=σ(woxt+uost-1+aoat+bo)
其中,在任意一個t時(shí)刻,當(dāng)前遍歷詞匯的上下文信息at的計(jì)算方式如公式三所示,公式三:
vit=vatanh(wachi+uast-1)
公式二能夠得到隱層信息st,將隱層st作線性變換投影到詞表大小空間,然后通過softmax操作預(yù)測下一個詞匯的概率pi。wit為權(quán)重信息(又稱概率)。
為了能夠?qū)⒆⒁饬δP团c用戶興趣標(biāo)簽進(jìn)行結(jié)合,仿照注意力模型,將注意力施加到用戶標(biāo)簽上,如公式四所示:
zit=vgtanh(wgqi+ugst-1)
其中,qi,i=0,1,…,m為用戶興趣標(biāo)簽的向量表示,j表示詞表空間中任意一個詞匯。zit為第一預(yù)料第i個詞匯,第二語料第t個詞匯對應(yīng)的注意力參數(shù)z的數(shù)值。j的取值范圍與i相同。上式能夠?qū)崿F(xiàn)將當(dāng)前會話狀態(tài)跟用戶標(biāo)簽逐一比對生成相應(yīng)權(quán)重uit,再按照權(quán)重對用戶興趣標(biāo)簽進(jìn)行加權(quán)求和。這樣,解碼端在生成解碼序列的時(shí)候,由于加入了與上下文st-1相關(guān)的用戶興趣標(biāo)簽gt,因此對話也會跟用戶的興趣有關(guān)。
由此,解碼端的循環(huán)神經(jīng)網(wǎng)絡(luò)可以使用下述公式五計(jì)算當(dāng)前詞匯對應(yīng)的目標(biāo)詞匯,公式五:
it=σ(wixt+uist-1+sist+gigt+bi)
ft=σ(wfxt+ufst-1+sfst+gfgt+bf)
ot=σ(woxt+uost-1+sost+gogt+bo)
其中,任意一個循環(huán)中得到的目標(biāo)詞匯ht可作為下一個循環(huán)的ht-1進(jìn)行迭代。當(dāng)?shù)玫降哪繕?biāo)詞匯ht為end標(biāo)識詞匯或者目標(biāo)詞匯序列的長度達(dá)到預(yù)設(shè)長度,則停止迭代,并將得到的目標(biāo)詞匯序列作為回復(fù)數(shù)據(jù)。其中,wi、ui、si和bi可根據(jù)注意力模型提供的基準(zhǔn)矩陣確定。
在優(yōu)化算法階段,采用隨機(jī)初始化模型,然后使用預(yù)先準(zhǔn)備的訓(xùn)練數(shù)據(jù)按照小批量隨機(jī)梯度下降法訓(xùn)練該模型,使得經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化:
θ=argminθl(x)
其中,θ表示所有模型的參數(shù)集合,如前述的w、u等等。l表示損失函數(shù),通過訓(xùn)練數(shù)據(jù)訓(xùn)練模型使得這個損失函數(shù)的值盡可能小。上述公式用于將損失函數(shù)取值最小時(shí)的參數(shù)作為最優(yōu)的模型參數(shù)進(jìn)行保存。
經(jīng)過多輪訓(xùn)練以后,可得到能夠生成對話序列的模型。在得到優(yōu)化的模型后,對任意會話,先通過編碼端,將該會話表示成為ch1,ch2,…,chn序列,同時(shí)查找用戶的興趣標(biāo)簽的表示序列q1,q2,…,qn,然后結(jié)合集束搜索(beamsearch)算法利用解碼端算法產(chǎn)出概率最大的那個解碼序列作為當(dāng)前的會話回復(fù)給用戶。其中,集束搜索算法跟解碼端按照如下方式協(xié)同工作:
首先,給定序列起始詞匯start作為時(shí)刻0的輸入x0,然后經(jīng)過解碼端運(yùn)算生成下一個詞匯的概率分布p0。從p0中選出概率最大的k個詞匯,然后分別以這k個詞匯作為解碼序列中的下一個詞匯作為時(shí)刻1的輸入x1。接著,在所有k個分支產(chǎn)生的k個p0分布中選出與前續(xù)序列概率乘積最大k個詞匯作為x2的候選,并重復(fù)上述操作。若集束搜索產(chǎn)出序列終止詞匯end,則集束搜索寬度減一,并繼續(xù)搜索,直到集束的寬度變?yōu)?或達(dá)到最大序列生成長度為止。其中,集束搜索寬度對應(yīng)預(yù)設(shè)序列長度。最后在所有k個以end結(jié)尾的序列中選取一個概率最大的序列作為結(jié)果。
本實(shí)施例提供的技術(shù)方案能夠根據(jù)用戶輸入的聊天數(shù)據(jù)確定第一語料序列,然后將第一語料序列和用戶興趣標(biāo)簽代入注意力模型進(jìn)行計(jì)算,得出目標(biāo)詞匯;最后,將目標(biāo)詞匯作為聊天數(shù)據(jù)的回復(fù)數(shù)據(jù)進(jìn)行反饋。相對于現(xiàn)有技術(shù)在僅根據(jù)上下文生成回復(fù)數(shù)據(jù),本實(shí)施例能夠基于用戶輸入的第一預(yù)料序列和用戶興趣標(biāo)簽,通過注意力模型生成作為回復(fù)數(shù)據(jù)的目標(biāo)詞匯。進(jìn)而使得基于注意力模型得到的目標(biāo)詞匯不僅關(guān)注上下文信息且關(guān)注用戶興趣標(biāo)簽,使得聊天系統(tǒng)能夠根據(jù)用戶的主觀興趣與用戶進(jìn)行聊天,提高聊天回合數(shù)。
實(shí)施例二
圖5為本發(fā)明實(shí)施例二提供的一種基于人工智能的聊天數(shù)據(jù)的生成裝置,該裝置用于實(shí)現(xiàn)實(shí)施例一所示的方法,包括:
第一語料序列確定模塊51,用于根據(jù)用戶輸入的聊天數(shù)據(jù)確定第一語料序列;目標(biāo)詞匯計(jì)算模塊
目標(biāo)詞匯計(jì)算模塊52,用于將第一語料序列確定模塊51確定的第一語料序列和用戶興趣標(biāo)簽代入注意力模型進(jìn)行計(jì)算,得出目標(biāo)詞匯;
聊天數(shù)據(jù)反饋模塊53,用于將目標(biāo)詞匯計(jì)算模塊52計(jì)算的目標(biāo)詞匯作為聊天數(shù)據(jù)的回復(fù)數(shù)據(jù)進(jìn)行反饋。
進(jìn)一步的,目標(biāo)詞匯計(jì)算模塊52,包括:
起始詞匯確定單元521,用于將第一語料序列中的預(yù)設(shè)詞匯確定為第二語料序列的起始詞匯
遍歷單元522,用于從起始詞匯確定單元確定的所述起始詞匯開始對第二語料序列進(jìn)行序列遍歷:
上下文信息生成單元523,用于在任意一個遍歷過程中,對當(dāng)前詞匯按注意力模型進(jìn)行加權(quán)求和,生成上下文信息,當(dāng)前詞匯為當(dāng)前遍歷的第二語料序列的詞匯;
目標(biāo)詞匯計(jì)算單元524,用于根據(jù)上下文信息、用戶興趣標(biāo)簽和迭代起始詞匯計(jì)算目標(biāo)詞匯;如果目標(biāo)詞匯未滿足截止條件,則將目標(biāo)詞匯作為新的迭代起始詞匯進(jìn)行迭代,直至得到滿足截止條件的目標(biāo)詞匯。
進(jìn)一步的,目標(biāo)詞匯計(jì)算單元524用于:
根據(jù)上下文信息、用戶興趣標(biāo)簽以及迭代起始詞匯計(jì)算隱層信息;
將隱層信息作線性變換投影到詞表空間;
在詞表空間中預(yù)測第一詞匯為下一個詞匯的概率,第一詞匯為詞表空間中任意一個詞匯;
根據(jù)概率確定目標(biāo)詞匯。
進(jìn)一步的,上下文信息生成單元523用于:
根據(jù)當(dāng)前詞匯和用戶興趣標(biāo)簽生成權(quán)重信息;
根據(jù)權(quán)重信息對用戶興趣標(biāo)簽進(jìn)行加權(quán)求和。
進(jìn)一步的,截止條件,包括:
目標(biāo)詞匯為預(yù)設(shè)結(jié)束詞匯;和/或,
已得到的目標(biāo)詞匯的數(shù)量達(dá)到預(yù)設(shè)長度。
進(jìn)一步的,目標(biāo)詞匯計(jì)算模塊52還包括詞表空間確定單元525,用于:
獲取至少一個用戶的會話記錄;
對會話記錄中每個語句對應(yīng)的第二語料序列進(jìn)行分詞處理,得到至少一個分詞詞匯;
統(tǒng)計(jì)每個分詞詞匯出現(xiàn)的概率值;
根據(jù)每個分詞詞匯出現(xiàn)的概率值確定詞表空間。
本實(shí)施例提供的技術(shù)方案能夠由第一語料序列確定模塊51根據(jù)用戶輸入的聊天數(shù)據(jù)確定第一語料序列,然后目標(biāo)詞匯計(jì)算模塊52將第一語料序列和用戶興趣標(biāo)簽代入注意力模型進(jìn)行計(jì)算,得出目標(biāo)詞匯;最后,聊天數(shù)據(jù)反饋模塊53將目標(biāo)詞匯作為聊天數(shù)據(jù)的回復(fù)數(shù)據(jù)進(jìn)行反饋。相對于現(xiàn)有技術(shù)在僅根據(jù)上下文生成回復(fù)數(shù)據(jù),本實(shí)施例能夠基于用戶輸入的第一預(yù)料序列和用戶興趣標(biāo)簽,通過注意力模型生成作為回復(fù)數(shù)據(jù)的目標(biāo)詞匯。進(jìn)而使得基于注意力模型得到的目標(biāo)詞匯不僅關(guān)注上下文信息且關(guān)注用戶興趣標(biāo)簽,使得聊天系統(tǒng)能夠根據(jù)用戶的主觀興趣與用戶進(jìn)行聊天,提高聊天回合數(shù)。
實(shí)施例三
圖6為本發(fā)明實(shí)施例三提供的一種計(jì)算機(jī)設(shè)備的結(jié)構(gòu)示意圖。圖6示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)設(shè)備12的框圖。圖6顯示的計(jì)算機(jī)設(shè)備12僅僅是一個示例,不應(yīng)對本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。
如圖6所示,計(jì)算機(jī)設(shè)備12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)設(shè)備12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(isa)總線,微通道體系結(jié)構(gòu)(mac)總線,增強(qiáng)型isa總線、視頻電子標(biāo)準(zhǔn)協(xié)會(vesa)局域總線以及外圍組件互連(pci)總線。
計(jì)算機(jī)設(shè)備12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)設(shè)備12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。
系統(tǒng)存儲器28可以包括易失性存儲器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲器(ram)30和/或高速緩存存儲器32。計(jì)算機(jī)設(shè)備12可以進(jìn)一步包括其它可移動/不可移動的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖6未顯示,通常稱為“硬盤驅(qū)動器”)。盡管圖6中未示出,可以提供用于對可移動非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如cd-rom,dvd-rom或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
具有一組(至少一個)程序模塊42的程序/實(shí)用工具40,可以存儲在例如存儲器28中,這樣的程序模塊42包括但不限于操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
計(jì)算機(jī)設(shè)備12也可以與一個或多個外部設(shè)備14(例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個或者多個使得用戶能與該計(jì)算機(jī)設(shè)備12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)設(shè)備12能與一個或多個其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(i/o)接口22進(jìn)行。并且,計(jì)算機(jī)設(shè)備12還可以通過網(wǎng)絡(luò)適配器20與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計(jì)算機(jī)設(shè)備12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)設(shè)備12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、raid系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
處理單元16通過運(yùn)行存儲在系統(tǒng)存儲器28中的程序,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,例如實(shí)現(xiàn)本發(fā)明實(shí)施例所提供的基于人工智能的聊天數(shù)據(jù)的生成方法。
實(shí)施例四
本發(fā)明實(shí)施例四還提供了一種計(jì)算機(jī)存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明實(shí)施例所提供的基于人工智能的聊天數(shù)據(jù)的生成方法。
本實(shí)施例提供的計(jì)算機(jī)存儲介質(zhì),可以采用一個或多個計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號介質(zhì)或者計(jì)算機(jī)可讀存儲介質(zhì)。計(jì)算機(jī)可讀存儲介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(cd-rom)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
計(jì)算機(jī)可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。計(jì)算機(jī)可讀的信號介質(zhì)還可以是計(jì)算機(jī)可讀存儲介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括——但不限于無線、電線、光纜、rf等等,或者上述的任意合適的組合。
可以以一種或多種程序設(shè)計(jì)語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言—諸如java、smalltalk、c++,還包括常規(guī)的過程式程序設(shè)計(jì)語言—諸如”c”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)——包括局域網(wǎng)(lan)或廣域網(wǎng)(wan)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實(shí)施例,對本領(lǐng)域技術(shù)人員來說能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護(hù)范圍。因此,雖然通過以上實(shí)施例對本發(fā)明進(jìn)行了較為詳細(xì)的說明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。