专业课程问答系统设计探究

专业课程问答系统设计探究

摘要:为了快速准确地获得用户想要获取的信息和适应教学新模式,本文基于检索和阅读理解两种模式建立了面向限定领域的问答系统,以数据结构作为问答方向,对用户提出的问题进行分析,将质量最高的答案返回。系统还具备问题推荐和点赞机制,实现了友好的交互性。

关键词:检索;阅读理解;交互性;问答系统;限定领域

1引言

教学问答是教学的重要组成部分。传统教学问答环节存在着诸多问题:知识点内容相同,但形式多变,教师对同一类问题做出多次解答;学生缺少问答时间,不习惯于找老师答疑;网络搜索不能精确定位答案;多种信息工具造成信息孤岛,课程群中的答疑记录被聊天所淹没。基于以上背景,本文设计一款基于检索和阅读理解的面向专业课程的智能问答系统,以解决高校课程教学过程中教师及学生问答环节的痛点,解决传统检索式问答“最后一公里”的难题。该系统不仅可以帮助学生实时解答疑惑、获取知识,还可以加速教育的个性化和智能化[1]。

2问答系统的总体设计

本文研究目标为实现一个基于检索和阅读理解的问答系统,领域限定为数据结构这门课程,可以支持关于数据结构相关知识的问题。通过对用户自然语言提出的问题进行分析,系统将得到的质量最高的一条答案返回给用户。系统还提供了问题推荐和点赞机制,实现了友好的交互性。

2.1系统模块设计。针对数据结构问答系统的需求,系统分为三个模块:问题推荐模块、检索模块、阅读理解模块,如图1所示。用户提出问题,进入问题推荐模块获取最终问题Q,通过检索模块检索答案,若无答案则进入阅读理解模块生成答案,最后将答案返回给用户。(1)问题推荐模块。作为问答系统的第一道工序,十分重要。为更好地理解用户提出的问题,需要对提出的问题进行判断,若问题字数小于限定值,推荐给用户相关问题。(2)检索模块。这是是系统的核心模块。通过问题对本地问答集进行相关性检索,获得相似度高的答案。(3)阅读理解模块。通过抽取式阅读理解模型实现,经过处理、预测后,生成一条答案。

2.2系统流程设计。用户用自然语言提出问题,若问题字数小于限定值,系统通过问题推荐模块显示相关问题推荐。用户再次选择获取到问题Q。然后将问题Q放入检索模块进行检索。检索采用的本地问答集是基于数据结构的课程教材整理的QA集,经过检索获取得分最高的答案作为候选答案。若该分数大于系统设置的阈值,则直接返回将答案显示给用户。若分数低于阈值,则进入阅读理解模块。为了提高效率,在上述检索模块进行的同时做好阅读理解模块的准备工作。基于问题Q,爬取网上的相关文档,若系统没有进入到此模块则释放掉;如进入到此模块,则将问题Q和文档共同作为参数传递给阅读理解模型,将模型生成的答案显示给用户。进一步扩展,系统将提供点赞机制,将问题、答案和点赞信息存入数据库,设置质量评估机制,若高于评估值则将该问答加入到本地QA集中,实现系统的成长性。依据流程图,使用javaweb和python实现了系统的构建,通过api接口实现与各个模型的调用。基于问答系统,本文设计了用户问答界面,实现了友好的交互性。

3问答系统的关键技术

3.1本地问答集的构建。3.1.1QA问答集。与传统的闲聊式问答不同,面向数据结构的限定领域的问答,检索的语料采用QA问答对的形式。由于限定的范围较小以及该课程的专业性,网上对于这方面内容的问答比较分散、数量较少,所以通过爬虫获得的只占很小一部分,主要还是依靠人工进行整理。依据数据结构这门课程的教材,整理包括各类专业性术语的定义和方法、各章节的知识点及相关问题,最终整理了3000条左右的数据以一问一答的形式换行储存在txt文件中。3.1.2训练模型的语料。系统采用基于LSTM的端到端的神经架构,每条语料包含段落-若干问题-候选答案以及标注好的答案的起始位置。这里选择了科大讯飞的cmrc2018_train.json作为训练数据集。

