陳 鈺 王迎春 牛苗苗
(唐山科技職業(yè)技術(shù)學(xué)院,河北 唐山 063000)
基于Web 的英文智能問答系統(tǒng)運(yùn)行的首要步驟是先獲取到提問者的問題。之后,根據(jù)匹配模型將該問題與數(shù)據(jù)庫中所有的相關(guān)問題進(jìn)行匹配,以找到最優(yōu)的答案并將其反饋給提問者。而對(duì)于出現(xiàn)在知識(shí)圖譜的相關(guān)語法問題,問答系統(tǒng)則還需要識(shí)別句子中出現(xiàn)的語法結(jié)構(gòu),并調(diào)用不同的場景模式進(jìn)行響應(yīng)預(yù)測與問答交互[1],因此該智能問答系統(tǒng)需要具備的功能有:
1.英文問答數(shù)據(jù)獲?。豪肞ython 等技術(shù)從各個(gè)公開可獲取的如Google、Wiley InterScience、Ingenta 等網(wǎng)站、論壇等自動(dòng)獲取相應(yīng)的問答數(shù)據(jù)。
2.英文相似問題制備:獲取到的中文問答數(shù)據(jù)對(duì),以相似性原則制備問題數(shù)據(jù)集,用于文本進(jìn)行相應(yīng)的匹配模型轉(zhuǎn)譯。
3.相似問題更迭匹配模型:對(duì)于新獲取的問答數(shù)據(jù),生成新的相類似問題和問答系統(tǒng)自身積累的對(duì)話模型數(shù)據(jù)對(duì)相似問題進(jìn)行更迭匹配。
4.知識(shí)圖譜構(gòu)建:基于現(xiàn)有的英文數(shù)據(jù)庫自動(dòng)構(gòu)建相應(yīng)的知識(shí)圖譜。
5.前臺(tái)對(duì)話式交互:可以模擬提問者和回答者的交互,通常以前臺(tái)交互界面,以對(duì)話的方式進(jìn)行呈現(xiàn),可以通過類似微信一問一答的交流方式,進(jìn)行問題的解決。并在最后獲得用戶的評(píng)價(jià),可以以此來判定返回的模型的正確性以及相似的問題,是否被問答者所接受,進(jìn)而來決定是否用上述第二條功能中的模型進(jìn)行更迭匹配。
6.模型的調(diào)用:可以根據(jù)用戶的需求對(duì)相應(yīng)的模型予以響應(yīng)。
7.實(shí)體知識(shí)庫鏈接:對(duì)于在問答中出現(xiàn)的較為重要的實(shí)體內(nèi)容,可以與實(shí)體知識(shí)庫進(jìn)行鏈接,方便用戶對(duì)于實(shí)體進(jìn)行更直觀、更便捷的訪問和查看。
英文智能問答系統(tǒng)的總體框架包括代碼層、數(shù)據(jù)庫層、應(yīng)用層以及用戶層(具體如圖1所示)。[2]代碼層表示智能問答系統(tǒng)所涉及的所有編程語言與軟件。數(shù)據(jù)層通過人工、Python 等數(shù)字技術(shù)獲取來自各大英文網(wǎng)站、已發(fā)表文獻(xiàn)的公開文獻(xiàn)數(shù)據(jù)以及英文問答數(shù)據(jù),其次也從各英文網(wǎng)站采集英文實(shí)體知識(shí)庫,例如名詞解釋等,均是從比較權(quán)威的數(shù)據(jù)庫中進(jìn)行采集。
英語同義問題數(shù)據(jù)集是通過數(shù)據(jù)采集完成后使用同義語料制備平臺(tái)依據(jù)數(shù)據(jù)庫中的所有問答題目形成的。應(yīng)用層是由數(shù)據(jù)庫層所收集的豐富問答數(shù)據(jù)庫和詳實(shí)的知識(shí)庫及其產(chǎn)生的同義問題集合體共同形成的具備智能問答模式的應(yīng)用服務(wù)類模型。自動(dòng)問答服務(wù)可以根據(jù)類似問題歸集的衍化形成集演練、推測、數(shù)據(jù)更迭匹配等相類似的模型匹配。而且還能夠根據(jù)實(shí)體認(rèn)知圖譜進(jìn)行反向預(yù)測模型推演,改進(jìn)和提升問答效率[3]。在推演過程中形成的副產(chǎn)品詞匯向量和文本向量可以模型化后運(yùn)用于其他的任務(wù),形成服務(wù)類模型的基礎(chǔ)。應(yīng)用層的文本分詞功能可以形成導(dǎo)向索引,為后期提供實(shí)體鏈接指向。不同的接入口面對(duì)的是龐大的用戶層,可以根據(jù)用戶通過提出的問題,實(shí)現(xiàn)相類似問題解答、疑難問題專人解答以及實(shí)體知識(shí)指向鏈接等功能。通過數(shù)據(jù)服務(wù)可以根據(jù)提問者對(duì)回答結(jié)果的滿意度來進(jìn)行評(píng)判,以確定是否需要通過專人解答或者模型的更迭功能對(duì)非同類問題予以處理。在用戶層,可以實(shí)現(xiàn)在提問者之間的交互,獲得相應(yīng)的問題,經(jīng)過應(yīng)用層數(shù)據(jù)庫的調(diào)用,搜索相應(yīng)的答案。在用戶提出有代表性的問題且能夠指向?qū)嶓w知識(shí)庫鏈接的同時(shí),提問用戶可以根據(jù)系統(tǒng)所提供的實(shí)體庫信息鏈接進(jìn)行點(diǎn)選以獲取更多的有關(guān)信息。
智能問答系統(tǒng)的代碼層所采用的代碼包括Python、Django、PyQuery、Nginx、uWSGI、Matchzoo 等,后 臺(tái)模型主要通過Python 實(shí)現(xiàn),Nginx、uWSGI 和Django 組合方案用于線上項(xiàng)目的部署。Matchzoo 屬于Python 工具包,用于各種文本模型匹配,且可以把這些模型用統(tǒng)一的接口封裝。其優(yōu)點(diǎn)在于便于文章的檢索,以及對(duì)于問題進(jìn)行自動(dòng)回應(yīng)和答復(fù),對(duì)于同義語句,可以達(dá)到快速揀選和識(shí)別,從而能夠較為快速和精準(zhǔn)地進(jìn)行個(gè)人數(shù)據(jù)的調(diào)試,在很大程度上節(jié)省了開發(fā)時(shí)間。自定義模式下,文本可以用相似問題匹配的方式在該架構(gòu)內(nèi)實(shí)現(xiàn)。PyTorch 作為具有開放意義的深層次研學(xué)架構(gòu),由于其設(shè)計(jì)與人類思維力相匹配,在語句處理方面的表現(xiàn)令人欽佩,它可以讓用戶在形成自身想法的同時(shí)保持更加專注的狀態(tài),能夠更加適合深度和高效的學(xué)習(xí)。它與Matchzoo 工具包相結(jié)合調(diào)用能夠?qū)崿F(xiàn)類似于人類神經(jīng)網(wǎng)絡(luò)的自主智能問答反饋。uWSGI 是用于和Web 應(yīng)用在網(wǎng)絡(luò)架構(gòu)中數(shù)據(jù)交換的服務(wù)器。Nginx 是較uWSGI 簡單的一款服務(wù)器,職能是負(fù)責(zé)統(tǒng)管理所接收到的所有瀏覽器需求。它可以自行處置由瀏覽器發(fā)送的靜態(tài)請(qǐng)求,而動(dòng)態(tài)請(qǐng)求則由其分發(fā)到uWSGI在Web 應(yīng)用上處理并做出響應(yīng)。Django 可以保證后臺(tái)Web 應(yīng)用在規(guī)范的框架下運(yùn)行。PyQuery 作為Python 的一項(xiàng)巧妙靈活的網(wǎng)頁解析工具,被大多數(shù)開發(fā)者所青睞,目的是能夠在指定的網(wǎng)頁節(jié)點(diǎn)中得到所需要的數(shù)據(jù)。
數(shù)據(jù)庫層負(fù)責(zé)收集、篩分、存儲(chǔ)和重組問答數(shù)據(jù)、查找實(shí)體知識(shí)庫和英文知識(shí)圖譜和類似問題數(shù)據(jù)的比對(duì)與更新。在解決用戶的提問時(shí),系統(tǒng)首先經(jīng)過文獻(xiàn)查找,搜尋曾經(jīng)被公開的問答數(shù)據(jù)庫相應(yīng)的字符,并將其以文本的形式快速導(dǎo)入數(shù)據(jù)庫。之后,從各個(gè)英文類網(wǎng)址上進(jìn)行相應(yīng)的采集,將所輸入的文本字段加以橫向比對(duì),以確定與本次查找相匹配的字段并進(jìn)行收集,然后用Python 技術(shù)黏貼網(wǎng)頁代碼并利用PyQuery解析并保存。系統(tǒng)在訪問網(wǎng)站之后,通過獲取新的問答數(shù)據(jù),將已有的數(shù)據(jù)庫進(jìn)行更新。對(duì)相關(guān)的問題數(shù)據(jù)進(jìn)行分離,利用語料制備模型生成相對(duì)應(yīng)的數(shù)據(jù)集合,正樣本和負(fù)樣本按照一定的比例生成,得到相似的問題答案后用于填充匹配語料模型。對(duì)于英文知識(shí)庫可以直接從Google 和Wiley Inter Science 獲得,通過篩分和實(shí)物比對(duì)后可以生成英文知識(shí)庫圖譜。英文智能問答系統(tǒng)數(shù)據(jù)獲取與處理流程如圖2 所示。
圖2 英文智能問答系統(tǒng)數(shù)據(jù)獲取與處理流程
應(yīng)用層模型建立于Python 語言之上,用Pytorch 搭建框架。主要用于數(shù)據(jù)庫數(shù)據(jù)生成后的問答與反饋,它可以直接調(diào)用集成在Django 應(yīng)用中的數(shù)據(jù)模型。應(yīng)用層在調(diào)用由API 傳達(dá)的用戶提問時(shí),會(huì)率先采用匹配關(guān)鍵詞和篩選模型被選問題集合的方式。之后用事先排布好的深層次匹配模型查找相對(duì)應(yīng)的與選擇項(xiàng)最相近的問題,并迅速反饋給用戶層。用戶層可以再一次啟用類似問題的API 問詢,應(yīng)用層可以依照之前的排布,選取最優(yōu)的回答選項(xiàng),按照不同的設(shè)置配比,返還給用戶層。如果用戶層對(duì)于返還的回答選項(xiàng)不滿意,則可以啟用存疑問題應(yīng)答模型,讓用戶來決定是否采用專人應(yīng)答模式。如果用戶單純采用實(shí)體查詢模型,即可以在英文實(shí)體知識(shí)庫中搜索相應(yīng)的實(shí)體答案,返還給與其對(duì)應(yīng)的文本模塊。應(yīng)用層與用戶層的每一次交互都附帶有來自用戶層的反饋。如查詢用戶得到了可接受的答案,即為給出了提問者相對(duì)應(yīng)或者相類似的信息。應(yīng)用層會(huì)將這些信息進(jìn)行分組,及時(shí)的記錄到已有知識(shí)數(shù)據(jù)庫中作為正樣本儲(chǔ)存。如果沒有得到用戶層的正向反饋,記錄將稱為負(fù)樣本,采用數(shù)據(jù)更迭的方式來尋求相似問題的匹配模型進(jìn)行下一個(gè)循環(huán)。英文智能問答系統(tǒng)應(yīng)用層各API 響應(yīng)流程如圖3所示。用戶層與系統(tǒng)的前臺(tái)進(jìn)行直觀的交互,對(duì)應(yīng)層的API 封裝后,準(zhǔn)備前段進(jìn)行訪問。Nginx 可以直接處理前臺(tái)的靜態(tài)問題,可以用鏈接的形式將問題指引到相應(yīng)的靜態(tài)文件模型,并將結(jié)果發(fā)送到uWSGI,經(jīng)過調(diào)用Django 將處理過的信息回應(yīng)給反饋系統(tǒng)。前臺(tái)UI 界面可以簡潔明快地表達(dá)交互界面,Jacascript 以及JQuery 在開發(fā)中將要被用到。
圖3 英文智能問答系統(tǒng)應(yīng)用層各API 響應(yīng)流程
擬建立的英文智能問答系統(tǒng)的開發(fā)部署現(xiàn)處于內(nèi)網(wǎng)測試階段,待后續(xù)成熟可以直接平移到外網(wǎng)服務(wù)器。前臺(tái)的架構(gòu)部署如圖4 所示,訪問者可以通過設(shè)備的瀏覽器直接進(jìn)入問答交互界面,在提出相應(yīng)的問題后,由系統(tǒng)前端發(fā)送請(qǐng)求,Nginx 根據(jù)接收到的信息調(diào)用uWSGI 中的Django 對(duì)發(fā)起的請(qǐng)求做出回應(yīng)。類似問題在查詢請(qǐng)求方面和實(shí)體查詢的過程基本一致,前臺(tái)在接收到后臺(tái)的響應(yīng)之后,通過直接顯示或是頁面跳轉(zhuǎn),實(shí)現(xiàn)前后臺(tái)之間的交互。
圖4 英文智能問答系統(tǒng)線上部署架構(gòu)示意圖
使用者可以通過設(shè)備的瀏覽器或是微信小程序進(jìn)入英文智能問答系統(tǒng)界面,交互方式用類似于微信聊天的形式進(jìn)行。使用者可以輸入一定量的問題并點(diǎn)擊“Send”按鈕發(fā)送,前臺(tái)在獲取信息轉(zhuǎn)入到后臺(tái)調(diào)用回復(fù)資源后,將以對(duì)話的形式將答復(fù)傳遞給使用者。
以問題“Interview”為例,使用者在輸入并點(diǎn)擊發(fā)送“Send”按鈕后,系統(tǒng)回復(fù)為:
“1.Purpose of Interviews
2.Types of Interviews
3.Preparing for the Interview
4.Interview Structure.
5.Typical Questions”
由于該問句所提供的信息不夠清晰。所以,系統(tǒng)以選項(xiàng)的方式予以呈現(xiàn),用戶可以繼續(xù)在選項(xiàng)上點(diǎn)選,跳到下一詳細(xì)頁面。當(dāng)點(diǎn)選“4.Interview Structure.”,頁面內(nèi)容跳轉(zhuǎn),系統(tǒng)的回復(fù)為“Traditional:Traditional interview questions focus on your educational background,work experience,activities,skills,etc.Behavioral:Behavioral interviews focus on specific past behaviors”,Describe a time when.Past behavior is the best predictor of future performance.在每輪對(duì)話完成后,使用者可以根據(jù)對(duì)話框下面的評(píng)價(jià)按鈕對(duì)本次回答情況進(jìn)行點(diǎn)選評(píng)價(jià)。當(dāng)使用者感到滿意時(shí),可以點(diǎn)選相應(yīng)的按鈕,平臺(tái)會(huì)自動(dòng)將被點(diǎn)選為滿意的答案歸置為類似問題,并將其用正樣本的方式添加到與英文知識(shí)庫相匹配的模型中。若使用者對(duì)此項(xiàng)回答點(diǎn)選不滿意,該項(xiàng)記錄則被列為負(fù)樣本。當(dāng)數(shù)據(jù)量累積到所設(shè)置的限度時(shí),系統(tǒng)將自動(dòng)進(jìn)行模型更迭,以改進(jìn)和提升模型的整體效果。
在系統(tǒng)回答提問者的問題之后,使用者還可能對(duì)某些具體的細(xì)節(jié)有所疑問,所以系統(tǒng)配備了鏈接詞匯查詢功能。系統(tǒng)所給出的所有答復(fù)都是在后臺(tái)實(shí)體庫中備案并添加了鏈接的,所以使用者可以在對(duì)話框中把不同顏色進(jìn)行區(qū)分的可點(diǎn)選內(nèi)容做出進(jìn)一步的查看。
使用者對(duì)系統(tǒng)所作出的回答不滿意,還可以點(diǎn)擊會(huì)話框下的“More”按鈕,系統(tǒng)即可跳轉(zhuǎn)到下一個(gè)有可能與提問相類似的問題,并作出相應(yīng)的回答。如再次給出的答案,不能滿足使用者的需求,使用者則可以點(diǎn)選專人回答的方式,屆時(shí)將有相應(yīng)領(lǐng)域的專家通過遠(yuǎn)程問題解答方式予以解決,由于該系統(tǒng)目前正處于測試階段,所以系統(tǒng)會(huì)回復(fù)“Thanks for your ques tion”。使用者可以通過搜索系統(tǒng)瀏覽器的方式尋求其他解決方案。
系統(tǒng)在上線之前要經(jīng)過不同層次的聯(lián)合測試,測試主要有兩個(gè)方面:
一方面是功能測試,主要是為了使開發(fā)者了解該智能問答系統(tǒng)是否滿足最初的設(shè)計(jì)需求。測試的內(nèi)容包含了問題回答的完整性、相似問題的查看是否簡單、快速、便捷,系統(tǒng)運(yùn)行中鏈接指向是否有難以跳轉(zhuǎn)、卡頓或是出現(xiàn)頁面亂碼的現(xiàn)象、顯示字體的大小、顏色的深淺度、接受度等等。
另一方面是通過特定的工具,對(duì)于真實(shí)使用環(huán)境下的系統(tǒng)反應(yīng)速度予以精確的測定。
測試環(huán)境分為開發(fā)者前段服務(wù)器端和測試應(yīng)用條件下的電子設(shè)備移動(dòng)端。
測試內(nèi)容:系統(tǒng)啟動(dòng)是否正常、問答功能是否齊全、相似問題是否可查詢、實(shí)體庫知識(shí)查詢、會(huì)話結(jié)果評(píng)價(jià)反饋是否正常等。測試步驟和結(jié)果見表1。
表1 英文智能問答系統(tǒng)測試內(nèi)容與結(jié)果
測試結(jié)果:對(duì)系統(tǒng)進(jìn)行功能測試,各項(xiàng)功能均能正常實(shí)現(xiàn)。在需要進(jìn)行問題回答的步驟時(shí),由于需要調(diào)用關(guān)鍵詞匯進(jìn)行模型篩選驗(yàn)算,所以耗時(shí)比其他的功能稍長,但是也在可以接受的范圍。
本論文主要闡述了基于智能問答模型的英文智能問答系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。雖然該系統(tǒng)仍處在不斷調(diào)試完善的階段,但是筆者希望通過對(duì)涉及的系統(tǒng)搭建方面的關(guān)鍵技術(shù)的掌握和實(shí)施,今后能在市面上看到更多不同種類的智能問答系統(tǒng)設(shè)計(jì)程序,以便更好地用科技的力量服務(wù)于社會(huì)。