基于ThinkPHP的问答系统设计与实现

2018-02-12 12:24安梦生席倩
软件导刊 2018年12期
关键词:互动交流信息检索

安梦生 席倩

摘要:随着互联网信息的迅速增长,如何在大量信息中获取有价值的信息成为研究热点。目前的智能问答系统存在无法准确理解用户本意、导致用户无法获取精准解答的问题。为方便用户高效、精确地进行信息检索,基于ThinkPHP开源框架设计一个关于问题解答的Web系统,用户可以在平台中进行互动交流,并采用金币悬赏机制激励其他用户解答问题。测试结果表明,该系统具有较高的可靠性与稳定性,以及很强的实用性。

关键词:ThinkPHP;问答系统;信息检索;互动交流

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 引言

随着互联网的飞速发展,快速、准确地获取有效信息成为一个重要课题,传统通用型搜索已不能满足人们需求,而交互式问答系统[1]用户可以在互联网上与其他用户进行更自然、准确的信息交流。国内外对问答系统应用进行了相关研究,20世纪60年代开始出现第一批问答系统,Baseball能够回答美国篮球联赛相关问题,Lunar能够对岩石样本进行分析并得出结果,ELIZA能够与精神病人进行对话[2 4]。2002年,密歇根大学开发了WQA系统Answer Bus[5];2014年百度推出的小度,可以与用户进行自然交流[6];2015年欧石燕等[7]提出一种面向图书馆关联数据的自动问答新方法;2016年钱明辉等[8]对国外基于知识库的问答系统进行研究;2017年李舟军等[9]对Web问答系统的研究背景与发展历史进行概述。

问答系统本质上是给出问题,系统反馈准确信息。随着人工智能技术的发展,目前智能问答系统基本可以解答用户常规提问。然而一些用户提出的问题具有专业性,常规回答无法满足用户需求。因此,本文设计基于ThinkPHP框架,采用MVC模式三层架构的在线问答系统,用户可以针对感兴趣的问题进行提问与回答,也可以对其他用户问题进行评论,按分类搜索问题,或查看当前热门解答等。系统采用金币悬赏机制,解答其他用户问题可以得到奖励,也可以用金币发布问题,激励其他用户解答。

1 相关工具与技术介绍

1.1 ThinkPHP框架

PHP框架[11]可以帮助用户快速进行应用开发,不仅节省时间、提高应用稳定性,同时可以减少重复代码开发。ThinkPHP[12 14]是一个基于MVC模式,且面向对象的免费、开源、快速的轻量级开发框架。其具有以下优点:①支持Composer、PHPunit;②具有严格的错误检测与安全机制以及详细日志信息;③减少核心依赖;④扩展更加灵活方便;⑤支持命令行指令扩展。目录结构包括公共静态文件目录public、唯一入口文件index.php、应用程序目录application,以及model、view、controller等。

1.2 MVC设计模式

MVC是一种使用MVC(Model View Controller模型—視图—控制器)设计并创建Web应用程序的模式[15 16]。Model是模型,是应用程序中用于处理应用程序数据逻辑的部分,负责在数据库中存取数据;View是视图,用于显示数据,是应用程序中处理数据显示的部分;Controller是控制器,用于处理输入,是应用程序中处理用户交互的部分,负责从视图读取数据,控制用户输入,并向模型发送数据[17 18]。MVC模式实现了模型和视图的分离,其具有以下优点:①模型提供多种视图表现形式,能够为一个模型创建新视图而无须重写模型。一旦模型数据发生变化,模型将通知有关视图进行刷新;②模型可复用;③可提高开发效率。在开发界面显示部分时,仅需要考虑如何布局一个好的用户界面,开发模型时,仅需要考虑业务逻辑和数据维护[19 20]。

2 系统设计

2.1 系统模块总体架构

问答系统用户主要分为两大类别:管理员和普通用户。用户可以方便、灵活地提出问题、查看答案,管理员能够方便、快捷地管理问题。

用户模块包括用户个人信息管理、分类查看问题、评论增加与删除;管理员模块包括系统设置、用户管理、奖励管理、问题分类管理等;登录模块分为用户登录和管理员登录;用户注册模块提供新用户注册功能。系统总体架构如图1所示。

2.2 数据库结构设计

根据系统功能需求,建立一个名为question_answer的数据库,并在数据库中建立相关的表,该系统整体逻辑结构如图2所示。

管理员表(hd_admin):存放管理员账户信息。主要包括:编号、管理员账号和密码、上一次登录时间、上一次登录IP信息。

答案表(hd_answer):存放答案信息。主要包括:答题编号、答题内容、是否被采纳(1:已采纳,0:未采纳)、回答时间、所属问题ID、所属用户ID信息。

