首页 > 其他分享 >挖掘文本的奇妙力量:传统与深度方法探索匹配之道

挖掘文本的奇妙力量:传统与深度方法探索匹配之道

时间:2023-10-16 15:12:51浏览次数:39  
标签:BERT 匹配 模型 奇妙 之道 文本 句子 向量

挖掘文本的奇妙力量:传统与深度方法探索匹配之道

文本向量表示咋做?文本匹配任务用哪个模型效果好?

许多 NLP 任务的成功离不开训练优质有效的文本表示向量。特别是文本语义匹配(Semantic Textual Similarity,如 paraphrase 检测、QA 的问题对匹配)、文本向量检索(Dense Text Retrieval)等任务。

1. 传统方法:基于特征的匹配

  • 基于 TF-IDF、BM25、Jaccord、SimHash、LDA 等算法抽取两个文本的词汇、主题等层面的特征,然后使用机器学习模型(LR, xgboost)训练分类模型
  • 优点:可解释性较好
  • 缺点:依赖人工寻找特征,泛化能力一般,而且由于特征数量的限制,模型的效果比较一般

代表模型:

  • BM25

BM25 算法,通过候选句子的字段对 qurey 字段的覆盖程度来计算两者间的匹配得分,得分越高的候选项与 query 的匹配度更好,主要解决词汇层面的相似度问题。

2.深度方法:基于表征的匹配

  • 基于表征的匹配方式,初始阶段对两个文本各自单独处理,通过深层的神经网络进行编码(encode),得到文本的表征(embedding),再对两个表征进行相似度计算的函数得到两个文本的相似度
  • 优点:基于 BERT 的模型通过有监督的 Fine-tune 在文本表征和文本匹配任务取得了不错的性能
  • 缺点:BERT 自身导出的句向量(不经过 Fine-tune,对所有词向量求平均)质量较低,甚至比不上 Glove 的结果,因而难以反映出两个句子的语义相似度

主要原因是:

1.BERT 对所有的句子都倾向于编码到一个较小的空间区域内,这使得大多数的句子对都具有较高的相似度分数,即使是那些语义上完全无关的句子对。

2.BERT 句向量表示的聚集现象和句子中的高频词有关。具体来说,当通过平均词向量的方式计算句向量时,那些高频词的词向量将会主导句向量,使之难以体现其原本的语义。当计算句向量时去除若干高频词时,聚集现象可以在一定程度上得到缓解,但表征能力会下降。

代表模型:

由于 2018 年 BERT 模型在 NLP 界带来了翻天覆地的变化,此处不讨论和比较 2018 年之前的模型(如果有兴趣了解的同学,可以参考中科院开源的 MatchZooMatchZoo-py)。

所以,本项目主要调研以下比原生 BERT 更优、适合文本匹配的向量表示模型:Sentence-BERT(2019)、BERT-flow(2020)、SimCSE(2021)、CoSENT(2022)。

3.深度方法:基于交互的匹配

  • 基于交互的匹配方式,则认为在最后阶段才计算文本的相似度会过于依赖文本表征的质量,同时也会丢失基础的文本特征(比如词法、句法等),所以提出尽可能早的对文本特征进行交互,捕获更基础的特征,最后在高层基于这些基础匹配特征计算匹配分数
  • 优点:基于交互的匹配模型端到端处理,效果好
  • 缺点:这类模型(Cross-Encoder)的输入要求是两个句子,输出的是句子对的相似度值,模型不会产生句子向量表示(sentence embedding),我们也无法把单个句子输入给模型。因此,对于需要文本向量表示的任务来说,这类模型并不实用

代表模型:

Cross-Encoder 适用于向量检索精排。

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

标签:BERT,匹配,模型,奇妙,之道,文本,句子,向量
From: https://www.cnblogs.com/ting1/p/17767340.html

相关文章

  • 高效解决方案:Java轻松批量查找与替换Excel文本
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在Excel中,我们经常会使用快捷键Ctrl+F和Ctrl+H对查找的内容进行替换。但是这种情况对于单个的Excel还是很适合的,那如果遇到Excel......
  • 初探富文本之React实时预览
    初探富文本之React实时预览在前文中我们探讨了很多关于富文本引擎和协同的能力,在本文中我们更偏向具体的应用组件实现。在一些场景中比如组件库的文档编写时,我们希望能够有实时预览的能力,也就是用户可以在文档中直接编写代码,然后在页面中实时预览,这样可以让用户更加直观的了解组......
  • QT基础教程(文本绘制)
    (文章目录)前言本篇文章我们来讲解一下QT中使用QPainter来绘制文本的案例。一、普通文本绘制在Qt中,你可以使用QPainter类来绘制文本,包括普通文本、格式化文本和自定义文本效果。下面是使用QPainter绘制文本的基本方法和示例:1.绘制普通文本:使用QPainter的drawText......
  • 文本识别 (OCR)引擎之Tesseract的使用
    Tesseract概述Tesseract是一个开源文本识别(OCR)引擎,是目前公认最优秀、最精确的开源OCR系统,用于识别图片中的文字并将其转换为可编辑的文本。Tesseract能够将印刷体文字图像转换成可编辑文本,它支持多种语言,并且在许多平台上都可使用,包括Windows、MacOS和Linux。Tesseract......
  • 基于Win 自带的.NET FrameWork平台,使用文本文件编写C#代码,命令行编译以及引用第三方库
    转载自https://www.infoq.cn/article/2015/12/visual-studio-windows 不用VisualStudio也能开发.NETWindows应用邵思华2015-12-29本文字数:2915字阅读完需:约10分钟对于.NET应用的开发人员而言,以VisualStudio(简称VS)作为首选的开发工具应当是一种最......
  • vue-quill-editor富文本编辑器
    安装npm vue-quill-editornpminstallvue-quill-editor--save引入main.js文件里//字典标签组件importquillEditorsfrom"./components/quillEditor/index";//注册全局容器Vue.component("quillEditors",quillEditors);//富文本框文件目录预览openai的chatgpt描述一个表......
  • C# 向当前活动文本框输入文字
    #region向当前活动文本框输入文字///<summary>///向当前活动文本框输入文字///newSendMsg().SendText("你要输入的字符串");///</summary>publicclassSendMsg{[DllImport("user32.dll")]publicstaticexternIntP......
  • linux 中给文本按照指定列标记重复次数
     001、[root@pc1test2]#lsa.txt[root@pc1test2]#cata.txt##测试数据abbabcffba[root@pc1test2]#awk'{ay[$0]++;printay[$0],$0}'a.txt##按照列标记重复次数1a1b2b2a3b1c1f2f4b3a 。 ......
  • 使用 Open XML SDK 实现 html 富文本转换为 docx 格式示例
     使用OpenXMLSDK实现html富文本转换为docx格式文档相对复杂。下面是一个示例。手动检测<strong>和<em>标签并应用相应的文本格式。usingSystem;usingDocumentFormat.OpenXml;usingDocumentFormat.OpenXml.Packaging;usingDocumentFormat.OpenXml.Wordproces......
  • Java word文本分词器简单使用
    1、引入依赖<dependency><groupId>org.apdplat</groupId><artifactId>word</artifactId><version>1.2</version></dependency>2、使用@OverridepublicList&l......