安夢生 席倩
摘要:隨著互聯(lián)網(wǎng)信息的迅速增長,如何在大量信息中獲取有價值的信息成為研究熱點。目前的智能問答系統(tǒng)存在無法準(zhǔn)確理解用戶本意、導(dǎo)致用戶無法獲取精準(zhǔn)解答的問題。為方便用戶高效、精確地進行信息檢索,基于ThinkPHP開源框架設(shè)計一個關(guān)于問題解答的Web系統(tǒng),用戶可以在平臺中進行互動交流,并采用金幣懸賞機制激勵其他用戶解答問題。測試結(jié)果表明,該系統(tǒng)具有較高的可靠性與穩(wěn)定性,以及很強的實用性。
關(guān)鍵詞:ThinkPHP;問答系統(tǒng);信息檢索;互動交流
Design and Implementation of Question and Answer System Based on ThinkPHP
AN Meng?sheng?XI Qian?2
(1.School of Computer Science and Technology, Huaiyin Normal University, Huai'an 223300, China;?2.School of Information Engineering,Ningxia University,Yinchuan 750000,China)
Abstract:With the rapid growth of Internet information, how to obtain valuable information in complicated information has become a research field with wide attention and broad development prospects. The current intelligent question answering system is unable to accurately understand the user's original intention, resulting in users not being able to obtain accurate answers to questions. In order to facilitate users to efficiently and accurately retrieve information and obtain accurate answers, based on the ThinkPHP open source framework we design a Web system for question and answer. Users can interact interactively in the platform and use the gold coin reward mechanism to motivate other users to solve the problem. After trials by college students, the system has high reliability, high stability?and strong practicability.
Key Words:ThinkPHP;question and answer system; information retrieval; interaction
0?引言
隨著互聯(lián)網(wǎng)的飛速發(fā)展,快速、準(zhǔn)確地獲取有效信息成為一個重要課題,傳統(tǒng)通用型搜索已不能滿足人們需求,而交互式問答系統(tǒng)[1]用戶可以在互聯(lián)網(wǎng)上與其他用戶進行更自然、準(zhǔn)確的信息交流。國內(nèi)外對問答系統(tǒng)應(yīng)用進行了相關(guān)研究,20世紀60年代開始出現(xiàn)第一批問答系統(tǒng),Baseball能夠回答美國籃球聯(lián)賽相關(guān)問題,Lunar能夠?qū)r石樣本進行分析并得出結(jié)果,ELIZA能夠與精神病人進行對話[2?4]。2002年,密歇根大學(xué)開發(fā)了WQA系統(tǒng)Answer?Bus[5];2014年百度推出的小度,可以與用戶進行自然交流[6];2015年歐石燕等[7]提出一種面向圖書館關(guān)聯(lián)數(shù)據(jù)的自動問答新方法;2016年錢明輝等[8]對國外基于知識庫的問答系統(tǒng)進行研究;2017年李舟軍等[9]對Web問答系統(tǒng)的研究背景與發(fā)展歷史進行概述。
問答系統(tǒng)本質(zhì)上是給出問題,系統(tǒng)反饋準(zhǔn)確信息。隨著人工智能技術(shù)的發(fā)展,目前智能問答系統(tǒng)基本可以解答用戶常規(guī)提問。然而一些用戶提出的問題具有專業(yè)性,常規(guī)回答無法滿足用戶需求。因此,本文設(shè)計基于ThinkPHP框架,采用MVC模式三層架構(gòu)的在線問答系統(tǒng),用戶可以針對感興趣的問題進行提問與回答,也可以對其他用戶問題進行評論,按分類搜索問題,或查看當(dāng)前熱門解答等。系統(tǒng)采用金幣懸賞機制,解答其他用戶問題可以得到獎勵,也可以用金幣發(fā)布問題,激勵其他用戶解答。
1?相關(guān)工具與技術(shù)介紹
1.1?ThinkPHP框架
PHP框架[11]可以幫助用戶快速進行應(yīng)用開發(fā),不僅節(jié)省時間、提高應(yīng)用穩(wěn)定性,同時可以減少重復(fù)代碼開發(fā)。ThinkPHP[12?14]是一個基于MVC模式,且面向?qū)ο蟮拿赓M、開源、快速的輕量級開發(fā)框架。其具有以下優(yōu)點:①支持Composer、PHPunit;②具有嚴格的錯誤檢測與安全機制以及詳細日志信息;③減少核心依賴;④擴展更加靈活方便;⑤支持命令行指令擴展。目錄結(jié)構(gòu)包括公共靜態(tài)文件目錄public、唯一入口文件index.php、應(yīng)用程序目錄application,以及model、view、controller等。
1.2?MVC設(shè)計模式
MVC是一種使用MVC(Model View Controller模型—視圖—控制器)設(shè)計并創(chuàng)建Web應(yīng)用程序的模式[15?16]。Model是模型,是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分,負責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù);View是視圖,用于顯示數(shù)據(jù),是應(yīng)用程序中處理數(shù)據(jù)顯示的部分;Controller是控制器,用于處理輸入,是應(yīng)用程序中處理用戶交互的部分,負責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)[17?18]。MVC模式實現(xiàn)了模型和視圖的分離,其具有以下優(yōu)點:①模型提供多種視圖表現(xiàn)形式,能夠為一個模型創(chuàng)建新視圖而無須重寫模型。一旦模型數(shù)據(jù)發(fā)生變化,模型將通知有關(guān)視圖進行刷新;②模型可復(fù)用;③可提高開發(fā)效率。在開發(fā)界面顯示部分時,僅需要考慮如何布局一個好的用戶界面,開發(fā)模型時,僅需要考慮業(yè)務(wù)邏輯和數(shù)據(jù)維護[19?20]。
2?系統(tǒng)設(shè)計
2.1?系統(tǒng)模塊總體架構(gòu)
問答系統(tǒng)用戶主要分為兩大類別:管理員和普通用戶。用戶可以方便、靈活地提出問題、查看答案,管理員能夠方便、快捷地管理問題。
用戶模塊包括用戶個人信息管理、分類查看問題、評論增加與刪除;管理員模塊包括系統(tǒng)設(shè)置、用戶管理、獎勵管理、問題分類管理等;登錄模塊分為用戶登錄和管理員登錄;用戶注冊模塊提供新用戶注冊功能。系統(tǒng)總體架構(gòu)如圖1所示。
2.2?數(shù)據(jù)庫結(jié)構(gòu)設(shè)計
根據(jù)系統(tǒng)功能需求,建立一個名為question_answer的數(shù)據(jù)庫,并在數(shù)據(jù)庫中建立相關(guān)的表,該系統(tǒng)整體邏輯結(jié)構(gòu)如圖2所示。
管理員表(hd_admin):存放管理員賬戶信息。主要包括:編號、管理員賬號和密碼、上一次登錄時間、上一次登錄IP信息。
答案表(hd_answer):存放答案信息。主要包括:答題編號、答題內(nèi)容、是否被采納(1:已采納,0:未采納)、回答時間、所屬問題ID、所屬用戶ID信息。
問題表(hd_ask):存放問題信息。主要包括:問題編號、問題內(nèi)容、獎勵金幣、是否解決、提問時間、回答數(shù)等。
問題分類表(hd_category):存放問題分類信息。
用戶表(hd_user):存放普通用戶信息。主要包括:用戶編號、用戶帳號、用戶昵稱、用戶密碼、用戶頭像、回答數(shù)、答案采納數(shù)、提問數(shù)、答案采納數(shù)、提問數(shù)、金幣、上一次登錄時間、上一次登錄IP、注冊時間、是否鎖定(1:鎖定,2:未鎖定信息)。
3?系統(tǒng)主要模塊實現(xiàn)
3.1?用戶提問模塊實現(xiàn)
用戶可以向其他用戶提問,在提問之前必須登錄問答系統(tǒng)。登錄采用表單進行處理,輸入用戶賬號與密碼即可登錄,還可選擇下一次自動登錄;自動登錄使用cookie技術(shù)實現(xiàn),可以在網(wǎng)頁上進行操作,選中后即將登錄信息放入cookie中,將session放在服務(wù)器上;提問時選擇問題分類會彈出一個表單,按照表單信息進行選擇即可;若有金幣還可懸賞金幣,金幣相當(dāng)于積分;最后提交問題,讓其他用戶回答。核心代碼如下:
Public function send(){
MYMdata=array('content' =>MYMthis->_post('content'),
'reward' =>MYMthis->_post('reward','intval'),'time' => time(),'uid' => session('uid'),
'cid'=>MYMthis->_post('cid', 'intval')?);if(M('ask')->data(MYMdata)->add()){
MYMwhere=array('id'=>session('uid'));MYMdb=M('user');
MYMdb->where(MYMwhere)->setInc('ask'); MYMdb->where(MYMwhere)->setInc('exp', C('LV_ASK'));
redirect(U('Member/index',array('id'=>session('uid'))));}
3.2?獎勵管理模塊實現(xiàn)
系統(tǒng)管理員在獎勵管理模塊中可以設(shè)置用戶各個等級所需的經(jīng)驗值,還可以設(shè)置用戶金幣獎勵規(guī)則。核心代碼如下:
Public function edit (){MYMfile = './Conf/config.php';
MYMconfig=array_merge(include MYMfile, array_change_key_case(MYM_POST,CASE_UPPER));
MYMstr="<?php\r\nreturn".var_export(MYMconfig, true).";\r\n?>";
if(file_put_contents(MYMfile,MYMstr)){MYMthis->success('修改成功',MYM_SERVER['HTTP_REFERER']);}
3.3?問題管理與分類模塊
用戶和瀏覽者都可以查看待解決和已解決問題,可以看到提問時間與其他用戶回答內(nèi)容,如果回答被采納則顯示滿意回答。系統(tǒng)管理員管理平臺上所有用戶問題,如有不規(guī)范或敏感信息可以將其刪除。
系統(tǒng)管理員還可查看、管理所有問題分類,如果當(dāng)前分類太少或者不合理,可以添加頂級分類與子分類,若分類名稱或位置設(shè)置錯誤,可以對其修改或者刪除。問題分類如圖3所示。
4?結(jié)語
本文基于ThinkPHP框架技術(shù)設(shè)計一個問答系統(tǒng),可為用戶提供一個方便、快捷的問答環(huán)境。用戶可以在平臺中進行互動交流,并采用金幣懸賞機制激勵其他用戶解答問題,從而幫助用戶在眾多信息中獲取準(zhǔn)確、有價值的信息,且系統(tǒng)易安裝、易維護、易操作。但本系統(tǒng)仍需作進一步完善,如優(yōu)化UI設(shè)計、實現(xiàn)移動端自適應(yīng)功能等。
參考文獻:
[1]?趙麗,孫彬,李桂珍.基于PHP和MySQL的圖書管理系統(tǒng)的設(shè)計與開發(fā)[J]. 電子設(shè)計工程, 2018, 26(11):52-56.
[2]?GREEN B F, JR, WOLF A K, et al. Baseball: an automatic question?answer[C].Proceedings of the Western Joint Computer Conference. Los Angeles: ACM,1961:219?224.
[3]?WOODS W A, KAPLAN R. Lunar rocks in natural English: explorations in natural language question answering[J]. Linguistic Structures Processing, 1977,5(1):521?569.
[4]?WEIZENBAUM J. ELIZA?a computer program for the study of natural language communication between man and machine[J]. Communications of the ACM, 1966,9(1):36?45.
[5]?ZHENG Z. AnswerBus question answering system[C].Proceedings of the Second International Conference on Human Language Technology Research. San Diego: Morgan Kaufmann Publisher Inc. ,2002:399?404.
[6]?WANG K , MING Z , CHUA T S. A syntactic tree matching approach to finding similar questions in community?based QA services[C].Proceedings of the 32nd International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR 09). New York: ACM, 2009:187?194.
[7]?歐石燕,唐振貴.面向圖書館關(guān)聯(lián)數(shù)據(jù)的自動問答技術(shù)研究[J].中國圖書館學(xué)報,2015,41(6):44?60.
[8]?錢明輝,徐志軒.國外基于知識庫的問答系統(tǒng)相關(guān)研究進展及其啟示[J].中國市場,2016(39):86?90.
[9]?李舟軍,李水華.基于Web的問答系統(tǒng)綜述[J].計算機科學(xué),2017,44(6):1?7.
[10]?宋磊.基于J2EE架構(gòu)的交互式問答系統(tǒng)設(shè)計與實現(xiàn)[J].硅谷,2011(2):69?70.
[11]?楊可乙,張?zhí)煜?基于ThinkPHP框架與MVC模式的CMS系統(tǒng)構(gòu)建[J].計算機時代,2017(7):21?23.
[12]?薛霽,李英祥,劉子杰.基于ThinkPHP+Workerman的高校學(xué)生安全管理系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2018(2):102?106.
[13]?李開涌.PHPMVC開發(fā)實戰(zhàn)[M].北京:機械工業(yè)出版社,2013.
[14]?趙麗,孫彬,李桂珍.基于PHP和MySQL的圖書管理系統(tǒng)的設(shè)計與開發(fā)[J].電子設(shè)計工程,2018,26(11):52?56.
[15]?楊可乙,張?zhí)煜?基于ThinkPHP框架與MVC模式的CMS系統(tǒng)構(gòu)建[J].計算機時代,2017(7):21?23.
[16]?劉軍,戴金山.基于SpringMVC與iBATIS的輕量級Web應(yīng)用研究[J].計算機應(yīng)用,2006,26(4):90?93.
[17]?熊麗.基于J2EE和MVC的Web應(yīng)用開發(fā)方法的探討[D].武漢:武漢理工大學(xué),2002.
[18]?劉正,張書鋒,趙鶴鳴.MVC模式下多層分布式軟件系統(tǒng)架構(gòu)設(shè)計[J].現(xiàn)代電子技術(shù),2018,41(7):135?139.
[19]?賈順賀,陳建飛,陳古運,等.基于MVC架構(gòu)的個人健康信息管理系統(tǒng)設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2018(3):43?48.
[20]?趙璘,王紅霞.基于Spring MVC+JDBC Template的Web系統(tǒng)的研究與應(yīng)用[J].軟件工程,2017,20(1):5?8.