论文笔记--SentEval: An Evaluation Toolkit for Universal Sentence Representations

news2024/11/15 14:06:23

论文笔记--SentEval: An Evaluation Toolkit for Universal Sentence Representations

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 evaluation pipeline
    • 3.2 使用
  • 4. 代码
    • 4.1 数据下载
    • 4.2 句子嵌入
    • 4.3 句子嵌入评估
  • 5. 文章亮点
  • 6. 原文传送门
  • 7. References

1. 文章简介

  • 标题:SentEval: An Evaluation Toolkit for Universal Sentence Representations
  • 作者:Alexis Conneau, Douwe Kiela
  • 日期:2018
  • 期刊:arxiv preprint

2. 文章概括

  文章给出了一个可以自动评估NLP句子嵌入向量的开源工具SentEval,思想简单,操作便捷。由于很多当前的语言模型在评估下游任务的时候直接采用该工具包,所以笔者今天来学习一下原论文(也很精简)

3 文章重点技术

3.1 evaluation pipeline

  文章尝试将句子嵌入评估封装为一套简单清晰的pipeline。原文的SentEval支持一下NLP任务的评估

  • 二分类/多分类:包括情感分类(MR, SST)、问答类分类(TREC))、产品评论分类(CR)、主观客观分类(SUBJ)、倾向性分类(MPQA)。文章会将句子嵌入的顶层增加一个Logistic Regression/MLP(Multiple Perceptron)分类器,然后通过10-fold交叉验证评估句子嵌入的性能。
  • 句子蕴含和语义相关性分析:文章选用SICK-E数据集来评估句子蕴含类任务,和上述分类方法一致;针对语义相关性任务,文章使用SICK-R和STS数据集进行评估:数据集包含0~5之间的分值表示两个句子的相似度,文章采用[1]中的句子相关性分析方法来计算句子相关性得分,最后给出采用当前句子嵌入得到的相关性得分和真实得分之间的Pearson/Spearman相关系数作为评估标准。
  • STS语义相似度:文章在SemEval数据集(包括新闻、评论、图像视频描述、标题、新闻对话)上进行相似度评估,该数据集每个句子对应一个0-5之间的相似度得分,文章会计算给定句子嵌入之间的cosine相似度,然后得到cosine相似度和真实相似度之间的Pearson/Spearman相关系数作为评估标准
  • 段落检测:文章采用MRPC数据集用于评估段落检测类NLP任务,该数据集包含句子对及标签,标签反应句子是否为同义/同段落
  • 标题图像检索
    当前SentEval支持的下游任务可在github上查看:
    在这里插入图片描述

3.2 使用

  工具的使用非常简单,开发人员只需要自定义preparebatcher函数,分别用于句子与处理和句子嵌入生成即可。此外开发人员可通过修改params来控制参数

4. 代码

  下面为实际使用SentEval的代码/命令行

4.1 数据下载

  SentEval可通过运行get_transfer_data.bash自动下载全部数据集,读者可以自行注释掉无关的数据集以提升效率/节约存储。下载成功之后数据集会自动存储到data/downstream/文件夹下。

4.2 句子嵌入

  现在我们要评估句子嵌入的表现。假设我们要评估fastText向量(读者可以替换为自己训练的向量),首先通过curl -Lo crawl-300d-2M.vec.zip https://dl.fbaipublicfiles.com/fasttext/vectors-english/crawl-300d-2M.vec.zip下载fasttext/crawl-300d-2M.vec向量,要保证下载路径和bow.py中的PATH_TO_VEC一致,然后将文件解压即可。

