“泰迪杯”挑战赛 - 基于LSI和卷积神经网络实现智能阅读模型

目录
一、 引言

二、 模型框架

三、 方案介绍

3.1 数据分析与预处理
3.1.1 数据分析
3.1.2 数据预处理
3.2 关键词匹配
3.2.1 词频-逆向文件频率模型
3.2.2 潜在语义索引模型
3.3 精准匹配
3.3.1 卷积神经网络
3.3.2 模型设计

四、 实验结果

4.1 实验环境
4.2 评价指标
4.3 实验结果
4.3.1 数据预处理阶段实验结果
4.3.2 关键词匹配阶段实验结果
4.3.3 精准匹配阶段实验结果

五、 总结与展望

5.1 总结
5.2 展望
5.2.1 改进损失函数——Triplet Loss
5.2.2 构建基于 Web 的问答系统
5.2.3 研究基于众包的智能阅读数据处理服务

参考文献

附录

(一)FastText 模型
(二)CNN with Word2Vec 模型
(三)Bi-LSTM 模型
(四)基于 Attention 模型

一、引言

随着互联网的高速发展以及智能设备的普及,数字阅读以方便、快捷的优势,越来越被大众所接受和认可。据中国数字阅读大会上的调研数据显示,2017 年全国数字阅读用户近 4 亿,人均电子书阅读量为 10.1 本,而纸质书阅读量仅 7.5本。除电子书籍外,人们在日常生活中也需要阅读各式各样的电子文档,如说明书、教程、文集以及词典等。然而,在传统的数字阅读中存在用户无法精准定位关键信息的问题,即无法满足用户仅需查找文档中某些片段以获取关键信息的需求。例如,当用户需要查找法律文献中的一些段落来解决法律疑惑时,只需要理解关键部分而无需精读整个法律文献;同样,对于小说阅读,如果用户仅需了解其中的特殊细节,也不需要对整部小说进行精细化阅读。

智能交互在电子书阅读中的应用为上述问题提供了解决方案。近年来,自然语言处理(NLP)作为人工智能的一个重要领域得到了飞速发展,构建基于自然语言处理技术的智能阅读模型,通过端到端的处理技术辅助快速阅读,直接对用户的问题进行处理,无需基于关键词搜索即可直接定位文档中的相关段落,并将答案直接反馈至用户。

基于对智能阅读系统的理解和认识,本文将立足于以上背景和问题,构建基于潜在语义索引(LSI)及卷积神经网络(CNN)的智能阅读模型,完成基于限定文本的阅读问答智能交互操作。在完成对题目所给问题集的数据分析以及预处理工作后,该模型与其他主流方案相比,在 F1-Score、准确率以及泛化能力上都表现出优越的效果。本文包括引言、系统模型、实验方案、实验结果、总结与展望五个部分。

二、模型框架

为了使智能阅读模型能正确理解用户的问题,并跳转到答案所在文本所在行,我们提出了一种基于潜在语义索引(LSI)及卷积神经网络(CNN)的智能阅读模型,该模型主要包括三个部分:数据分析与预处理、关键词匹配以及精准匹配。模型架构图如图 1 所示。

在这里插入图片描述

图 1 智能阅读模型框架

第一步:数据分析与预处理。我们对问题给出的数据集进行统计分析,提出该数据集进行处理时的关键挑战,并给出相应的预处理步骤;

第二步:关键词匹配。首先对用户提出的问题进 1 行分词,并将需要在其中寻找答案的文本构建成问答数据库。进而使用词频-逆向文件词频(TF-IDF)计算出问题以及段落的词频矩阵,再利用基于奇异值分解(SVD)的 LSI 方法将其转化为奇异矩阵,计算相似度,将相似度较大的若干个可能答案段落作为问题的粗匹配结果;