问题表(hd_ask):存放问题信息。主要包括:问题编号、问题内容、奖励金币、是否解决、提问时间、回答数等。

问题分类表(hd_category):存放问题分类信息。

用户表(hd_user):存放普通用戶信息。主要包括:用户编号、用户帐号、用户昵称、用户密码、用户头像、回答数、答案采纳数、提问数、答案采纳数、提问数、金币、上一次登录时间、上一次登录IP、注册时间、是否锁定(1:锁定,2:未锁定信息)。

3 系统主要模块实现

3.1 用户提问模块实现

用户可以向其他用户提问,在提问之前必须登录问答系统。登录采用表单进行处理,输入用户账号与密码即可登录,还可选择下一次自动登录;自动登录使用cookie技术实现,可以在网页上进行操作,选中后即将登录信息放入cookie中,将session放在服务器上;提问时选择问题分类会弹出一个表单,按照表单信息进行选择即可;若有金币还可悬赏金币,金币相当于积分;最后提交问题,让其他用户回答。核心代码如下:

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 奖励管理模块实现

系统管理员在奖励管理模块中可以设置用户各个等级所需的经验值,还可以设置用户金币奖励规则。核心代码如下:

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 问题管理与分类模块

用户和浏览者都可以查看待解决和已解决问题,可以看到提问时间与其他用户回答内容,如果回答被采纳则显示满意回答。系统管理员管理平台上所有用户问题,如有不规范或敏感信息可以将其删除。

系统管理员还可查看、管理所有问题分类,如果当前分类太少或者不合理,可以添加顶级分类与子分类,若分类名称或位置设置错误,可以对其修改或者删除。问题分类如图3所示。

4 结语

本文基于ThinkPHP框架技术设计一个问答系统,可为用户提供一个方便、快捷的问答环境。用户可以在平台中进行互动交流,并采用金币悬赏机制激励其他用户解答问题,从而帮助用户在众多信息中获取准确、有价值的信息,且系统易安装、易维护、易操作。但本系统仍需作进一步完善,如优化UI设计、实现移动端自适应功能等。

参考文献:

[1] 赵丽,孙彬,李桂珍.基于PHP和MySQL的图书管理系统的设计与开发[J]. 电子设计工程, 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] 歐石燕,唐振贵.面向图书馆关联数据的自动问答技术研究[J].中国图书馆学报,2015,41(6):44 60.

[8] 钱明辉,徐志轩.国外基于知识库的问答系统相关研究进展及其启示[J].中国市场,2016(39):86 90.

[9] 李舟军,李水华.基于Web的问答系统综述[J].计算机科学,2017,44(6):1 7.

[10] 宋磊.基于J2EE架构的交互式问答系统设计与实现[J].硅谷,2011(2):69 70.

[11] 杨可乙,张天祥.基于ThinkPHP框架与MVC模式的CMS系统构建[J].计算机时代,2017(7):21 23.

[12] 薛霁,李英祥,刘子杰.基于ThinkPHP+Workerman的高校学生安全管理系统[J].计算机系统应用,2018(2):102 106.

[13] 李开涌.PHPMVC开发实战[M].北京:机械工业出版社,2013.

[14] 赵丽,孙彬,李桂珍.基于PHP和MySQL的图书管理系统的设计与开发[J].电子设计工程,2018,26(11):52 56.

[15] 杨可乙,张天祥.基于ThinkPHP框架与MVC模式的CMS系统构建[J].计算机时代,2017(7):21 23.

[16] 刘军,戴金山.基于SpringMVC与iBATIS的轻量级Web应用研究[J].计算机应用,2006,26(4):90 93.

[17] 熊丽.基于J2EE和MVC的Web应用开发方法的探讨[D].武汉:武汉理工大学,2002.

[18] 刘正,张书锋,赵鹤鸣.MVC模式下多层分布式软件系统架构设计[J].现代电子技术,2018,41(7):135 139.

[19] 贾顺贺,陈建飞,陈古运,等.基于MVC架构的个人健康信息管理系统设计与实现[J].计算机应用与软件,2018(3):43 48.

[20] 赵璘,王红霞.基于Spring MVC+JDBC Template的Web系统的研究与应用[J].软件工程,2017,20(1):5 8.

猜你喜欢
互动交流信息检索
互动交流教学模式在高中数学中的应用
增强小学语文课堂互动交流的策略
《语文学科课后作业的有效研究》课题研究实施方案
“对分课堂”教学模式在《包装管理》教学中的运用
让小学生在参与体验中学好语文
医学期刊编辑中文献信息检索的应用
在网络环境下高职院校开设信息检索课的必要性研究
基于神经网络的个性化信息检索模型研究
地理信息检索中空间相似性度量的一种模糊方法
教学型大学《信息检索》公选课的设计与实施