NLP 的 Task 和 Metric (Perplexity,BLEU,METOR,ROUGH,CIDEr)

2024-01-01 00:10

本文主要是介绍NLP 的 Task 和 Metric (Perplexity,BLEU,METOR,ROUGH,CIDEr),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Task

在这里插入图片描述

1. 信息检索IR(Information Retrieval)

信息检索(NLU)是指通过在大规模的文本库或数据库中搜索相关信息,将与用户查询匹配的文档或记录返回给用户。信息检索主要涉及到索引构建、查询处理和结果排序等技术,旨在帮助用户快速有效地获取所需的信息。

在这里插入图片描述
讲query和documents映射到同一个特征空间,进行相似度计算,避免传统IR中词汇和语义失配的问题。
在这里插入图片描述

模型架构

在这里插入图片描述

Cross-Encoder架构:先将 query 和 document 的tokens进行拼接一起送入共同的LM,将CLS token作为两者的共同表征。Pairwise hinge loss 类似三元组损失,用于拉近正样本对,分离负样本对。

在这里插入图片描述

Dual-Encoder架构:分别对query 和 document 进行编码,再对特征向量计算NLL损失,对比学习。

在这里插入图片描述

这个架构的好处在于,可以提前对document进行编码,构建index索引,有新的query时,只对query进行编码,使用faiss等KNN向量库,实现快速匹配。

在这里插入图片描述

评价指标Metric

用于衡量检索系统在返回前K个结果时的性能 (仅对TOP-K个检索对象进行评价)。

  • MRR@K(平均倒数排名Mean Reciprocal Rank at K):它衡量的是在给定查询集合Q上,第一个相关文档出现在前K个返回结果中的平均倒数排名。注意,这里的“倒数排名”表示相关文档在结果列表中的位置的倒数,例如,倒数第一表示在第一个位置。MRR@K值越高,表示系统更快地返回首个相关文档。
    在这里插入图片描述

  • MAP@K(平均准确率排名Mean Average Precision at K):它衡量的是在给定查询集合上,前K个返回结果的平均准确率(Precision)。MAP@K考虑了结果的排序和每个位置上结果的准确性,得分越高表示系统在前K个结果中的平均准确率越高。
    在这里插入图片描述

  • NDCG@K(标准化折损累计增益Normalized Discounted Cumulative Gain at K):NDCG衡量的是返回结果列表的相关性排序质量。在NDCG计算中,相关性被赋予不同的权重,根据其在排序列表中的位置和级别,较高的相关性被赋予更高的权重。NDCG@K值越高,表示系统在前K个结果中的相关性排序质量越好。
    在这里插入图片描述
    在这里插入图片描述

发展方向

  1. 如何挖掘更难的负样本对儿?

在这里插入图片描述
ANCE使得模型在训练过程中,异步维护一个inference程序,每训练k步做一次inference,把推理中排名靠前的错误结果作为难负样本,将其加入下一轮的训练过程中。
在这里插入图片描述

  1. 如何更好的做大模型的预训练?

SEED使用 很弱的decoder 去强迫 encoder 产生更强的CLS特征表示。

在这里插入图片描述

  1. 如何提升模型的few-shot性能?

在这里插入图片描述

2. 文本生成TG(Text Generation)

文本生成(NLG)是指使用计算机自动生成自然语言文本的过程。文本生成可以基于特定的规则、模板或者统计模型来进行,它可以用于生成各种形式的文本,如文章、对话、摘要、标题等。文本生成的应用领域包括自动摘要、机器翻译、智能客服等。

在这里插入图片描述

主要包含两种文本生成模式:data2text、text2text,这2个任务都属于自然语言生成领域,但关注的问题和任务目标略有不同。data2text主要关注如何将结构化数据转化为自然语言文本,而text2text则涵盖了各种文本到文本的转化任务。

2.1 Data-to-text

输入的data可以是image(图像理解)、table(表格理解)、graph、json等非文本数据,输出对data的总结文本

