东莞网站seo网站网络
web/
2025/9/27 1:40:45/
文章来源:
东莞网站seo,网站网络,县级网站建设,深圳建英文网站本文转载自公众号“夕小瑶的卖萌屋”#xff0c;专业带逛互联网算法圈的神操作
-----》我是传送门
关注后#xff0c;回复以下口令#xff1a;
回复【789】 #xff1a;领取深度学习全栈手册#xff08;含NLP、CV海量综述、必刷论文解读#xff09;
回复【入群】专业带逛互联网算法圈的神操作
-----》我是传送门
关注后回复以下口令
回复【789】 领取深度学习全栈手册含NLP、CV海量综述、必刷论文解读
回复【入群】加入卖萌屋深度学习/NLP/CV/搜广推等方向的技术交流与内推社群大V、顶会审稿人云集
回复【0511】领取算法岗面试手册刷offer神器
回复【0424】领取刷论文神器挖掘每日、每月必刷重磅论文
目录
打卡的baseline模型
打卡的任务场景和数据集
一、相似度计算复述识别textual similarity¶phrase identification
二、问答匹配answer selection
三、对话匹配response selection
四、自然语言推理/文本蕴含识别Natural Language Inference/Textual Entailment
五、信息检索中的匹配
六、机器阅读理解问题
打卡的Siamese结构基于表示
打卡的花式attention结构基于交互
打卡的学习方法
打卡的开源工具 文本匹配是一个很宽泛的概念只要目的是研究两段文本之间的关系基本都可以把这个问题看作是文本匹配问题。由于在不同的场景下对”匹配“的定义可能非常不同因此文本匹配并不是一个完整独立的研究方向。不过有相当多的NLP任务可以建模成文本匹配问题当它们建模成文本匹配问题时当然会发现模型结构、训练方法等是高度高度相似的却又有着微妙的不同。所以这个问题虽然跑个baseline简单但是把具体的匹配问题中做好却并不容易尤其是在有BERT之前。 下面就来具体说说可以打卡的内容。 PS关注「夕小瑶的卖萌屋」订阅号后台回复「文本匹配」可领取小夕打包好的论文大礼包噢包括正文中的papers 打卡的baseline模型
无论具体的匹配问题是什么有一些很好实现的baseline是可以不管三七二十一的直接跑一下的。 我自己最喜欢用的baseline是SiameseCNN这种结构的模型毕竟从头手撸一遍非常快的跑的又很快效果又不错训练又比较稳定受超参数的影响相对较小。 模型大体结构如图所示这里一般没必要实现的太花哨一般就用一层CNN来分别encoding一下需要匹配的textA和textB然后max pooling一下或再concat一个mean pooling得到两个文本的向量表示vecA和vecB上图中的u和v。 这之后可以直接套用一些公式如cosine距离、L1距离、欧式距离等得到两个文本的相似度不过我们做文本匹配并不一定是希望判断这两个文本是否相似除了相似关系外还可以有问答关系、对话回复关系、文本蕴含关系等因此更通用的做法是基于u和v构建用于建模两者匹配关系的特征向量然后用额外的模型比如MLP来学习通用的文本关系函数映射。 这个特征向量可以像上图一样包括vec1, vec, |vec1-vec2|, vec1*vec2也可以包括一些更加fancy的features比如小夕常加的max(vec1, vec2)^2等在一些匹配场景下有奇效。当然啦更加靠谱的还是根据实际匹配场景的(bad)case来精心构造features。 如果对LSTM有执念完全可以用lstm替代cnn来当sentence encoder也就是使用SiameseLSTM结构同样这里的encoder可以搭配各种预训练模型强化一下文本的向量表示。 燃鹅其实有了BERT之后我就更喜欢拿BERT来当baseline了╮(▽)╭毕竟连代码都不用写了更方便经常baseline跑了一下发现问题解决了。
打卡的任务场景和数据集
一、相似度计算复述识别textual similarityparaphrase identification
这个可以说是文本匹配最典型最经典的场景了也就是判断两段文本是不是表达了同样的语义即是否构成复述paraphrase关系。有的数据集是给出相似度等级等级越高越相似这种更合理一些有的是直接给出0/1匹配标签。这一类场景一般建模成分类问题。
代表性数据集 _SemEval STS Task_从2012年开始每年都举办的经典NLP比赛。这个评测将两段文本的相似度程度表示为0.0~5.0越靠近0.0表示这两段文本越不相关越靠近5.0表示越相似。使用皮尔逊相关系数Pearson Correlation来作为评测指标。链接[2] _Quora Question Pairs (QQP)_这个数据集是Quora发布的。相比STS这个数据集规模明显大包含400K个question-question pairs标签为0/1代表两个问句的意思是否相同。既然建模成了分类任务自然可以使用准确率acc和f1这种常用的分类评价指标啦。知乎什么时候release一个HuQP数据集(∇)链接[3] _MSRP/MRPC_这是一个更标准的复述识别数据集。在QQP数据集中文本都是来自用户提问的问题而MRPC里的句子则是来源于新闻语料。不过MRPC规模则要小得多只有5800个样本毕竟是2005年release的数据集而且人工标注所以可以理解╮(▽)╭。跟QQP一样MRPC一般也用acc或f1这种分类指标评估。链接[4] _PPDB_这个paraphrase数据集是通过一种ranking方法来远程监督[]做出来的所以规模比较大。文本粒度包含lexical level单词对、phrase level短语对和syntactic level带句法分析标签。而且不仅包含英文语料还有法语、德语、西班牙语等15种语言为什么没有中文。语料库规模从S号、M号一直到XXXL号让用户选择性下载也是很搞笑了其中短语级就有7000多万句子级则有2亿多。由于语料规模太大标注质量还可以因此甚至可以拿来训练词向量[5]。链接[6]
二、问答匹配answer selection
问答匹配问题虽然可以跟复述识别一样强行建模成分类问题但是实际场景往往是从若干候选中找出正确答案而且相关的数据集也往往通过一个匹配正例若干负例的方式构建因此往往建模成ranking问题。 在学习方法上不仅可以使用分类的方法来做在ranking问题中叫pointwise learning还可以使用其他learning-to-rank的学习方法如pairwise learning”同question的一对正负样本”作为一个训练样本和listwise learning”同question的全部样本排好序“作为一个训练样本 。因此相应的评价指标也多使用MAP、MRR这种ranking相关的指标。 注意这并不代表pointwise matching这种分类做法就一定表现更弱详情见相关papers 代表性数据集如 _TrecQA_包含56k的问答对但是只有1K多的问题负样本超级多不过原始的数据集略dirty包含一些无答案样本和只有正样本以及只有负样本的样本什么鬼句子所以做research的话注意一下有些paper是用的clean版本滤掉上述三类样本有的是原始版本一个数据集强行变成了两个track。链接[7] _WikiQA_这也是个小数据集是微软从bing搜索query和wiki中构建的。包含10K的问答对1K多的问题样本正负比总算正常了些。链接[8]paper[9] _QNLI_总算有大规模数据集了这个是从SQuAD数据集改造出来的把context中包含answer span的句子作为匹配正例其他作为匹配负例于是就有了接近600K的问答对包含接近100K的问题。链接[10]
三、对话匹配response selection
对话匹配可以看作进阶版的问答匹配主要有两方面升级。 一方面对话匹配在问答匹配的基础上引入了历史轮对话在历史轮的限制下一些本来可以作为回复的候选会因此变得不合理。比如历史轮提到过你18岁了那么对于query”你今天在家做什么呢“你就不能回复“我在家带孙子”了。 ps一个价值五毛钱的例子(¬_¬) 另一方面对于一个query对话回复空间要远比问题答案空间大得多对于问答类query正确答案往往非常有限甚至只有一个但是对话类query却往往有一大串合理的回复甚至有一大堆的万能回复比如“哦”“好吧”“哈哈哈”。很多时候的回复跟query在lexical level上基本没有交集因此对话匹配模型更难训一些数据质量稍差就难以收敛。因此做够了问答匹配来做做对话匹配还是比较意思滴。 该问题一般使用Recall_nk在n个候选中合理回复出现在前k个位置就算召回成功作为评价指标有时也会像问答匹配一样使用MAP、MRR等指标。
代表性数据集 _UDC_Ubuntu Dialogue Corpus是对话匹配任务最最经典的数据集包含1000K的多轮对话对话session每个session平均有8轮对话不仅规模大而且质量很高所以近些年的对话匹配工作基本都在这上面玩。链接[11]paper[12] _Douban Conversation Corpus_硬要给UDC挑毛病的话就是UDC是在ubuntu技术论坛这种限定域上做出来的数据集所以对话topic是非常专的。所以吴俣 大佬release了这个开放域对话匹配的数据集而且由于是中文的所以case study的过程非常享受。链接[13]paper[14]
四、自然语言推理/文本蕴含识别Natural Language Inference/Textual Entailment
NLI或者说RTE任务的目的就是判断文本A与文本B是否构成语义上的推理/蕴含关系即给定一个描述「前提」的句子A和一个描述「假设」的句子B若句子A描述的前提下若句子B为真那么就说文本A蕴含了B或者说A可以推理出B若B为假就说文本A与B互相矛盾若无法根据A得出B是真还是假则说A与B互相独立。 显然该任务可以看作是一个3-way classification的任务自然可以使用分类任务的训练方法和相关评价指标。当然也有一些早期的数据集只判断文本蕴含与否这里就不贴这些数据集了。
代表性数据集 _SNLI_Stanford Natural Language Inference__数据集是NLP深度学习时代的标志性数据集之一2015年的时候发布的57万样本纯手写和手工标注可以说业界良心了成为了当时NLP领域非常稀有的深度学习方法试验场。链接[15]paper[16] _MNLI_Multi-Genre Natural Language Inference__数据集跟SNLI类似可以看做SNLI的升级版包含了不同风格的文本口语和书面语包含433k的句子对链接[17] _XNLI_全称是__Cross-lingual Natural Language Inference。__看名字也能猜到这个是个多语言的数据集XNLI是在MNLI的基础上将一些样本翻译成了另外14种语言包括中文。链接[18]
五、信息检索中的匹配
除上述4个场景之外还有query-title匹配、query-document匹配等信息检索场景下的文本匹配问题。不过信息检索场景下一般先通过检索方法召回相关项再对相关项进行rerank。对这类问题来说更重要的是ranking而不是非黑即白或单纯的selection。ranking问题就不能仅仅依赖文本这一个维度的feature了而且相对来说判断两个文本的语义匹配的有多深以及关系有多微妙就没那么重要了。 从纯文本维度上来说q-a、q-r匹配和NLI相关的方法在理论上当然可以套用在query-title问题上而query-doc问题则更多的是一个检索问题了传统的检索模型如TFIDF、BM25等虽然是词项termlevel的文本匹配但是配合下查询扩展大部分case下已经可以取得看起来不错的效果了。如果非要考虑语义层次的匹配也可以使用LSA、LDA等主题模型的传统方法。当然啦强行上深度学习方法也是没问题的例如做一下query理解甚至直接进行query-doc的匹配只要你舍得砸资源部署相关工作如
DSSMCIKM2013 | Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
CDSSMWWW2014 | Learning Semantic Representations Using Convolutional Neural Networks for Web Search
HCANEMNLP2019 | Bridging the Gap between Relevance Matching and Semantic Matching for Short Text Similarity Modeling
六、机器阅读理解问题
同时还有一些不那么直观的文本匹配任务例如机器阅读理解MRC。这是一个在文本段中找答案片段的问题换个角度来说就可以建模成带上下文的问答匹配问题虽然候选有点多╮(▽)╭。代表性数据集如SQuAD系列、MS MARCO、CoQA、NewsQA分别cover了很多典型的NLP问题MRC任务建模问题、多文档问题、多轮交互问题、推理问题。因此做匹配的话相关的代表性工作如BiDAF、DrQA等最好打卡一下的。
BiDAFICLR2017 | Bidirectional Attention Flow for Machine Comprehension
DrQAACL2017 | Reading Wikipedia to Answer Open-Domain Questions
PS
上述各个场景的模型其实差不太多甚至一些方法直接在多个匹配场景上进行实验近两年的paper也大多claim自己是一个非常general的匹配框架/模型。因此下面介绍打卡paper的时候就不区分场景啦而是分成基于表示和基于交互来介绍打卡点。 注意虽然基于表示的文本匹配方法一般为Siamese网络结构与基于交互的匹配方法一般使用花式的attention完成交互纷争数年不过最终文本匹配问题还是被BERT及其后辈们终结了。因此下面两节请带着缅怀历史的心情来打卡不必纠结paper的细节大体知道剧情就好。
打卡的Siamese结构基于表示
这种结构就是本文开头提到的首先对两段文本分别进行encoding进而得到各自的向量表示然后通过相似度计算函数或相关结构来得到最终的匹配关系。 在baseline阶段提到的SiameseCNN和SiameseLSTM的基础上这个方向往下做无非就是两个方向 1. 加强encoder得到更好的文本表示2. 加强相似度计算的函数建模 对于第一个方向无非就是使用更深更强大的Encoder代表性打卡工作如
InferSentEMNLP2017 | Supervised Learning of Universal Sentence Representations from Natural Language Inference Data ps虽然这篇paper的真正目的是迁移学习 SSEEMNLP2017 | Shortcut-Stacked Sentence Encoders for Multi-Domain Inference
对于第二个方向则是使用更花哨的相似度计算函数或更花哨的用于学习相似度函数的网络结构可打卡的工作如
**SiamCNN**ASRU2015 | Applying deep learning to answer selection: A study and an open task
**SiamLSTM**AAAI2016 | Siamese Recurrent Architectures for Learning Sentence Similarity
**Multi-view**2016 EMNLP | Multi-view Response Selection for Human-Computer Conversation
显而易见这个方向可玩性不强虽然容易work但是paper写出来不够炫酷所以不要问为什么只更新到了2017年因为2016年attention就遍地开花了自然大家基本都跑去赶潮做花式交互结构了。
打卡的花式attention结构基于交互
顾名思义这种思路就是首先通过attention为代表的结构来对两段文本进行不同粒度的交互词级、短语级等然后将各个粒度的匹配结果通过一种结构来聚合起来作为一个超级特征向量进而得到最终的匹配关系。 显然这种思路下除了让文本对的交互更花哨以外就是考虑让模型变得更深从而建模更高level的匹配关系。 不过个人经验来说这种思路下虽然可以玩的花样很多一些论文argue的点也看似有一些道理不过实际很多模型都是在廖廖一两个数据集上疯(暴)狂(力)改(搜)进(索)各种structure才把分数刷上去的导致这种structure看似在某个场景甚至仅仅是某些数据集上work实际上这个structure可能仅仅迎合了特定数据分布或特定场景的一些特性导致很多工作放到一个新场景下就效果翻车了甚至努力调参都调不动太多。 因此在BERT之前这类论文提出的模型虽然看起来高大上不过可能换个数据集后还不如稍微调调参拍拍脑袋的SiameseCNN好用。所以在刷这类论文时千万不要被蜜汁花哨的模型结构迷惑了双眼噢~相关工作很多从中挑选了几篇比较有代表性或比较有信息量或容易阅读的。MatchCNNAAAI2016 | Text Matching as Image RecognitionDecAttEMNLP2016 | A Decomposable Attention Model for Natural Language InferenceCompAggICLR2017 | A COMPARE-AGGREGATE MODEL FOR MATCHING TEXT SEQUENCESESIMACL2017 | Enhanced LSTM for Natural Language Inference2018 COLING | Neural Network Models for Paraphrase Identification, Semantic Textual Similarity, Natural Language Inference, and Question Answering ps这篇paper其实可以看做是对前面各模型的实验和分析大总结 DAMACL2018 | Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network**HCAN**EMNLP2019 |Bridging the Gap between Relevance Matching and Semantic Matching for Short Text Similarity Modeling 此外这里尤其要注意一下模型对称性的问题像文本相似度计算/q-q匹配/title-title匹配这类场景下的匹配是对称的即match(a,b)match(b,a)但是模型不对称后就会让模型自己额外的学习这个先验知识除非数据集很大或者已经预训练过了否则效果很容易翻车。当然了也有一些tricks可以强行使用不对称模型即在这类场景下对每个样本都跑一遍match(a,b)和match(b,a)然后取平均不过相比天然对称的模型效果如何就要看各位炼丹师的水平啦
打卡的学习方法
pointwise/pairwise/listwise learning这三种方法已经资料满天飞了这里就不赘述了。这里给还不熟悉的小伙伴们推荐一篇文章[19]
打卡的pretrain models
虽然经过若干年的炼丹靠model structure已经可以在非常多的文本匹配任务场景取得不错的效果了但是实验证明还是没法跟海量语料上pretrain的模型比的先上一张图问答数据集TrecQA上的实验结果
其中HCAN是EMNLP2019新提出的模型虽然已经吊打了ESIM、DecAtt等老一代花哨模型但是可以看到还是被BERT吊打了更不必说跟XLNet、ERNIE2.0和RoBERTa等近期模型去对比了。所以真正大一统文本匹配任务的话目前来看还是离不开大型预训练模型的。 当然啦非要用传统的匹配模型的话至少还有ELMo可以拿来强行续命【手动狗头】
打卡的开源工具
虽然文本匹配baseline容易构造不过要在具体场景搭建一个完整的系统还是工作量比较大的借助一些好用的开源工具可以大大提升开发效率。
MatchZoo[20]一个通用文本匹配工具包囊括了非常多代表性的数据集、匹配模型和场景接口友好非常适合拿来跑baseline。
AnyQ[21]一个面向FAQ集和的问答系统框架插件和配置机制做的很赞集成了一堆代表性的匹配模型和一些检索模型完整涵盖了Question Analysis、Retrieval、Matching和Re-Rank这4个做问答系统的全部必备环节。
DGU[22]一个bert-based通用对话理解工具提供了一套simple but effective的对话任务解决方案一键刷爆各个对话任务包括多轮对话匹配的SOTA也是一个神奇的体验了。
本文转载自公众号“夕小瑶的卖萌屋”专业带逛互联网算法圈的神操作
-----》我是传送门
关注后回复以下口令
回复【789】 领取深度学习全栈手册含NLP、CV海量综述、必刷论文解读
回复【入群】加入卖萌屋深度学习/NLP/CV/搜广推等方向的技术交流与内推社群大V、顶会审稿人云集
回复【0511】领取算法岗面试手册刷offer神器
回复【0424】领取刷论文神器挖掘每日、每月必刷重磅论文
参考文献正文中贴了的就不在下面写啦
[1] https://www.zhihu.com/question/335289475/answer/811315108 [2] http://ixa2.si.ehu.es/stswiki/index.php/STSbenchmark [3] https://www.quora.com/q/quoradata/First-Quora-Dataset-Release-Question-Pairs [4] https://www.microsoft.com/en-us/download/details.aspx?id52398 [5] 2015TACL | From Paraphrase Database to Compositional Paraphrase Model and Back [6] http://paraphrase.org/#/download [7] https://trec.nist.gov/data/qa.html [8] https://www.microsoft.com/en-us/download/details.aspx?id52419 [9] Yang Y, Yih W, Meek C. Wikiqa: A challenge dataset for open-domain question answering[C]//Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015: 2013-2018 [10] https://firebasestorage.googleapis.com/v0/b/mtl-sentence-representations.appspot.com/o/data%2FQNLIv2.zip?altmediatoken6fdcf570-0fc5-4631-8456-9505272d1601 [11] http://dataset.cs.mcgill.ca/ubuntu-corpus-1.0/ [12] Lowe R, Pow N, Serban I, et al. The ubuntu dialogue corpus: A large dataset for research in unstructured multi-turn dialogue systems[J]. arXiv preprint arXiv:1506.08909, 2015. [13] https://archive.org/details/DoubanConversaionCorpus [14] Wu Y, Wu W, Xing C, et al. Sequential matching network: A new architecture for multi-turn response selection in retrieval-based chatbots[J]. arXiv preprint arXiv:1612.01627, 2016. [15] https://nlp.stanford.edu/projects/snli/ [16] Bowman S R, Angeli G, Potts C, et al. A large annotated corpus for learning natural language inference[J]. arXiv preprint arXiv:1508.05326, 2015 [17] http://www.nyu.edu/projects/bowman/multinli [18] https://www.nyu.edu/projects/bowman/xnli
[19] https://zhuanlan.zhihu.com/p/26539920 [20] https://github.com/NTMC-Community/MatchZoo. [21] https://github.com/baidu/AnyQ [22] https://github.com/PaddlePaddle/models
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82473.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!