錢 濤,盧方超,韓梓政,戴文華
(湖北科技學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 咸寧 437100)
知識(shí)圖譜[1-3]是實(shí)現(xiàn)智能化信息檢索與知識(shí)推理最常用的技術(shù),該技術(shù)于2012年由谷歌提出并用于智能化語(yǔ)義搜索[4]。知識(shí)圖譜技術(shù)在解決知識(shí)查詢的精度及知識(shí)推理方面展現(xiàn)出了巨大的優(yōu)勢(shì),成為學(xué)術(shù)與工業(yè)界的研究熱點(diǎn)。并且已被廣泛應(yīng)用于智能搜索、智能問(wèn)答、個(gè)性化推薦、內(nèi)容分發(fā)等領(lǐng)域。當(dāng)前有代表性的知識(shí)圖譜產(chǎn)品包括當(dāng)DBpedia[5],YAGO[6],CN-DBpedia[7],搜狗知立方[8]等。從本質(zhì)上講,知識(shí)圖譜是一種實(shí)體之間關(guān)系的語(yǔ)義網(wǎng)絡(luò),可以對(duì)現(xiàn)實(shí)世界中的客觀事物以及它們之間的關(guān)系進(jìn)行形式化的語(yǔ)義描述。隨著人工智能技術(shù)的逐漸成熟,尤其是自然語(yǔ)言處理技術(shù)的發(fā)展,知識(shí)圖譜有了更廣泛的應(yīng)用場(chǎng)景。問(wèn)答系統(tǒng)作為知識(shí)圖譜的一個(gè)重要的應(yīng)用方向,基于知識(shí)圖譜的問(wèn)答系統(tǒng)[9,10]可以快速地通過(guò)輸入的自然語(yǔ)言問(wèn)題,從知識(shí)圖譜中找到正確的答案,并按照自然語(yǔ)言的形式呈現(xiàn)給用戶,這種問(wèn)答系統(tǒng)在響應(yīng)及反饋上都是高效的。
豆瓣讀書(shū)。是目前國(guó)內(nèi)信息最齊全的、擁有用戶最多的、并且最活躍的在線圖書(shū)網(wǎng)站。該網(wǎng)站書(shū)籍類別豐富、種類齊全,為用戶提供圖書(shū)介紹、圖書(shū)評(píng)論主要功能,是用戶了解圖書(shū)信息的主要窗口。雖然該網(wǎng)站收集了海量的圖書(shū)信息,也提供了根據(jù)圖書(shū)的作者、書(shū)名和國(guó)際標(biāo)準(zhǔn)書(shū)號(hào)ISBN來(lái)查找圖書(shū)信息。但是其檢索僅基于關(guān)鍵字匹配技術(shù),難以滿足用戶多樣化的圖書(shū)檢索需求。例如:用戶需要檢索“南海出版公司”出版的圖書(shū)“解憂雜貨店”,但忘記了書(shū)名,因此只能通過(guò)輸出關(guān)鍵字“南海出版公司”,然后從返回的所有列表中依次查找該書(shū)目,這樣的檢索體驗(yàn)與效率顯然不能滿足用戶的需求。另一方面圖書(shū)包含大量的實(shí)體信息,如書(shū)名、作者、出版年代、體裁、出版社等,這些實(shí)體信息是相互關(guān)聯(lián)的。利用知識(shí)圖譜技術(shù),能夠生成一張語(yǔ)義關(guān)聯(lián)網(wǎng)。例如,圖1給出圖書(shū)“解憂雜貨店”語(yǔ)義網(wǎng)。如果用戶知道該書(shū)的出版年份是2014年,用戶能利用該知識(shí)圖譜極大縮小查詢范圍,甚至能精準(zhǔn)的返回查詢結(jié)果。此外,采用問(wèn)答形式與用戶交互,能極大提高用戶檢索效率與體驗(yàn)。

