王學(xué)光 馬愛芝 王海東 穆瑩雪 李燕燕
(河北建筑工程學(xué)院,河北 張家口 075000)
隨著社會的高速發(fā)展,信息的制造速度也在不斷加快.而作為公眾重要基礎(chǔ)設(shè)施之一的圖書館,有著越來越多的實體資源和電子資源,需要提供更加簡單、高效、快捷、全面的功能,最大限度地為單個用戶或用戶群提供個性化信息服務(wù).
圖書館是師生讀者獲取知識信息的重要渠道,而讀者在日常查詢圖書館資源的過程中,一些問題不能得到及時的解答.圖書館智能問答系統(tǒng)開發(fā)的目的就是為了更好地滿足讀者需求和更大程度地釋放圖書館的人力資源.
智能問答機器人是模擬人類對話的計算機程序,研究者需要預(yù)先構(gòu)建知識庫,機器接收問題后經(jīng)過計算,返回最貼切的匹配.近年來,“互聯(lián)網(wǎng)+”的快速發(fā)展悄然改變了信息服務(wù)的傳統(tǒng)方式,互聯(lián)網(wǎng)問答社區(qū)日益興起,問答社區(qū)以知識與經(jīng)驗共享為目的,參與者可以關(guān)注感興趣的話題,可以提問尋求幫助,其他用戶則可以根據(jù)自身的知識、見解在線給予解答.
國外在問答系統(tǒng)技術(shù)上的研究起步比較早,目前在工業(yè)界或者學(xué)術(shù)界已經(jīng)產(chǎn)出了一些比較成熟的問答系統(tǒng)和聊天機器人系統(tǒng),如蘋果公司的Siri,谷歌的Google Now,微軟的Cortana,MIT大學(xué)的Start系統(tǒng),還有AskJeeves、AnswerBus、LAMP等.我國雖然發(fā)展較晚,但是發(fā)展速度很快,現(xiàn)在也出現(xiàn)了如阿里巴巴的天貓精靈、百度的小度智能音箱、小米的小愛同學(xué)等.因為國內(nèi)巨頭紛紛布局IoT(物聯(lián)網(wǎng))產(chǎn)業(yè),其控制也都依賴于智能問答系統(tǒng),所以智能問答系統(tǒng)的發(fā)展?jié)摿薮?
圖書館智能問答系統(tǒng)需求分析如圖1所示.用戶端群體對系統(tǒng)大致上有三個方面的需求:(1)能夠快速獲得“目標(biāo)書籍”的相關(guān)信息,信息中應(yīng)該涵蓋圖書作者、館藏地點、在館狀態(tài)等重要信息;(2)關(guān)于圖書館的問題能夠得到實時反饋,用戶的提問首先應(yīng)該符合正常的語言邏輯,在此前提下系統(tǒng)所反饋的結(jié)果應(yīng)該最大程度地滿足用戶需求,并且系統(tǒng)能夠推測和分析用戶問題,凸顯出系統(tǒng)的機器智能;(3)可以滿足用戶查詢歷史信息,主要包括自己的歷史提問以及所更新的回復(fù),更新的回復(fù)會給予用戶提示.
圖1 圖書館智能問答系統(tǒng)需求分析圖
系統(tǒng)除了具備良好的使用性能外,還應(yīng)該具有靈活易用的管理機制,智能問答系統(tǒng)中衍生出管理員版塊并將其分為“功能型管理”和“管理型管理”.功能型管理對于系統(tǒng)無法回答的問題進行更新維護,不僅能做到問題的集中回復(fù)和清洗,還可以充實語料庫優(yōu)化系統(tǒng)的學(xué)習(xí);第二,管理型管理是面向管理者的管理,也可稱為“超級管理”,主要包括了對于普通管理員的新增、刪除、查詢等功能,兩層管理者的設(shè)置使得系統(tǒng)后端的更新維護更加穩(wěn)定.
2.2.1 用戶端功能設(shè)計
用戶端功能設(shè)計分析如圖2所示.根據(jù)用戶端需求進行功能設(shè)計,將用戶行為進行拆解,由于本系統(tǒng)主要面向局域網(wǎng)用戶,所以用戶在進入系統(tǒng)前首先會進行身份驗證,驗證身份后用戶進入智能問答的系統(tǒng)界面進行提問.系統(tǒng)中加入了問題識別機制,能夠分辨用戶的提問類型,判斷標(biāo)準(zhǔn)是問題中是否含有指定的標(biāo)記.通俗地講,用戶的提問含有指定標(biāo)記,則系統(tǒng)判定這條提問是關(guān)于書籍查詢的,否則,系統(tǒng)會理解為這是一個關(guān)于圖書館的提問,判別后系統(tǒng)會自動進入下一環(huán)節(jié).
圖2 用戶端功能設(shè)計分析圖
問題帶有標(biāo)記會觸發(fā)“查詢館藏”的算法,主要包括智能爬蟲和數(shù)據(jù)清洗兩個步驟.首先,算法中嵌入爬蟲框架,定義好爬蟲的結(jié)構(gòu)并填充有關(guān)內(nèi)容,再將用戶的提問進行清洗,截取書目名稱作為參數(shù)傳遞,爬蟲獲得關(guān)鍵詞后進行數(shù)據(jù)抓取.通過模擬瀏覽器訪問圖書館網(wǎng)站的書目查詢系統(tǒng),再利用關(guān)鍵詞模擬人工檢索獲得資源列表,利用先前在爬蟲算法中填充的正則表達式進行匹配獲得有關(guān)數(shù)據(jù),拿到數(shù)據(jù)后根據(jù)需求進行數(shù)據(jù)清洗和計算,將館藏位置、在館數(shù)量等信息封裝成json數(shù)據(jù)傳遞給前端.
問題若沒有標(biāo)記則會進入“智能回復(fù)”版塊,具體的實現(xiàn)主要包括文本相似度的計算、數(shù)據(jù)庫的操縱以及多重邏輯判斷等.智能回復(fù)版塊中的難點在于如何使系統(tǒng)具有智能的操作,算法中為了賦予系統(tǒng)“近似”人類的思考,添加了基于文本相似度量的多重邏輯判斷,做到將不同的問題進行分類.
文本相似度計算采用TF-IDF算法和分詞算法結(jié)合的方式,首先將提問進行分詞,再利用TF-IDF算法進行文本相似度計算.計算完畢取最大相似值,同時判斷該值與閾值的關(guān)系,并觸發(fā)“直接回復(fù)”、“猜你想問”、“圖靈回答”三個路徑之一.在“直接回復(fù)”路徑,系統(tǒng)回復(fù)正確的答案,問題答案基于語料庫;在“猜你想問”路徑,系統(tǒng)會根據(jù)相似度排名返回最相似的幾條問題,用戶選擇一條記錄反饋將重新觸發(fā)“智能回復(fù)”;若問題相似度過低并無法進入上述兩條路徑,則問題會歸為“圖靈回答”,此時算法會調(diào)用圖靈機器人,將圖靈回復(fù)的數(shù)據(jù)傳遞給用戶.
后端算法中加入數(shù)據(jù)庫操縱機制,建立系統(tǒng)與數(shù)據(jù)庫的聯(lián)系,該模塊主要是用戶行為記錄表和語料庫表的使用:(1)將用戶的行為記錄用于歷史數(shù)據(jù)的查詢,系統(tǒng)依靠該數(shù)據(jù)表實現(xiàn)了歷史查詢的功能,可以滿足用戶查詢歷史數(shù)據(jù);(2)系統(tǒng)依照已經(jīng)設(shè)定好的關(guān)鍵詞對用戶提問進行分析,該機制可分辨出有意義的問題并留存,該類未回答問題將由后臺管理員進行回答并同時補充進語料庫供系統(tǒng)學(xué)習(xí)使用.管理者進行未回答問題維護后,系統(tǒng)會進行數(shù)量統(tǒng)計,待用戶下一次登錄時反饋給用戶歷史問題的更新數(shù)量,用戶可以點擊對歷史數(shù)據(jù)進行查看.
2.2.2 管理端功能設(shè)計
管理員端功能設(shè)計分析如圖3所示.本模塊主要包括管理員的基本操作和超級管理員的必要操作,在具體實現(xiàn)中重要部分是代碼和數(shù)據(jù)庫的關(guān)聯(lián),算法主要依靠數(shù)據(jù)庫操縱語言進行系列操作.由于管理員具有一定的高級功能,所以在登錄過程中還是需要進行驗證的,并且在超級管理員登錄時實現(xiàn)了二次驗證.
圖3 管理員端功能設(shè)計分析圖
超級管理員與普通管理員同時具有基本功能,包括問題的回答和選擇刪除,這兩者的實現(xiàn)主要是通過用戶行為記錄表和語料庫表進行關(guān)聯(lián),未回答的問題得到管理員的回答后,首先會填充進語料庫,這一過程使語料庫愈加完整;其次在用戶行為記錄表中記錄該回答,并且將該條信息的閱讀狀態(tài)置為用戶未讀,以便計算未讀數(shù)量.
普通管理員只實現(xiàn)最基本的功能,而超級管理員比普通管理員實現(xiàn)更多操作,例如管理員的新增、刪除和查詢等功能,算法中主要是嵌入了數(shù)據(jù)庫操縱語言并關(guān)聯(lián)管理員表進行實現(xiàn),這一部分的難點是數(shù)據(jù)庫連接與操作,算法中設(shè)立了提交和回滾機制,數(shù)據(jù)庫操縱語句生成后會連接數(shù)據(jù)庫進行提交操作,為了防止數(shù)據(jù)庫執(zhí)行語句進行數(shù)據(jù)批量操作時報錯,設(shè)置了回滾操作來優(yōu)化數(shù)據(jù)庫.
2.2.3 數(shù)據(jù)庫端設(shè)計
數(shù)據(jù)庫端設(shè)計分析如圖4所示.數(shù)據(jù)庫的建設(shè)是系統(tǒng)穩(wěn)定運行的基本保障,由于數(shù)據(jù)庫串聯(lián)各個功能,無論是用戶行為還是管理者行為都會涉及數(shù)據(jù)庫的操縱,但歸根結(jié)底數(shù)據(jù)庫無非是數(shù)據(jù)的增刪改查,算法中嵌入數(shù)據(jù)庫操縱語言來進行代碼與數(shù)據(jù)庫的交流,系統(tǒng)開發(fā)中建立了本地MySQL數(shù)據(jù)庫并通過3306端口進行訪問.
圖4 數(shù)據(jù)庫端設(shè)計分析圖
系統(tǒng)數(shù)據(jù)庫中主要建立了三張數(shù)據(jù)表,分別是用戶行為記錄表、語料庫表、管理員表,表中字段依照需求進行編輯和設(shè)計.
用戶行為記錄表記錄的是用戶進行的操作,如表1所示,以用戶的一次提問為單位,進行一次提問數(shù)據(jù)表中就會增加該條記錄;管理員表中記錄的是管理員的相關(guān)信息,如表2所示,主要包括管理員的個人信息和管理類型以及設(shè)立時間等內(nèi)容;語料庫表記錄的是先前準(zhǔn)備的語料,如表3所示,主要內(nèi)容是有關(guān)于圖書館的問題和答案,其中以問題ID作為標(biāo)識,每一個ID對應(yīng)一個問題.
表1 用戶行為記錄表
表2 管理員表
表3 語料庫表
2.2.4 智能問答系統(tǒng)總體設(shè)計說明
(1)本系統(tǒng)采用Python Flask框架進行開發(fā),通過程序中定義接口實現(xiàn)具體功能,依照功能需求進行設(shè)計.
(2)Login接口:用于用戶的登錄操作,在接口中定義了身份驗證功能,用賬號和密碼進行圖書館官網(wǎng)的模擬登錄,拿到cookie判斷登錄狀態(tài),若cookie顯示成功登錄,那么程序會返回一個狀態(tài)碼標(biāo)記用戶成功登錄,同時login接口中也定義了管理員的身份驗證機制,不同的身份都會對應(yīng)不同的狀態(tài)碼標(biāo)記.
(3)answer接口:用于回答用戶的問題以及記錄用戶行為,首先獲得用戶賬號以及提問,判斷用戶的提問是否具有標(biāo)記,若帶標(biāo)記則截取書目關(guān)鍵詞進行爬蟲操作獲取數(shù)據(jù),若不帶標(biāo)記則進行提問與語料庫的文本相似度計算,根據(jù)計算結(jié)果進入不同的回答渠道并進行不同的標(biāo)記.
(4)myquestion接口:用于用戶查詢歷史記錄,用戶觸發(fā)該功能接口時,會根據(jù)用戶賬號構(gòu)造數(shù)據(jù)庫查詢語句,同時提交到數(shù)據(jù)庫執(zhí)行,獲取數(shù)據(jù)后將其封裝成json格式傳送,并將數(shù)據(jù)庫中該用戶的所有提問未讀狀態(tài)更改為已讀狀態(tài).
(5)number接口:用于向用戶提示未讀信息的數(shù)量,用戶登錄成功的同時會自動觸發(fā)該功能接口,程序獲得用戶賬號后構(gòu)造數(shù)據(jù)庫查詢語句并提交到數(shù)據(jù)庫進行執(zhí)行,計算管理員回復(fù)但未讀狀態(tài)的記錄數(shù)量,并將其封裝傳送給前端界面.
(6)reply接口:用于管理員的回復(fù)問題操作,管理員觸發(fā)該功能接口后,程序會查詢并計算出未得到回答的問題,獲取未回答問題及其問題ID,將數(shù)據(jù)集進行封裝傳遞給前端界面.
(7)Submission接口:用于管理員回復(fù)問題后的提交操作,管理員回答完畢后點擊觸發(fā)該接口,程序拿到問題ID和答案,同時將數(shù)據(jù)格式進行轉(zhuǎn)化,并將每條信息對應(yīng)寫成數(shù)據(jù)庫更新語句提交執(zhí)行.
(8)Delete_question接口:用于管理員刪除問題,管理員選擇要刪除的問題并點擊觸發(fā)該功能接口,程序會獲得需要刪除的問題ID,獲得問題ID后程序自動生成數(shù)據(jù)庫刪除語句并提交執(zhí)行.
(9)Increase接口:用于超級管理員進行新增管理員操作,超級管理員錄入新增管理員的基本信息后點擊提交,系統(tǒng)獲取該數(shù)據(jù)后自動生成數(shù)據(jù)庫執(zhí)行語句并提交,由于超級管理權(quán)限較高,不能隨意增加超級管理,本系統(tǒng)的超級管理員是從數(shù)據(jù)庫底層進行設(shè)置的.
(10)Delete接口:用于超級管理員刪除普通管理員的操作,觸發(fā)該功能接口時,程序會再一次驗證是否為超級管理員,這一步為了防止直接調(diào)用接口進行惡意攻擊,程序獲取到需要刪除的普通管理的賬戶,通過數(shù)據(jù)庫操縱進行刪除操作.
(11)Query接口:此接口用于超級管理員的查詢普通管理員信息的操作,觸發(fā)此接口時程序會獲取所有管理員的數(shù)據(jù),封裝后傳送給前端.
(12)Del_cookie接口:此接口用于用戶和管理員退出操作,由于用戶和管理員登錄系統(tǒng)都需要驗證,驗證通過后程序會賦予用戶或管理員一個cookie,用戶和管理員拿到cookie后才能正常訪問接口執(zhí)行功能.這些cookie記錄于系統(tǒng)緩存中,用戶退出登錄時,需要清除掉這些緩存數(shù)據(jù).
高校圖書館是高校師生獲取知識的重要方式,圖書館的智能問答系統(tǒng)能較實時和準(zhǔn)確地為用戶服務(wù),從而在一定程度上推動了圖書館資源利用.在系統(tǒng)開發(fā)中,除了可以進行人機對話之外,還可以進行書目信息的查詢.系統(tǒng)優(yōu)化了管理者對于系統(tǒng)的管理,設(shè)置了超級管理員與普通管理員及其相應(yīng)的系列操作,主要通過各類接口以及數(shù)據(jù)庫操縱進行實現(xiàn).
隨著互聯(lián)網(wǎng)以及人工智能的發(fā)展,機器會逐漸取代人工完成一些繁瑣并且重復(fù)性較高的工作,這是時代進步的體現(xiàn).當(dāng)然,隨著人工智能更深入地發(fā)展,會有越來越多智能系統(tǒng)出世,本系統(tǒng)的開發(fā)雖然已經(jīng)達到了基本的使用效果,但隨著時代的進步,針對圖書館的智能問答系統(tǒng)或者其他智能系統(tǒng)必然還會有更大地提升.