在这里插入图片描述
data2text(数据到文本):该任务的目标是根据给定的结构化数据,将其转化为自然语言文本。常见的应用包括生成报告、摘要、描述等。例如,在天气预报中,将气象数据(如温度、湿度等)转化为可读的天气预报文本。

2.2 Text-to-text

text2text(文本到文本)是一个广泛的任务领域,涵盖了各种自然语言生成任务。text2text的目标是将输入的自然语言文本转化为另一种形式的自然语言文本,如机器翻译、文本摘要、问答生成、文本风格转换等。例如,将一篇英文文章翻译成中文,将一段文本生成概括性摘要,或者将问题转化为回答。
在这里插入图片描述
比如摘要 总结
在这里插入图片描述

比如对话系统旨在实现人机之间的自然对话交互。它可以是任务驱动型对话系统,根据用户提供的指令或需求回答问题或完成任务;也可以是开放型对话系统,与用户进行自由对话。对话系统需要理解上下文、生成连贯的回复并与用户进行有效的交互。在这里插入图片描述

模型架构

在这里插入图片描述

decoder类型:

在这里插入图片描述

评价指标Metric

**通用指标:**BLUE、Perplexity、ROUGH、NIST、METOR、CIDEr

在这里插入图片描述
在这里插入图片描述

其他指标

在这里插入图片描述

可控文本生成Control TG

输入:prompt + text
在这里插入图片描述

模型层面:Prefix + Model
在这里插入图片描述

修改概率分布:
在这里插入图片描述

修改模型结构:

在这里插入图片描述

3. 问答QA(Question Answering)

问答(NLU+NLG)是指系统根据用户提出的问题,在预定义的知识库文本集合中,寻找并生成准确的答案。问答可以结合NLU和NLG两个方面的技术。NLU用于理解用户的问题,将其转化为机器可以理解的形式,并确定查询的关键信息。NLG则用于将从知识库中找到的答案生成自然语言形式的回答并返回给用户。

  • 阅读理解问答:要求机器阅读并理解输入的文本和问题,在此基础上,解答跟文本信息相关的问题。

  • 开放域问答:Open-domain QA则是我们可以问任何事实性问题,而不在输入中给任何提示文本,可以自己直接生成答案,也可以检索外部知识库生成答案。

3.1 阅读理解RC

RC Task设计有:Cloze test完形填空(CNN/Daily Mail、CBT)Multiple choice多选(RACE)Extractive 答案在原文的提取问答(SQuAD)

模型架构

在这里插入图片描述

可以直接把query和reference拼在一起,送入BERT等语言模型一起编码交互:

在这里插入图片描述

大模型统一了阅读理解的形式:将提取式阅读理解(答案在文中)、总结式阅读理解(答案不在文中)、选择题、判断题等多种问题,统一为text2text的范式。

在这里插入图片描述

3.2 开放域问答 OQA

Open-domain QA则是我们可以问任何事实性问题,一般是给你一个海量文本的语料库,比方Wikipedia/百度百科,让你从这个里面去找回答任意非主观问题的答案,这显然就困难地多。

模型架构
  • 生成式模型generate-based:大模型的庞大参数蕴含大量知识,可以脱离外部知识库,直接生成答案。
    在这里插入图片描述

  • 检索式模型retrieve-based:① 文本检索:需要一个retriever,从海量文本中(知识库/互联网),找到跟question最相关的N篇文档,这些文档中包含了该问题的答案; ② 阅读理解:需要一个reader,从上面抽取出来的文档中,找到具体答案。
    在这里插入图片描述

RAG检索增强生成:联合预训练检索器和大语言模型,如REALM。
在这里插入图片描述

mask掉unlabel的文本做完形填空,将mask的text作为query,将query和检索到的前k个知识库内容拼接,送入大模型进行生成answer(回答被mask掉的text)。

在这里插入图片描述

除了在提前构架好的外部知识库中检索,还可以在互联网上进行海量检索:

