当前信息环境下, 日常工作领域所需的各类专业领域信息也变得多种多样. 如何针对信息服务用户需求, 为用户提供快速高效的领域内信息获取方式也成了当前信息服务亟待解决的问题. 领域知识问答[1]方面的相关研究是解决上述问题的有效方法, 其能够通过对用户问题进行语义层面的解析并在领域文档库中匹配符合用户需求的信息并提供给用户. 问答系统(Question Answering system, QA)是一种基于深度学习的文本处理模型, 它基于用户提出的问题在语义层面对用户需求进行分析, 并智能、简洁的回答用户提出的问题. 可以满足领域信息服务保障任务从海量信息中快速、准确、有针对性地获取信息的需求.
早在19世纪60年代, 就出现了基于问答模板、人工规则生成答案的问答系统. 70年代还有一些基于文档库的问答系统研究. 90年代左右, 随着搜索引擎技术的出现与发展, 基于检索的问答系统取得了一定发展. 2010年之后, 随着自然语言处理技术的不断发展, 问答系统出现了3大主流方法: 语义解析、信息抽取、向量建模. 2015年开始, 由于深度学习在自然语言建模方面取得的重大进展[2], 出现了大量使用深度学习的问答系统. 2016年, 斯坦福大学推出了高质量机器阅读理解数据集Stanford Question Answering Dataset(SQuAD)[3], 它是基于自然问题的抽取式阅读理解数据集. 2017年, Wang等[4]提出了基于Match-LSTM的端到端神经网络模型. 2018年, Yu等[5]提出了QANet模型仅使用CNN和self-attention使得模型的训练和预测的速度大大加快, 并且可以并行处理输入的单词. 2017年, Facebook的Chen等[6]提出了机器阅读理解模型问答系统DrQA, 利用机器阅读理解技术在非结构化文本库上构建QA系统.
与现有常见的开放领域问答系统相比, 限定领域问答具有显著的特点[1]:
(1) 问题的多样性较少, 即同一个问题存在多种问法的情况较少;
(2) 知识来源比较少, 数据收集存在不少困难, 也缺乏开放的知识源;
(3) 问题的理解和回答需要深入利用专业知识, 通过深度的推理准确理解问题和生成答案.
这些特点给领域信息服务问答系统的研发带来了难题. 新体制下信息服务保障需要新技术、新手段挖掘信息服务用户信息需求. 本文使用了领域内文档库作为知识来源, 构建了能够为用户提供领域内信息服务保障的信息服务问答系统.
1 信息服务问答系统
1.1 基本架构
本文中采用了端到端的闭合域问答模型来构建信息服务问答系统, 其架构基于两个主要部分: 检索器(retriever)和解答器(reader). 模型的总体架构如图1所示.
首先利用海量的专业领域文档构建一个文档库, 当信息服务用户提出问题并输入信息服务问答系统时, 信息检索器从领域文档库中检索出N个语义与问题最相关, 即最可能包含答案的文档. 选择了可能性最大N个文档之后, 系统把N个文档和问题发送至解答器. 当解答器输入一个文档-问题对时, 会输出在该文档中找到的最可能的答案, 同时给出该答案是正确答案可能性评分. 最后, 将答案按照评分排序, 选择评分最高的作为最终答案.
图 1 信息服务问答系统总体框架
1.2 信息检索器
本系统的信息检索器基于TF-IDF (Term Frequency-Inverse Document Frequency)特征计算了问题语句和文档库中的每个文档的余弦相似性, 相似性越大的文档越有可能包含问题的答案.
1.2.1 TF-IDF算法
TF-IDF[7]是一种统计方法, 可以用来评估一个词语对于整个文档库中每一篇文档的重要程度. 其核心思想是, 在某一个文档中出现频率高且在整个文档库中出现在其他文档中的频率少的词对该文档更重要. 因此取词频TF (词语在文档中出现的次数)和逆向文件频率IDF (总文件数目除以包含该词语的文件的数目取对数)的乘积TF-IDF构成了文档库的特征矩阵. 其计算公式如式(1)–式(3)所示.
$t{f_{i,j}} = \frac{{{n_{i,j}}}}{{\displaystyle\sum\nolimits_k {{n_{k,j}}} }}$
(1)
$id{f_i} = \ln \frac{{|D|}}{{|\{ j:{w_i} \in {d_j}\} |}}$
(2)
$tfid{f_{i,j}} = t{f_{i,j}} \times id{f_i}$
(3)
式(1)中,
${n_{i,j}}$
是词语
${w_i}$
在文档
${d_j}$
中出现的次数, 分母则是文档
${d_j}$
中所有词语出现的次数总和;
$t{f_{i,j}}$
是词频, 表示词语
${w_i}$
在文档
${d_j}$
中出现的频率. 式(2)中, |D|是文档库中文档的数量.
$ |j:{t}_{i}\in {d}_{j}| $
表示包含词语
${w_i}$
的文档数量. 最后, 如式(3)所示,
$ t{f}_{i,j} $
与
$ id{f}_{i} $
相乘得到词语对于文档的权重
$ tfid{f}_{i,j} $
. 在本文中使用了机器学习scikit-learn[8]库中的TfidfVectorizer模块实现了文档及问题向TF-IDF特征矩阵的转化.
1.2.2 匹配算法
当把文档库中的文档及用户提出的问题完全转换为包含TF-IDF特征矩阵后, 就可以对通过计算问题TF-IDF向量与每个文档TF-IDF的相似度, 来计算文档与用户问题之间的相似度了. 对于问题来说, 与其相似度越大的文档越有可能包含问题的答案. 本文中相似度的计算采用了余弦相似度算法[9], 其计算公式如下:
$\cos \theta = \frac{{a \cdot b}}{{