圖1 圖書(shū)知識(shí)語(yǔ)義網(wǎng)舉例
該文針對(duì)豆瓣讀書(shū)海量的圖書(shū)信息難以滿足用戶多樣化的圖書(shū)檢索需求,研究開(kāi)發(fā)基于知識(shí)圖譜的圖書(shū)問(wèn)答系統(tǒng)。首先給出相關(guān)工作進(jìn)展;然后提出圖書(shū)領(lǐng)域知識(shí)圖譜構(gòu)建方案;最后探討基于知識(shí)圖譜的圖書(shū)問(wèn)答系統(tǒng)關(guān)鍵技術(shù)。
無(wú)論是在學(xué)界還是在業(yè)界,知識(shí)圖譜研究已成為熱點(diǎn)。典型的代表包括DBpedia[5]、Yago[6]、Freebase[11]與谷歌等。近幾年,國(guó)內(nèi)也開(kāi)始強(qiáng)調(diào)知識(shí)圖譜的研究和應(yīng)用,如CN-DBpedia[7]、zhishi.me[12]、百度等。 知識(shí)圖譜按照功能可以分為通用知識(shí)圖譜與領(lǐng)域知識(shí)圖譜。通用知識(shí)圖譜主要用于構(gòu)建綜合性常識(shí)知識(shí),可用于語(yǔ)義檢索,知識(shí)問(wèn)答等,如百科類的DBpedia、zhishi.me和語(yǔ)言學(xué)類的WordNet[13]等。通用知識(shí)圖譜強(qiáng)調(diào)知識(shí)的廣泛性,大多數(shù)采用自底向上構(gòu)建。領(lǐng)域知識(shí)圖譜針對(duì)特定領(lǐng)域,可以進(jìn)行知識(shí)推理、輔助分析和決策支持等功能。典型的領(lǐng)域知識(shí)圖譜包括金融、電商、醫(yī)療等。電商領(lǐng)域的主要代表是阿里巴巴,它的知識(shí)圖譜已經(jīng)達(dá)到百億級(jí)別,可以廣泛支持商品搜索、商品導(dǎo)購(gòu)、智能問(wèn)答等。在金融領(lǐng)域,知識(shí)圖譜可以讓投資者和融資者更快速地了解投資行為,把握行情。張德亮針對(duì)金融圖譜缺乏問(wèn)題,利用爬取到的金融股票及企業(yè)信息等結(jié)構(gòu)化數(shù)據(jù)構(gòu)建了一個(gè)小型金融知識(shí)圖譜[14]。王電化等人提出了一套檔案領(lǐng)域知識(shí)圖譜構(gòu)建方案[15]。此外,吳榮等人構(gòu)建了面向圖書(shū)館的圖書(shū)知識(shí)圖譜并用于圖書(shū)推薦[16]。不同吳榮等人直接采用結(jié)構(gòu)化數(shù)據(jù)構(gòu)建知識(shí)圖譜,該文嘗試探討如何有效利用互聯(lián)網(wǎng)海量的無(wú)結(jié)構(gòu)圖書(shū)信息,構(gòu)建圖書(shū)領(lǐng)域知識(shí)圖譜。
知識(shí)圖譜的一個(gè)主要應(yīng)用是與問(wèn)答系統(tǒng)相合,構(gòu)建基于知識(shí)圖譜的問(wèn)答系統(tǒng)。它能充分利用海量的語(yǔ)義網(wǎng)絡(luò)知識(shí),采用自然語(yǔ)言技術(shù),為用戶提供人性化的、高效的問(wèn)答服務(wù)[9,10]。在專業(yè)領(lǐng)域,問(wèn)答系統(tǒng)所需的龐大專業(yè)知識(shí)儲(chǔ)備導(dǎo)致過(guò)度占用存儲(chǔ)空間和降低查詢效率的問(wèn)題可以被知識(shí)圖譜解決。據(jù)研究在規(guī)模相同的數(shù)據(jù)中,運(yùn)用知識(shí)圖譜可以節(jié)省 10% 的存儲(chǔ)空間,查詢效率提高近 30 倍[17]。陳剛等人[18]使用BiLSTM-CRF命名實(shí)體識(shí)別模型增強(qiáng)企業(yè)風(fēng)險(xiǎn)知識(shí)圖譜,構(gòu)建了一個(gè)智能問(wèn)答機(jī)器人,實(shí)現(xiàn)了對(duì)知識(shí)圖譜的檢索和利用。陳金菊等人[19]提出了基于道路法規(guī)知識(shí)圖譜的多輪問(wèn)答系統(tǒng),可以更好地識(shí)別用戶意圖;陳璟浩等人[20]利用“一帶一路”投資相關(guān)信息構(gòu)建知識(shí)圖譜,并實(shí)現(xiàn)了問(wèn)答系統(tǒng)中預(yù)處理、問(wèn)題分類、問(wèn)題模板匹配以及答案生成功能。李賀等人[21]優(yōu)化已有的基于疾病知識(shí)圖譜的自動(dòng)問(wèn)答系統(tǒng),為公眾提供一種準(zhǔn)確率更高的疾病知識(shí)查詢工具。上述所建立的問(wèn)答系統(tǒng)都在各自領(lǐng)域得到了較好的應(yīng)用,并且在問(wèn)答系統(tǒng)流程中都融合了領(lǐng)域特色。該文研究將圖書(shū)知識(shí)圖譜應(yīng)用于圖書(shū)問(wèn)答系統(tǒng),嘗試為具體網(wǎng)站如何有效利用海量互聯(lián)網(wǎng)信息提供解決方案。
圖書(shū)知識(shí)圖譜構(gòu)建包含三個(gè)關(guān)鍵技術(shù):數(shù)據(jù)采集、圖書(shū)三元組構(gòu)建及知識(shí)圖譜存儲(chǔ)可視化。
1.豆瓣圖書(shū)數(shù)據(jù)采集
豆瓣讀書(shū)網(wǎng)站海量的圖書(shū)信息是該文構(gòu)建圖書(shū)知識(shí)圖譜的信息源。首先分析標(biāo)簽網(wǎng)頁(yè)的結(jié)構(gòu),然后通過(guò)爬蟲(chóng)抓取該網(wǎng)頁(yè)下的所有標(biāo)簽,獲取各個(gè)標(biāo)簽下的數(shù)據(jù)URL。在豆瓣讀書(shū)中,每個(gè)URL都有其特殊的結(jié)構(gòu),因此在對(duì)于URL進(jìn)行解析時(shí),首先要分析其URL的基本結(jié)構(gòu),URL結(jié)構(gòu)通常為:https://book.douban.com/tag/{}?start={}&type=T, 第一個(gè){}代表著該標(biāo)簽,第二個(gè){}代表開(kāi)始的第一本書(shū),每一頁(yè)為二十本書(shū)。獲取網(wǎng)頁(yè)源代碼后,通過(guò)xpath對(duì)節(jié)點(diǎn)定位并獲取所有標(biāo)簽。然后分析標(biāo)簽下的書(shū)籍網(wǎng)頁(yè)代碼,通過(guò)正則表達(dá)式抓取每本書(shū)籍里面的書(shū)名、評(píng)分、評(píng)價(jià)人數(shù)、作者、譯者、出版社、出版時(shí)間、價(jià)格和簡(jiǎn)介等。此外由于有些書(shū)籍基本信息、評(píng)分和介紹缺少,因此需要對(duì)其作缺省處理。
最終共抓取豆瓣圖書(shū)標(biāo)簽145個(gè)(文學(xué)類27個(gè)、流行類36個(gè)、文化類33個(gè)、生活類21個(gè)、經(jīng)管類13個(gè)、科技類15個(gè)),共28 627本書(shū)籍信息,每本書(shū)都包含書(shū)名、評(píng)分、評(píng)價(jià)人數(shù)、作者、譯者、出版社、出版時(shí)間、價(jià)格和簡(jiǎn)介這些基本信息,抓取的初始數(shù)據(jù)存放到文件,并用于后續(xù)流程處理。
2.圖書(shū)三元組構(gòu)建
數(shù)據(jù)在知識(shí)圖譜中都是以三元組方式呈現(xiàn)。在圖書(shū)知識(shí)圖譜中,三元組主要包括兩類:<實(shí)體,屬性,屬性值>和<實(shí)體,關(guān)系,實(shí)體>。<實(shí)體,屬性,屬性值>通常是一對(duì)一三元組,<實(shí)體,關(guān)系,實(shí)體>通常是一對(duì)多三元組。表1和2分別給出兩類三元組實(shí)例。根據(jù)采集數(shù)據(jù)分析,該文創(chuàng)建了Book(圖書(shū))、Author(作者)、Translator(譯者)、Press(出版社)、Publish(出版時(shí)間)、Type(類型)六個(gè)實(shí)體節(jié)點(diǎn)標(biāo)簽,name(名字)、score(評(píng)分)、price(價(jià)格)、bi(簡(jiǎn)介)、comment(評(píng)價(jià)人數(shù))四個(gè)實(shí)體屬性和is(是)、author(作者)、translator(翻譯)、press(出版)、publish(出版日期)、jou(版次)、has(有)、pn(屬于)、tn(被出版)、an(主角)、pun(被發(fā)表)、have(擁有)、haveg(體裁)十三種關(guān)系。

