海南省首支省级母基金正式启动并向社会公开征集合作投资机构
06-17
机器阅读理解是当前智能问答领域的热门研究问题。
其目标是根据给定的问题和文章(段落)对文本进行分析和分析。
、从文章(段落)中提取或重写文本片段作为问题的答案。
例如,目前大多数搜索引擎,当用户输入的搜索关键词是问题时,会尝试从搜索结果网页中寻找答案,并以最高优先级呈现给用户。
例如,如果您搜索“搜狗的吉祥物是什么?”搜索引擎会做出如下反应:所使用的技术是“机器阅读理解”。
近年来,由于神经网络的复兴和大规模数据集的可访问性,阅读理解研究取得了长足的进步,许多优秀的机器阅读理解模型层出不穷。
例如,SQuAD 1.0排名中已经有80多个提交模型,其中相当一部分的性能已经超越了人类的性能。
这里有一个问题。
作为研究人员或开发人员,有必要重现这些模型,以便比较它们的优缺点并利用它们。
然而,许多现有模型并未提供官方实现;而目前开源的一些模型,由于所使用的深度学习框架和实现思路的差异,很多人很难理解、比较和改进。
复制这些模型存在很大困难。
针对这一问题,搜狗搜索近期提出并开源了“搜狗机器阅读理解工具合集”(以下简称“SMRC”)。
SMRC主要针对抽取式机器阅读理解任务,提供了一套全面的数据集读取、预处理、神经网络模型库组件、训练和评估的完整框架。
它还复现并集成了数十个已发布的机器阅读理解模型,帮助用户快速高效地复现现有模型或开发自己的阅读理解模型。
该工具集也是业界最全面的TensorFlow版本阅读理解工具集。
目前,与 SMRC 类似的工具集包括 Allen AI 的 AllenNLP 和 UCL 机器阅读理解组的 Jack The Reader。
和 Jack The Reader 更多的是提供一个适合多种自然语言处理任务的框架,该框架只包含少量阅读理解模型(例如 AllenNLP 中 SQuAD 数据集的模型只有 BiDAF 和 QANet,而 SMRC 则挖掘了更深)。
针对阅读理解任务,在建立一套模型构建和训练框架的同时,提供了10+个模型的实现。
项目链接:(请点击此处) 论文链接:(请点击此处)我们来看看SMRC的具体内容 - 1.刀具采集框架 如上图所示,刀具采集将基于机器的流程阅读和理解。
该工具包分为四个模块:数据集读取器、数据预处理、模型构建和模型训练。
这四个模块被设计为管道流程,可用于大多数机器阅读理解任务。
Dataset Reader 机器阅读理解快速进步的一个重要原因是各种大规模、高质量问答数据集的发布。
为了避免重复开发读取数据集的代码,SMRC提供了SQuAD1.0、SQuAD2.0、CoQA等一些典型数据集的读取模块;同时,为了增强语言多样性,SMRC还提供了对中文数据集的支持。
CMRC 模块。
另一方面,用户也可以通过继承base_dataset来开发其他数据集的自定义阅读器。
数据处理为了准备用于训练模型的数据,我们需要构建词汇表、提取语言特征并将离散特征映射到索引中。
该工具包提供了满足这些要求的模块:词汇生成器、特征提取器、批量生成器。
模型构建机器阅读理解任务的核心部分是构建有效且高效的模型。
除了提供内置模型(我们稍后会介绍)之外,SMRC 还提供了机器阅读理解任务中常用的神经网络组件,方便用户构建定制模型。
遵循“功能性 API”的思想,SMRC 将它们包装为 Tensorflow 层中 MRC 特定的附加内容: Embedding:包括 Vanilla Embedding、PartiallyTrainableEmbedding、CoVeEmbedding、ElmoEmbedding 和 BertEmbedding 等。
Recurrent:BiSTM 和 BiGRU 是基本的循环层。
此外,SMRC还提供了他们的CUDNN版本——CudnnBiSTM和CudnnBiGRU。
相似度函数:SMRC提供了一系列计算文本之间词级相似度的函数,例如DotProduct、TriLinear、MLP等。
Attention:注意力层通常与 BiAttention、UniAttention 和 SelfAttention 等相似函数一起使用。
基础层:一些基础层用于机器阅读理解模型,例如 VaritionDropout 和 Highway、ReduceSequence。
基本操作:主要是屏蔽操作,例如屏蔽softmax、屏蔽logits。
通过继承基础模型类并结合上述组件,开发者基本上可以快速构建出最主流的机器阅读理解模型。
模型训练 在训练模型时,我们通常关心指标如何随训练/开发集变化、何时执行提前停止、模型需要多少个 epoch 才能收敛等。
由于大多数模型采用类似的训练策略,SMRC 提供了训练模块,主要功能包括维持训练、评估和推理处理、保存最优权重、与指数移动平均线配合以及记录训练摘要。
每个模型还提供用于保存和加载模型权重的接口。
2.内置模型:提供丰富的内置模型是SMRC的一大特色。
这些内置模型是现有优秀模型的复制品。
其中包括: BiDAF:与之前工作中的注意力机制不同,BiDAF的核心思想是双向注意力,它模拟查询到上下文和上下文到查询的注意力。
(机器理解的双向注意力流(ICLR)) DrQA:旨在解决开放域问答。