在这里插入图片描述

Metric

BLEU, METEOR, ROUGE 一般在机器翻译里用,CIDEr 一般在图像字幕生成里用

Perplexity

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

BLEU

所谓BLEU,最开始是用于机器翻译中。他的思想其实很native,对于一个给定的句子,有标准译文S1,还有一个神经网络翻译的句子S2。BLEU的思想就是对于出现机器翻译S2的所有短语,看有多少个短语出现在S1中,然后算一下这个比率就是BLEU的分数了(类似precision)。首先根据n-gram划分一个短语包含单词的数量,有BLEU-1,BLEU-2,BLEU-3,BLEU-4。分别就是把文章划分成长度为1个单词的短语,长度为2个单词的短语…然后统计这些短语出现在标准译文中个数,在分别除以划分总数,就是对应的BLEU-1分数,BLEU-2分数…,其实就是准确率。看这些划分的短语中有多少是出现在标准译文当中的。一般而言:unigram 的准确率可以用于衡量单词翻译的准确性,更高阶的 n-gram 的准确率可以用来衡量句子的流畅性 n{1,2,3,4}

但是BLEU会有个缺陷,假如我就翻译一个单词,而这个单词正好在标准译文中(译文特别短),那岂不是准确率100%,对于这个缺陷,BLEU算法会有个长度惩罚因子,就是翻译太短了就会有惩罚。还有一个缺陷就是BLUE score没有考虑译文中单词的顺序。

代码层面具体怎么使用建议看:https://zhuanlan.zhihu.com/p/404381278

METOR

其大意是说有时候翻译模型翻译的结果是对的,只是碰巧跟参考译文没对上(比如用了一个同义词),于是用 WordNet 等知识源扩充了一下同义词集,同时考虑了单词的词形(词干相同的词也认为是部分匹配的,也应该给予一定的奖励,比如说把 likes 翻译成了 like 总比翻译成别的乱七八糟的词要好吧?)在评价句子流畅性的时候,用了 chunk 的概念(候选译文和参考译文能够对齐的、空间排列上连续的单词形成一个 chunk,这个对齐算法是一个有点复杂的启发式 beam serach),chunk 的数目越少意味着每个 chunk 的平均长度越长,也就是说候选译文和参考译文的语序越一致。最后还有召回率和准确率两者都要考虑,用 F 值作为最后的评价指标。

METEOR 的缺点也很明显,其一是只有 Java 实现,而且还是 jar 包不是 API,只能算整个测试集上的 METEOR 而不是每条语句单独测(除非你把每条语句单独写到文件里然后调 jar 包),实在是太蠢了。在 Python 统治深度学习的当下,可想而知很少有人用这个指标……

ROUGH

ROUGE算法基本思路和BLEU差不多,不过它统计的是召回率,也就是对于标准译文中的短语,统计一下它们有多少个出现在机器翻译的译文当中(刚好和BLUE反过来),其实就是看机器翻译有多少个翻译对了,这个评价指标主要在于标准译文中的短语都出现过,那么自然机器翻译的译文越长结果越好。

CIDEr

常用语图像字幕生成,CIDEr 是 BLEU 和向量空间模型的结合。它把每个句子看成文档,然后计算 TF-IDF 向量(只不过 term 是 n-gram 而不是单词)的余弦夹角,据此得到候选句子和参考句子的相似度,同样是不同长度的 n-gram 相似度取平均得到最终结果。优点是不同的 n-gram 随着 TF-IDF 的不同而有不同的权重,因为整个语料里更常见的 n-gram 包含了更小的信息量。图像字幕生成评价的要点是看模型有没有抓取到关键信息,比如说一幅图的内容是『白天一个人在游泳池游泳』,其中最关键的信息应该是『游泳』,生成字幕时如果包含或者漏掉了一些别的信息(比如说『白天』)其实是无关紧要的,所以需要这么一种对非关键词降权的操作。