表1 <實(shí)體,屬性,屬性值>舉例

表2 <實(shí)體,關(guān)系,實(shí)體>舉例
3.知識(shí)圖譜存儲(chǔ)與可視化
通過(guò)對(duì)實(shí)體和屬性的抽取,本文最終構(gòu)建的豆瓣圖書(shū)知識(shí)圖譜包含41 395個(gè)節(jié)點(diǎn),308 190條三元組。三元組存儲(chǔ)在圖數(shù)據(jù)庫(kù)Neo4j中。圖數(shù)據(jù)庫(kù)是可以高效處理復(fù)雜關(guān)系網(wǎng)的數(shù)據(jù)庫(kù),是基于數(shù)學(xué)里面的圖理論的思想和算法來(lái)實(shí)現(xiàn)的。在圖中節(jié)點(diǎn)表示實(shí)體,實(shí)體間的關(guān)系表示為有向邊,每一個(gè)節(jié)點(diǎn)與關(guān)系都具有屬性。圖可以由圖、列表或其它多元實(shí)體組成,同時(shí)節(jié)點(diǎn)可以表現(xiàn)為任意結(jié)構(gòu),通過(guò)關(guān)系來(lái)連接。知識(shí)圖譜能將數(shù)據(jù)以可視化形式表現(xiàn)出來(lái)。進(jìn)一步,利用它們之間的關(guān)系,能實(shí)現(xiàn)知識(shí)推理,挖掘出其背后隱含的知識(shí)。
1.問(wèn)答系統(tǒng)框架
基于知識(shí)圖譜的問(wèn)答系統(tǒng)主框架如圖2所示,主要包括三個(gè)模塊:?jiǎn)栴}分析模塊,知識(shí)圖譜構(gòu)建模塊和答案查詢模塊。在問(wèn)題分析模塊中,該文選用模板匹配的問(wèn)句解析方式。針對(duì)圖書(shū)常用檢索問(wèn)題,分成19類圖書(shū)問(wèn)題,建立一個(gè)問(wèn)題分類與問(wèn)題模板匹配的映射表。具體的,通過(guò)機(jī)器學(xué)習(xí)對(duì)用戶問(wèn)題進(jìn)行問(wèn)題分類,根據(jù)分類結(jié)果對(duì)問(wèn)題進(jìn)行問(wèn)句匹配,匹配好問(wèn)句模板;再根據(jù)所匹配的問(wèn)句模板,生成基于知識(shí)圖譜的查詢語(yǔ)句,最后在圖數(shù)據(jù)庫(kù)上查詢答案并返回最后答案。

