李冬芬 陈天裕 李峥 刘剑龙 林新城 梁家禧 蔡丽紫
摘 要: 如何更方便快速地获取到准确的信息是众多专家学者研究的课题。立足于微信小程序与手机客户端平台,智能问答系统从总体的设计出发,到知识库的构建,通过对自然语言处理,借用改进的TF-IDF算法提取关键字特征,BM25算法计算语素权值,以达到精确快速匹配到最佳答案的目的,从而解决问题。初步测试证明,该系统具有良好的实用性,稳定性和可拓展性。
关键词: 智能问答系统;自然语言处理;TF-IDF;BM25
中图分类号: TP3 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.07.008
【Abstract】: How to obtain accurate information more conveniently and quickly is a topic studied by many experts and scholars. Based on WeChat Mini Program and mobile client platform, the intelligent question answering system starts from the overall design to the construction of the knowledge base. Through the natural language processing, the improved TF-IDF algorithm is used to extract the keyword features, and the BM25 algorithm calculates the morpheme weight to achieve an accurate and fast match to the best answer for the purpose of solving the problem. Preliminary tests have proved that the system has good practicability, stability and scalability.
【Key words】: Question answering system; Natural language processing; TF-IDF; BM25
0 引言
在互联网信息爆炸性增长的今天,人们对信息的需求日益增多,如何在如此庞大的互联网上获取对用户有价值的信息成为日益被关注的问题,传统的问答系统已经无法满足人们获取准确信息的需求,用相对简单的词语或句子搜索无法准确刻画用户的真实需求,导致搜索结果差强人意[1]。智能问答系统与传统的只依靠关键字匹配的搜索引擎相比,能够更好的理解问题,准确识别人们的意图,满足用户的检索需求,并且在如今私人定制热潮的互联网环境下,精准推荐能大大满足用户的所需。本系统利用眼下热门的手机应用软件与微信小程序作为智能问答系统的主体部分进行开发与设计,通
过算法实现问题理解与精准推荐,简化了大部分用户的操作,极大的方便用户对精确信息的查找。
1 系统总体框架设计
1.1 安卓APP模块设计
随着科技发展,安卓成為了最广泛的手机系统,安卓系统有很多优点,并且具有极大的开放性,安卓系统平台主要由四个组成部分架构起来,利用应用程序层的安卓主件进行首页、QA页面、个人页面、智能超市的开发,主要的主件有Activity、Ser?vice、BroadCastReceiver、ContentProvider以及Intent[2]。
本系统采用MVP开发模式,以利于解决Activity越来越庞大臃肿和耦合度越来越高的问题,
这些问题会导致后期维护变得困难。在安卓应用开发将Model层和View层通过Presenter层实现完全分离,主要业务层在Presenter层实现。这样的分层大大降低了Model层和View层的耦合度[3]。
1.2 微信小程序模块设计
微信小程序自面世以来,其受欢迎程度一直呈增长趋势,越来越多的开发者学习微信小程序的开发,越来越多的用户也在使用微信小程序这个平台。微信小程序有几个比较明显的优势:一、无需安装,即开即用,轻松方便;二、潜在流量大,微信是现如今发展最为成熟、使用人数最多的社交应用软件,人们能够利用互联网在微信上完成发送图片、文字、音频等操作[4];三、开发的周期相对较短,成本较低。
基于微信小程序的这些优点,智能问答系统也设计了微信小程序版。一方面,为那些不想下载APP版的用户提供了方便;另一方面,多种形式的应用设计可以为用户提供多种选择,这也有利于本应用的推广,从而扩大用户群。
2 知识库设计
本系统采用Mysql数据库作为系统的知识库[5]。
2.1 概念设计
主要数据存储功能,如表1所示。
2.2 逻辑设计
由实体可确定4张表,以下是每张表字段的设计,如表2-5所示。
3 系统功能模块设计
3.1 理解问题模块
该模块使系统更好地理解用户的提问、意图,并进行语义的解析、修正,其流程图如图1所示。
3.1.1 同义词处理
检索用户问题时,由于同义词的存在而导致问答系统的检索准确率低,在进行特征提取前,先按照同义词词典进行同义词处理,在这里使用Hash散列表的形式表示同义词的数据结构。知识库中每个词语对应着唯一一个关键码值:key和它的同义词序列valueList。如知识库中词语为:“程序员”,其在同义词词典中对应关键码值:{“程序员”:{“程序猿”, “码农”, “敲代码的人”}}。