本發(fā)明涉及語義識(shí)別技術(shù)領(lǐng)域,尤其涉及一種語義邏輯處理方法及系統(tǒng)。
背景技術(shù):
近年來,隨著人工智能,物聯(lián)網(wǎng)技術(shù)的快速發(fā)展和大數(shù)據(jù)處理以及計(jì)算能力的不斷提升,智能助手作為一種結(jié)合機(jī)器智能和會(huì)話的新型產(chǎn)品形態(tài),以更好地連接人和服務(wù),人和信息為目標(biāo),通過和用戶使用自然語言進(jìn)行多輪交互的方式,為用戶帶來了新的人性化服務(wù)體驗(yàn)和服務(wù)便利,代表如googleassistant,amazonalexa,microsoftcortana以及applesiri等。
目前,智能助手以人機(jī)語音交互方式為主,現(xiàn)有技術(shù)中,通常是獲取用戶輸入的語音信息,通過語音識(shí)別技術(shù)將語音轉(zhuǎn)換成文本,再通過語義理解技術(shù)理解用戶的意圖,隨后通過對話管理技術(shù),結(jié)合上下文和用戶信息,生成并執(zhí)行一系列行為和策略,最后使用文本生成技術(shù)和語音合成技術(shù)將處理的結(jié)果以自然語言形式返回給用戶。
其中,語義理解技術(shù)是智能助手系統(tǒng)的核心技術(shù)之一,現(xiàn)有的語義理解技術(shù)也存在許多問題。例如:對于簡單的口語短句,通過意圖識(shí)別和語義槽填充技術(shù)能夠較好地理解用戶的簡單需求,但對于較長的句子和復(fù)雜的句式,在理解用戶的需求時(shí)往往忽略了句子的邏輯,從而理解錯(cuò)誤。例如,用戶輸入“我想看日本電影,不要恐怖片”,現(xiàn)有技術(shù)會(huì)忽略“不要”這一需求,給用戶返回包含恐怖片的結(jié)果。此外,現(xiàn)有的語義理解技術(shù)通常以語音識(shí)別的結(jié)果作為基礎(chǔ)輸入,而在語音識(shí)別時(shí)由于受噪聲等多種因素影響,對于多個(gè)句子存在沒有正確分句、句子邊界混淆的問題,往往識(shí)別為同一句輸出,為后續(xù)的語義理解帶來較大誤差。例如,用戶輸入的句子為“不想看這個(gè),我要看哈利波特”,語音識(shí)別后得到的結(jié)果句子為“不想看這個(gè)我要看哈利波特”,由于現(xiàn)有語義理解技術(shù)通常依賴于依存句法分析,而依存句法分析通常是面向規(guī)范的書面句子,對于不規(guī)范的口語長句,識(shí)別精度不高。
此外,現(xiàn)有的口語理解技術(shù)雖然通過預(yù)處理技術(shù)及序列標(biāo)注技術(shù)能夠提取出命名實(shí)體,解決口語中存在的重復(fù)、停頓、冗余填充詞等不連貫口語現(xiàn)象,但沒有解決口語長句的句子邊界切分問題和句子邏輯理解問題,從而無法深層次理解用戶的復(fù)雜需求,不足以用于支撐智能助手應(yīng)用。因此,如何提高語義邏輯理解的精確度是一項(xiàng)亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種語義邏輯處理方法,能夠提高語義理解和用戶需求理解的精確度。
本發(fā)明提供了一種語義邏輯處理方法,包括:
獲取待語義分析信息;
識(shí)別所述待語義分析信息,將所述待語義分析信息轉(zhuǎn)換為目標(biāo)文本信息;
對所述目標(biāo)文本信息進(jìn)行預(yù)處理,生成與所述目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將所述實(shí)體標(biāo)簽添加至所述目標(biāo)文本信息,生成第一文本信息;
對所述第一文本信息進(jìn)行切分,得到至少一個(gè)句子;
對切分后得到的句子進(jìn)行處理,得到每個(gè)句子的意圖類別、意圖邏輯關(guān)系以及語義槽值;
基于所述意圖類別、意圖邏輯關(guān)系以及語義槽值分析所述待語義分析信息的語義。
優(yōu)選地,所述待語義分析信息包括語音信息,所述識(shí)別所述待語義分析信息,將所述待語義分析信息轉(zhuǎn)換為目標(biāo)文本信息包括:
對所述語音信息進(jìn)行語音識(shí)別,將所述語音信息轉(zhuǎn)換為目標(biāo)文本信息。
優(yōu)選地,所述對所述目標(biāo)文本信息進(jìn)行預(yù)處理,生成與所述目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將所述實(shí)體標(biāo)簽添加至所述目標(biāo)文本信息,生成第一文本信息包括:
對所述目標(biāo)文本信息進(jìn)行分詞和詞性標(biāo)注;
對所述目標(biāo)文本信息的詞性標(biāo)注結(jié)果進(jìn)行修正和轉(zhuǎn)換;
生成經(jīng)過修正和轉(zhuǎn)換后的目標(biāo)文本信息中的實(shí)體詞對應(yīng)的實(shí)體標(biāo)簽;
將所述實(shí)體標(biāo)簽添加至所述目標(biāo)文本信息中對應(yīng)的實(shí)體詞后,生成第一文本信息。
優(yōu)選地,所述對所述第一文本信息進(jìn)行切分,得到至少一個(gè)句子包括:
將用戶口語語料庫中的句子進(jìn)行分組,提取每組句子的最大公共長度子序列作為句子模板,生成句子模板庫;
訓(xùn)練生成句子邊界檢測模型;
將所述第一文本信息輸入所述句子模板庫,判斷所述第一文本信息中的句子是否與所述句子模板庫中的句子模板匹配;
當(dāng)所述第一文本信息中的句子與句子模板庫中的句子模板不相匹配時(shí),基于所述句子邊界檢測模型將輸入的第一文本信息中的句子進(jìn)行句子切分。
優(yōu)選地,所述對切分后得到的句子進(jìn)行處理,得到意圖邏輯關(guān)系包括:
當(dāng)同一組中的句子為兩句或兩句以上時(shí),將同一組中的句子輸入分類器中,以句邊界詞作為特征,獲取句子之間的并列關(guān)系或遞進(jìn)關(guān)系;
當(dāng)同一組中的句子為單個(gè)句子時(shí),判斷所述單個(gè)句子是否為否定句式;
當(dāng)單個(gè)句子為否定句式時(shí),則對當(dāng)前句子進(jìn)行語義依存分析,判斷所述否定句式中的否定詞修飾的范疇是否完整涵蓋句子意圖;
若涵蓋句子意圖,則基于否定詞位置,判斷涵蓋的是當(dāng)前句子意圖還是上一句句子意圖
一種語義邏輯處理系統(tǒng),包括:
獲取模塊,用于獲取待語義分析信息;
識(shí)別模塊,用于識(shí)別所述待語義分析信息,將所述待語義分析信息轉(zhuǎn)換為目標(biāo)文本信息;
預(yù)處理模塊,用于對所述目標(biāo)文本信息進(jìn)行預(yù)處理,生成與所述目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將所述實(shí)體標(biāo)簽添加至所述目標(biāo)文本信息,生成第一文本信息;
句子切分模塊,用于對所述第一文本信息進(jìn)行切分,得到至少一個(gè)句子;
句子處理模塊,用于對切分后得到的句子進(jìn)行處理,得到每個(gè)句子的意圖類別、意圖邏輯關(guān)系以及語義槽值;
分析模塊,用于基于所述意圖類別、意圖邏輯關(guān)系以及語義槽值分析所述待語義分析信息的語義。
優(yōu)選地,所述待語義分析信息包括語音信息,所述識(shí)別模塊包括:語音識(shí)別模塊;
所述語音識(shí)別模塊,用于對所述語音信息進(jìn)行語音識(shí)別,將所述語音信息轉(zhuǎn)換為目標(biāo)文本信息。
優(yōu)選地,所述預(yù)處理模塊包括:
分詞和詞性標(biāo)注單元,用于對所述目標(biāo)語音信息進(jìn)行分詞和詞性標(biāo)注;
修正和轉(zhuǎn)換單元,用于對所述目標(biāo)文本信息的詞性標(biāo)注結(jié)果進(jìn)行修正和轉(zhuǎn)換;
第一生成單元,用于生成經(jīng)過修正和轉(zhuǎn)換后的目標(biāo)文本信息中的實(shí)體詞對應(yīng)的實(shí)體標(biāo)簽;
第二生成單元,用于將所述實(shí)體標(biāo)簽添加至所述目標(biāo)語音信息中對應(yīng)的實(shí)體詞后,生成第一文本信息。
優(yōu)選地,所述句子切分模塊包括:
第三生成單元,用于將用戶口語語料庫中的句子進(jìn)行分組,提取每組句子的最大公共長度子序列作為句子模板,生成句子模板庫;
第四生成單元,用于訓(xùn)練生成句子邊界檢測模型;
第一判斷單元,用于將所述第一文本信息輸入所述句子模板庫,判斷所述第一文本信息中的句子是否與所述句子模板庫中的模板句子匹配;
切分單元,用于當(dāng)所述第一文本信息中的句子與句子模板庫中的句子模板不相匹配時(shí),基于所述句子邊界檢測模型將輸入的第一文本信息中的句子進(jìn)行句子切分。
優(yōu)選地,所述句子處理模塊包括:
第一獲取單元,用于當(dāng)同一組中的句子為兩句或兩句以上時(shí),將同一組中的句子輸入分類器中,以句邊界詞作為特征,獲取句子之間的并列關(guān)系或遞進(jìn)關(guān)系;
第二判斷單元,用于當(dāng)同一組中的句子為單個(gè)句子時(shí),判斷所述單個(gè)句子是否為否定句式;
第三判斷單元,用于當(dāng)單個(gè)句子為否定句式時(shí),則對當(dāng)前句子進(jìn)行語義依存分析,判斷所述否定句式中的否定詞修飾的范疇是否完整涵蓋句子意圖;
第四判斷單元,用于若涵蓋句子意圖,則基于否定詞位置,判斷涵蓋的是當(dāng)前句子意圖還是上一句句子意圖。
由上述方案可知,本發(fā)明提供的一種語義邏輯理解方法,當(dāng)需要對輸入的語音信息進(jìn)行精確的理解時(shí),首先獲取目標(biāo)語音信息,其中,目標(biāo)語音信息為待語義分析信息;然后對目標(biāo)語音信息進(jìn)行語音識(shí)別,轉(zhuǎn)換為目標(biāo)文本信息,然后對目標(biāo)文本信息進(jìn)行預(yù)處理,生成與目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息;然后基于規(guī)則與統(tǒng)計(jì)相結(jié)合的方法將第一文本信息進(jìn)行句子切分;將切分后得到的句子基于分類算法進(jìn)行意圖分類,得到每個(gè)句子的意圖類別;將切分后得到的句子按照意圖類別和上下文窗口進(jìn)行分組,對同一組中的句子進(jìn)行識(shí)別,獲取句子的意圖邏輯關(guān)系;對切分后得到的句子進(jìn)行語義槽填充;對填充后的語義槽值進(jìn)行識(shí)別,獲取語義槽值之間的邏輯關(guān)系;最后基于句子的意圖邏輯關(guān)系和語義槽值之間的邏輯關(guān)系,輸出目標(biāo)語義信息的語義理解結(jié)果,提高了語義理解和用戶需求理解的精確度,為智能助手的應(yīng)用提供了有效支撐。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明公開的一種語義邏輯處理方法的方法流程圖;
圖2為本發(fā)明公開的一種對目標(biāo)文本信息進(jìn)行預(yù)處理的方法流程圖;
圖3為本發(fā)明公開的一種對第一文本信息進(jìn)行切分的方法流程圖;
圖4為本發(fā)明公開的一種語義邏輯處理系統(tǒng)的結(jié)構(gòu)示意圖;
圖5為本發(fā)明公開的一種預(yù)處理模塊的結(jié)構(gòu)示意圖;
圖6為本發(fā)明公開的一種句子切分模塊的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,為本發(fā)明公開的一種語義邏輯處理方法實(shí)施例1的方法流程圖,該方法包括:
s101、獲取待語義分析信息;
當(dāng)需要對用戶輸入的語音信息進(jìn)行精確的語義邏輯理解時(shí),首先獲取用戶輸入的待進(jìn)行語義分析的信息。例如,用戶輸入的語音信息“搜索花千骨”即可作為待語義分析信息。
s102、識(shí)別待語義分析信息,將待語義分析信息轉(zhuǎn)換為目標(biāo)文本信息;
當(dāng)獲取到待進(jìn)行語義分析的信息后,將待語義分析信息轉(zhuǎn)換為目標(biāo)文本信息。其中,將待語義分析信息轉(zhuǎn)換成目標(biāo)文本信息可以采用端到端的深度學(xué)習(xí)方法,如卷積神經(jīng)網(wǎng)絡(luò)或雙向長短期記憶網(wǎng)絡(luò)等。
s103、對目標(biāo)文本信息進(jìn)行預(yù)處理,生成與目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息;
對目標(biāo)文本信息進(jìn)行預(yù)處理,例如進(jìn)行分詞、詞性標(biāo)注、實(shí)體識(shí)別等,生成與目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)語音信息,生成第一文本信息。例如,語音信息“搜索花千骨”進(jìn)行預(yù)處理后,生成的第一文本信息為“搜索/v花千骨/album_name”,其中v表示“搜索”的詞性為動(dòng)詞,album_name表示“花千骨”為劇名實(shí)體。
s104、對第一文本信息進(jìn)行切分,得到至少一個(gè)句子;
基于預(yù)先建立的用戶口語語料庫抽取句子模板(即規(guī)則),及訓(xùn)練句子邊界檢測模型,隨后采用句子模板和句子邊界檢測模型進(jìn)行句子切分,其中,建立用戶口語語料庫的方法可以為:采集語音搜索用戶每日搜索作為候選語料來源;對搜索進(jìn)行清洗,過濾掉低頻搜索,例如,過濾掉頻率小于3的搜索,刪除搜索中存在的噪聲字符,如制表符、換行符等;對搜索進(jìn)行去重,基于眾包的人工審核校對后得到用戶口語語料庫。
s105、對切分后得到的句子進(jìn)行處理,得到每個(gè)句子的意圖類別、意圖邏輯關(guān)系以及語義槽值;
將切分后得到的每個(gè)句子,使用分類算法進(jìn)行意圖分類,具體分類算法可以選擇最大熵,支持向量機(jī)等算法,特征選取考慮詞級(jí)別的單個(gè)詞和兩個(gè)詞,得到每個(gè)句子的意圖類別。將切分后得到的句子按照意圖類別和上下文窗口進(jìn)行分組,對同一組中的句子進(jìn)行識(shí)別,獲取句子的意圖邏輯關(guān)系;對切分后得到的句子進(jìn)行語義槽填充;抽取各意圖領(lǐng)域?qū)?yīng)的信息要素,即語義槽值,每類語義槽用于表征每個(gè)意圖領(lǐng)域中的核心信息要素,如,電影意圖領(lǐng)域的語義槽類型包括:電影名、演員、導(dǎo)演等。例如,用戶輸入:“我想看天龍八部,黃日華版本的?!保瑒t該句的意圖領(lǐng)域?yàn)樗阉麟娪?,語義槽填充模塊抽取出的語義槽值為:movie=天龍八部,actor=黃日華。本實(shí)施例中,該問題轉(zhuǎn)換為序列標(biāo)注問題解決,具體算法可以使用條件隨機(jī)場,循環(huán)神經(jīng)網(wǎng)絡(luò)等。
s106、基于意圖類別、意圖邏輯關(guān)系以及語義槽值分析待語義分析信息的語義。
對填充后的語義槽值進(jìn)行識(shí)別,獲取語義槽值之間的邏輯關(guān)系;
基于句子的意圖邏輯關(guān)系和語義槽值之間的邏輯關(guān)系,輸出目標(biāo)語義信息的語義理解結(jié)果。
綜上所述,在上述實(shí)施例中,當(dāng)需要對輸入的信息進(jìn)行精確的理解時(shí),首先獲取待語義分析信息;然后對待語義分析信息進(jìn)行識(shí)別,轉(zhuǎn)換為目標(biāo)文本信息,然后對目標(biāo)文本信息進(jìn)行預(yù)處理,生成與目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息;然后對第一文本信息進(jìn)行切分,得到至少一個(gè)句子;對切分后得到的句子進(jìn)行處理,得到每個(gè)句子的意圖類別、意圖邏輯關(guān)系以及語義槽值;基于意圖類別、意圖邏輯關(guān)系以及語義槽值分析待語義分析信息的語義,提高了語義理解和用戶需求理解的精確度,為智能助手的應(yīng)用提供了有效支撐。
具體的,在上述實(shí)施例中,獲取的待語義分析信息可以包括用戶輸入的語音信息等,例如,可以是用戶通過語音智能助手siri輸入的語音信息。當(dāng)獲取到的待語義分析信息為語音信息時(shí),對獲取到的語音信息進(jìn)行語音識(shí)別,將語音信息轉(zhuǎn)換為目標(biāo)文本信息。
具體的,在上述實(shí)施例中,將切分后得到的句子按照意圖類別和上下文窗口進(jìn)行分組,對同一組中的句子進(jìn)行識(shí)別,獲取句子的意圖邏輯關(guān)系時(shí),將句子按意圖類別和上下文窗口進(jìn)行分組,對同一組的多個(gè)句子,判斷是否存在并列或遞進(jìn)關(guān)系。轉(zhuǎn)換為關(guān)系分類問題解決,分類器可以使用常用分類器如樸素貝葉斯等,分類器的輸入為同組句子,以句邊界詞作為特征,輸出為并列關(guān)系或遞進(jìn)關(guān)系。對于單個(gè)句子,則需要判斷是否為否定句式,首先基于否定詞詞典,判斷當(dāng)前句子是否為否定句,若為否定句,則對當(dāng)前句子進(jìn)行語義依存分析,判斷否定詞修飾的范疇是否完整涵蓋句子意圖,若涵蓋句子意圖,則基于否定詞位置,判斷涵蓋的是當(dāng)前句子意圖還是上一句句子意圖。
其中,語義依存分析方法用于分析句子各個(gè)語言單位間的語義關(guān)聯(lián),并將語義關(guān)聯(lián)以依存結(jié)構(gòu)呈現(xiàn),將具有直接語義關(guān)聯(lián)的語言單元直接連接依存弧,并標(biāo)記上對應(yīng)的語義關(guān)系。具體可轉(zhuǎn)換為在有向圖中查找最大生成樹問題,本實(shí)施例中,圖的邊權(quán)重使用online算法求解,搜索算法使用eisner算法。
其中,判斷否定詞時(shí)候完成涵蓋句子意圖時(shí),主要方法是判斷與否定詞存在一階、二階語義關(guān)系的詞是否完整涵蓋句子意圖。具體方法如下,查找與否定詞之間存在語義關(guān)系的詞,記為word1,及與word1存在語義關(guān)系的詞,記為word2,基于句法分析結(jié)果及word2在句中位置,判斷word1和word2是否完整表征句子意圖。本實(shí)施例中,如word1為句子謂語,且word2在句中位置處于句子后半部分,則認(rèn)為word1和word2完整表征句子意圖。例如,“我不看哈利波特”,其中:“不”為否定詞,它與“看”之間存在語義依存弧,弧上的關(guān)系為neg(否定關(guān)系),且“看”為句子謂語,由于“看”與“哈利波特”之間也存在著語義依存弧,且弧上的關(guān)系為cont(客事關(guān)系),且“哈利波特”位于句子后半部,則認(rèn)為否定詞完整涵蓋句子意圖。如與否定詞存在二階語義關(guān)系的詞為代詞,則可判斷否定詞修飾的范疇涵蓋上一句句子意圖。例如,用戶先說:“我想看哈利波特”,然后說“還是不看這個(gè)了”,由于“這個(gè)”為代詞,則可判斷當(dāng)前否定詞修飾的范圍涵蓋上一句子。
具體的,在上述實(shí)施例中,對填充后的語義槽值進(jìn)行識(shí)別,獲取語義槽值之間的邏輯關(guān)系時(shí),若當(dāng)前句子存在多個(gè)同類語義槽值,則基于語義槽之間的連接詞和判斷語義槽值之間的關(guān)系為and或or,對每個(gè)語義槽值,基于否定詞詞典判斷語義槽值上下文窗口中存在否定詞,再基于語義依存分析結(jié)果,判斷該否定詞的修飾范圍是否涵蓋語義槽值,如果涵蓋則判別該語義槽值為否定式。
如圖2所示,為本發(fā)明公開的步驟s103的其中一種實(shí)現(xiàn)方式,具體可以包括以下步驟:
s201、對目標(biāo)文本信息進(jìn)行分詞和詞性標(biāo)注;
s202、對目標(biāo)文本信息的詞性標(biāo)注結(jié)果進(jìn)行修正和轉(zhuǎn)換;
s203、生成經(jīng)過修正和轉(zhuǎn)換后的目標(biāo)文本信息中的實(shí)體詞對應(yīng)的實(shí)體標(biāo)簽;
s204、將實(shí)體標(biāo)簽添加至目標(biāo)文本信息中對應(yīng)的實(shí)體詞后,生成第一文本信息。
在對目標(biāo)文本信息進(jìn)行預(yù)處理,生成與文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息時(shí),分詞和詞性標(biāo)注作為聯(lián)合任務(wù),一體化建模處理,基于隱馬爾可夫模型實(shí)現(xiàn)文本分詞和詞性標(biāo)注。實(shí)體識(shí)別使用規(guī)則與統(tǒng)計(jì)相結(jié)合的方法,基于隱馬爾可夫模型詞性標(biāo)注的結(jié)果,利用具有優(yōu)先級(jí)別的規(guī)則對命名實(shí)體(主要包括:人名、地名、機(jī)構(gòu)名、劇名)標(biāo)注結(jié)果進(jìn)行修正和轉(zhuǎn)換。例如,用戶輸入:“搜索花千骨”,經(jīng)過分詞、詞性標(biāo)注、實(shí)體識(shí)別的結(jié)果為“搜索/v花千骨/album_name”,其中v表示“搜索”的詞性為動(dòng)詞,album_name表示“花千骨”為劇名實(shí)體。隨后,基于字符串精確匹配的方法,將識(shí)別的實(shí)體詞對應(yīng)的實(shí)體標(biāo)簽添加至對應(yīng)的實(shí)體詞后,生成第一文本信息,例如:“搜索花千骨”添加實(shí)體標(biāo)簽后后變?yōu)椤八阉?v花千骨/album_name”。
如圖3所示,為本發(fā)明公開的步驟s104的其中一種實(shí)現(xiàn)方式,具體可以包括以下步驟:
s301、將用戶口語語料庫中的句子進(jìn)行分組,提取每組句子的最大公共長度子序列作為句子模板,生成句子模板庫;
s302、訓(xùn)練生成句子邊界檢測模型;
s303、將第一文本信息輸入句子模板庫,判斷第一文本信息中的句子是否與句子模板庫中的句子模板匹配;
s304、當(dāng)?shù)谝晃谋拘畔⒅械木渥优c句子模板庫中的句子模板不相匹配時(shí),基于句子邊界檢測模型將輸入的第一文本信息中的句子進(jìn)行句子切分。
在基于預(yù)先建立的用戶口語語料庫,將第一文本信息進(jìn)行句子切分時(shí),以用戶口語語料庫作為輸入,首先對每個(gè)句子分詞與實(shí)體識(shí)別,將實(shí)體詞替換為對應(yīng)的實(shí)體標(biāo)簽,然后將句子聚類或分組,使用基于最大公共長度子序列算法的方法提取每簇句子的最大公共長度子序列作為句子模板入庫。句子邊界檢測模型訓(xùn)練模塊將句子邊界檢測轉(zhuǎn)換為序列標(biāo)注問題,序列標(biāo)簽為:{句首詞、句尾詞,句中詞},基于條件隨機(jī)場建模,特征模板的一元特征選取使用當(dāng)前詞的詞形和詞性,二元特征采用當(dāng)前詞與前后詞的詞形、詞性組合,以用戶口語語料庫作為訓(xùn)練集,訓(xùn)練生成句子邊界檢測模型。句子在線切分模塊,首先進(jìn)行模板匹配,如果當(dāng)前輸入與句子模板庫中的模板完全精確匹配,則認(rèn)為當(dāng)前輸入無需分句,否則,使用句子邊界檢測模型進(jìn)行句子邊界檢測,將當(dāng)前輸入切分為多句。
在將句子聚類或分組時(shí),可以采用在用戶口語句子語料庫上訓(xùn)練深度結(jié)構(gòu)化語義模型,訓(xùn)練完成后,每個(gè)句子對應(yīng)一個(gè)低維稠密的向量表示,且相近語義的句子在向量空間中距離相近。隨后基于hac聚類算法進(jìn)行聚類,聚類完成后,每個(gè)語料庫中的句子會(huì)被分到特定的簇,這里的簇可以理解為某個(gè)組。例如,“搜索album_name”,”我想搜索album_name”會(huì)被分到同一組,“關(guān)燈”,“關(guān)閉燈”會(huì)被分到同一組。
其中,最大長度公共子序列指的是該組句子的最大長度公共子串,例如“我想搜索album_name”和“搜索album_name”的最大長度公共子串是“搜索album_name”。
具體的,在使用句子邊界檢測模型進(jìn)行句子邊界檢測時(shí),可以將句子進(jìn)行分詞和詞性標(biāo)注,抽取一元特征和二元特征,使用訓(xùn)練好的條件隨機(jī)場模型進(jìn)行標(biāo)注,例如:“我想看電影你幫我找一下”,使用條件隨機(jī)場模型標(biāo)注后,句子中的每個(gè)詞都會(huì)得到一個(gè)對應(yīng)的標(biāo)簽,如本例結(jié)果即為:“我/sentence_begin想/sentence_middle看/sentence_middle電影/sentence_end你/sentence_begin幫/sentence_middle我/sentence_middle找/sentence_middle一/sentence_middle下/sentence_end”,每個(gè)被標(biāo)識(shí)為sentence_end的詞即為一個(gè)句子的結(jié)尾詞,從而本例結(jié)果被切分為兩句,如下:句1:我/sentence_begin想/sentence_middle看/sentence_middle電影/sentence_end;句2:你/sentence_begin幫/sentence_middle我/sentence_middle找/sentence_middle一/sentence_middle下/sentence_end。
如圖4所示,為本發(fā)明公開的一種語義邏輯處理系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)包括:
獲取模塊401,用于獲取待語義分析信息;
當(dāng)需要對用戶輸入的語音信息進(jìn)行精確的語義邏輯理解時(shí),首先獲取用戶輸入的待進(jìn)行語義分析的信息。例如,用戶輸入的語音信息“搜索花千骨”即可作為待語義分析信息。
識(shí)別模塊402,用于識(shí)別所述待語義分析信息,將所述待語義分析信息轉(zhuǎn)換為目標(biāo)文本信息;
當(dāng)獲取到待進(jìn)行語義分析的信息后,將待語義分析信息轉(zhuǎn)換為目標(biāo)文本信息。其中,將待語義分析信息轉(zhuǎn)換成目標(biāo)文本信息可以采用端到端的深度學(xué)習(xí)方法,如卷積神經(jīng)網(wǎng)絡(luò)或雙向長短期記憶網(wǎng)絡(luò)等。
預(yù)處理模塊403,用于對目標(biāo)文本信息進(jìn)行預(yù)處理,生成與目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息;
對目標(biāo)文本信息進(jìn)行預(yù)處理,例如進(jìn)行分詞、詞性標(biāo)注、實(shí)體識(shí)別等,生成與目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息。例如,語音信息“搜索花千骨”進(jìn)行預(yù)處理后,生成的第一文本信息為“搜索/v花千骨/album_name”,其中v表示“搜索”的詞性為動(dòng)詞,album_name表示“花千骨”為劇名實(shí)體。
句子切分模塊404,用于對所述第一文本信息進(jìn)行切分,得到至少一個(gè)句子;
基于預(yù)先建立的用戶口語語料庫抽取句子模板(即規(guī)則),及訓(xùn)練句子邊界檢測模型,隨后采用句子模板和句子邊界檢測模型進(jìn)行句子切分,其中,建立用戶口語語料庫的方法可以為:采集語音搜索用戶每日搜索作為候選語料來源;對搜索進(jìn)行清洗,過濾掉低頻搜索,例如,過濾掉頻率小于3的搜索,刪除搜索中存在的噪聲字符,如制表符、換行符等;對搜索進(jìn)行去重,基于眾包的人工審核校對后得到用戶口語語料庫。
句子處理模塊405,用于對切分后得到的句子進(jìn)行處理,得到每個(gè)句子的意圖類別、意圖邏輯關(guān)系以及語義槽值;
將切分后得到的每個(gè)句子,使用分類算法進(jìn)行意圖分類,具體分類算法可以選擇最大熵,支持向量機(jī)等算法,特征選取考慮詞級(jí)別的單個(gè)詞和兩個(gè)詞,得到每個(gè)句子的意圖類別。將切分后得到的句子按照意圖類別和上下文窗口進(jìn)行分組,對同一組中的句子進(jìn)行識(shí)別,獲取句子的意圖邏輯關(guān)系;對切分后得到的句子進(jìn)行語義槽填充;抽取各意圖領(lǐng)域?qū)?yīng)的信息要素,即語義槽值,每類語義槽用于表征每個(gè)意圖領(lǐng)域中的核心信息要素,如,電影意圖領(lǐng)域的語義槽類型包括:電影名、演員、導(dǎo)演等。例如,用戶輸入:“我想看天龍八部,黃日華版本的?!保瑒t該句的意圖領(lǐng)域?yàn)樗阉麟娪?,語義槽填充模塊抽取出的語義槽值為:movie=天龍八部,actor=黃日華。本實(shí)施例中,該問題轉(zhuǎn)換為序列標(biāo)注問題解決,具體算法可以使用條件隨機(jī)場,循環(huán)神經(jīng)網(wǎng)絡(luò)等。
分析模塊406,用于基于所述意圖類別、意圖邏輯關(guān)系以及語義槽值分析所述待語義分析信息的語義。
對填充后的語義槽值進(jìn)行識(shí)別,獲取語義槽值之間的邏輯關(guān)系;基于句子的意圖邏輯關(guān)系和語義槽值之間的邏輯關(guān)系,輸出目標(biāo)語義信息的語義理解結(jié)果。
綜上所述,在上述實(shí)施例中,當(dāng)需要對輸入的信息進(jìn)行精確的理解時(shí),首先獲取待語義分析信息;然后對待語義分析信息進(jìn)行識(shí)別,轉(zhuǎn)換為目標(biāo)文本信息,然后對目標(biāo)文本信息進(jìn)行預(yù)處理,生成與目標(biāo)文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息;然后對第一文本信息進(jìn)行切分,得到至少一個(gè)句子;對切分后得到的句子進(jìn)行處理,得到每個(gè)句子的意圖類別、意圖邏輯關(guān)系以及語義槽值;基于意圖類別、意圖邏輯關(guān)系以及語義槽值分析待語義分析信息的語義,提高了語義理解和用戶需求理解的精確度,為智能助手的應(yīng)用提供了有效支撐。
具體的,在上述實(shí)施例中,獲取的待語義分析信息可以包括用戶輸入的語音信息等,當(dāng)獲取到的待語義分析信息為語音信息時(shí),通過語音識(shí)別模塊對獲取到的語音信息進(jìn)行語音識(shí)別,將語音信息轉(zhuǎn)換為目標(biāo)文本信息。
具體的,在上述實(shí)施例中,句子處理模塊將切分后得到的句子按照意圖類別和上下文窗口進(jìn)行分組,對同一組中的句子進(jìn)行識(shí)別,獲取句子的意圖邏輯關(guān)系時(shí),將句子按意圖類別和上下文窗口進(jìn)行分組,對同一組的多個(gè)句子,判斷是否存在并列或遞進(jìn)關(guān)系。轉(zhuǎn)換為關(guān)系分類問題解決,分類器可以使用常用分類器如樸素貝葉斯等,分類器的輸入為同組句子,以句邊界詞作為特征,輸出為并列關(guān)系或遞進(jìn)關(guān)系。對于單個(gè)句子,則需要判斷是否為否定句式,首先基于否定詞詞典,判斷當(dāng)前句子是否為否定句,若為否定句,則對當(dāng)前句子進(jìn)行語義依存分析,判斷否定詞修飾的范疇是否完整涵蓋句子意圖,若涵蓋句子意圖,則基于否定詞位置,判斷涵蓋的是當(dāng)前句子意圖還是上一句句子意圖。
其中,語義依存分析方法用于分析句子各個(gè)語言單位間的語義關(guān)聯(lián),并將語義關(guān)聯(lián)以依存結(jié)構(gòu)呈現(xiàn),將具有直接語義關(guān)聯(lián)的語言單元直接連接依存弧,并標(biāo)記上對應(yīng)的語義關(guān)系。具體可轉(zhuǎn)換為在有向圖中查找最大生成樹問題,本實(shí)施例中,圖的邊權(quán)重使用online算法求解,搜索算法使用eisner算法。
其中,判斷否定詞時(shí)候完成涵蓋句子意圖時(shí),主要方法是判斷與否定詞存在一階、二階語義關(guān)系的詞是否完整涵蓋句子意圖。具體方法如下,查找與否定詞之間存在語義關(guān)系的詞,記為word1,及與word1存在語義關(guān)系的詞,記為word2,基于句法分析結(jié)果及word2在句中位置,判斷word1和word2是否完整表征句子意圖。本實(shí)施例中,如word1為句子謂語,且word2在句中位置處于句子后半部分,則認(rèn)為word1和word2完整表征句子意圖。例如,“我不看哈利波特”,其中:“不”為否定詞,它與“看”之間存在語義依存弧,弧上的關(guān)系為neg(否定關(guān)系),且“看”為句子謂語,由于“看”與“哈利波特”之間也存在著語義依存弧,且弧上的關(guān)系為cont(客事關(guān)系),且“哈利波特”位于句子后半部,則認(rèn)為否定詞完整涵蓋句子意圖。如與否定詞存在二階語義關(guān)系的詞為代詞,則可判斷否定詞修飾的范疇涵蓋上一句句子意圖。例如,用戶先說:“我想看哈利波特”,然后說“還是不看這個(gè)了”,由于“這個(gè)”為代詞,則可判斷當(dāng)前否定詞修飾的范圍涵蓋上一句子。
具體的,在上述實(shí)施例中,對填充后的語義槽值進(jìn)行識(shí)別,獲取語義槽值之間的邏輯關(guān)系時(shí),若當(dāng)前句子存在多個(gè)同類語義槽值,則基于語義槽之間的連接詞和判斷語義槽值之間的關(guān)系為and或or,對每個(gè)語義槽值,基于否定詞詞典判斷語義槽值上下文窗口中存在否定詞,再基于語義依存分析結(jié)果,判斷該否定詞的修飾范圍是否涵蓋語義槽值,如果涵蓋則判別該語義槽值為否定式。
如圖5所示,為本發(fā)明公開的一種預(yù)處理模塊的結(jié)構(gòu)示意圖,所示預(yù)處理模塊包括:
分詞和詞性標(biāo)注單元501,用于對目標(biāo)語音信息進(jìn)行分詞和詞性標(biāo)注;
修正和轉(zhuǎn)換502,用于對目標(biāo)文本信息的詞性標(biāo)注結(jié)果進(jìn)行修正和轉(zhuǎn)換;
第一生成單元503,用于生成經(jīng)過修正和轉(zhuǎn)換后的目標(biāo)文本信息中的實(shí)體詞對應(yīng)的實(shí)體標(biāo)簽;
第二生成單元504,用于將實(shí)體標(biāo)簽添加至目標(biāo)文本信息中對應(yīng)的實(shí)體詞后,生成第一文本信息。
在對目標(biāo)文本信息進(jìn)行預(yù)處理,生成與文本信息中的實(shí)體詞相對應(yīng)的實(shí)體標(biāo)簽,并將實(shí)體標(biāo)簽添加至目標(biāo)文本信息,生成第一文本信息時(shí),分詞和詞性標(biāo)注作為聯(lián)合任務(wù),一體化建模處理,基于隱馬爾可夫模型實(shí)現(xiàn)文本分詞和詞性標(biāo)注。實(shí)體識(shí)別使用規(guī)則與統(tǒng)計(jì)相結(jié)合的方法,基于隱馬爾可夫模型詞性標(biāo)注的結(jié)果,利用具有優(yōu)先級(jí)別的規(guī)則對命名實(shí)體(主要包括:人名、地名、機(jī)構(gòu)名、劇名)標(biāo)注結(jié)果進(jìn)行修正和轉(zhuǎn)換。例如,用戶輸入:“搜索花千骨”,經(jīng)過分詞、詞性標(biāo)注、實(shí)體識(shí)別的結(jié)果為“搜索/v花千骨/album_name”,其中v表示“搜索”的詞性為動(dòng)詞,album_name表示“花千骨”為劇名實(shí)體。隨后,基于字符串精確匹配的方法,將識(shí)別的實(shí)體詞對應(yīng)的實(shí)體標(biāo)簽添加至對應(yīng)的實(shí)體詞后,生成第一文本信息,例如:“搜索花千骨”添加實(shí)體標(biāo)簽后后變?yōu)椤八阉?v花千骨/album_name”。
如圖6所示,為本發(fā)明公開一種句子切分模塊的結(jié)構(gòu)示意圖,所示句子切分模塊可以包括:
第三生成單元601,用于將用戶口語語料庫中的句子進(jìn)行分組,提取每組句子的最大公共長度子序列作為句子模板,生成句子模板庫;
第四生成單元602,用于訓(xùn)練生成句子邊界檢測模型;
第一判斷單元603,用于將第一文本信息輸入句子模板庫,判斷第一文本信息中的句子是否與句子模板庫中的句子模板匹配;
切分單元604,用于當(dāng)當(dāng)前輸入的第一文本信息中的句子與句子模板庫中的句子模板不相匹配時(shí),基于句子邊界檢測模型將輸入的第一文本信息中的句子進(jìn)行句子切分。
在基于預(yù)先建立的用戶口語語料庫,將第一文本信息進(jìn)行句子切分時(shí),以用戶口語語料庫作為輸入,首先對每個(gè)句子分詞與實(shí)體識(shí)別,將實(shí)體詞替換為對應(yīng)的實(shí)體標(biāo)簽,然后將句子聚類或分組,使用基于最大公共長度子序列算法的方法提取每簇句子的最大公共長度子序列作為句子模板入庫。句子邊界檢測模型訓(xùn)練模塊將句子邊界檢測轉(zhuǎn)換為序列標(biāo)注問題,序列標(biāo)簽為:{句首詞、句尾詞,句中詞},基于條件隨機(jī)場建模,特征模板的一元特征選取使用當(dāng)前詞的詞形和詞性,二元特征采用當(dāng)前詞與前后詞的詞形、詞性組合,以用戶口語語料庫作為訓(xùn)練集,訓(xùn)練生成句子邊界檢測模型。句子在線切分模塊,首先進(jìn)行模板匹配,如果當(dāng)前輸入與句子模板庫中的模板完全精確匹配,則認(rèn)為當(dāng)前輸入無需分句,否則,使用句子邊界檢測模型進(jìn)行句子邊界檢測,將當(dāng)前輸入切分為多句。
在將句子聚類或分組時(shí),可以采用在用戶口語句子語料庫上訓(xùn)練深度結(jié)構(gòu)化語義模型,訓(xùn)練完成后,每個(gè)句子對應(yīng)一個(gè)低維稠密的向量表示,且相近語義的句子在向量空間中距離相近。隨后基于hac聚類算法進(jìn)行聚類,聚類完成后,每個(gè)語料庫中的句子會(huì)被分到特定的簇,這里的簇可以理解為某個(gè)組。例如,“搜索album_name”,”我想搜索album_name”會(huì)被分到同一組,“關(guān)燈”,“關(guān)閉燈”會(huì)被分到同一組。
其中,最大長度公共子序列指的是該組句子的最大長度公共子串,例如“我想搜索album_name”和“搜索album_name”的最大長度公共子串是“搜索album_name”。
具體的,在使用句子邊界檢測模型進(jìn)行句子邊界檢測時(shí),可以將句子進(jìn)行分詞和詞性標(biāo)注,抽取一元特征和二元特征,使用訓(xùn)練好的條件隨機(jī)場模型進(jìn)行標(biāo)注,例如:“我想看電影你幫我找一下”,使用條件隨機(jī)場模型標(biāo)注后,句子中的每個(gè)詞都會(huì)得到一個(gè)對應(yīng)的標(biāo)簽,如本例結(jié)果即為:“我/sentence_begin想/sentence_middle看/sentence_middle電影/sentence_end你/sentence_begin幫/sentence_middle我/sentence_middle找/sentence_middle一/sentence_middle下/sentence_end”,每個(gè)被標(biāo)識(shí)為sentence_end的詞即為一個(gè)句子的結(jié)尾詞,從而本例結(jié)果被切分為兩句,如下:句1:我/sentence_begin想/sentence_middle看/sentence_middle電影/sentence_end;句2:你/sentence_begin幫/sentence_middle我/sentence_middle找/sentence_middle一/sentence_middle下/sentence_end。
本實(shí)施例方法所述的功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算設(shè)備可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明實(shí)施例對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,移動(dòng)計(jì)算設(shè)備或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似部分互相參見即可。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。