目录
一、 简介
1 . 1 挖掘意义
1 . 2 挖掘目标
1 . 3 挖掘流程
二、 预处理
2 . 1 分词
2 . 2 去停用词
2 . 3 word2vec
三、 对回答候选集评分
3 . 1 Bi-LSTM 层
3 . 1 . 1 RNN 和 LSTM
3 . 1 . 2 Bi-LSTM
3 . 2 句嵌入层
3 . 3 注意力层
3 . 4 ATT-over-ATT 层
3 . 5 注意力汇聚层
3 . 6 总结
四、 实验评估
4 . 1 实验平台
4 . 2 实验数据来源
4 . 3 实验评价指标
4 . 4 实验设置及结果分析
4 . 4 . 1 相关参数
4 . 4 . 2 阈值确定
4 . 4 . 3 相关结果
五、 模型优化
5 . 2 文本蕴含
5 . 3 未来改进
六、 参考文献
一、 简介
1 . 1 挖掘意义
关于阅读,相信大家都不陌生,在学习方面,我们接受的传统语文教育中阅读理解是非常常规的考试内容;在生活中,我们也常常会遇到阅读文件、论文、书籍等应用场景。除去欣赏优美的语言艺术,更多情况下,我们只是需要从文本中查找某一些片段来解决我们的实际问题。比如,通过查找法律文献中的一些段落来解决我们的法律疑惑,这时并不需要精读整个法律文献;就算对于小说,有时候我们也只是想知道其中一些特殊细节,并不想花时间去通读整个小说。但是,这对人类来说无疑是一个难题。浩如烟海的书籍作为古往今来人类智慧的结晶,其中内容往往很难在短时间内为人掌握,就算
是略读也不容易,更不必说从浩繁卷帙中准确的定位答案。因此,我们希望智能阅读技术能够在这方面提供一些帮助。
为了构建智能文本挖掘模型,学界对于机器阅读理解的研究从未止步。机器阅读理解作为目前热门的自然语言处理任务,目标是使机器在能够理解原文的基础上,正确回答与原文相关的问题。提高机器对语言的理解能力。机器阅读理解技术的发展对信息检索、问答系统、机器翻译等自然语言处理研究任务有积极作用,同时也能够直接改善搜索引擎、智能助手等产品的用户体验,因此,以阅读理解、文本挖掘为契机研究机器理解语言的技术,具有重要的研究与应用价值。
1 . 2 挖掘目标
我们要构建一个智能的文本挖掘模型。模型可以起到辅助阅读的作用,帮助人们显著提高阅读的效率。具体到使用情景上,对于用户输入的问题与文档,模型可以定位到文档中能帮我们回答问题的所在行,或者直接给出明确的某个词作为答案输出。
更形式化地,我们要解决的智能阅读模型的构建问题可以被解释为一个三元组<D,Q,A>。三元组由文档 D,问题 Q 和答案 A 的答案组成。作为最大粒度的输出要求,我们需要把答案 A 定位到文档中的某一句话,为了解决这个问题,需要同时利用问题 Q 中的信息与文档 D 中的全部上下文信息。
1 . 3 挖掘流程
如图1挖掘主要分为两大部分,预处理部分和候选答案评分部分。其中预处理包括分词,去停用词,将词组向量化(word2vec)。候选答案评分部分为核心步骤,为了进一步挖掘上下文信息,将预处理得到的词向量放入 Bi-LSTM 网络, 为了进一步凸显处答句整句的语义信息,对答句进行 sentence2vec, 最后使用注意力机制对 Bi-LSTM 的解码端进行信息整合。最后对已经有了评分的候选集,设置阈值,输出预测结果。
二、 预处理
2 . 1 分词
由于中文文本的特点是词与词之间没有明显的界限,从文本中提取词语时需要分词,本文采用 Python 开发的一个中文分词模块——jieba 分词,对问题和回答中的每一句话进行分词进行中文分词。
jieba 分词用到的算法为最短路径匹配算法该算法首先利用词典找到字符串中所有可能的词条,然后构造一个有向无环图。其中,每个词条对应图中的一条有向边,并可利用统计的方法赋予对应的边长一个权值, 然后找到从起点到终点的最短路径, 该路径上所包含的词条就是该句子的切分结果。
2 . 2 去停用词
在文本处理中,停用词是指那些功能极其普遍,与其他词相比没有什么实际含义的词,它们通常是一些单字,单字母以及高频的单词,比如中文中的“我、的、了、地、吗”等,英文中的“the、this、an、a、of”等。对于停用词一般在预处理阶段就将其删除,避免对文本,特别是短文本,造成负面影响。本文所用的停用词,取自四川大学机器智能实验室停用词表。
2 . 3 word2vec
为了将语料输入神经网络进行训练,我们首先要将自然语言符号表示成计算机能够理解的数字形式。
一个自然的想法是把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。这就是独热编码形式(One-Hot)。独热编码虽然方便易懂,但也有显而易见的不足:首先,One-hot 编码的维数由词典长度而定,过于稀疏,存在降维难问题,给计算造成了很大不便;其次,One-hot 编码下任意两个词之间都是孤立的,丢失了语言中的词义关系。
Word2vec 是 Mikolov 在 2013 年提出的用于快速有效地训练词向量的模型[3]。作者的目标是要从海量的文档数据中学习高质量的词向量, 该词向量在语义和句法上都有很好地表现, 已经广泛应用于自然语言处理的各种任务中。Word2vec 包含了两种训练模型, 分别是 CBOW 和 Skip_gram 模型, 如图2所示。中 CBOW 模型利用上下文预测当前词, 而 Skip_gram 模型利用当前词预测其上下文。
我们使用 Skip_gram 模型构建智能阅读系统。Skip-gram 模型的训练目标就是使得下式的值最大:
1 T ∑ t = 1 T ∑ − c ≤ j ≤ c l o g p ( w t + j ∣ w t ) \frac{1}{T}\sum_{t=1}^{T} \sum_{-c \leq j\leq c} log \ p(w_t+j|w_t) T1t=1∑T−c≤j≤c∑log p(wt+j∣wt)
其中, c c c 是窗口的大小, T T T 是训练文本的大小。基本的 Skip_gram 模型计算条件概率如下式:
p ( w O ∣ w I ) = e x p ( v w O ′ T v w I ) ∑ W w = 1 e x p ( v w ′ T v w I ) p(w_O|w_I)=\frac{exp(v'^T_{w_O} v_{w_I})}{\sum_{W}^{w=1} exp(v'^T_{w} v_{w_I})} p(wO∣wI)=∑Ww=1exp(vw′TvwI)exp(vwO′TvwI)
其中 v w v_w vw 和 v ′ w v′w v′w 是单词 w w w 的输入和输出向量, W W W是词典的大小。
三、 对回答候选集评分
3 . 1 Bi-LSTM 层
为了尽可能保持语句中词组之间的上下文联系,我们决定将通过上一步 word2vec得到的词向量放入循环神经网。同时为了获得尽可能多的上下文记忆信息,我们最终选择了 Bi-LSTM 这一模型。
3 . 1 . 1 RNN 和 LSTM
循环神经网络(Recurrent Neural Network,RNN)近年来由于其良好的性能代替深度神经网络(Deep Neural Network,DNN)成为主流自然语言处理建模方案,相对于DNN,RNN 在隐层上增加了一个反馈,即 RNN 隐层的输入有一部分是前一级的隐层输出,这使 RNN 能够通过循环反馈看到当前时刻之前的信息,赋予了 RNN 记忆功能,能较好的表征上下文的语义。这些特点使得 RNN 非常适合用于对自然语言进行建模。如图3所示,所有的 RNN 都具有一种重复神经网络模块的链式形式, 在标准 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。
RNN 虽然看似简单,却也有一些严重的缺点。首先是过拟合,在现在广泛应用的端到端 RNN 系统中,RNN 对上下文相关性的拟合较强,而这会导致 RNN 相比与 DNN而言更易出现过拟合问题。其次是梯度消失和梯度爆炸,因为 RNN 比 DNN 更复杂,海量数据环境下的 RNN 模型训练难度较大,容易出现梯度消失和梯度爆炸问题,导致在构建大型系统方面表现较差。第三是 RNN 对较长的问句有严重语义遗忘问题,当相关信息和当前预测位置之间的间隔不断增大时,RNN 有限的记忆能力会因为信息不断增多而耗尽,因此当间隔增大,一部分初始的记忆信息就会被遗忘,这些长期依赖的遗忘和缺失最终会导致问句语义丢失。为了避免以上问题,我们选择用 LSTM 这一 RNN变种。
长短期记忆网络(Long Short-Term Memory,LSTM),是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。与标准 RNN 相比,LSTM在算法中加入了一个判断信息有用与否的“处理器”,这个处理器作用的结构被称为细胞。一个细胞当中被放置了三扇门,分别叫做输入门、遗忘门和输出门如图4所示,这些精心设计的“门”结构实现了 LSTM 遗忘或增加信息能力。一个信息进入 LSTM 的网络当中,可以根据规则来判断是否有用。只有符合算法认证的信息才会留下,不符的信息则通过遗忘门被遗忘。
某一时间步 t t t 的输入门 ( i t ) (i_t) (it) 和遗忘门 ( f t ) (f_t) (ft) 都以输入变量(即我们的备选答案编码 x t x_t xt)、上一个时间步 t − 1 t − 1 t−1 的输入向量 ( h t − 1 ) (ht − 1) (ht−1) 和偏置 ( b ) (b) (b) 作为输入,并通过激活函数得到响应值。
忘记门层:忘记门层决定了 LSTM 何时会从系统状态中丢弃信息。其公式为:
f t = δ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \delta(W_f \cdot [h_{t-1},x_t]+b_f) ft=δ(Wf