圖2 圖書(shū)問(wèn)答系統(tǒng)框架
2.問(wèn)題分類模板
圖書(shū)問(wèn)答系統(tǒng)作為特殊的領(lǐng)域問(wèn)答系統(tǒng),用戶檢索圖書(shū)具有規(guī)律性及模板化。經(jīng)對(duì)圖書(shū)知識(shí)圖譜數(shù)據(jù)及用戶常用圖書(shū)查詢問(wèn)題的分類統(tǒng)計(jì),該文提出了19類用戶問(wèn)題模板。表3列出了所有圖書(shū)問(wèn)題模板。其中前11條是單條件簡(jiǎn)單問(wèn)題模板。例如用戶提問(wèn):解憂雜貨店的出版時(shí)間是什么?則可把它歸為模板“某本書(shū)的出版時(shí)間”。標(biāo)簽12-19是復(fù)雜問(wèn)題模板,能對(duì)應(yīng)對(duì)用戶復(fù)雜的檢索需求。例如用戶提問(wèn):南海出版公司在2014年5月出版了什么書(shū)?顯然通過(guò)關(guān)鍵字查詢是無(wú)法回答該問(wèn)題的。利用知識(shí)圖譜,可把該提問(wèn)歸為模板“某出版社在某時(shí)間出版了什么書(shū)”。