第三步:精准匹配。我们在经典的 TextCNN 模型上进行优化,提出一个新的CNN 模型在粗匹配结果上进行二次优化达到精确匹配的目的。在这个过程中首先进行词嵌入,然后分别对问题和粗匹配结果中的回答进行两次卷积核大小为 3、 4、5 的卷积操作,经过最大池化层后,将池化的向量连接起来。并通过使用 ReLU 激活函数,防止反向传播过程中的梯度问题(梯度消失和梯度爆炸)以及使用Batch Normalization 批规范化,加速收敛,最终输出排序后的较佳结果。

三、方案介绍

3.1 数据分析与预处理

3.1.1 数据分析

高质量的数据集是模型匹配和优化的基础,对整个数据集进行分析处理可以促进对数据集的全面认知,从而更好地对数据进行特征工程编码表示,进一步提高数据集的质量。根据分析结果,更容易选择预处理阶段的相关参数,减少重复摸索的概率。根据问题所给的数据集,我们完成了数据集的分析工作,如图 2 及 表 1 所示。

表 1. 问答训练集统计表

在这里插入图片描述
表 1 给出了问答数据集中的统计结果,由表中可知问答训练集中的问题数量为 30000 个,最长的问题有 243 个字符,最短的问题只有 4 个字符,平均长度为 13 个音符;而分词后最长的问题有 148 个词,最短的问题只有 8 个词,句子平均长度为 8 个词。同理,问答训练集中答案的数量为 477019 个,其中正确答案为 127328 个,错误答案有 349691 个,正确答案与错误答案的比值约为 1: 3,最长的回答有 6425 个字符,最短的回答是 0(空回答),回答的平均长度 35个词;进行分词之后,最长的回答有 3545 个词,最短的回答依然只是空回答,答案的平均长度为 60 个词。

在这里插入图片描述

图 2. 问答训练集统计示意图

从图 2 中可以看出,分词前每个问题的长度大部分集中在 10~20 个字符以内,每个答案的长度大部分在 200 个字符以内。而在分词后,问题的长度集中在15 个词以内,答案的长度大部分在 150 个词以内。

根据上述的统计分析,数据预处理的相关参数选择可以从中参考。由于模型的输入长度是固定的,因为需要选择一个输入序列长度作为参数,参数 200、400等都是合理选择。实际上,我们进行了相关实验,并得出结果:当长度为 200 时,平均训练耗时 280 秒;当扩大长度到 400 时,平均训练耗时 400 秒。然而这两种选择的最终准确率基本相同,意味着扩大的那一部分并没有给模型带来提升的效果。我们最终也在综合了准确率和训练效率后,决定选择 200 作为模型输入序列长度。

3.1.2 数据预处理

在本模型中,我们主要采用将自然语言处理的问题要转化为机器学习的方式来进行学习,首先需要将自然语音进行数字化表示。例如在语音处理中,需要将音频文件转化为音频信号向量;在图像处理中,需要将图片文件转化为图片像素矩阵。但是这两种应用场景中,音频数据和图像数据都可以采用连续数字的方式进行表示,而由于自然语言本身具有多样性的特点,利用连续数字可以完成英文字母的 ASCII 码序列表示,但是这种方法无法应对其他国家的语言,如中文、日文、韩文等。此外,自然语言的文字类型也多种多样,包括形意文字、意音文字以及拼音文字,都具有高度抽象的特征。特别地,在自然语言处理中任意两个互为近义词或者反义词的词语,也可能在拼写上毫无关系但是语义上高度相关的情况。

为了解决这个问题,我们可以采用独热表示(One-Hot Representation)和分布式表示(Distributed Representation)来完成自然语言处理数字化表示,如图 3所示。

在这里插入图片描述

图 3. 语言数字化示意图

其中,独热编码是将每个词用 0 和 1 构成的稀疏向量来进行表示,其向量维度是词典大小,所有维度中只有一个元素为 1。然而这种表示方法容易主要存在两个问题,一是容易导致“维度灾难”的发生,当维度增加时,所需存储空间呈指数增长。另一个重要问题就是“词汇鸿沟”,也就是说任意两个词之间都是孤立的,光从这两个向量看不出两个词是否存在关系。