4.3 句子嵌入评估

  以bow向量(fastText)为例,SentEval给出了bow.py示例,开发人员可以类似地构造自己的句子嵌入类。首先要构造函数prepare(params, dataset),后续传入评估pipeline中的do_prepare。这里只需要包含必要的预处理即可。
  然后构造函数batcher(params, batch),对传入的句子batch进行嵌入表示,返回嵌入数组,传入评估pipeline中的run()
  最后只需要运行python bow.py即可,可在main方法中将不需要的tasks注释掉。注意如果没有cuda,需要在classifier.py中和cuda相关的注释掉或者改成cpu
  笔者这里只试验了一小部分Vec和一小部分TREC数据,最终可以得到如下评估结果。使用还是非常简单的。
TREC-bow

5. 文章亮点

  文章给出了一种自动评估NLP下游任务/probing任务的工具,可以自动下载多种NLP任务的数据,且将预处理、句子嵌入生成和评估集成为一套pipeline,使用非常便捷,为NLP模型发展提供了便利性,实现NLP学术研究成果评估的一致性。

6. 原文传送门

SentEval: An Evaluation Toolkit for Universal Sentence Representations

7. References

[1] Improved semantic representations from tree-structured long short-term memory networks
[2]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/735636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows PE 指南(基础部分)(一)

windows PE 指南(基础部分)(一) 查找软件注册码64位汇编和编译连接PE和COFF文件简介PE和COFF文件布局简介源代码的作用obj的作用PE的作用 COFF格式文件布局概览PE格式文件布局概览COFF格式和PE格式的布局总结 COFF头COFF File Hea…

linux的磁盘分区管理思路