这篇关于NLP 的 Task 和 Metric (Perplexity,BLEU,METOR,ROUGH,CIDEr)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/557600

相关文章

Metric Matrice(nyoj545)

Metric Matrice 时间限制: 1000 ms  |  内存限制: 65535 KB 难度:1 描述 Given as input a square distance matrix, where a[i][j] is the distance between point i and point j, determine if the distance matrix is

兔子--Android Studio出现错误:Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.pro

重点在:finished with non-zero exit value 2. 这里表明了有重复的内容存在。 由于:Android Studio中引入包的方式有如下2种:    compile 'com.android.support:support-v4:22.0.0'    compile files('libs/support-v

【python 走进NLP】两两求相似度,得到一条文本和其他文本最大的相似度

应用场景: 一个数据框里面文本,两两求相似度,得到一条文本和其他文本最大的相似度。 content source_id0 丰华股份军阀割据发生的故事大概多少w 11 丰华股份军阀割据发生的故事大概多少 22 丰华股份军阀割据发生的故事大概多少 33 丰华股份军阀割据发生的故事大概多少

【Python 走进NLP】NLP词频统计和处理停用词,可视化

# coding=utf-8import requestsimport sysreload(sys)sys.setdefaultencoding('utf-8')from lxml import etreeimport timetime1=time.time()import bs4import nltkfrom bs4 import BeautifulSoupfrom

【java 走进NLP】simhash 算法计算两篇文章相似度

python 计算两篇文章的相似度算法simhash见: https://blog.csdn.net/u013421629/article/details/85052915 对长文本 是比较合适的(超过500字以上) 下面贴上java 版本实现: pom.xml 加入依赖 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</a

【python 走进NLP】simhash 算法计算两篇文章相似度

互联网网页存在大量的重复内容网页,无论对于搜索引擎的网页去重和过滤、新闻小说等内容网站的内容反盗版和追踪,还是社交媒体等文本去重和聚类,都需要对网页或者文本进行去重和过滤。最简单的文本相似性计算方法可以利用空间向量模型,计算分词后的文本的特征向量的相似性,这种方法存在效率的严重弊端,无法针对海量的文本进行两两的相似性判断。模仿生物学指纹的特点,对每个文本构造一个指纹,来作为该文本的标识,从形式上来

【python 走进NLP】文本相似度各种距离计算

计算文本相似度有什么用? 1、反垃圾文本的捞取 “诚聘淘宝兼职”、“诚聘打字员”…这样的小广告满天飞,作为网站或者APP的运营者,不可能手动将所有的广告文本放入屏蔽名单里,挑几个典型广告文本,与它满足一定相似度就进行屏蔽。 2、推荐系统 在微博和各大BBS上,每一篇文章/帖子的下面都有一个推荐阅读,那就是根据一定算法计算出来的相似文章。 3、冗余过滤 我们每天接触过量的信息,信息之间存在大量

【python 走进NLP】句子相似度计算--余弦相似度

余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中,如最常见的二维空间。 github 参考链接:https://github.com/ZhanPwBibiBibi/CHlikelihood # -*- coding: utf-8 -*-import jiebaimport numpy as npimpor

【python 走进NLP】从零开始搭建textCNN卷积神经网络模型

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 1、众所周知,tensorflow 是一个开源的机器学习框架,它的出现大大降低了机器学习的门槛,即使你没有太多的数学知识,它也可以允许你用“搭积木”的方式快速实现一个神经网络,即使没有调节太多的参数,模型的表现一般还

Anchor Alignment Metric来优化目标检测的标签分配和损失函数。

文章目录 背景假设情况任务和目标TaskAligned方法的应用1. **计算Anchor Alignment Metric**2. **动态样本分配**3. **调整损失函数** 示例总结 背景 假设我们在进行目标检测任务,并且使用了YOLOv8模型。我们希望通过TaskAligned方法来优化Anchor与目标的匹配程度,从而提升检测效果。 假设情况 图像: 一张包含