本發(fā)明涉及一種場景化的語義理解與對話生成方法,屬于自然語言分析、處理以及語義理解領(lǐng)域,特別是針對特定場景下的自然語言語義理解方法。
背景技術(shù):
人工智能技術(shù)發(fā)展由來已久,而作為人工智能領(lǐng)域中最重要方向之一的自然語言理解技術(shù)也一直是研究的熱點(diǎn),可以說,讓計算機(jī)理解自然語言是人類一直以來的夢想。目前,自然語言理解技術(shù)主要采用基于規(guī)則和基于統(tǒng)計兩大類理論技術(shù)。基于規(guī)則的自然語言理解系統(tǒng)構(gòu)建相對復(fù)雜,主要面對受限領(lǐng)域的理解問題。而基于統(tǒng)計的方法逐步成為自然語言處理領(lǐng)域的主流方法,通常適于在大量數(shù)據(jù)的基礎(chǔ)上進(jìn)行淺層語義理解,而對于深層語義問題往往無法處理。而針對特定的應(yīng)用領(lǐng)域,通常所使用的還是基于規(guī)則的語義理解。
對于一個給定的文本輸入,傳統(tǒng)的基于規(guī)則的自然語言理解其處理流程通常包括以下三個步驟。
(1)詞義分析:主要目的是對句子中的詞匯提取語言學(xué)信息,獲取詞匯的詞義。涉及分詞、詞性標(biāo)注、命名體識別等等技術(shù),同時在詞義處理上需要詞義相關(guān)的知識庫的支持,對此語言專家已經(jīng)做出了巨大努力,比如已有的知識庫“知網(wǎng)”、《同義詞詞林》等等。
(2)句法分析:主要目的是對句子或短語的結(jié)構(gòu)進(jìn)行分析,獲取詞匯、短語在句子中的語法功能和相互關(guān)系,常用的句法分析方法包括上下文無關(guān)文法分析和依存文法分析等等。
(3)語義分析:主要目的是要獲取句子要表達(dá)的實(shí)際意義,該部分是自然語言理解系統(tǒng)的核心。深層自然語言理解系統(tǒng)通常需要在該階段構(gòu)建相關(guān)語義理解的規(guī)則,這些規(guī)則主要是依賴語言學(xué)專家的語言知識和領(lǐng)域知識密切相關(guān)。一方面要定義語義項,另一方面要定義從詞義、句法結(jié)構(gòu)等信息至語義項的語義轉(zhuǎn)換規(guī)則庫。對于一個給定的文本輸入經(jīng)過詞義分析、句法分析之后,利用語義轉(zhuǎn)換規(guī)則庫最終實(shí)現(xiàn)獲取語義的目的。
傳統(tǒng)的基于規(guī)則的自然語言理解系統(tǒng)主要涉及詞義分析、句法分析和語義分析三部分,各部分都涉及專家知識規(guī)則、不同知識庫的利用,雖然可以實(shí)現(xiàn)對自然語言的深層理解,但依然存在無法克服的缺點(diǎn),主要有以下幾點(diǎn):
(1)系統(tǒng)復(fù)雜,以上三部分涉及分詞、詞性標(biāo)注、命名體識別、句法分析、詞義消歧、語義角色分析等等眾多技術(shù)點(diǎn),每一項技術(shù)的性能不足都有可能對整個系統(tǒng)的性能造成較大影響,系統(tǒng)實(shí)現(xiàn)和維護(hù)難度都較大。
(2)規(guī)則的構(gòu)建嚴(yán)重依賴于語言學(xué)專家知識,而該方面的知識資源往往是有限的甚至是難以獲取的。不同的場景或領(lǐng)域,其語義理解規(guī)則也各不相同,大部分的語義理解引擎,如:百度語音、科大訊飛等,均需要在理解之前限定領(lǐng)域。
(3)短文本中語音資料的有限性為語義理解增加了難度。
上述問題是在自然語言分析、處理以及語義理解過程中應(yīng)當(dāng)予以考慮并解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種場景化的語義理解與對話生成方法,可以靈活適應(yīng)不同場景的短文本語義理解和對話,解決現(xiàn)有技術(shù)中存在的系統(tǒng)復(fù)雜,嚴(yán)重依賴于語言學(xué)專家知識,以及短文本中語音資料的有限性等問題。
本發(fā)明的技術(shù)解決方案是:
一種場景化的語義理解與對話生成方法,包括以下步驟,
步驟1、建立用戶場景模型,包括用戶場景字典模型、場景語義解析模型和場景對話模型;
步驟2、根據(jù)分詞系統(tǒng)的結(jié)果選擇確定當(dāng)前會話的場景;
步驟3、采用選定的場景語義解析器,對本輪的交互內(nèi)容進(jìn)行理解;
步驟4、調(diào)用相應(yīng)的場景對話生成器,結(jié)合對話管理的中間狀態(tài)進(jìn)行對話綜合并生成本輪交互后的對話結(jié)果;
步驟5、重新接收到新的文本輸入后,重復(fù)步驟2-4進(jìn)行語義理解,直到對話系統(tǒng)結(jié)束。
進(jìn)一步地,步驟1具體為:
步驟1-1、建立用戶場景字典模型,即通過組合關(guān)鍵字來描述領(lǐng)域特征;建立場景語義解析模型,即該特定場景下的語義理解規(guī)則;
步驟1-2、建立用戶的場景對話模型,涉及具體場景下的對話內(nèi)容,將用戶引導(dǎo)用戶的對話交互。
進(jìn)一步地,步驟2具體為:
步驟2-1、調(diào)用分詞系統(tǒng)對當(dāng)前輸入本文進(jìn)行分詞,得到文本的詞袋;
步驟2-2、將分詞結(jié)果和用戶定義的場景字典模型進(jìn)行匹配,以確定當(dāng)前對話的應(yīng)用場景;
步驟2-3、根據(jù)此輪對話的場景以及對話系統(tǒng)的狀態(tài)來確定對話最終的場景語義解析器和場景對話生成器或者啟動新的對話。
進(jìn)一步地,步驟2-2中,場景模型字典包括領(lǐng)域?qū)雍皖I(lǐng)域特征層,領(lǐng)域?qū)訉?yīng)不同的應(yīng)用場景,領(lǐng)域特征層對應(yīng)該應(yīng)用場景下的特征向量。
進(jìn)一步地,步驟2-2中,確定當(dāng)前對話的應(yīng)用場景,具體為:
步驟2-2-1、針對某個場景的特征向量輸入文本的詞袋,計算詞袋中的單詞對特征向量中各個分量的匹配程度mi,其中1≤i≤n;
步驟2-2-2、通過加權(quán)的方法計算輸入文本的詞袋與該場景的相關(guān)程度:
其中,Wi為某個向量的權(quán)重;
步驟2-2-3、比較各個場景的匹配程度Mi,得到最大的,就是所確定的場景。
進(jìn)一步地,步驟2-3中,在用戶的意圖無法明確理解時,通過對話來獲取用戶需求,通過引入場景化的模型自動的實(shí)現(xiàn)文本內(nèi)容的場景確定,并基于場景模型來發(fā)起對話。在與用戶對話過程中,執(zhí)行用戶意圖融合的步驟,具體為:
假定在本輪對話之前,用戶得到的結(jié)果為而在本輪對話中,通過算法得到的結(jié)果為按照下面的過程得到最新的結(jié)果輸出
直到所得到的用戶向量中所有的向量皆不為空時,對話結(jié)束。
進(jìn)一步地,步驟3具體為:
步驟3-1、調(diào)用第三方的中文語法解析器對本次對話內(nèi)容進(jìn)行語法解析;
步驟3-2、結(jié)合用戶場景字典模型、場景語義解析模型對語法解析結(jié)果進(jìn)行語義解析,得到本輪的語義理解結(jié)果。
進(jìn)一步地,步驟4具體為:
步驟4-1、基于步驟2的結(jié)果選擇相應(yīng)場景下的對話生成器;
步驟4-2、基于步驟3所得到的當(dāng)前輪次的輸出結(jié)果,以及對話管理器中的對話狀態(tài)進(jìn)行對話綜合,從而得到截止本輪交互后的語義理解結(jié)果。
一種實(shí)現(xiàn)上述的場景化的語義理解與對話生成方法的系統(tǒng),包括:
用戶場景模型,提供用戶場景字典模型、語義理解模型以及相應(yīng)的對話生成模型;
場景選擇器,用于接收用戶輸入的自然語言,并根據(jù)用戶場景模型來選定相應(yīng)的用戶場景;預(yù)先建立存儲了用戶所定義的場景字典模型,在接收用戶輸入的自然語言后,將所述自然語言對應(yīng)的文本內(nèi)容與所字典進(jìn)行匹配,在語義輸入不完整時發(fā)起對話以獲取完整的語義輸入;
對話管理器:用于管理對話系統(tǒng)的中間結(jié)果及相關(guān)的狀態(tài);
場景化的語義解析器:用于將語法解析后的結(jié)果結(jié)合用戶場景模型實(shí)施語義理解得到場景化的語義理解結(jié)果;
對話綜合器:用于綜合對話系統(tǒng)的中間結(jié)果和本輪的理解輸出,最后得到完成的文本輸出。
本發(fā)明的有益效果是:該種場景化的語義理解與對話生成方法及系統(tǒng),簡單高效地實(shí)現(xiàn)對句子、短語等的自然語言理解,實(shí)現(xiàn)計算機(jī)自動對短文本的完全自動理解。通過利用當(dāng)前計算機(jī)日益強(qiáng)大的計算、存儲能力,預(yù)先建立不同的場景模型,包括場景字典、場景語義解析模型和場景化的對話模型,在接收用戶輸入的自然語言后,將所述自然語言對應(yīng)的文本內(nèi)容與所述場景字典模型進(jìn)行匹配;并利用語義理解模型和對話模型來引導(dǎo)用戶交互。本發(fā)明方案實(shí)現(xiàn)了計算機(jī)對自然語言的句子或短語等的自動深層理解和對話交互,滿足了用戶需要機(jī)器自動精確理解交互語用的目的。
附圖說明
圖1是本發(fā)明實(shí)施例場景化的語義理解與對話生成系統(tǒng)的說明框圖。
圖2是實(shí)施例中用戶場景字典模型的說明示意圖。
圖3是實(shí)施例中語法依存樹的說明示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例的方案,下面結(jié)合附圖和實(shí)施方式對本發(fā)明實(shí)施例作進(jìn)一步的詳細(xì)說明。
針對現(xiàn)有技術(shù)中自然語言理解系統(tǒng)實(shí)現(xiàn)復(fù)雜、并且嚴(yán)重依賴于語言學(xué)專家知識的問題,本發(fā)明提供一種場景化的自然語言理解和對話生成方法及系統(tǒng),簡單高效地實(shí)現(xiàn)對句子、短語等的自然語言理解,實(shí)現(xiàn)計算機(jī)自動對短文本的完全自動理解。
實(shí)施例的場景化的語義理解與對話生成方法,具體包括以下步驟:
步驟1、建立用戶場景模型,用戶場景模型涉及到三部分內(nèi)容,第一部分為場景字典模型,第二部分為場景語義解析模型和場景對話模型。
步驟1-1、建立用戶場景字典模型,即通過組合關(guān)鍵字來描述領(lǐng)域特征;建立場景語義解析模型,即該特定場景下的語義理解規(guī)則。
步驟1-2、建立用戶的場景對話模型,主要涉及具體場景下的對話內(nèi)容,將用戶引導(dǎo)用戶的對話操作。
步驟2、根據(jù)分詞系統(tǒng)的結(jié)果選擇確定當(dāng)前會話的場景。
步驟2-1、調(diào)用分詞系統(tǒng)對當(dāng)前輸入本文進(jìn)行分詞。
步驟2-2、將分詞結(jié)果和用戶定義的場景字典模型進(jìn)行匹配,以確定當(dāng)前對話的應(yīng)用場景。
步驟2-3、根據(jù)此輪對話的場景以及對話系統(tǒng)的狀態(tài)來確定對話最終的語義解析器和對話生成器或者啟動新的對話。
步驟3、采用選定的場景語義解析器,基于相應(yīng)的場景化用戶模型對本輪的交互內(nèi)容進(jìn)行理解。
步驟3-1、調(diào)用第三方的中文語法解析器對本次對話內(nèi)容進(jìn)行語法解析。
步驟3-2、結(jié)合用戶場景字典模型、場景語義解析模型對語法解析結(jié)果進(jìn)行語義解析,得到本輪的語義理解結(jié)果。
步驟4、調(diào)用相應(yīng)的場景對話生成器,結(jié)合對話管理的中間狀態(tài)進(jìn)行對話綜合并生成本輪交互后的對話結(jié)果。
步驟4-1、基于步驟2的結(jié)果選擇相應(yīng)場景下的對話生成器。
步驟4-2、基于步驟3所得到的當(dāng)前輪次的輸出結(jié)果,以及對話管理器中的對話狀態(tài)進(jìn)行對話綜合,從而得到截止本輪交互后的語義理解結(jié)果。
步驟5、重新接收到新的文本輸入后,重復(fù)步驟2-4進(jìn)行語義理解,直到對話系統(tǒng)結(jié)束。
如圖1所示,是本發(fā)明實(shí)施例場景化的語義理解與對話生成的一種結(jié)構(gòu)框圖。在該實(shí)施例中,系統(tǒng)包括:
用戶場景模型,提供用戶對特定場景下模型、語義理解模型以及相應(yīng)的對話生成模型;
場景選擇器,用于接收用戶輸入的自然語言,并根據(jù)用戶場景模型來選定相應(yīng)的用戶場景;
對話管理器,用于管理對話系統(tǒng)的中間結(jié)果及相關(guān)的狀態(tài);
場景化的語義解析器,用于將語法解析后的結(jié)果結(jié)合用戶場景模型實(shí)施語義理解得到場景化的語義理解結(jié)果;
對話綜合器,用于綜合對話系統(tǒng)的中間結(jié)果和本輪的理解輸出,最后得到完成的文本輸出。
實(shí)施例提供的場景化的語義理解與對話生成,預(yù)先建立存儲了用戶所定義的特定場景字典,在接收用戶輸入的自然語言后,將所述自然語言對應(yīng)的文本內(nèi)容與所字典進(jìn)行匹配并發(fā)起對話以獲取完整的語義輸入。本發(fā)明通過引入場景化的模型可以自動的實(shí)現(xiàn)文本內(nèi)容的場景確定,并能基于場景對話模型來發(fā)起對話。
如圖2所示,是本發(fā)明實(shí)施例場景化的語義理解與對話生成中所構(gòu)建的場景字典模型的示意圖。該場景字典模型主要包括兩個層次即領(lǐng)域?qū)雍皖I(lǐng)域特征層。領(lǐng)域?qū)訉?yīng)了不同的應(yīng)用場景,而領(lǐng)域特征層則對應(yīng)了該場景下的特征向量,領(lǐng)域模型向量可以表示為VD=(v1,v2,...,vn)。對于輸入文本D,經(jīng)過分詞之后得到文檔的詞袋(Word of Bag),可以用表示為集合D={w1,w2,...,wm}。本發(fā)明基于傳統(tǒng)的基于詞袋模型,基于該集合D以及領(lǐng)域向量集合{D1,D2,...Dk},每個領(lǐng)域Di均有特征向量為了確定輸入文本D隸屬哪個場景,本發(fā)明執(zhí)行了如下的步驟:
針對某個場景的特征向量輸入文本的詞袋,計算詞袋中的單詞對特征向量中各個分量的匹配程度mi(1≤i≤n);
通過加權(quán)的方法計算輸入文本的詞袋與該場景的相關(guān)程度:
其中Wi為某個向量的權(quán)重;
比較各個場景的匹配程度Mi,得到最大的,就是發(fā)明所確定的場景。
例如,自然語言輸入的文本信息,如:“用酷狗音樂播放周杰倫的青花瓷”,經(jīng)過分詞系統(tǒng)分詞后得到“用酷狗音樂播放周杰倫青花瓷”,通過和字典模型庫實(shí)施匹配,可以部分Music領(lǐng)域下的動詞“播放”以及播放器“酷狗音樂”,完全匹配對象“青花瓷”在此情況下,可以確定該文本所設(shè)計的內(nèi)容隸屬于Music領(lǐng)域。得到Music領(lǐng)域的特征向量為一個4維向量Music=(music1,music2,music3,music4),分別對應(yīng)播放器、動作、演唱者以及歌曲名。因此算法將調(diào)用Music領(lǐng)域的語義解析器,并同時初始化Music領(lǐng)域的對話生成器。
在確定了領(lǐng)域解析器后,算法調(diào)用相應(yīng)的領(lǐng)域解析器對文本進(jìn)行語義理解,而語義理解的前提是需要對文本進(jìn)行相應(yīng)的語法分詞,本發(fā)明主要利用StanfordParser來對文本進(jìn)行基于語法依存樹的語法分析。在本發(fā)明中,就在做分詞的基礎(chǔ)上對對文本的進(jìn)行語法解析得到相應(yīng)的語法依存樹,得到如圖3所示的語法依存樹。基于語法依存樹的結(jié)果和相關(guān)的領(lǐng)域詞典模型,實(shí)施例將得到語義理解后的領(lǐng)域結(jié)構(gòu)信息其基本步驟如下所示:
1)遍歷語法依存樹,根據(jù)語法依賴規(guī)則提取相應(yīng)的文本輸入詞匯wi;
2)綜合理解結(jié)果得到結(jié)構(gòu)化的輸出。
繼續(xù)上面的文本輸入,語法解析的結(jié)果為:
1用_P P_3prep__
2酷狗音樂_NR NR_1pobj__
3播放_VV VV_0root__
4周杰倫_NN NN_5nn__
5青花瓷_NN NN_3dobj__
根據(jù)語法分析結(jié)果可以確定歌名為:青花瓷(dobj),歌者為:周杰倫(nn),此時得到用戶向量U=("酷狗音樂","播放","周杰倫","青花瓷"),Music字典的所有屬性均以滿足故無需實(shí)施對話。
在實(shí)際的應(yīng)用中,經(jīng)常會遇到的情況是,用戶不會一次性完整表達(dá)其意圖,如“我想聽音樂”。在此情況下,本發(fā)明將發(fā)起相應(yīng)的對話來引導(dǎo)用戶完成完整的意圖表達(dá)。
針對“我想聽音樂”,分詞后得到結(jié)果“我想聽音樂”,按照上面的步驟進(jìn)行語法解析后,得到如下的解析結(jié)果:
1我_PN PN_2nsubj__
2想聽_VV VV_0root__
3音樂_NN NN_2dobj__
經(jīng)過語法解析后,得到相應(yīng)的語義理解結(jié)果,如下所示U=(0,"聽",0,0),此時用戶的意圖無法明確理解,需要通過對話來進(jìn)一步獲取用戶需求。在和用戶對話過程中,需要執(zhí)行用戶意圖融合的步驟。
假定用戶的領(lǐng)域特征向量為VD=(v1,v2,...,vn),經(jīng)過交互后,得到的結(jié)果為其中ui∈∪D∪{0},∪D表示到目前為止用戶交互的輸入詞匯,{0}表示該向量用戶目前并未輸入,需要通過用戶交互進(jìn)一步確認(rèn)。
當(dāng)用戶進(jìn)行對話交互后,本發(fā)明將融合當(dāng)前的結(jié)果以及本輪的對話結(jié)果最后得到最終的結(jié)果。假定在本輪對話之前,用戶得到的結(jié)果為而在本輪對話中,通過算法得到的結(jié)果為本發(fā)明將按照下面的過程得到最新的結(jié)果輸出
直到所得到的用戶向量中所有的向量皆不為空是,對話結(jié)束。
繼續(xù)前面的實(shí)例,通過理解“我要聽音樂”,可以確定為Music領(lǐng)域,通過語義理解后,可以的用戶向量U=(0,"聽",0,0),根據(jù)前面的規(guī)則,需要發(fā)起對話,用戶繼續(xù)輸入“我要聽青花瓷”,用戶理解后,得到想用的用戶輸出U'=(0,"聽",0,"青花瓷"),意圖合并將基于這兩個結(jié)果新的結(jié)果:
U'=(0,"聽",0,"青花瓷")
很明顯該意圖仍然不確定,因此,用戶輸入“周杰倫的青花瓷”,語義解析后得到用戶輸入U'=(0,0,"周杰倫","青花瓷"),進(jìn)一步融合后得到輸出:
U'=(0,"聽","周杰倫","青花瓷")
進(jìn)一步,用戶輸入“用網(wǎng)易云音樂播放”,語義解析得到了結(jié)果U'=("網(wǎng)易云音樂","播放",0,0),進(jìn)一步融合得到結(jié)果:
U'=("網(wǎng)易云音樂","播放","周杰倫","青花瓷")
至此為止,用戶的需求明確,語義理解完成。