分布式表示是一类将词的语义映射到向量空间中的自然语言处理技术,每一个词用特定的向量来表示,向量之间的距离一定程度上表征了词之间的语义关系,即两个词语义相近,在向量空间的位置也相近。

例如,“小狗”和“小猫”都是动物的一种,所以它们的词向量在向量空间的距离会很相近。而“男人”和“大树”是语义上完全不同的词,所以它们的词向量在向量空间的距离会相对远。理想的情况下,我们甚至可以使用这样的关系向量来回答某些问题,例如:用“学习” + “发生的地点” = “学校”来回答“学习发生在哪里?”的问题。

分布式表示中典型的代表是词嵌入(Word Embedding),通过神经网络或者矩阵分解等降维技术,表征文本中单词的共现信息。我们采用这种分布式表示的方法来进行智能阅读模型中的单词嵌入问题,从而避免传统语言模型中的“维度灾难”和“词汇鸿沟”情况。

在对数据集分布式表示前,我们需要对数据集进行预处理,将问题和回答转换为数字化的词向量。主要包括分词、字典化、序列化以及填充字符。在进行步骤描述时,我们同时给出一个例子对步骤进行具象呈现,即:

在这里插入图片描述
步骤一:分词。分词采用 Python 自然语言处理工具 jieba。开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率。

在这里插入图片描述
步骤二:字典化。将分词后的词语编号,映射到一个数字,以标识这个词语。

在这里插入图片描述
步骤三:序列化。将一个句子中的词语序列化成词向量列表。

在这里插入图片描述
步骤四:填充字符。神经网络的输入数据为固定长度,因此需要对序列进行填充或截断操作。小于固定长度的序列用 0 填充,大于固定长度的序列被截断,以便符合所需的长度。

在这里插入图片描述
经过上述预处理流程,我们构建了训练数据集和测试数据集:tokenizer.pkl (语料字典)、train_a.npy (训练问题集)、test_a.npy (测试问题集)、train_q.npy (训练回答集)、test_q.npy (测试回答集)、train_y.npy (训练标签集)以及 test_y.npy (测试标签集)。这些词向量数据集,将用于后续的模型“嵌入层”中进行训练,训练出来的词向量可以更好的适应自然语言处理任务。

3.2 关键词匹配

在本文所提出的智能阅读模型中,我们根据词频-逆向文件频率模型(TF-IDF)以及其相应的优化模型潜在语义索引(LSI)进行关键词匹配,下面我们将对两个模型做详细介绍。

3.2.1 词频-逆向文件频率模型

词频-逆向文件频率模型(TF-IDF)的主要思想是指在一篇文章中,某个词语的重要性与该词语在这篇文章中出现的次数成正相关,同时与整个语料库中出现该词语的文章数成负相关。其中:TF(term frequency):词频,表示一个词语与一篇文章的相关性。计算时用该词在一篇文章中出现的次数除以文章的总词数。IDF(inverse document frequency):逆向文件频率,表示一个词语的出现的普遍
程度。可以表示为 log(总文章数/出现该词语的文章数)。

一篇文章中某个词语的重要程度,可以标记为词频和逆向文件词频的乘积。基于词频-逆向文件频率模型的主要思想,我们构建了这样一个智能阅读模型:

在这里插入图片描述
计算得出:
T F I D F = T F ∗ I D F TFIDF = TF*IDF TFIDF=TFIDF

在基于文章的词语重要性与词语在文章中出现的位置不相关的假设下,根据上述公式我们可以获取文档中每个词语的 TF-IDF 值,再结合余弦定理,我们就可以计算问题与段落的相似度了。

首先,把语料库中每个短路表示成向量空间模型。为了方便阐述,做以下符号定义:文章 D 中出现所有词语的集合标记为 W = ( W 1 , W 2 , . . . , W M ) W=(W_1, W_2,...,W_M) W=(W1,W2,...,WM)。通过 TFIDF算法,可以得到包含句子 d 中每个词语 TF-IDF 值的向量,记做 t = ( t 1 , t 2 , . . . , t M ) t=(t_1,t_2,...,t_M) t=(t1,t2,...,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的数据喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值