3.2系统。(1)基于Lucene的检索Lucene是一款由java语言开发的开源搜索引擎库,有很强大的检索功能[2]。使用Lucene对构建好的本地QA集建立倒排索引,用来储存在全文搜索下单词在一个文档中的存储位置的映射。此索引包含两个field、question和answer。通过ik分词工具对问题分词,过滤停用词,查询建好的索引的question字段,通过Lucene内置的打分机制,将分数从高到低进行排序,将分数最高的答案提取出来作为候选答案。Lucene在分词算法中,采用ik进行分词,可以避免单字分词而损失的所有语义相关性。此外,除掉停用词十分重要,因为这些词出现的频率太高,会严重干扰算分结果。所以为了更好地使得分更加准确,设置boost的值为2,使匹配问题单词的权重更高。由于检索就是计算问题的相似度,如果分数过低则说明本地问答集中没有相似问题,需要设立一个阈值来进行判定,若高于阙值,直接把答案显示给用户,反之则说明不含有相似问题,系统进入到阅读理解模块。依据语料特点,经过不断地测试,最终设定分数阈值为2.7,低于则说明问题的相似度较低。(2)基于Match-LSTM的端到端的神经架构当检索分数过低时,系统进入阅读理解模块。阅读理解,让机器像人一样去读懂一段文字,并回答相关问题。常见的机器阅读理解形式有选择题式、完形填空式和抽取式[3]。本系统采用的是基于Macth-LSTM和指针网络的阅读理解模型[4],是最常用的抽取式。模型采用科大讯飞的中文数据集cmrc2018_train.json作为训练语料。该模型的方法,给出一个段落以及与段落相关的问题,模型的目标是确定段落的子序列作为问题的答案。该方法通过训练语料,最终实现向模型传入段落和问题,模型定位到相应的答案,从而做出回答。由于本地问答集资源有限,为了更好地回答问题,需要根据用户提出的问题,到网络上爬取相关答案,结合在一起组成新的段落,将它和问题一起作为参数输入模型。模型通过处理、预测后,生成答案返回给用户。如图3所示,模型生成答案的过程分为四部分。嵌入模块,将段落和问题转换为词向量,使得每个词都具有唯一的向量表示。编码模块将词向量转换成有意义的上下文序列信息。交互模块是比较核心的部分,通过注意力机制对问题和文章的编码信息进行相关性计算[5],使模型将注意力放在文章中更加重要的部分。答案预测模块,使用LSTM匹配问题和给定的段落,通过指针网络以不同的方式生成包含来自给定段落的多个令牌的答案。(3)问题推荐机制针对一些用户只提问关键词,导致系统不能够清楚地理解用户的问题,并且作为一个问答系统,友好的交互更容易得到用户的青睐。基于此建立了问题推荐机制,对问题进行判断。若问题低于一定字数,则首先推荐给用户相关问题,用户选择之后系统再进行回答。该模块通过Lucene选择本地问答集中相似度最高的3个问题,选择推荐的问题相当于直接从QA集中查找已有问题的答案,对用户十分友好。(4)答案质量评估机制系统对阅读理解模块生成的答案,提供点赞机制。用户可对有帮助的回答进行点赞,将问题、答案和点赞信息存入数据库,建立评估函数。当点赞数达到一定数量触发,将高于评估值的问答加入到本地QA集中,实现系统的成长性。

4实验结果与分析

基于检索的查找,对语料要求很高。由于语料有限,经测试,提出的问题若是数据结构课程中常见或者概念性的问题,通过检索可以获取较为准确的答案。而通过阅读理解模型获得的答案,在“是什么”类型的问题上发挥得较为出色,在“为什么”这类问题上效果较差。

5总结

本文实现了基于检索和阅读理解的问答系统。该系统可以针对数据结构课程的问题进行快速回答,解决了传统式问答“最后一公里”的难题。为了提高系统的问答质量,可不断扩大本地问答集的数量。此研究中,系统所涉及的课程只限定为数据结构一门。为了更好地解决学生问答痛点,更好地适应教学新模式,可以将系统进一步扩展,将领域扩展到多门课程。

作者:吴佳泽 汤荣亮 冉浩 单位:北京信息科技大学