热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

lucene按照匹配度排序_谈谈文本匹配和多轮检索

作者:朱帅学校:华中科技大学研究方向:文本匹配,对话系统原文链接,点击“阅读原文”直达:http

作者:朱帅

学校:华中科技大学

研究方向:文本匹配,对话系统

原文链接,点击“阅读原文”直达:

https://zhuanlan.zhihu.com/p/111769969


1. 关于文本匹配

文本匹配是NLP的基础任务之一,按照论文中的实验对传统的文本匹配任务进行分类,大致可以分为文本检索(ad-hoc),释义识别(Paraphrase Identification),自然语言推理(NLI)以及问答匹配(QA)。除此之外,像实体消歧等其他任务都可以采用文本匹配的思路来解决。不同的文本匹配任务,虽然实现的目标有所不同,但是从模型层面都是大同小异的,针对不同任务的模型大多是可以通用的,只不过效果上可能会有所差异。文本匹配任务的目标是:给定一个query和一些候选的documents,从这些documents中找出与query最匹配的一个或者按照匹配度排序;本文将两个待匹配的文本定用text_lefttext_right,前者表示query文本,后者表示documents中一个候选文本。传统的文本匹配任务还是采用基于特征的方式,无非就是抽取两个文本tf-idf、BM25、词法等层面的特征,然后使用传统的机器学习模型(LR,SVM)等进行训练。虽然基于特征的方法可解释性较好,但是这种依赖于人工寻找特征和不断试错的方法,泛化能力就显得比较一般,而且由于特征数量的限制,导致参数量受到限制,模型的性能比较一般。2012年以来,深度学习技术的快速发展以及GPU的出现,使得人们有机会并且有能力训练大型的深度神经网络。深度学习技术开始对计算机视觉、自然语言处理等各个领域产生了冲击,作为自然语言处理的一个分支,文本匹配当然也不例外。2013年,微软提出 DSSM (2013),率先将深度学习技术引入到了文本检索任务中,开启了文本匹配方向的深度学习时代。不同于传统基于特征的匹配方式,深度学习时代的文本匹配方法可以概括为两种类型:基于表征(representation)的匹配和基于交互(interaction)的匹配方式。
所谓基于表征的匹配方式,初始阶段对两个文本各自单独处理,通过深层的神经网络进行编码,得到文本的表征,然后基于得到的文本表征,采用相似度计算的函数得到两个文本的相似度。
而基于交互的匹配方式,则认为在最后阶段才计算文本的相似度会过于依赖表征的质量,同时也会丢失基础的文本特征(比如词法、句法等),所以提出尽可能早的对文本特征进行交互,捕获更基础的特征,最后在高层基于这些基础匹配特征计算匹配分数。

2. 基于表征的文本匹配

根据不同匹配方式出现的时间顺序以及当下的流行度,首先介绍基于表征的匹配方式。上文提到的DSSM (2013) 就是最早的基于表征的匹配方法,整体流程比较简单:首先基于bag-of-words得到文本的向量表征,再基于word-hashing方法降维,接着就是多层的线性层得到最终128维的文本Embedding,最后对两个文本Embedding计算cosine相似度得到相似度分数。其实,这篇论文也基本奠定了基于表征匹配的基本范式(paradigm),即Embedding层->Encoding层->DNN层->Prediction层。之后的基于表征的匹配大抵都是类似的流程。2014年,微软继续提出 CDSSM (2014),基本流程和DSSM完全一样,无非就是将MLP替换成了CNN模型,可以提取N-gram特征,不再赘述。其实,基于表征的方式可创新的地方并不多,Embedding层是固定的,Encoding层无非再加上各种char-embedding,或者entity-embedding来引入先验知识;可以稍微有点创新的就只有DNN层,但是由于表征模型从头到尾对两个待匹配文本都是独立处理的,能做的只能是怎么得到更好的表征向量,很容易想到的就是把DNN替换为RNN型网络或者后来的Attention网络;Prediction层则是寻找不同的相似度计算函数,或者直接使用一层线性层代替。2014年,华为也提出了一种基于表征的匹配模型 ARC I (2014),基本范式和上述结构一致。之后,还有一些基于表征的匹配方法,包括孪生网络Siamese Network (2016)以及其变种,但是在2017年之后基本就没有基于表征的模型出现了。

3. 基于交互的文本匹配

基于表征的方式简单有效,但是其缺点也非常明显。表征用来表示文本的高层语义特征,但是文本中单词的关系、句法的特征高层的表征比较难捕获,很难判定一个表征是否能很好的表征一段文本。要想能够建模文本各个层级的匹配关系,最好能够尽早地让文本产生交互。通俗来讲就是,认识的越早,两个文本对彼此的了解就可能越多。2014年,华为在ARC I的那篇文章中,提出了 ARC II (2014) 。首先,对输入语句得到每个单词的Embedding,然后经过一层的CNN得到两个句子N-gram级别的表征(这个使用多个不同大小的卷积核,得到多个N-gram级别表征);接着计算基于每一个N-gram级别的表征计算交互矩阵(即一个句子中某一个位置的向量和另一个句子中其他位置的向量计算相似度,可以是点积或者cosine相似度),并在channel维度上进行拼接得到3维的张量;对上面得到的3维张量采用2D-CNN,再经过max-pooling得到最终的表征;Flatten之后经过MLP得到最终的匹配分数。从2014年开始,中科院郭嘉丰老师团队开始在文本匹配领域发力,发表了多篇经典的论文,包括MV-LSTM (2015),MatchPyramid (2016),DRMM (2016),Match-SRNN (2016)等等。前两者基本是对ARC II的补充,MV-LSTM主要是使用Bi-LSTM对Embedding进行强化编码,而MatchPyramid则提出了计算交互矩阵时多种匹配模式(Indicator, Cosine, Dot)。前面说过文本匹配中不同任务的模型大多是通用的,但针对不同任务的特点也可以有一些针对性的创新。上文提到的DRMM就是针对检索领域任务的特点进行了创新。传统的文本匹配大多考虑语义匹配(Semantic Matching),而检索任务中的匹配通常是相关性匹配(Relevance Matching),关键词在其中起到至关重要的作用。DRMM在计算得到匹配矩阵之后,采用match histogram的方式将query中每个单词的相似度的值映射到不同的bin中,[1, 1]这个bin表示exact match,[-1, 1)区间均匀划分得到的每个bin都表示soft match;使用直方图中的计数作为向量中每一维的值,得到每个单词编码后的向量66fcdb7e45ca43758db21562a011bb9d.png




推荐阅读
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • ICRA2019最佳论文  Making Sense of Vision and Touch: SelfSupervised Learning of Multimodal Representatio
    文章目录摘要模型架构模态编码器自监督预测控制器设计策略学习控制器设计实验结论和展望会议:ICRA2019标题:《MakingSenseofVision ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
author-avatar
手机用户2702932800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有