1、基本分区管理 1.1、磁盘划分思路 进入分区 新建分区 fdisk 更新分区表(刷新)partprobe /dev/sda 格式化 (文件系统) 挂载使用 - -> mount(开机自动挂载||autofs自动挂载) 1.2、使用fdisk分区 n创建新分区(…

一、VMware虚拟机安装以及centos7镜像安装

目录 一、安装VMware虚拟机 二、centos7安装 (模板机) 2.1 虚拟机安装 2.2 虚拟机配置 三、配置服务器 IP 地址 1. VMware中配置 2. window服务器 3. 在虚拟机中(centos0) 资源包网盘链接:链接:https://pan.bai…

ActiveMQ消息中间件应用场景

一、ActiveMQ简介 ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provide实现。尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中仍然扮演这特殊的地位。 二、Active…

速成版-带您一天学完vue2框架

vue是一个前端js框架,可以简化Dom操作,实现响应式数据驱动。前面全是废话,哈哈,接下来一起学习吧。 目录 一、vue基础 1.1、vue简介 1.2、第一个Vue程序 1.3、vue基础-el挂载点 1.4、data数据对象 二、本地应用-指令篇 2.…

DESCN:用于个体治疗效果估计的深度全空间交叉网络

英文题目:DESCN: Deep Entire Space Cross Networks for Individual Treatment Effect Estimation 翻译:用于个体治疗效果估计的深度全空间交叉网络 单位:阿里 论文链接: 代码:https://github.com/kailiang-zhong/…

由中序及后序遍历序列构建二叉树的函数参数解析

【二叉树构建函数的参数确立示意图】 ile:中序遍历左端点位置,iri:中序遍历右端点位置 ple:后序遍历左端点位置,pri:后序遍历右端点位置 【函数代码】 int build(int ile,int iri,int ple,int pri){int ro…

(文章复现)考虑微网新能源经济消纳的共享储能优化配置matlab代码

参考文献: [1]谢雨龙,罗逸飏,李智威等.考虑微网新能源经济消纳的共享储能优化配置[J].高电压技术,2022,48(11):4403-4413. 1.基本原理 双层规划是具有两个层次的优化问题,具有外层和内层两个优化目标,本研究的问题结构如图2所示。两层问题相…

打印机不打印故障检查步骤

第一步:检查打印机电源是否接通、打印机电源开关是否打开、打印机数据线的连接是否正确。 第二步:检查打印机进纸盒中是否有纸,打印机内是否卡纸,感光鼓组件是否有问题。 第三步:检查应用程序是否有问题或存在病毒。 第…

C#,数值计算——分数阶的贝塞尔函数(Bessel functions of fractional order)源代码

分数阶微积分这一重要的数学分支,其诞生在1695年,几乎和经典微积分同时出现。那一年,德国数学家Leibniz 和法国数学家LHopital 通信,探讨当导数的阶变为1/2时,其意义是什么?当时Leibniz也不知道定义与意义&…

强化学习-理解及应用:解决迷宫问题

什么是强化学习? 强化学习(Reinforcement Learning, RL)是一种机器学习方法,旨在让智能体(agent)通过与环境的交互学习如何做出最优的行动选择以获得最大的累积奖励。 7个基本概念 强化学习主要由智能体…

YApi-高效、易用、功能强大的可视化接口管理平台——(三)YApi 项目管理

YApi 项目管理 新建项目修改项目图标项目迁移项目拷贝删除项目配置环境请求配置请求参数示例返回数据示例storage工具函数异步处理(v1.3.13支持) token全局mock 新建项目 点击右上角的 新建项目,进入新建项目页面: 完善项目信息…

JVM理论(三)运行时数据区--PC寄存器/虚拟机栈/本地方法栈

运行时数据区(JVM内存结构) JVM内存结构 内存是非常重要的资源,是硬盘和CPU的中间桥梁,承载操作系统和应用程序的实时运行.JVM内存布局规定java在运行过程中内存申请、分配、管理的策略,保证JVM高效稳定运行。不同的JVM对于内存划分和管理机制存在部分差异(如J9和JR…

Nacos2.3.0源码启动报错找不到符号com.alibaba.nacos.consistency.entity

一. 源码下载编译:找不到符号com.alibaba.nacos.consistency.entity 如果报错找不到符号com.alibaba.nacos.consistency.entity Nacos\consistency\src\main\java\com\alibaba\nacos\consistency\entity 这个包下没有相关的java文件,其实是我们没有编译…

Vue.js 双向数据绑定的具体实现代码(简洁版)

1、 执行初始化,对data执行响应化处理 先来一个构造函数:执行初始化,对data执行响应化处理 class Vue { constructor(options) { this.$options options; this.$data options.data; // 对data选项做响应式处理 observe(this.$data);…

Linux性能优化实践——CPU上下文

CPU上下文切换 Linux是一个多任务操作系统,它支持远大于CPU数量的任务同时运行。这些任务不是真正意义上的并行运行,而是系统在短时间内,将CPU轮流分配给它们,造成任务同时运行的错觉。 CPU需要知道任务从哪里加载,从…

使用 OpenVINO™ 转换和优化 YOLOv8

本教程还可以作为 Jupyter Notebook 提供,可以直接从 GitHub 克隆。请参阅安装指南,了解在 Windows、Linux 或 macOS 上本地运行本教程的说明。 Ultralytics 开发的 YOLOv8 算法是一种尖端、最先进的 (SOTA) 模型,旨在快速、准确且易于使用,使其成为各种物体检测、图像分割…

Cartoon头像 InsCode Stable Diffusion 美图活动一期

一. 简单介绍和活动地址 简单介绍 试用Stable Diffusion 模型生成优质人物好图,更简单地炼丹。 “InsCode是一个集成了在线IDE、在线AI编程、在线算力租赁、在线项目部署以及在线SD 模型使用的综合代码开发平台。不论你是初级软件工程师,还是AI大模型…

【Java】删除集合元素的正确与错误做法

错误做法 一、fori正序 list.remove(num) Test public void test031(){ ArrayList<Integer> list new ArrayList<>(); list.add(1); list.add(3); list.add(3); for (int i 0; i < list.size(); i) { Integer numlist.get(i); if(num3){ list.re…

数据集 VOC转YOLO格式

一、xml转换为txt import os.path import xml.etree.ElementTree as ET import os import random # class_names [palm, stone, scissor, awesome, heartB, OK, ROCK, one, swear, thanks, heartA, # heartC, good, bad, pray, call, take_picture, salute] c…