本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及智能人機(jī)對(duì)話領(lǐng)域。
背景技術(shù):
隨著人類社會(huì)信息化的不斷演進(jìn)以及人工服務(wù)成本的不斷上升,人們?cè)絹?lái)越希望通過(guò)自然語(yǔ)言與計(jì)算機(jī)進(jìn)行交流,人機(jī)智能聊天系統(tǒng)成為這樣的歷史背景下誕生的產(chǎn)物。
在現(xiàn)有的人機(jī)對(duì)話系統(tǒng)主要有兩種實(shí)現(xiàn)方法,一種是檢索模型,另一種是生成模型。檢索模型把一輪人機(jī)對(duì)話當(dāng)成是一次信息檢索的過(guò)程,通過(guò)事先準(zhǔn)備好一定數(shù)據(jù)量問(wèn)答對(duì),并將問(wèn)答對(duì)(它由一個(gè)問(wèn)題和若干個(gè)答案組成)中的問(wèn)題建立好索引。當(dāng)用戶輸入一句或若干句話時(shí),就把它當(dāng)成一次檢索,在所有候選問(wèn)答對(duì)中找到與它語(yǔ)義最相近的問(wèn)題,然后將該問(wèn)題的答案返回給該用戶,完成一輪人機(jī)對(duì)話。因此要想獲得較合適的答案關(guān)鍵就在于如何找到與用戶的輸入語(yǔ)義最相似的問(wèn)題。由于在人機(jī)對(duì)話系統(tǒng)中用戶輸入和候選問(wèn)答對(duì)中的問(wèn)題通常是由一句或若干短句組成的短文本,所以就將問(wèn)題落在了短文本間相似度計(jì)算上。
現(xiàn)有技術(shù)中,計(jì)算短文本間相似度的方法就是將用戶輸入和候選問(wèn)答對(duì)的問(wèn)題各自轉(zhuǎn)換相同維數(shù)的句子向量,向量的每個(gè)維度值是該用戶輸入或者候選問(wèn)答對(duì)的問(wèn)題中各自的詞語(yǔ)(或稱為分詞)的TF*IDF值,然后通過(guò)如計(jì)算余弦相似度來(lái)衡量?jī)烧咧g的相似性來(lái)對(duì)所有候選問(wèn)答對(duì)排序,該方法是搜索引擎中常見(jiàn)的方法。但使用向量的TF*IDF計(jì)算余弦相似度來(lái)找最相似的問(wèn)題的方法只考慮了句子之間的文本相似度,即字面上有多少重復(fù)的分詞來(lái)判斷句子間相似度,這顯然是不夠的,比如“我很困”與“我想睡覺(jué)”語(yǔ)義是一樣的但字面上幾乎沒(méi)有太多重復(fù)的詞,該方法就無(wú)法應(yīng)對(duì)這種情況。另外,由于人機(jī)對(duì)話系統(tǒng)通常使用的是短句,因此TF基本上為1,無(wú)太大作用,這也會(huì)影響該方法的效果。
因此現(xiàn)有技術(shù)中的缺陷是,通過(guò)分詞的TF*IDF值計(jì)算用戶輸入與候選問(wèn)答對(duì)的問(wèn)題的詞向量的余弦相似度,只考慮了句子之間的文本相似度,即只可以通過(guò)字面上有多少重復(fù)的分詞來(lái)判斷句子的相似度,這樣會(huì)使相似度的判斷十分不準(zhǔn)確,直接導(dǎo)致人機(jī)對(duì)話系統(tǒng)中回復(fù)用戶的信息是不準(zhǔn)確的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種短文本間相似度計(jì)算方法,采用了對(duì)用戶輸入或者候選問(wèn)答對(duì)的問(wèn)題進(jìn)行分詞和關(guān)鍵詞提取,獲得對(duì)應(yīng)的詞向量,根據(jù)詞向量,計(jì)算獲得對(duì)應(yīng)的句向量,然后計(jì)算得到兩個(gè)句向量間的相似度,最后通過(guò)句子的句型、命名實(shí)體和代詞對(duì)相似度進(jìn)行修正,使相似度變得更準(zhǔn)確,進(jìn)而提高了人機(jī)對(duì)話系統(tǒng)中回復(fù)用戶的準(zhǔn)確性。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供的技術(shù)方案是:
本發(fā)明提供一種短文本間相似度計(jì)算方法,包括:
步驟S1,獲取語(yǔ)料數(shù)據(jù),對(duì)所述語(yǔ)料數(shù)據(jù)進(jìn)行預(yù)處理,得到訓(xùn)練語(yǔ)料;
步驟S2,根據(jù)所述訓(xùn)練語(yǔ)料,得到關(guān)鍵詞提取模型,利用分詞工具對(duì)所述訓(xùn)練語(yǔ)料分詞,并用word2vec訓(xùn)練獲得詞向量集;
步驟S3,獲得用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題,對(duì)所述候選問(wèn)答對(duì)的問(wèn)題和所述用戶輸入文本通過(guò)所述分詞工具分別進(jìn)行分詞,對(duì)所述候選問(wèn)答對(duì)的問(wèn)題和所述用戶輸入文本分別通過(guò)所述關(guān)鍵詞提取模型進(jìn)行關(guān)鍵詞提取,得到所述候選問(wèn)答對(duì)的問(wèn)題的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,及所述用戶輸入文本的分詞結(jié)果和關(guān)鍵詞提取結(jié)果;
步驟S4,根據(jù)所述候選問(wèn)答對(duì)的問(wèn)題的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,通過(guò)所述詞向量集獲得所述候選問(wèn)答對(duì)的問(wèn)題的詞向量,根據(jù)所述用戶輸入文本的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,通過(guò)所述詞向量集獲得所述用戶輸入文本的詞向量;
步驟S5,根據(jù)所述候選問(wèn)答對(duì)的問(wèn)題的詞向量,計(jì)算獲得所述候選問(wèn)答對(duì)的問(wèn)題的句向量,根據(jù)所述用戶輸入文本的詞向量,計(jì)算獲得所述用戶輸入文本的句向量;
步驟S6,根據(jù)所述候選問(wèn)答對(duì)的問(wèn)題的句向量和所述用戶輸入文本的句向量,計(jì)算兩個(gè)句向量間的相似度;
步驟S7,根據(jù)所述句向量間的相似度,通過(guò)所述用戶輸入的文本和所述候選問(wèn)答對(duì)的問(wèn)題中包含的信息進(jìn)行相似度的修正,得到修正后的相似度。
本發(fā)明是一種短文本間相似度計(jì)算方法的技術(shù)方案為先獲取語(yǔ)料數(shù)據(jù),對(duì)所述語(yǔ)料數(shù)據(jù)進(jìn)行預(yù)處理,得到訓(xùn)練語(yǔ)料,根據(jù)所述訓(xùn)練語(yǔ)料,得到關(guān)鍵詞提取模型,利用分詞工具對(duì)所述訓(xùn)練語(yǔ)料分詞,并用word2vec訓(xùn)練獲得詞向量集;獲得用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題,對(duì)所述候選問(wèn)答對(duì)的問(wèn)題和所述用戶輸入文本通過(guò)所述分詞工具分別進(jìn)行分詞,對(duì)所述候選問(wèn)答對(duì)的問(wèn)題和所述用戶輸入文本分別通過(guò)所述關(guān)鍵詞提取模型進(jìn)行關(guān)鍵詞提取,得到所述候選問(wèn)答對(duì)的問(wèn)題的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,及所述用戶輸入文本的分詞結(jié)果和關(guān)鍵詞提取結(jié)果;接著根據(jù)所述候選問(wèn)答對(duì)的問(wèn)題的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,通過(guò)所述詞向量集獲得所述候選問(wèn)答對(duì)的問(wèn)題的詞向量,根據(jù)所述用戶輸入文本的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,通過(guò)所述詞向量集獲得所述用戶輸入文本的詞向量;根據(jù)所述候選問(wèn)答對(duì)的問(wèn)題的詞向量,計(jì)算獲得所述候選問(wèn)答對(duì)的問(wèn)題的句向量,根據(jù)所述用戶輸入文本的詞向量,計(jì)算獲得所述用戶輸入文本的句向量;根據(jù)兩個(gè)句向量,計(jì)算兩個(gè)句向量間的相似度;最后根據(jù)所述句向量間的相似度,通過(guò)所述用戶輸入的文本和所述候選問(wèn)答對(duì)的問(wèn)題中包含的信息進(jìn)行相似度的修正,得到修正后的相似度。
本發(fā)明是一種短文本間相似度計(jì)算方法采用了對(duì)用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題進(jìn)行分詞和提取關(guān)鍵詞的處理,然后根據(jù)分詞和關(guān)鍵詞計(jì)算用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題的詞向量,然后分別計(jì)算這兩個(gè)詞向量,得到用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題的句向量,最后通過(guò)計(jì)算得到兩個(gè)句向量間的余弦相似度,進(jìn)一步通過(guò)用戶輸入的文本和候選問(wèn)答對(duì)的問(wèn)題中包含的信息對(duì)相似度進(jìn)行修正,得到更加準(zhǔn)確的相似度,使人機(jī)對(duì)話系統(tǒng)中,回復(fù)用戶的回答更準(zhǔn)確。
進(jìn)一步地,所述用戶輸入的文本和所述候選問(wèn)答對(duì)的問(wèn)題中包含的信息為文本句型、命名實(shí)體和人稱代詞,所述命名實(shí)體包括地名和機(jī)構(gòu)名稱。
根據(jù)用戶輸入的文本和候選問(wèn)答對(duì)的問(wèn)題的句向量,計(jì)算兩個(gè)句向量間的相似度,這種方法獲得的相似度在多數(shù)情況下是準(zhǔn)確的,但在需要考慮句型、命名實(shí)體及人稱代詞等情況下只根據(jù)兩個(gè)句向量間的相似度作為判斷文本的語(yǔ)義是否相似的依據(jù)仍不夠準(zhǔn)確,因此要對(duì)相似度進(jìn)行修正,本發(fā)明還分析用戶輸入的文本和候選問(wèn)答對(duì)的問(wèn)題的信息,就是對(duì)文本中的句型,命名實(shí)體和人稱代詞進(jìn)行分析,進(jìn)一步修正相似度,進(jìn)而提高人就對(duì)話系統(tǒng)回復(fù)用戶問(wèn)題的準(zhǔn)確性。
進(jìn)一步地,所述步驟S2中,獲得所述關(guān)鍵詞提取模型包括:
步驟S21,獲得關(guān)鍵詞訓(xùn)練語(yǔ)料,根據(jù)所述關(guān)鍵詞訓(xùn)練語(yǔ)料,進(jìn)行分詞,得到分詞結(jié)果;
步驟S22,根據(jù)所述分詞結(jié)果,通過(guò)人工標(biāo)注的方式標(biāo)注所述分詞結(jié)果中的關(guān)鍵詞,得到人工標(biāo)注后的關(guān)鍵詞訓(xùn)練語(yǔ)料;
步驟S23,根據(jù)所述人工標(biāo)注后的關(guān)鍵詞訓(xùn)練語(yǔ)料,通過(guò)最大熵訓(xùn)練得到關(guān)鍵詞提取模型。
通過(guò)關(guān)鍵詞提取模型可以提取分詞中的關(guān)鍵詞,即分詞包含關(guān)鍵詞,因?yàn)殛P(guān)鍵詞更能代表文本的語(yǔ)義,所以提取分詞中的關(guān)鍵詞,結(jié)合關(guān)鍵詞會(huì)比只使用分詞計(jì)算的相似度更加精確。為了訓(xùn)練關(guān)鍵詞提取模型,先獲得關(guān)鍵詞訓(xùn)練語(yǔ)料,這些關(guān)鍵詞語(yǔ)料可以和詞向量的訓(xùn)練語(yǔ)料不同,然后通過(guò)人工標(biāo)注的方法在分詞中標(biāo)注出關(guān)鍵詞,通過(guò)最大熵的方法建立訓(xùn)練模型,任何新的未標(biāo)注的文本輸入到這個(gè)模型中,該模型會(huì)自動(dòng)輸出哪些是關(guān)鍵詞哪些不是關(guān)鍵詞,以此獲得關(guān)鍵詞集,以幫助提高句向量間的相似度。
進(jìn)一步地,所述關(guān)鍵詞提取模型為一個(gè)2分類的分類器。上述提取關(guān)鍵詞的模型是一個(gè)2分類的分類器,通過(guò)這個(gè)分類器可以預(yù)測(cè)句子中哪些詞為關(guān)鍵詞,提高提取關(guān)鍵詞的準(zhǔn)確性。
進(jìn)一步地,所述詞向量集通過(guò)word2vec模型訓(xùn)練得到。word2vec訓(xùn)練工具是一種神經(jīng)網(wǎng)絡(luò)模型,這種模型訓(xùn)練方法獲得的詞向量的語(yǔ)義是通過(guò)和它經(jīng)常一起出現(xiàn)就越相似,就是說(shuō)這種模型訓(xùn)練方法獲得的詞向量的語(yǔ)義信息是根據(jù)詞的共現(xiàn)來(lái)捕獲。通過(guò)word2vec模型訓(xùn)練得到詞向量,再結(jié)合關(guān)鍵詞的信息可以計(jì)算得到更準(zhǔn)確的句向量,使相似度更精確。
進(jìn)一步地,所述候選問(wèn)答對(duì)的問(wèn)題的詞向量和所述用戶輸入文本的詞向量維數(shù)相同。詞向量的維數(shù)要相同,這樣才方便下面計(jì)算分詞向量的平均值,關(guān)鍵詞詞向量的平均值,然后再經(jīng)計(jì)算得到相應(yīng)的候選問(wèn)答對(duì)問(wèn)題的句向量和用戶輸入文本的句向量,最后計(jì)算出這兩個(gè)句向量間的相似度,因此,得到的詞向量的維數(shù)要相同,得到詞向量的維數(shù)要相同。
進(jìn)一步地,所述命名實(shí)體和人稱代詞通過(guò)字典方法獲得。對(duì)相似度進(jìn)行修正可以通過(guò)命名實(shí)體和人稱代詞,命名實(shí)體中本發(fā)明主要考慮地名或機(jī)構(gòu)名。命名實(shí)體的修正是為了解決如地名的不同直接導(dǎo)致兩句話語(yǔ)義不相似,如“北京有什么好吃的”與“天津有什么好吃的”,這兩句話除了地名不同,語(yǔ)義是相似的,因此需要通過(guò)命名實(shí)體對(duì)相似度的修正,可以根據(jù)句子中出現(xiàn)的地名或機(jī)構(gòu)名是否一致直接判斷出兩句話的相似度,提高了對(duì)句子間相似度的判斷。因此本發(fā)明使用字典方法,字典文件包含中國(guó)主要地級(jí)市,且每個(gè)地名間相互獨(dú)立無(wú)包含關(guān)系。
進(jìn)一步地,所述語(yǔ)料數(shù)據(jù)通過(guò)網(wǎng)絡(luò)爬蟲技術(shù)獲得。通過(guò)爬蟲技術(shù)獲得大量語(yǔ)料,爬蟲技術(shù)是一種自動(dòng)獲取網(wǎng)頁(yè)內(nèi)容的程序,通過(guò)爬蟲獲得一些貼吧、問(wèn)答社區(qū)、論壇、微博、百科、新聞等特別是內(nèi)容較長(zhǎng)語(yǔ)義信息豐富同時(shí)又比較口語(yǔ)化的帖子及回復(fù)等作為訓(xùn)練語(yǔ)料,使得語(yǔ)料信息全面豐富,語(yǔ)料的選擇會(huì)影響到訓(xùn)練模型的好壞,最終影響相似度。
進(jìn)一步地,所述句向量間的相似度通過(guò)余弦相似度的方法計(jì)算。根據(jù)兩個(gè)句向量間的余弦計(jì)算方法計(jì)算兩個(gè)句向量間的余弦值,余弦值越接近1,就表明夾角越接近0度,也就是兩個(gè)句向量越相似。余弦計(jì)算方法快速簡(jiǎn)單,可提高系統(tǒng)性能。
進(jìn)一步地,所述分詞工具為漢語(yǔ)言處理工具包hanlp。通過(guò)分詞工具對(duì)訓(xùn)練語(yǔ)料進(jìn)行分詞,本發(fā)明選用的分詞工具是hanlp(Han Language Processing),hanlp是開(kāi)源自由的漢語(yǔ)言處理包,是由一系列模型與算法組成的Java工具包,可以實(shí)現(xiàn)中文分詞,關(guān)鍵詞提取,索引分詞等一系列功能,還具有提供詞法分析、句法分析、語(yǔ)義理解等完備的功能。hanlp具備功能完善、性能高效、架構(gòu)清晰、語(yǔ)料時(shí)新、可自定義的特點(diǎn)。因此本發(fā)明選用hanlp作為分詞工具。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明具體實(shí)施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)具體實(shí)施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹。
圖1示出了本發(fā)明第一實(shí)施例所提供的一種短文本間相似度計(jì)算方法的流程圖。
具體實(shí)施方式
下面將結(jié)合附圖對(duì)本發(fā)明技術(shù)方案的實(shí)施例進(jìn)行詳細(xì)的描述。以下實(shí)施例僅用于更加清楚地說(shuō)明本發(fā)明的技術(shù)方案,因此只是作為示例,而不能以此來(lái)限制本發(fā)明的保護(hù)范圍。
實(shí)施例一
圖1示出了本發(fā)明第一實(shí)施例所提供的一種短文本間相似度計(jì)算方法的流程圖。如圖1所示,根據(jù)本發(fā)明第一實(shí)施例的短文本間相似度計(jì)算方法包括:
步驟S1,獲取語(yǔ)料數(shù)據(jù),對(duì)語(yǔ)料數(shù)據(jù)進(jìn)行預(yù)處理,得到訓(xùn)練語(yǔ)料;
步驟S2,根據(jù)訓(xùn)練語(yǔ)料,得到關(guān)鍵詞提取模型,利用分詞工具對(duì)訓(xùn)練語(yǔ)料分詞,并用word2vec訓(xùn)練獲得詞向量集;
步驟S3,獲得用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題,對(duì)候選問(wèn)答對(duì)的問(wèn)題和用戶輸入文本通過(guò)分詞工具分別進(jìn)行分詞,對(duì)候選問(wèn)答對(duì)的問(wèn)題和用戶輸入文本分別通過(guò)關(guān)鍵詞提取模型進(jìn)行關(guān)鍵詞提取,得到候選問(wèn)答對(duì)的問(wèn)題的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,及用戶輸入文本的分詞結(jié)果和關(guān)鍵詞提取結(jié)果;
步驟S4,根據(jù)候選問(wèn)答對(duì)的問(wèn)題的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,通過(guò)詞向量集計(jì)算出候選問(wèn)答對(duì)的問(wèn)題的詞向量,根據(jù)用戶輸入文本的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,通過(guò)詞向量集計(jì)算出用戶輸入文本的詞向量;
步驟S5,根據(jù)候選問(wèn)答對(duì)的問(wèn)題的詞向量,計(jì)算獲得候選問(wèn)答對(duì)的問(wèn)題的句向量,根據(jù)用戶輸入文本的詞向量,計(jì)算獲得用戶輸入文本的句向量;
步驟S6,根據(jù)候選問(wèn)答對(duì)的問(wèn)題的句向量和用戶輸入文本的句向量,計(jì)算兩個(gè)句向量間的相似度;
步驟S7,根據(jù)句向量間的相似度,通過(guò)用戶輸入的文本和候選問(wèn)答對(duì)的問(wèn)題中包含的信息進(jìn)行相似度的修正,得到修正后的相似度。
本發(fā)明是一種短文本間相似度計(jì)算方法的技術(shù)方案,先獲取語(yǔ)料數(shù)據(jù),對(duì)語(yǔ)料數(shù)據(jù)進(jìn)行預(yù)處理,得到訓(xùn)練語(yǔ)料,根據(jù)訓(xùn)練語(yǔ)料,得到關(guān)鍵詞提取模型,利用分詞工具對(duì)訓(xùn)練語(yǔ)料分詞,并用word2vec訓(xùn)練獲得詞向量集;獲得用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題,對(duì)候選問(wèn)答對(duì)的問(wèn)題和用戶輸入文本通過(guò)分詞工具分別進(jìn)行分詞,對(duì)候選問(wèn)答對(duì)的問(wèn)題和用戶輸入文本分別通過(guò)關(guān)鍵詞提取模型進(jìn)行關(guān)鍵詞提取,得到候選問(wèn)答對(duì)的問(wèn)題的分詞結(jié)果和關(guān)鍵詞提取結(jié)果,及用戶輸入文本的分詞結(jié)果和關(guān)鍵詞提取結(jié)果;接著根據(jù)候選問(wèn)答對(duì)的問(wèn)題的詞向量,計(jì)算獲得候選問(wèn)答對(duì)的問(wèn)題的句向量,根據(jù)用戶輸入文本的詞向量,計(jì)算獲得用戶輸入文本的句向量;根據(jù)候選問(wèn)答對(duì)的問(wèn)題的句向量和用戶輸入文本的句向量,計(jì)算兩個(gè)句向量間的相似度;根據(jù)句向量間的相似度,通過(guò)用戶輸入的文本和候選問(wèn)答對(duì)的問(wèn)題中包含的信息進(jìn)行相似度的修正,得到修正后的相似度。
本發(fā)明是一種短文本間相似度計(jì)算方法,采用了對(duì)用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題進(jìn)行分詞和提取關(guān)鍵詞的處理,然后根據(jù)分詞和關(guān)鍵詞及詞向量集獲得用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題的詞向量,然后分別計(jì)算這兩者的詞向量,得到用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題的句向量,最后通過(guò)計(jì)算得到兩個(gè)句向量間的余弦相似度,進(jìn)一步通過(guò)用戶輸入的文本和候選問(wèn)答對(duì)的問(wèn)題中包含的信息對(duì)相似度進(jìn)行修正,得到更加準(zhǔn)確的相似度,使人機(jī)對(duì)話系統(tǒng)中,回復(fù)用戶的回答更準(zhǔn)確。
具體地,語(yǔ)料數(shù)據(jù)通過(guò)網(wǎng)絡(luò)爬蟲技術(shù)獲得。通過(guò)爬蟲技術(shù)獲得大量語(yǔ)料,爬蟲技術(shù)是一種自動(dòng)獲取網(wǎng)頁(yè)內(nèi)容的程序,通過(guò)爬蟲獲得一些貼吧、問(wèn)答社區(qū)、論壇、微博、百科、新聞等特別是內(nèi)容較長(zhǎng)語(yǔ)義信息豐富同時(shí)又比較口語(yǔ)化的帖子及回復(fù)等作為訓(xùn)練語(yǔ)料,使得語(yǔ)料信息全面豐富,語(yǔ)料的選擇會(huì)影響到訓(xùn)練模型的好壞,也就直接影響分詞和關(guān)鍵詞提取及詞向量集,最終影響相似度。
還要對(duì)爬到的語(yǔ)料數(shù)據(jù)進(jìn)行預(yù)處理,得到訓(xùn)練語(yǔ)料,主要是對(duì)非中文內(nèi)容、黃色信息和廣告等做了一定的過(guò)濾。之后將同一內(nèi)容的多段文字拼接成一行,繁體字轉(zhuǎn)成簡(jiǎn)體字,再做分詞,將標(biāo)點(diǎn)符號(hào)去掉并用空格代替。
語(yǔ)料數(shù)據(jù)預(yù)處理后,具體地,通過(guò)word2vec模型訓(xùn)練得到每個(gè)詞的詞向量。word2vec訓(xùn)練工具是一種神經(jīng)網(wǎng)絡(luò)模型,這種模型訓(xùn)練方法獲得的詞向量的語(yǔ)義信息是根據(jù)詞的貢獻(xiàn)來(lái)捕獲的。通過(guò)word2vec模型訓(xùn)練得到詞向量集,再結(jié)合關(guān)鍵詞的信息可以計(jì)算得到更準(zhǔn)確的句向量,使相似度更精確。
通過(guò)訓(xùn)練語(yǔ)料獲得關(guān)鍵詞提取模型。要先對(duì)訓(xùn)練語(yǔ)料進(jìn)行分詞,然后再由人工去標(biāo)注句子中的關(guān)鍵詞(未被標(biāo)注的即為非關(guān)鍵詞),然后用最大熵訓(xùn)練一個(gè)2分類的分類器。用戶輸入文本與候選問(wèn)答對(duì)的問(wèn)題在分詞后輸入關(guān)鍵詞抽取模型,模型會(huì)對(duì)每個(gè)分詞做一個(gè)2分類,預(yù)測(cè)是否為關(guān)鍵詞,以此便可獲得各自的關(guān)鍵詞集。為了進(jìn)一步提升系統(tǒng)性能,所有問(wèn)答對(duì)中的問(wèn)題的分詞和關(guān)鍵詞提取可以提前做好。通過(guò)分詞工具和關(guān)鍵詞提取模型得到用戶輸入文本和問(wèn)答對(duì)中的問(wèn)題對(duì)應(yīng)的分詞和關(guān)鍵詞。進(jìn)而通過(guò)word2vec的詞向量集得到用戶輸入文本和問(wèn)答對(duì)中的問(wèn)題中每個(gè)詞對(duì)應(yīng)的詞向量。
計(jì)算用戶輸入文本和問(wèn)答對(duì)中的問(wèn)題對(duì)應(yīng)的句向量,計(jì)算方法都是0.8*(所有分詞的詞向量的平均值)+0.2*(關(guān)鍵詞詞向量的平均值)。向量的平均值就是把各個(gè)向量的對(duì)應(yīng)維度值相加然后除以向量個(gè)數(shù)。另外分詞包含了關(guān)鍵詞,所以這種計(jì)算方法是對(duì)關(guān)鍵詞進(jìn)行加權(quán),因?yàn)殛P(guān)鍵詞更能代表文本的語(yǔ)義。0.8與0.2的權(quán)重是通過(guò)多次試驗(yàn)得出的結(jié)論。由于詞向量都是300維,所以用戶輸入與候選問(wèn)答對(duì)中的問(wèn)題的句向量也都為300維。
具體地,分詞工具為漢語(yǔ)言處理工具包hanlp。通過(guò)分詞工具對(duì)訓(xùn)練語(yǔ)料進(jìn)行分詞,本發(fā)明選用的分詞工具是hanlp(Han Language Processing),hanlp是開(kāi)源自由的漢語(yǔ)言處理包,是由一系列模型與算法組成的Java工具包,可以實(shí)現(xiàn)中文分詞,關(guān)鍵詞提取,索引分詞等一系列功能,還具有提供詞法分析、句法分析、語(yǔ)義理解等完備的功能。hanlp具備功能完善、性能高效、架構(gòu)清晰、語(yǔ)料時(shí)新、可自定義的特點(diǎn)。因此本發(fā)明選用hanlp作為分詞工具。
得到用戶輸入文本和問(wèn)答對(duì)中的問(wèn)題對(duì)應(yīng)的句向量后,要計(jì)算句向量間的相似度,通過(guò)余弦相似度的方法計(jì)算,它的值域是[0,1]。根據(jù)兩個(gè)向量間的余弦計(jì)算方法計(jì)算兩個(gè)向量間的余弦值,余弦值越接近1,就表明夾角越接近0度,也就是兩個(gè)句向量越相似。余弦計(jì)算方法快速簡(jiǎn)單,可提高系統(tǒng)性能。
本發(fā)明最主要的是通過(guò)用戶輸入文本和候選問(wèn)答對(duì)的問(wèn)題中包含的信息對(duì)相似度進(jìn)行修正,此信息主要包括文本句型、命名實(shí)體和人稱代詞,命名實(shí)體本發(fā)明主要考慮地名和機(jī)構(gòu)名稱等。這些信息在所述中的句向量相似度中并未考慮,因此需要利用此信息進(jìn)行修正。
根據(jù)日常對(duì)話經(jīng)驗(yàn)及實(shí)驗(yàn)結(jié)果來(lái)看,結(jié)合以下三種情況對(duì)相似度進(jìn)行修正:
第一種情況,根據(jù)文本句型對(duì)相似度進(jìn)行修正。
當(dāng)用戶輸入的文本信息是“是非問(wèn)句”時(shí),例如:“你昨天去過(guò)天壇嗎?”,或者“正反問(wèn)句”,例如:“你有沒(méi)有去過(guò)天壇?”,通常和“陳述句”類型的問(wèn)答對(duì)的問(wèn)題語(yǔ)義上相差大,即如果用戶輸入的短文本是“是非問(wèn)句”或“正反問(wèn)句”的句型,而候選問(wèn)答對(duì)中的問(wèn)題為“陳述句”時(shí),所得相似度需進(jìn)一步減小,同理若用戶輸入為“陳述句”而候選問(wèn)答對(duì)的問(wèn)題為“是非問(wèn)句”或“正反問(wèn)句”時(shí),所得相似度需減小(具體減小比例需根據(jù)系統(tǒng)使用的問(wèn)答對(duì)這個(gè)語(yǔ)料及通過(guò)實(shí)驗(yàn)來(lái)決定,本發(fā)明根據(jù)現(xiàn)有語(yǔ)料和實(shí)驗(yàn),建議相似度減小30%左右)。
類似還有“肯定句”與“否定句”。系統(tǒng)實(shí)現(xiàn)上使用語(yǔ)言學(xué)規(guī)則用句型模板來(lái)判斷句型。
第二種情況,根據(jù)命名實(shí)體對(duì)相似度進(jìn)行修正。
如果用戶輸入文本和候選問(wèn)答對(duì)中的問(wèn)題各自包含一個(gè)同類型的命名實(shí)體(如都有一個(gè)地名,或都有一個(gè)機(jī)構(gòu)名),但兩者包含地名不同且地名間無(wú)包含關(guān)系(如北京與海淀區(qū)就屬于包含關(guān)系)時(shí),所得相似度需減小(具體減小比例需要根據(jù)系統(tǒng)使用語(yǔ)料及通過(guò)實(shí)驗(yàn)來(lái)決定,本發(fā)明根據(jù)現(xiàn)有語(yǔ)料和實(shí)驗(yàn),建議相似度減小50%左右)。實(shí)現(xiàn)上,為了控制解決的問(wèn)題的邊界和系統(tǒng)運(yùn)行效率,本發(fā)明使用字典方法,字典文件包含中國(guó)主要地級(jí)市,每個(gè)地名間相互獨(dú)立無(wú)包含關(guān)系。這樣就避免了因?yàn)樵谟?xùn)練語(yǔ)料中地名相關(guān)導(dǎo)致計(jì)算出的語(yǔ)義相似度過(guò)高(如“北京有什么好吃的?”與“上海有什么好吃的?”,“北京”與“上?!苯?jīng)常在訓(xùn)練語(yǔ)料中一起出現(xiàn),它們的詞向量很相關(guān),但這兩個(gè)句子語(yǔ)義相差大)。機(jī)構(gòu)名也類似處理。
第三種情況,根據(jù)人稱代詞對(duì)相似度進(jìn)行修正。
如果用戶輸入文本和候選問(wèn)答對(duì)中的問(wèn)題各自包含一個(gè)代詞,如用戶輸入文本為“我今天去天壇玩了”與候選問(wèn)答對(duì)中的問(wèn)題為“他今天去天壇玩了”,此時(shí),兩句話中的人稱代詞存在差異,所得相似度需進(jìn)一步減小(具體減小比例需要根據(jù)系統(tǒng)使用語(yǔ)料及通過(guò)實(shí)驗(yàn)來(lái)決定,本發(fā)明根據(jù)現(xiàn)有語(yǔ)料和實(shí)驗(yàn),建議相似度減小50%左右)。實(shí)現(xiàn)上也使用字典方法,字典文件包含常用代詞。
需要說(shuō)明的是,本發(fā)明中通過(guò)以上三種方式修正相似度,還可以通過(guò)其他方式判斷文本的語(yǔ)義,進(jìn)一步修正相似度。
本發(fā)明通過(guò)以上方法可以較準(zhǔn)確地計(jì)算人機(jī)對(duì)話系統(tǒng)中的這種短文本間的語(yǔ)義相似度的準(zhǔn)確性,更好地充分利用有限的問(wèn)答對(duì)資料,提高人機(jī)對(duì)話系統(tǒng)的用戶體驗(yàn)。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說(shuō)明書的范圍當(dāng)中。