杜春
(樂(lè)山師范學(xué)院電子信息與人工智能學(xué)院,四川樂(lè)山 614000)
隨著人工智能技術(shù)的快速發(fā)展,將人工智能技術(shù)運(yùn)用到現(xiàn)實(shí)場(chǎng)景中,從而提高社會(huì)的生產(chǎn)生活效率,已經(jīng)成為一個(gè)趨勢(shì)。智能問(wèn)答是人工智能技術(shù)中自然語(yǔ)言處理方向應(yīng)用于具體場(chǎng)景的熱門研究方向。通過(guò)智能問(wèn)答系統(tǒng)能實(shí)現(xiàn)用戶輸入想要詢問(wèn)的問(wèn)題,系統(tǒng)精確返回答案。
伴隨著人民生活水平的提高,越來(lái)越多的人熱衷于去外地旅游,而獲取目標(biāo)景點(diǎn)的信息顯得十分重要。樂(lè)山作為擁有樂(lè)山大佛、峨眉山等風(fēng)景名勝的旅游城市,旅游業(yè)是樂(lè)山經(jīng)濟(jì)的重要產(chǎn)業(yè)之一。為了給來(lái)樂(lè)山旅游的游客提供準(zhǔn)確及時(shí)的景點(diǎn)信息,本文開發(fā)了一款旅游智能問(wèn)答系統(tǒng)。該系統(tǒng)是基于知識(shí)圖譜、自然語(yǔ)言處理及深度學(xué)習(xí)等技術(shù)實(shí)現(xiàn)的。
隨著自然語(yǔ)言處理技術(shù)的快速發(fā)展,智能問(wèn)答已經(jīng)成為一個(gè)人工智能領(lǐng)域的研究熱點(diǎn)。智能問(wèn)答的實(shí)現(xiàn)涉及用戶問(wèn)句意圖識(shí)別,因此需要采用深度學(xué)習(xí)技術(shù)中的短文本分類模型來(lái)實(shí)現(xiàn)對(duì)輸入問(wèn)句的意圖分類。智能問(wèn)答按用途分為任務(wù)型、問(wèn)答型、閑聊型,按實(shí)現(xiàn)的方式分為基于多輪對(duì)話式、基于生成式和基于知識(shí)圖譜的方式。本文是旅游領(lǐng)域相關(guān)的智能問(wèn)答系統(tǒng),適合采用基于知識(shí)圖譜的方式來(lái)實(shí)現(xiàn)。目前,基于知識(shí)圖譜的智能問(wèn)答已經(jīng)有了很多研究成果。例如,洪海藍(lán)等人以中藥知識(shí)圖譜為知識(shí)庫(kù),構(gòu)建了海洋中藥智能問(wèn)答系統(tǒng)(MMKGQA)[1]。曾攀等人通過(guò)構(gòu)建玉米病蟲害知識(shí)圖譜,實(shí)現(xiàn)了一個(gè)玉米病蟲害智能問(wèn)答系統(tǒng)[2]。張彩麗等人為促進(jìn)農(nóng)作物科學(xué)施肥管理與土壤肥力研究領(lǐng)域海量數(shù)據(jù)在農(nóng)業(yè)生產(chǎn)中的利用,構(gòu)建了對(duì)應(yīng)的知識(shí)圖譜,實(shí)現(xiàn)了一個(gè)針對(duì)安徽省的農(nóng)作物科學(xué)施肥的智能問(wèn)答系統(tǒng)[3]。華斌等人提出了基于語(yǔ)言理解的政策智能問(wèn)答方法[4]。劉爽等人構(gòu)建了基于中華民族文化知識(shí)圖譜的智能問(wèn)答系統(tǒng)[5]。饒竹一等人實(shí)現(xiàn)了基于知識(shí)圖譜的智能客服系統(tǒng),并應(yīng)用于深圳供電局掌上營(yíng)業(yè)廳[6]。
基于知識(shí)圖譜的樂(lè)山旅游智能問(wèn)答系統(tǒng)的實(shí)現(xiàn)主要包含了數(shù)據(jù)采集、生成旅游知識(shí)圖譜、構(gòu)建用戶意圖識(shí)別模型、搭建Web系統(tǒng)等模塊,如圖1所示。
圖1 構(gòu)建智能問(wèn)答系統(tǒng)所需要的技術(shù)模塊
本系統(tǒng)中知識(shí)圖譜的數(shù)據(jù)來(lái)源于“去哪兒網(wǎng)”“百度百科”等權(quán)威網(wǎng)站,保證了數(shù)據(jù)的準(zhǔn)確性及實(shí)時(shí)性。Python 中為爬取網(wǎng)頁(yè)數(shù)據(jù),提供了一些API,通過(guò)這些API 能很方便地進(jìn)行網(wǎng)頁(yè)數(shù)據(jù)的收集。Python 中的Requests 模塊是一個(gè)用于網(wǎng)絡(luò)請(qǐng)求的模塊,主要用來(lái)模擬瀏覽器發(fā)出請(qǐng)求。當(dāng)服務(wù)器返回?cái)?shù)據(jù)頁(yè)面后,通過(guò)BeautifulSoup 來(lái)對(duì)頁(yè)面進(jìn)行解析,獲取到頁(yè)面中的景點(diǎn)信息等數(shù)據(jù)。將采集到的數(shù)據(jù)進(jìn)行整理后,存儲(chǔ)到CSV文件中,如圖2所示,圖中僅顯示了部分?jǐn)?shù)據(jù)。
圖2 采集到的景點(diǎn)數(shù)據(jù)
根據(jù)上一步用爬蟲技術(shù)采集到的數(shù)據(jù),將這些數(shù)據(jù)導(dǎo)入Neo4j 圖數(shù)據(jù)庫(kù)中進(jìn)行存儲(chǔ),生成的知識(shí)圖譜如圖3所示。Neo4j是一個(gè)高性能的,NOSQL圖形數(shù)據(jù)庫(kù),它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)上而不是表中。它是一個(gè)嵌入式的、基于磁盤的、具備完全的事務(wù)特性的Java 持久化引擎。知識(shí)圖譜是由多個(gè)節(jié)點(diǎn)與節(jié)點(diǎn)之間關(guān)系以及節(jié)點(diǎn)具有的屬性構(gòu)成。從生成的景點(diǎn)知識(shí)圖譜中可以看到每一個(gè)城市用一個(gè)節(jié)點(diǎn)來(lái)表示,同時(shí)每一個(gè)城市又包含了該城市擁有的景點(diǎn),這些景點(diǎn)也是用節(jié)點(diǎn)來(lái)表示,同時(shí)景點(diǎn)節(jié)點(diǎn)還具有“地址、景點(diǎn)簡(jiǎn)介、景點(diǎn)英文名、景點(diǎn)名、官網(wǎng)、開放時(shí)間、聯(lián)系電話、最適合瀏覽的季節(jié)、景點(diǎn)星級(jí)、建議瀏覽時(shí)長(zhǎng)、交通出行”等屬性,如圖4所示。
圖3 景點(diǎn)知識(shí)圖譜
圖4 峨眉山景點(diǎn)節(jié)點(diǎn)的屬性
當(dāng)用戶在前端界面輸入問(wèn)題后,需要對(duì)該問(wèn)題進(jìn)行分類,以明確用戶到底想問(wèn)的是什么方面的問(wèn)題。為了識(shí)別用戶問(wèn)句的意圖,首先根據(jù)旅游景點(diǎn)相關(guān)的問(wèn)題,制作了20 個(gè)問(wèn)題模板,分別對(duì)應(yīng)不同種類的問(wèn)題。接著,編寫程序構(gòu)建FastText用戶問(wèn)句意圖分類模型。FastText是Facebook于2016年開源的一個(gè)詞向量計(jì)算和文本分類工具,它的優(yōu)點(diǎn)也非常明顯,在文本分類任務(wù)中,F(xiàn)astText(淺層網(wǎng)絡(luò))往往能取得和深度網(wǎng)絡(luò)相媲美的精度,卻在訓(xùn)練時(shí)間上比深度網(wǎng)絡(luò)快許多數(shù)量級(jí)。因此使用FastText模型在不損失分類精度的同時(shí)還具有模型訓(xùn)練時(shí)間快,響應(yīng)時(shí)間快等特點(diǎn),非常適用于工程應(yīng)用中。FastText模型的訓(xùn)練要求數(shù)據(jù)集格式必須為“詞1 詞2...__label__1”的形式,如圖5所示,僅展示了部分?jǐn)?shù)據(jù)集。
圖5 訓(xùn)練的數(shù)據(jù)集
以下是使用fastText 模型進(jìn)行問(wèn)句意圖分類的核心代碼:
Flask 是Python 提供的輕量級(jí)Web 框架,使用它能很方便地實(shí)現(xiàn)Web 系統(tǒng)。本智能問(wèn)答系統(tǒng)的前端界面采用了Bootstrap 前端框架來(lái)實(shí)現(xiàn)。Bootstrap 是一款開源的前端開發(fā)框架,能極大地簡(jiǎn)化前端界面開發(fā)流程,提高開發(fā)人員的開發(fā)效率。界面主要分為聊天內(nèi)容顯示區(qū)域及問(wèn)題輸入框構(gòu)成。用戶輸入要詢問(wèn)的旅游相關(guān)問(wèn)題后,點(diǎn)擊“發(fā)送”按鈕,將問(wèn)句傳遞到后臺(tái),對(duì)問(wèn)句進(jìn)行中文分詞、去停用詞等預(yù)處理,接著對(duì)預(yù)處理后的問(wèn)句進(jìn)行命名實(shí)體識(shí)別,識(shí)別出城市縣區(qū)、景點(diǎn)等關(guān)鍵詞,再將預(yù)處理后的問(wèn)句輸入Fast-Text 問(wèn)句意圖分類模型中,得到用戶的意圖,經(jīng)過(guò)以上處理后,查詢Neo4j圖數(shù)據(jù)庫(kù)得到精確答案,并返回到聊天界面中,如圖6所示。
圖6 智能問(wèn)答系統(tǒng)界面圖
Flask主要代碼如下
本文通過(guò)采集數(shù)據(jù)、數(shù)據(jù)預(yù)處理、構(gòu)建知識(shí)圖譜、用戶問(wèn)句意圖分類、搭建Flask Web系統(tǒng),實(shí)現(xiàn)了一個(gè)樂(lè)山旅游景點(diǎn)的智能問(wèn)答系統(tǒng)。該系統(tǒng)經(jīng)測(cè)試,運(yùn)行正常,符合工程應(yīng)用中對(duì)系統(tǒng)的響應(yīng)時(shí)間要求。本系統(tǒng)中采用了FastText模型構(gòu)建了一個(gè)用于用戶問(wèn)句意圖分類的模型,精確度較高,但本系統(tǒng)中的問(wèn)句模板的質(zhì)量仍然決定了用戶問(wèn)句意圖識(shí)別的準(zhǔn)確率,因此后續(xù)還可進(jìn)一步完善問(wèn)句模板以及擴(kuò)充景點(diǎn)知識(shí)圖譜,保證數(shù)據(jù)的完整性和準(zhǔn)確性。
本文受到了互聯(lián)網(wǎng)自然語(yǔ)言智能處理四川省高等學(xué)校重點(diǎn)實(shí)驗(yàn)室開放基金項(xiàng)目(項(xiàng)目編號(hào):INLP202205)資助,特此感謝。