DrQA利用文本嵌入、基本语言特征和简单的注意力机制来证明,无需复杂结构设计的简单模型也能在机器阅读理解中取得良好的效果。
(阅读维基百科回答开放域问题(ACL)) FusionNet:基于之前工作中注意力方法的分析,Huang 等人。
提出了FusionNet,从三个方面延伸关注。
他们建议使用单词历史和完全意识的注意力,这使得模型能够结合来自不同语义层的信息流。
此外,这个想法也适用于自然语言推理。
(通过全感知注意力与机器理解应用(ICLR)进行融合) R-Net:R-Net 的主要贡献是自匹配注意力机制。
在上下文和问题的门控匹配之后,引入段落自匹配来聚合整个段落的证据并提高段落表示。
(用于阅读理解和问答(ACL)的门控自匹配网络) QANet:QANet 的架构改编自 Transformer,仅包含卷积和自注意力。
通过不使用循环层,QANet 的训练时间加快了 2 倍,推理时间加快了 49 倍。
(结合局部卷积与全局自注意力进行阅读理解(ICLR)) IARNN:SMRC 中实现了两个内部基于注意力的 RNN(IARNN),有利于句子表示,并且在答案选择任务中有效。
IARNN-word 在将问题上下文的单词表示输入 RNN 模型之前对其进行加权。
与仅实现输入词嵌入的 IARNN-word 不同,IARNN-hidden 可以通过向计算的注意力权重添加额外的上下文信息来捕获多个词之间的关系。
(Inner Attention based Recurrent Neural Networks for Answer Selection (ACL)) BiDAF++:基于BiDAF,引入多段机器阅读理解模型。
BiDAF++在BiDAF的基础上增加了self-attention层来增加模型容量。
(简单有效的多段落阅读理解(ACL)) BERT&ELMo:BERT 和 ELMo 等预训练模型在许多自然语言处理任务中表现非常出色。
在 SMRC 中,BERT、ELMo 和 Cove 被用作嵌入层,以提供强大的上下文表示。
同时,SMRC还包括用于机器阅读理解的BERT模型,以及修改版本。
3.快速构建和测试 SMRC提供简单的界面,易于用户使用,并且具有可扩展性。
对于主流的阅读理解模型来说,只需要十几行代码就可以完成训练和测试。
以SquAD1.0为例,我们可以快速构建和训练内置模型(DrQA): 1. 下载数据集 $ wget wget wget #used in DrQA $ unzip glove.B.d.zip 2. 准备数据集读取器和判别器 train_file = data_folder + "train-v1.1.json"dev_file = data_folder + "dev-v1.1.json"reader = SquadReader()train_data = reader.read(train_file)eval_data = reader.read(dev_file)evaluator = SquadEvaluator(dev_file) 3. 构建词汇表并加载预训练的嵌入词汇 = Vocabulary(do_lowercase=False)vocab.build_vocab(train_data + eval_data, min_word_count=3, min_char_count=10)word_embedding = vocab.make_word_embedding(embedding_folder+"glove .B.d.txt”)4。
使用特征提取器。
仅在使用语言特征时才需要特征提取器: feature_transformer = FeatureExtractor(features=['match_lemma','match_lower','pos','ner','context_tf'],build_vocab_feature_names=set(['pos',' ner' ]), word_counter=vocab.get_word_counter())train_data = feature_transformer.fit_transform(dataset=train_data)eval_data = feature_transformer.transform(dataset=eval_data) 5. 构建用于训练和评估的批量生成器,其中附加特征和特征词汇表为语言特性所必需的。
train_batch_generator = BatchGenerator(vocab,train_data,训练=True,batch_size=32,\additional_fields = feature_transformer.features,feature_vocab=feature_transformer.vocab) eval_batch_generator = BatchGenerator(vocab,eval_data,batch_size=32,\additional_fields = feature_transformer.features,feature_vocab= feature_transformer.vocab) 6.导入内置模型并编译训练操作,调用train_and_evaluate等函数进行训练和评估。
model = DrQA(vocab, word_embedding, features=feature_transformer.features,\ feature_vocab=feature_transformer.vocab)model.compile()model.train_and_evaluate(train_batch_generator, eval_batch_generator, evaluator, epochs=40, eposides=2) 以上代码适用于所有内置模型以及示例中的所有数据集。
您可以按照上面的代码在不同的数据集上尝试不同的模型,看看它是如何工作的。
SMRC在Github上提供的对比结果如下: 表1是SQuAD1.0的模型结果。
可以看出,复刻模型的性能与原模型基本相同。
另一方面,当模型加入BERT或ELMo等预训练时,其结果往往会有很大的提升,因此它们也是NLP的新趋势。
SQuAD 2.0和CoQA的任务与SQuAD1.0不一样,因此某些模型无法直接应用于这两个数据集。
通过对BiDAF、BiADF++等模型的测试可以看出,内置模型有时甚至比原始模型还要好。
此外,BiDAF还可以应用于CMRC数据集。
搜狗搜索提供的测试结果F1/EM为57.01/35.0,提供了新的基线。
4.总结搜狗搜索开源的《搜狗阅读理解工具合集》提供了TensorFlow版数据集读取、预处理、神经网络模型基础件、训练与评估等完整的阅读理解任务框架,让开发者能够快速构建定制化的阅读理解任务框架。
机器阅读模型。
此外,SMRC还在统一框架内提供了十余种机器阅读理解模型,方便开发者复现和测试现有模型。
这些努力将极大地加速相关的学术研究。
同时,SMRC也为所有想要评估并尝试实现机器阅读理解技术的算法从业者提供了入门的捷径和产品化的初始动力。
据了解,搜狗搜索已经将相关技术应用到其产品和业务中。
在法律领域,搜狗律师的问答机器人具备逻辑分析和推理能力。
在渐进式询问过程中,挖掘判断中的结构化数据,帮助用户澄清已经发生的事实,全面准确地了解用户的规律。
根据上诉,给出可能的判决结果、法律意见或类似案件;在医疗领域,搜狗搜索的智能分诊功能率先推出基于人工智能技术的智能诊断助手,模拟医生与患者的对话模式。
用户交流自己的病情,并根据用户的实际症状帮助确定用户可能患有的疾病。
参考文献:[1] SMRCToolkit[2] 搜狗机器阅读理解工具包[3] 原始论文《基于文档门控制器的开放域问答》[4] 搜狗在国际顶级挑战CoQA中获得第一名[5] CoQA: A Conversational Question Answering Challenge[6] SQuAD2 .0:斯坦福问答数据集雷锋网版权文章,未经授权禁止转载。
详情请参阅转载说明。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-18
06-18
06-17
最新文章
3月,腾讯《王者荣耀》在全球App Store和Google Play吸引了2.57亿美元,同比增长63%
生鲜传奇宣布完成数亿元B+轮融资
裁员20%?红杉中国回应:胡说,员工总数不降反升
第二次影视创新“闯”短剧世界:看、留、跳都是钱
ASML:从飞利浦弃儿到光刻之王
宁康瑞珠获数千万元A轮融资 横琴金投、翰颐资本投资
智能金融服务生态平台科客完成A+轮融资
拼多多九鼎:信息披露无懈可击,竞争对手才是“浇水”的