表3 用戶問(wèn)題模板
3.基于貝葉斯的問(wèn)題匹配算法
用戶輸入的問(wèn)句需要匹配相應(yīng)的問(wèn)題模板,因此需要對(duì)用戶問(wèn)句進(jìn)行分類處理。由于樸素貝葉斯相較于其它分類器,在分類速度上有著較大的優(yōu)勢(shì),并且其具有數(shù)學(xué)可解釋性,因此該文選用樸素貝葉斯作為問(wèn)句分類器。下面簡(jiǎn)要描述該方法。
假設(shè)一個(gè)用戶問(wèn)題q∈X,X是向量空間,和問(wèn)題類別集合C={c1,c2,…,c19},又稱為標(biāo)簽。樸素貝葉斯方法利用貝葉斯準(zhǔn)則計(jì)算q屬于類ci的概率如下:
(1)
其中p(ci)為先驗(yàn)概率,p(w|ci)為類條件概率,最后計(jì)算選取概率最大的類作為預(yù)測(cè)的問(wèn)題類別。
樸素貝葉斯是一個(gè)機(jī)器學(xué)習(xí)算法,需要事先構(gòu)建語(yǔ)料來(lái)訓(xùn)練模型。問(wèn)題的文本特征提取采用TF-IDF特征提取算法。通過(guò)對(duì)模型訓(xùn)練與測(cè)試,該文所構(gòu)建的分類模型達(dá)到95%的分類精確,且每100條語(yǔ)句的分類時(shí)間僅為0.1ms。
4.查詢語(yǔ)句生成
對(duì)用戶提出的問(wèn)題進(jìn)行分類,匹配與之相對(duì)應(yīng)的問(wèn)題查詢模板。為了在所構(gòu)建的知識(shí)圖數(shù)據(jù)庫(kù)Neo4j查詢,需要生成Cypher查詢語(yǔ)句。由于用戶提問(wèn)已經(jīng)模板化,因此該文也采用基于模板的方法生成Cypher查詢語(yǔ)句義。表4給出用戶問(wèn)題與對(duì)應(yīng)查詢模板例子。例如:用戶問(wèn)題為‘解憂雜貨店的評(píng)分多少’,得到的分類標(biāo)簽是0,從而得到模板查詢語(yǔ)句‘match (b:Book)-[]->() where b.name='{book_name}' return b.score’,將命名實(shí)體‘解憂雜貨店’替換上去形成了完整的查詢語(yǔ)句‘match (b:Book)-[]->() where b.name='解憂雜貨店' return b.score’,通過(guò)完整的查詢語(yǔ)句查出最后的結(jié)果。
此外,該文也采用了容錯(cuò)處理策略。如果用戶查詢問(wèn)題沒(méi)在數(shù)據(jù)庫(kù)中出現(xiàn),提出模糊查詢策略。例如,如果數(shù)據(jù)庫(kù)中沒(méi)有“解憂雜貨店”實(shí)體。可先把中文名字轉(zhuǎn)為拼音,然后再利用Levenshtein方法計(jì)算兩個(gè)字符串的相似度,找出與相似高的前k個(gè)實(shí)體,把結(jié)果列表返回到給用戶。

表4 用戶問(wèn)題與對(duì)應(yīng)查詢模板舉例

續(xù)表4 用戶問(wèn)題與對(duì)應(yīng)查詢模板舉例
5.平臺(tái)設(shè)計(jì)
該文采用flask框架來(lái)搭建本問(wèn)答系統(tǒng)平臺(tái)。其工作的流程如圖3所示:用戶向問(wèn)答系統(tǒng)提出相應(yīng)的請(qǐng)求后,網(wǎng)頁(yè)端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接受請(qǐng)求后向控制層發(fā)送消息,控制層接受消息后傳遞給服務(wù)層來(lái)處理業(yè)務(wù)邏輯,并與數(shù)據(jù)庫(kù)交互后將消息返回給服務(wù)器端,最后呈現(xiàn)給用戶。

圖3 問(wèn)答系統(tǒng)平臺(tái)流程
針對(duì)豆瓣讀書(shū)海量的圖書(shū)信息難以滿足用戶多樣化的圖書(shū)檢索需求,提出基于知識(shí)圖譜的圖書(shū)問(wèn)答系統(tǒng)。該文探討了領(lǐng)域知識(shí)圖譜搭建智能問(wèn)題系統(tǒng)關(guān)鍵技術(shù),包括數(shù)據(jù)爬取、三元組構(gòu)建、數(shù)據(jù)可視化,問(wèn)題模板分類及匹配。為行業(yè)網(wǎng)站充分利用海量互聯(lián)網(wǎng)信息提供了一套可操作的解決方案。在未來(lái),將研究自動(dòng)實(shí)體關(guān)系的抽取,以擴(kuò)充圖書(shū)知識(shí)圖譜的信息量;研究深度學(xué)習(xí)自動(dòng)生成查詢語(yǔ)句,使問(wèn)答系統(tǒng)更加智能化。
湖北科技學(xué)院學(xué)報(bào)2022年6期