本發(fā)明涉及問(wèn)答系統(tǒng),尤其涉及一種廚房領(lǐng)域問(wèn)答方法及系統(tǒng)。
背景技術(shù):
隨著自然語(yǔ)言理解這一門(mén)技術(shù)的普及,出現(xiàn)了很多智能的問(wèn)答系統(tǒng)、智能考試系統(tǒng)、智能出題系統(tǒng)等,通過(guò)建立大量的知識(shí)庫(kù),然后對(duì)自然語(yǔ)言的句子進(jìn)行分詞、標(biāo)注,然后將其與應(yīng)通過(guò)大量的語(yǔ)料庫(kù)訓(xùn)練好的知識(shí)庫(kù)進(jìn)行對(duì)比,從而讓機(jī)器理解自然語(yǔ)言。但是,不同領(lǐng)域其句子、詞語(yǔ)的含義、劃分均不同,而市面上大多數(shù)的分詞器都是通用的,而語(yǔ)料庫(kù)也會(huì)有很多的劃分標(biāo)準(zhǔn)。目前,對(duì)于廚房領(lǐng)域,現(xiàn)如今都將視頻、圖文等的菜譜上傳至網(wǎng)上,供人們查看,這樣就會(huì)使得很多人通過(guò)網(wǎng)絡(luò)來(lái)查詢(xún)對(duì)應(yīng)的菜譜或菜名,但是如今并沒(méi)有很好的涉及到廚房領(lǐng)域問(wèn)答系統(tǒng),不能夠?yàn)槿藗兲峁┛焖贉?zhǔn)確的查找。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的之一在于提供一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)答方法,其能夠?qū)崿F(xiàn)快速、準(zhǔn)確的查找。
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的之二在于提供一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)答系統(tǒng),其能夠?qū)崿F(xiàn)快速、準(zhǔn)確的查找。
本發(fā)明的目的之一采用以下技術(shù)方案實(shí)現(xiàn):
一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)答方法,包括:
分詞步驟,獲取問(wèn)句并對(duì)問(wèn)句進(jìn)行分詞處理得到分詞結(jié)果;
表達(dá)式生成步驟,用于根據(jù)上下文特征對(duì)分詞結(jié)果進(jìn)行實(shí)體及屬性抽取,并生成問(wèn)句所對(duì)應(yīng)的語(yǔ)義邏輯表達(dá)式;
查詢(xún)語(yǔ)句生成步驟,根據(jù)語(yǔ)義邏輯表達(dá)式生成sparql查詢(xún)語(yǔ)句;
查詢(xún)步驟,根據(jù)sparql查詢(xún)語(yǔ)句在廚房領(lǐng)域知識(shí)圖譜中查詢(xún)得到結(jié)果并根據(jù)結(jié)果得到問(wèn)句對(duì)應(yīng)的答案。
優(yōu)選地,所述分詞步驟具體包括:首先獲取問(wèn)句并對(duì)問(wèn)句進(jìn)行預(yù)處理得到字序列,然后通過(guò)hmm模型以及vitebi解碼方法對(duì)字序列進(jìn)行解碼并將解碼后的字序列與語(yǔ)料庫(kù)中的字標(biāo)簽進(jìn)行類(lèi)比,最終得到準(zhǔn)確的分詞結(jié)果。
優(yōu)選地,所述表達(dá)式生成步驟中,對(duì)分詞結(jié)果進(jìn)行實(shí)體及屬性抽取時(shí)還根據(jù)概率模型對(duì)實(shí)體及屬性的可信度進(jìn)行評(píng)價(jià),并根據(jù)可信度來(lái)選取實(shí)體及屬性。
優(yōu)選地,所述概率模型為crf模型或hmm模型。
本發(fā)明的目的之二采用以下技術(shù)方案實(shí)現(xiàn):
一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)答系統(tǒng),包括:
分詞模塊,用于獲取問(wèn)句并對(duì)問(wèn)句進(jìn)行分詞處理得到分詞結(jié)果;
表達(dá)式生成模塊,用于根據(jù)上下文特征對(duì)分詞結(jié)果進(jìn)行實(shí)體及屬性抽取,并生成問(wèn)句所對(duì)應(yīng)的語(yǔ)義邏輯表達(dá)式;
查詢(xún)語(yǔ)句生成模塊,用于根據(jù)語(yǔ)義邏輯表達(dá)式生成sparql查詢(xún)語(yǔ)句;
查詢(xún)模塊,用于根據(jù)sparql查詢(xún)語(yǔ)句在廚房領(lǐng)域知識(shí)圖譜中查詢(xún)得到結(jié)果并根據(jù)結(jié)果得到問(wèn)句對(duì)應(yīng)的答案。
優(yōu)選地,所述分詞模塊還用于首先獲取問(wèn)句并對(duì)問(wèn)句進(jìn)行預(yù)處理得到字序列,然后通過(guò)hmm模型以及vitebi解碼方法對(duì)字序列進(jìn)行解碼并將解碼后的字序列與語(yǔ)料庫(kù)中的字標(biāo)簽進(jìn)行類(lèi)比,最終得到準(zhǔn)確的分詞結(jié)果。
優(yōu)選地,所述表達(dá)式生成模塊,在對(duì)分詞結(jié)果進(jìn)行實(shí)體及屬性抽取時(shí)還用于根據(jù)概率模型對(duì)實(shí)體及屬性的可信度進(jìn)行評(píng)價(jià),并根據(jù)可信度來(lái)選取實(shí)體及屬性。
優(yōu)選地,所述概率模型為crf模型或hmm模型。
相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:
本發(fā)明實(shí)現(xiàn)了針對(duì)廚房領(lǐng)域內(nèi)的問(wèn)答系統(tǒng),使得問(wèn)答系統(tǒng)能夠快速、準(zhǔn)確地給出問(wèn)句答案。
附圖說(shuō)明
圖1為本發(fā)明提供的一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)答方法的方法流程圖;
圖2為本發(fā)明提供的廚房領(lǐng)域知識(shí)圖譜中的菜譜父類(lèi)與子類(lèi)的關(guān)系圖譜;
圖3為本發(fā)明提供的廚房領(lǐng)域知識(shí)圖譜中的菜譜父類(lèi)與子類(lèi)的互逆關(guān)系圖譜;
圖4為本發(fā)明提供的一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)答系統(tǒng)的系統(tǒng)模塊圖。
具體實(shí)施方式
下面,結(jié)合附圖以及具體實(shí)施方式,對(duì)本發(fā)明做進(jìn)一步描述,需要說(shuō)明的是,在不相沖突的前提下,以下描述的各實(shí)施例之間或各技術(shù)特征之間可以任意組合形成新的實(shí)施例。
實(shí)施例
一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)答方法,如圖1所示,包括以下步驟:
s1:獲取問(wèn)句并對(duì)問(wèn)句進(jìn)分詞處理得到分詞結(jié)果。
本發(fā)明中對(duì)于問(wèn)句進(jìn)行分詞所采用的是一種專(zhuān)門(mén)針對(duì)廚房領(lǐng)域的分詞器,該分詞器是基于隱馬爾可夫模型(hmm,hiddenmarkovmodel)和n-gram模型(漢語(yǔ)語(yǔ)言模型)構(gòu)造的廚房領(lǐng)域分詞器,其能夠很好地對(duì)廚房領(lǐng)域內(nèi)的詞進(jìn)行劃分。
一般來(lái)說(shuō),對(duì)于一個(gè)詞,其在不同領(lǐng)域內(nèi)所表達(dá)的意義也不同或詞語(yǔ)的組合不同,比如“洋蔥”,在歌曲領(lǐng)域內(nèi)表示歌曲名;而在烹飪或廚房領(lǐng)域內(nèi)表示為一個(gè)食材。而通用分詞器在分詞的過(guò)程中,并沒(méi)有考慮詞語(yǔ)的領(lǐng)域特征,與常見(jiàn)的詞典比較類(lèi)似,其分詞結(jié)果很大程度不符合廚房領(lǐng)域。比如“土豆燉排骨的做法”,采用通用分詞器來(lái)劃分為“土豆燉、排骨的做法”,然后實(shí)際上在廚房領(lǐng)域內(nèi),“土豆燉排骨”是一個(gè)菜名,在分詞時(shí)其不應(yīng)該分開(kāi)。
因此,本發(fā)明的廚房領(lǐng)域分詞器所采用的分詞方法是基于字標(biāo)注的hmm模型和n-gram模型的分詞方法,具體包括以下步驟:
首先通過(guò)對(duì)輸入問(wèn)句進(jìn)行預(yù)處理得到字序列,然后通過(guò)hmm模型和vitebi解碼方法對(duì)字序列進(jìn)行解碼,并將解碼后的字序列與語(yǔ)料庫(kù)中的字標(biāo)簽進(jìn)行類(lèi)比,從而得到準(zhǔn)確的分詞結(jié)果。而語(yǔ)料庫(kù)是通過(guò)對(duì)廚房領(lǐng)域的語(yǔ)料進(jìn)行預(yù)處理得到子序列,然后在通過(guò)n-gram模型根據(jù)字序列進(jìn)行提取上下文特征,然后采用hmm模型對(duì)語(yǔ)料進(jìn)行訓(xùn)練得到。
另外,本發(fā)明提供的廚房領(lǐng)域分詞器在實(shí)際應(yīng)用中具有較好的學(xué)習(xí)能力。比如:“我想吃紅燒蘋(píng)果”,通過(guò)本發(fā)明提供的廚房領(lǐng)域分詞方法得到的分詞結(jié)果為“我想吃紅燒蘋(píng)果”,其中“紅燒蘋(píng)果”盡管不在實(shí)際的語(yǔ)料庫(kù)中,但是其與“紅燒肉”類(lèi)似,屬于菜名,因此將紅燒蘋(píng)果劃分到一起,而不是劃分為“紅燒蘋(píng)果”。
s2:對(duì)分詞結(jié)果根據(jù)上下文特征進(jìn)行實(shí)體及屬性的抽取,并生成對(duì)應(yīng)的語(yǔ)義邏輯表達(dá)式。
其中,實(shí)體具有上下文特征及領(lǐng)域特征,比如“洋蔥”,其中“洋蔥”在廚房領(lǐng)域內(nèi)表示食材,在歌曲領(lǐng)域內(nèi)表示歌名;而“洋蔥可以做什么菜”通過(guò)上下文特征可以判斷出,這里的“洋蔥”為與菜相關(guān)的食材。而屬性是指實(shí)體所具備的屬性,比如口味、做法等。
基于此,本發(fā)明根據(jù)上下文特征對(duì)廚房領(lǐng)域的實(shí)體以及屬性進(jìn)行抽取。本發(fā)明中假設(shè)廚房實(shí)體的類(lèi)型為菜名(ndish)、食材(nfood)、菜型(nfty)、菜系(ncuisine)四種,比如“土豆或豆角可以做什么菜”,從上下文可以得到土豆、豆角均食材(nfood),經(jīng)過(guò)實(shí)體抽取后得到“土豆(nfood)或豆角(nfood)可以做什么菜”。在實(shí)體及屬性識(shí)別抽取的過(guò)程中還采用了概率模型對(duì)其進(jìn)行概率統(tǒng)計(jì)來(lái)判斷實(shí)體及屬性的可信度評(píng)價(jià),然后選取可信度較高的實(shí)體及個(gè)作為最終識(shí)別提取到的實(shí)體與屬性,這樣可以來(lái)提高實(shí)體及屬性識(shí)別的正確性。概率模型可以是crf(全稱(chēng)為conditionalrandomfieldalgorithm)模型、hmm模型。通過(guò)將上下文特征以及模型的結(jié)合來(lái)實(shí)現(xiàn)對(duì)實(shí)體及屬性的識(shí)別抽取,可提高實(shí)體及屬性的識(shí)別準(zhǔn)確性。
另外,在實(shí)體及屬性抽取的過(guò)程中還設(shè)定窗口的大小,該窗口指的是該實(shí)體或?qū)傩缘纳舷挛闹信c其具有關(guān)聯(lián)關(guān)系的特征詞的查找個(gè)數(shù)。該窗口大小的設(shè)置是預(yù)設(shè)的,其具體數(shù)據(jù)是通過(guò)大量的經(jīng)驗(yàn)得出的,比如將窗口設(shè)為3。對(duì)問(wèn)句進(jìn)行實(shí)體及屬性進(jìn)行抽取后生成對(duì)應(yīng)的語(yǔ)義邏輯表達(dá)式為“+material:土豆material:豆角”。
s3:根據(jù)語(yǔ)義邏輯表達(dá)式生成sparql查詢(xún)語(yǔ)句。sparql是為rdf開(kāi)發(fā)的一種查詢(xún)語(yǔ)言和數(shù)據(jù)獲取協(xié)議,它是為w3c所開(kāi)發(fā)的rdf數(shù)據(jù)模型所定義,但是可以用于任何可以用rdf來(lái)表示的信息資源。通過(guò)查詢(xún)接口對(duì)語(yǔ)義邏輯表達(dá)式進(jìn)行解析,首先將語(yǔ)義邏輯表達(dá)式拆分為must、must_not、should子查詢(xún)語(yǔ)句,再經(jīng)過(guò)重新組合成sparql查詢(xún)語(yǔ)句。該sparql查詢(xún)語(yǔ)句是專(zhuān)門(mén)針對(duì)圖譜的查詢(xún),也即是說(shuō)將問(wèn)句進(jìn)行分詞然后生成語(yǔ)義邏輯表達(dá),再將該語(yǔ)義邏輯表達(dá)式轉(zhuǎn)換為sparql查詢(xún)語(yǔ)句。
例如:“土豆或豆角可以做什么不辣的菜”經(jīng)過(guò)實(shí)體及屬性的抽取得到的邏輯表達(dá)式為“+material:土豆material:豆角-taste:辣”。
a、“+material:土豆”轉(zhuǎn)換為must查詢(xún)語(yǔ)句為:
?dishfa:hasnameingredientfa:土豆。
b、“material:豆角”轉(zhuǎn)換為should語(yǔ)句為:
union{?dishfa:hasnameingredientfa:豆角}。
c、“-taste:辣”轉(zhuǎn)換為must_not語(yǔ)句為:
filter(!regex(str(?taste),"辣"))。
最終組合成sparql查詢(xún)語(yǔ)句為:
select?heat?taste?id?dishwhere{{?dishfa:hasnameingredientfa:土豆.}union{?dishfa:hasnameingredientfa:豆角}.{?dishfa:hastaste?taste.filter(!regex(str(?taste),"辣")).}?dishfa:hasid?id.?dishfa:hasheat?heat}orderbydesc(?heat)limit100。
另外,在對(duì)語(yǔ)義邏輯表達(dá)解析時(shí),還需要對(duì)實(shí)體進(jìn)行映射做同義詞處理。比如“土豆”與“馬鈴薯”是屬于同義詞。這樣通過(guò)對(duì)同義詞進(jìn)行映射能夠提高查詢(xún)的準(zhǔn)確性。
s4:根據(jù)sparql查詢(xún)語(yǔ)句在廚房領(lǐng)域知識(shí)圖譜中查詢(xún)得到查詢(xún)結(jié)果,并根據(jù)查詢(xún)結(jié)果得到問(wèn)句答案。
廚房領(lǐng)域知識(shí)圖譜是基于本體知識(shí)圖譜自動(dòng)構(gòu)建的,是預(yù)先已經(jīng)構(gòu)建完成的知識(shí)圖譜。比如,該廚房領(lǐng)域知識(shí)圖譜利用了菜譜來(lái)構(gòu)建知識(shí)圖譜,根據(jù)菜譜的屬性選用了19個(gè)子類(lèi)以及19個(gè)屬性對(duì)菜譜進(jìn)行標(biāo)識(shí),其中菜譜為父類(lèi),然后根據(jù)該菜譜對(duì)其子類(lèi)進(jìn)行展開(kāi),從而生成了如圖2所示的菜譜父類(lèi)和子類(lèi)之間的關(guān)系圖譜。
其中,菜譜父類(lèi)recipe的子類(lèi)有description(描述)、hardlevel(難易度)、materialsamount(食材量)、material(食材)、selfmaterialsname(字面食材名)、stepstext(做菜步驟)、cookingtime(烹飪時(shí)間)、function(功效)、id(菜名id)、heat(熱度)、dishstyle(菜系)、dishtype(菜型)、cookingmethod(烹飪方式)、taste(味道)、scene(場(chǎng)景)、peoplerange(人群)、playamount(播放次數(shù))、agreementamount(點(diǎn)贊次數(shù))、coredishname(核心菜名)等。其中子類(lèi)selfmaterialsname采用食材知識(shí)庫(kù)抽取字面上的食材,如“土豆燉排骨”字面上的食材為“土豆”、“排骨”,食材“土豆”、“排骨”與菜名“土豆燉排骨”的相關(guān)性較大。除此以外,核心菜名coredishname,根據(jù)菜名的子串進(jìn)行枚舉,如菜名中有“家常荷包蛋”,根據(jù)菜名的子串和提取“荷包蛋”為核心菜名。
每一個(gè)菜譜均形成如圖2所示的圖譜,最終將所有的菜譜父類(lèi)以及其對(duì)應(yīng)的子類(lèi)形成一個(gè)大的圖譜,也即是廚房領(lǐng)域知識(shí)圖譜。
另外,父類(lèi)與子類(lèi)之間、子類(lèi)與子類(lèi)之間還定義了其他屬性,比如互逆屬性、并列屬性等,如圖3所示的互逆屬性。其中互逆屬性主要描述recipe和matrial之間的關(guān)系,hasmaterial表示recipe(菜譜)擁有matrial(食材)、而ismaterialof表示material(食材)屬于recipe(菜譜)。
另外,本發(fā)明中還根據(jù)類(lèi)與屬性的圖譜來(lái)構(gòu)造廚房領(lǐng)域的本體模板、根據(jù)實(shí)例數(shù)據(jù)生成本體模型,從而將本體模板與本體模型結(jié)合構(gòu)成出廚房領(lǐng)域知識(shí)本體模型。廚房領(lǐng)域知識(shí)本體模型的構(gòu)造主要使用了owl文件進(jìn)行存儲(chǔ),根據(jù)存儲(chǔ)的菜名進(jìn)行實(shí)例抽取,并根據(jù)設(shè)定好的菜譜本體模板對(duì)實(shí)例數(shù)據(jù)進(jìn)行填充,最后將owl頭文件與owl實(shí)例數(shù)據(jù)進(jìn)行組合,形成owl字符串,并轉(zhuǎn)換成owl輸入流,以參數(shù)的形式組成本體模型。
根據(jù)sparql查詢(xún)語(yǔ)句在廚房領(lǐng)域知識(shí)圖譜中查詢(xún)得到查詢(xún)結(jié)果,然后根據(jù)查詢(xún)結(jié)果得到問(wèn)句的答案。
在通過(guò)sparql查詢(xún)語(yǔ)句在廚房領(lǐng)域知識(shí)圖譜中查詢(xún)時(shí),可能涉及到以下查詢(xún)方式:
1)菜名查詢(xún),對(duì)于邏輯表達(dá)式中有菜名的查詢(xún),根據(jù)查明屬性和菜名sparql查詢(xún)語(yǔ)句直接在廚房領(lǐng)域知識(shí)圖譜中查詢(xún),如果有結(jié)果直接返回結(jié)果;如果沒(méi)有,則返回空。比如,可樂(lè)雞翅,其可通過(guò)知識(shí)圖譜中直接查到可樂(lè)雞翅的相關(guān)屬性。
2)食材查詢(xún)
如果邏輯表達(dá)式中有食材,則先根據(jù)菜名的字面食材進(jìn)行查詢(xún),如果沒(méi)有結(jié)果,則根據(jù)菜名本身的食材進(jìn)行查詢(xún),然后再根據(jù)熱度值對(duì)結(jié)果進(jìn)行排序。熱度值的計(jì)算根據(jù)點(diǎn)贊數(shù)和播放次數(shù)建立熱度值打分模型,其模型函數(shù)為:
例如“土豆和豆角可以做什么菜”,根據(jù)轉(zhuǎn)換后的語(yǔ)義邏輯表達(dá)式可生成兩條sparql查詢(xún)語(yǔ)句:
sparql_1:select?heat?id?dishwhere{?dishfa:hasnameingredientfa:土豆.?dishfa:hasnameingredientfa:豆角.?dishfa:hasid?id.?dishfa:hasheat?heat}orderbydesc(?heat)limit100;
sparql_2:select?heat?id?dishwhere{?dishfa:hasingredientfa:土豆.?dishfa:hasingredientfa:豆角.?dishfa:hasid?id.?dishfa:hasheat?heat}orderbydesc(?heat)limit100;
sparql_1根據(jù)菜名的字面食材(比如土豆燉排骨,其中土豆、排骨就是該菜名的字面食材)進(jìn)行查詢(xún),如果返回空,則根據(jù)菜名本身的食材(家常荷包蛋,其菜名本身的食材是雞蛋)進(jìn)行查詢(xún),執(zhí)行sparql_2查詢(xún)語(yǔ)句。
3)其他屬性查詢(xún)
比如,針對(duì)菜型、菜系和功效三個(gè)屬性,根據(jù)不同的數(shù)據(jù)源收集其屬性值所對(duì)應(yīng)的菜名,然后根據(jù)不同數(shù)據(jù)源的菜名排序值獲取推薦的菜名,根據(jù)菜名從數(shù)據(jù)庫(kù)中獲取對(duì)應(yīng)的id,以此構(gòu)建屬性推薦知識(shí)庫(kù)。
也即是說(shuō),數(shù)據(jù)源的收集采用網(wǎng)絡(luò)爬蟲(chóng)的技術(shù)從各種不同的網(wǎng)站進(jìn)行數(shù)據(jù)的采集,根據(jù)不同的屬性從采集的數(shù)據(jù)中獲取對(duì)應(yīng)的菜名以及瀏覽次數(shù)、點(diǎn)擊次數(shù)等參數(shù),再根據(jù)瀏覽次數(shù)和點(diǎn)擊次數(shù)將菜名進(jìn)行降序排序,并獲取排名較高的前10個(gè)菜名,然后從已爬取的菜譜數(shù)據(jù)庫(kù)獲取對(duì)應(yīng)菜名的id,最后由菜名id、菜名及屬性構(gòu)建菜譜屬性推薦知識(shí)庫(kù)。
在屬性查詢(xún)過(guò)程中,如果屬性查詢(xún)結(jié)果有存在于推薦知識(shí)庫(kù)中的屬性值,將對(duì)應(yīng)的推薦知識(shí)庫(kù)的菜名id排在最前面,采用熱度(瀏覽次數(shù))或者點(diǎn)贊數(shù)(點(diǎn)擊次數(shù))查詢(xún)并排序后的結(jié)果排在后面,以此來(lái)推薦相關(guān)屬性的菜名。如“推薦一下湖南菜”,生成的sparql查詢(xún)語(yǔ)句為:
select?agreementamount?id?dishwhere{?dishfa:hasdishstylefa:湖南菜.?dishfa:hasid?id.?dishfa:hasagreementamount?agreementamount}orderbydesc(?agreementamount)limit100;
查詢(xún)結(jié)果中有“毛家紅燒肉”,而推薦知識(shí)庫(kù)中有“粉蒸肉”,則將“粉蒸肉”排在“毛家紅燒肉”的前面。
4)組合查詢(xún)
1)、2)、3)的查詢(xún)方式是針對(duì)單屬性、單屬性值或多屬性值的邏輯表達(dá)式查詢(xún),對(duì)于不同屬性及屬性值的組合,本系統(tǒng)設(shè)置了組合查詢(xún)方式。組合查詢(xún)語(yǔ)句采用本體庫(kù)進(jìn)行映射。其中,本體庫(kù)是指表示屬性及其屬性關(guān)系的知識(shí)庫(kù),主要由類(lèi)、屬性構(gòu)成,類(lèi)可以表示概念之間的關(guān)系,如“食材”是“菜譜”的一個(gè)子類(lèi),屬性用來(lái)描述類(lèi)所具有的關(guān)系。例如口味的屬性“taste”在本體庫(kù)中對(duì)應(yīng)的屬性映射是“hastaste”。
組合查詢(xún)將邏輯表達(dá)式映射成sparql查詢(xún)語(yǔ)句,最后根據(jù)sparql在知識(shí)圖譜中進(jìn)行查詢(xún)。如“土豆和西紅柿或豆角可以做什么不辣的菜”轉(zhuǎn)換成sparql查詢(xún)語(yǔ)句為:
select?heat?id?dishwhere{{?dishfa:hasnameingredientfa:土豆.}{?dishfa:hasnameingredientfa:西紅柿.}union{?dishfa:hasnameingredientfa:豆角.}?dishfa:hasid?id.?dishfa:hasheat?heat}orderbydesc(?heat)limit100。
本發(fā)明首先通過(guò)使用廚房領(lǐng)域的分詞器對(duì)其進(jìn)行準(zhǔn)確分詞,然后再根據(jù)將問(wèn)句轉(zhuǎn)換為語(yǔ)義邏輯表達(dá)式,并將語(yǔ)義邏輯表達(dá)式轉(zhuǎn)換為sparql查詢(xún)語(yǔ)句來(lái)在建立的廚房領(lǐng)域知識(shí)圖譜中查詢(xún)其相對(duì)應(yīng)的結(jié)果,最終對(duì)結(jié)果進(jìn)行組合或排序而得到答案,實(shí)現(xiàn)了廚房領(lǐng)域內(nèi)的問(wèn)答系統(tǒng)。另外,以上涉及到的查詢(xún)方式均是在圖譜知識(shí)庫(kù)中進(jìn)行sparql查詢(xún)所常見(jiàn)的。
如圖4所示,本發(fā)明還提供了一種基于知識(shí)圖譜的廚房領(lǐng)域問(wèn)題系統(tǒng),其包括:分詞模塊,用于獲取問(wèn)句并對(duì)問(wèn)句進(jìn)行分詞處理得到分詞結(jié)果;
表達(dá)式生成模塊,用于根據(jù)上下文特征對(duì)分詞結(jié)果進(jìn)行實(shí)體及屬性抽取,并生成問(wèn)句所對(duì)應(yīng)的語(yǔ)義邏輯表達(dá)式;
查詢(xún)語(yǔ)句生成模塊,用于根據(jù)語(yǔ)義邏輯表達(dá)式生成sparql查詢(xún)語(yǔ)句;
查詢(xún)模塊,用于根據(jù)sparql查詢(xún)語(yǔ)句在廚房領(lǐng)域知識(shí)圖譜中查詢(xún)得到結(jié)果并根據(jù)結(jié)果得到問(wèn)句對(duì)應(yīng)的答案。
優(yōu)選地,所述分詞模塊還用于首先獲取問(wèn)句并對(duì)問(wèn)句進(jìn)行預(yù)處理得到字序列,然后通過(guò)hmm模型以及vitebi解碼方法對(duì)字序列進(jìn)行解碼并將解碼后的字序列與語(yǔ)料庫(kù)中的字標(biāo)簽進(jìn)行類(lèi)比,最終得到準(zhǔn)確的分詞結(jié)果。
優(yōu)選地,所述表達(dá)式生成模塊,在對(duì)分詞結(jié)果進(jìn)行實(shí)體及屬性抽取時(shí)還用于根據(jù)概率模型對(duì)實(shí)體及屬性的可信度進(jìn)行評(píng)價(jià),并根據(jù)可信度來(lái)選取實(shí)體及屬性。
上述實(shí)施方式僅為本發(fā)明的優(yōu)選實(shí)施方式,不能以此來(lái)限定本發(fā)明保護(hù)的范圍,本領(lǐng)域的技術(shù)人員在本發(fā)明的基礎(chǔ)上所做的任何非實(shí)質(zhì)性的變化及替換均屬于本發(fā)明所要求保護(hù)的范圍。