Huggy Lingo: 利用机器学习改进 Hugging Face Hub 上的语言元数据

news2024/9/23 13:28:11

太长不看版: Hub 上有不少数据集没有语言元数据,我们用机器学习来检测其语言,并使用 librarian-bots 自动向这些数据集提 PR 以添加其语言元数据。

Hugging Face Hub 已成为社区共享机器学习模型、数据集以及应用的存储库。随着 Hub 上的数据集越来越多,元数据,作为一种能帮助用户找到所需数据集的工具,变得越来越重要。

我们很高兴能够通过本文与大家分享我们的一些早期实验,这些实验旨在利用机器学习来改进 Hugging Face Hub 上托管的数据集的元数据。

Hub 上数据集的语言元数据

目前 Hugging Face Hub 上约有 5 万个公开数据集。用户可以通过 数据集卡 顶部的 YAML 字段设定其语言元信息。

我们目前支持 1716 种语言标签,所有的公开数据集都可以在其语言元信息中指定其一。请注意,有些语言会有多个不同的语言标签,如 enengenglishEnglish 都是英语。

举个例子,IMDB 数据集 的 YAML 元数据中的语言标签为 en :

3369f2958711d060f85b7708080cbb89.png
IMDB 数据集的 YAML 元数据部分

迄今为止,Hub 上数据集上最常见的语言是英语,有大约 19% 的数据集将其语言标注为 en (这还没把 en 的其他变体统计在内,因此实际百分比可能会比 19% 要高得多)。这个现象符合我们的预期。

8751c6f50d309c80332b392aa9ed5531.png
    Hugging Face Hub 上的数据集的频率及占比

如果排除掉英语,语言分布又如何呢?我们可以看到,有几种语言相对占主导,随后的其他语言的频率则出现了平稳下降。

7cdc987a5ab665a808b1e873953812b0.png
    Hub 上数据集的语言标签分布情况 (除英语外)

这里,我们发现一个重大问题,那就是大多数数据集 (约 87%) 没有指明其所使用的语言,只有大约 13% 的数据集在其元数据中指明了语言信息。

a866c01e2ca3091a4ba38bcc29c4b5c0.png
    具有语言元数据的数据集占比。True 表示指明了语言元数据,False 表示未列出语言元数据。No card data 意味着没有任何元数据,抑或是`huggingface_hub` Python 库无法加载它。

为什么语言元数据很重要?

语言元数据是查找相关数据集的重要工具。Hugging Face Hub 允许用户按语言过滤数据集。例如,如果想查找荷兰语数据集,我们可以在 Hub 上用 过滤器 过滤出仅包含荷兰语的数据集。

目前,此过滤器返回 184 个数据集。但是,Hub 上其实还有别的一些数据集中包含荷兰语,但其未在元数据中指明语言,因此就很难被过滤器找到。随着 Hub 上数据集越来越多,这种现象会愈发严重。

许多人希望能够找到特定语言的数据集。而当前,为特定语言训练出优秀的开源 LLM 的主要障碍之一就是缺乏相应语言的高质量训练数据。

在为某些任务搜寻相关的机器学习模型时,了解模型的训练数据中包含哪些语言有助于我们找到能够支持我们想要的语言的模型。而这又依赖于相应的训练数据集中是否含有相关语言信息。

最后,了解 Hub 上有哪些语言 (以及没有哪些语言),有助于我们了解 Hub 在语种支持上的偏差,并为社区解决特定语言上的数据差距提供信息支持。

利用机器学习预测数据集的语言

我们已经看到 Hugging Face Hub 上的许多数据集并未包含语言元数据。然而,由于这些数据集已经公开,也许我们可以尝试利用机器学习来识别其语言。

获取数据

我们可以使用 datasets 库下载数据集并获取它的一些样本,代码如下:

from datasets import load_dataset

dataset = load_dataset("biglam/on_the_books")

对于 Hub 上的某些数据集,我们可能不希望下载整个数据集。我们可以尝试加载数据集的部分样本。然而,根据数据集的创建方式不同,对某些数据集,我们最终下载到机器上的数据可能仍比我们实际需要的多。

幸运的是,Hub 上的许多数据集都可以通过 datasets server 获得。Datasets server 是一个 API,其允许我们无需下载到本地即可访问 Hub 上托管的数据集。Datasets server 已被应用于数据集查看器预览功能,Hub 上托管的许多数据集都支持数据集查看器预览功能。

为了给语言检测实验准备数据,我们首先定义了一个白名单,其中包含了可能包含文本的列名及数据类型,如名字为 textprompt 的列以及数据类型为 string 的特征可能包含文本,但名字为 image 的列大概率是不相关的。这意味着我们可以避免为不相关的数据集预测其语言,例如为图像分类数据集预测语言。我们用 datasets server 获取 20 行文本数据并传给机器学习模型 (具体用多少行数据可以根据实际情况修改)。

这么做的话,我们可以对 Hub 上的大多数数据集,快速获取它们前 20 行数据的文本内容。

预测数据集的语言

获取到文本样本后,我们就需要预测其语言。这里有多种方法,目前,我们使用了由 Meta 为 “一个语言都不能少” 项目而开发的 facebook/fasttext-language-identification fastText 模型。该模型可以检测 217 种语言,这覆盖了 Hub 上托管的大多数数据集的语言。

我们将 20 个样本传给模型,由模型为每个数据集生成 20 个单独的语言预测 (每个样本一个)。

有了这些预测后,我们会进行一些额外的过滤,以决定我们是否接受这些预测作为元数据。主要步骤有:

  • 对每个数据集按预测语言进行分组: 某些数据集可能会预测出多种语言。此时,我们会按预测语言对这些样本进行分组。举个例子,如果返回英语和荷兰语两种预测,我们将样本按照预测语言分成两个组。

  • 分别计算每种预测语言的样本数。如果其中某种语言的样本比例低于 20%,我们就丢弃该预测。举个例子,如果我们有 18 个样本预测为英语,2 个样本预测为荷兰语,此时我们就会丢弃荷兰语预测。

  • 对每种语言的预测分求平均。如果平均分低于 80%,丢弃该预测。

314b3596ec02a7ab7061c5b42fc0e586.png
    预测过滤流程图

一旦完成过滤,我们就需要进一步决定如何使用这些预测。fastText 语言预测模型的输出为一个 ISO 639-3 代码 (一种语言代码的国际标准) 加一个文字代码。举个例子,输出 kor_Hang 的前半部分 kor 是韩语的 ISO 693-3 语言代码,而后半部分 Hang 是韩字的 ISO 15924 代码。

我们会丢弃文字代码,因为当前 Hub 尚未将此作为元数据的一部分。同时,我们会将模型返回的 ISO 639-3 语言代码转换为 ISO 639-1。这么做主要是因为 Hub UI 的数据集导航功能对 ISO 639-3 代码的支持更好。

还有一种情况需要处理,即某些 ISO 639-3 代码并没有对应的 ISO 639-1 代码。此时,如有必要,我们会手动指定映射,例如将标准阿拉伯语 ( arb ) 映射到阿拉伯语 ( ar )。如果无法进行显式映射,我们索性就放弃配置该数据集的语言元数据。我们会在后续工作中继续改进我们的方法。我们已经意识到,当前的方法确实是有缺点的,它人为减少了语言的多样性,并依赖于对某些语言映射关系的主观判断。

我们会持续改进,但当前我们并不会因为被问题绊住而停在原地。毕竟,如果我们无法与社区其他成员共享这些信息,那么预测数据集的语言又有什么用呢?有缺陷的信息总比没有信息好。

使用 Librarian-Bot 更新元数据

为了确保将这些有价值的语言元数据上传至 Hub,我们使用了 Librarian-Bot!Librarian-Bot 会采纳 Meta 的 facebook/fasttext-language-identification fastText 模型预测的语言信息,并自动生成 PR 以将此信息添加至各数据集的元数据中。

该系统可以快速高效地更新各数据集的语言信息,无需人类手动操作。一旦数据集的所有者批准并合并相应 PR,所有用户就都可以使用该语言元数据,从而显著增强 Hugging Face Hub 的可用性。你可以在 此处 跟踪 Librarian-Bot 的一举一动!

下一步

随着 Hub 上的数据集越来越多,元数据变得越来越重要,而其中语言元数据可以帮助用户甄别出合适自己场景的数据集。

在 Datasets server 和 Librarian-Bots 的帮助下,我们可以大规模地自动更新数据集元数据,这是手动更新无法企及的。我们正在用这种方法不断丰富 Hub,进而使 Hub 成为服务世界各地的数据科学家、语言学家和人工智能爱好者的强大工具。

🤗 宝子们可以戳 阅读原文 查看文中所有的外部链接哟!


英文原文: https://hf.co/blog/huggy-lingo

原文作者: Daniel van Strien

译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。

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

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

相关文章

git打tag以及拉取tag

场景:某次git代码发布后定版记录,将发版所在的commit时候代码打上tag记录,方便后期切换到对应tag代码位置。 查看所有tag名 git tag// 1.1.0 // 1.0.0查看tag和描述 git tag -l -n//1.0.0 云监管一期项目完结 //1.1.0 …

tcl 基础

exec catch file mkdir

使用爬虫爬取热门电影

文章目录 网站存储视频的原理M3U8文件解读网站分析代码实现 网站存储视频的原理 首先我们来了解一下网站存储视频的原理。 一般情况下&#xff0c;一个网页里想要显示出一个视频资源&#xff0c;必须有一个<video>标签&#xff0c; <video src"xxx.mp4"&…

第8课 将推流端与播放端合并为一对一音视频聊天功能

在第二章的第7课&#xff0c;我们实现了一个推流端&#xff0c;可以把音视频推送到rtmp服务器&#xff1b;在第一章的第4课&#xff0c;我们实现了一个播放器&#xff0c;可以正常播放rtmp音视频流。聪明的你应该可以想到了&#xff1a;把推流端和播放端合并在一起&#xff0c;…

求实创新 不断探索 浙江移动基于亚信科技AntDB数据库率先完成CRM系统全域改造

12日20日&#xff0c;中国信息通信研究院&#xff08;简称&#xff1a;信通院&#xff09;和中国通信标准化协会大数据库技术推进委员会&#xff08;CCSA TC601&#xff09;共同组织的2023年大数据库“星河&#xff08;Galaxy&#xff09;”案例评选结果发布。中国移动通信集团…

2024年天津体育学院专升本专业考试考生入场及考前须知

天津体育学院2024年高职升本科招生专业考试考生考前须知 一、考生入场及考试要求 1.考生于1月6日笔试考试当天&#xff0c;根据考试时间提前30分钟到达天津体育学院新校区东门&#xff0c;凭专业考试准考证、有效身份证原件&#xff0c;经查验合格后方可允许进入学校。 2.笔…

Java反射篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、实现Java反射的类:二、反射机制的优缺点:三、Java 反射 API前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、实现…

Centos服务器安装Certbot以webroot的方式定时申请SSL免费证书

最近发现原先免费一年的SSL证书都改为3个月的有效期了&#xff0c;原先一年操作一次还能接受&#xff0c;现在3个月就要手动续期整的太慢烦了&#xff0c;还是让程序自动给处理下吧&#xff0c; 安装 Certbot yum install epel-release -y yum install certbot -yEPEL是由 Fe…

海盗传说^^

欢迎来到程序小院 海盗传说 玩法&#xff1a;海盗版俄罗斯方块&#xff0c;上键 ↑变换、 左键 ← 左移、右键 → 右移、下键 ↓ 加速, 快去玩海盗版俄罗斯方块吧^^。开始游戏https://www.ormcc.com/play/gameStart/240 html <canvas id"canvas" moz-opaque>&…

Scrum的工件

我们采用了Scrum进行开发方面的管理&#xff0c;那么所有的计划和工作都应该是透明的&#xff0c;这给了我们检查这些东西的机会&#xff0c;以便能够即时做出调整来适应即将发生的变化。 那么Scrum为我们设计了一些工件帮助我们检查我们的工作和计划&#xff0c;每个工件都有…

Chinese-llama-2部署踩坑记录

Chinese-llama-2部署踩坑记录 1. Chinese-LLaMA-Alpaca-2A. 部署a. inference_with_transformers_zhb. text generation webui_zhc. api_calls_zhd. llamacpp_zhe. privategpt_zhf. langchain_zh Tool Github 1. Chinese-LLaMA-Alpaca-2 A. 部署 a. inference_with_transform…

L1-085:试试手气

我们知道一个骰子有 6 个面&#xff0c;分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态&#xff0c;即它们朝上一面的点数&#xff0c;让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙&#xff0c;每次摇出的结果都满足以下两个条件&#xff1a; 1、每个骰子摇出…

Fontfabric:一款字体与设计的完美结合

一、产品介绍 Fontfabric是一款由国际字体设计公司Fontfabric开发的字体设计软件。它提供了一整套完整的字体设计工具&#xff0c;让用户可以轻松地创建、设计和定制自己的字体。Fontfabric拥有丰富的字体库&#xff0c;包括各种风格和类型&#xff0c;能够满足用户在不同场景…

【论文阅读笔记】医学多模态新数据集-Large-scale Long-tailed Disease Diagnosis on Radiology Images

这是复旦大学2023.12.28开放出来的数据集和论文&#xff0c;感觉很宝藏&#xff0c;稍微将阅读过程记录一下。 Zheng Q, Zhao W, Wu C, et al. Large-scale Long-tailed Disease Diagnosis on Radiology Images[J]. arXiv preprint arXiv:2312.16151, 2023. 项目主页&#xf…

使用BeautifulReport生成测试报告及遇到的雷点

BeautifulReport是一个基于unittest框架的测试报告生成工具&#xff0c;它可对自动化测试生成美观、详细的HTML测试报告。 使用BeautifulReport需要先安装 pip install BeautifulReport 示例 一个加法功能的测试用例&#xff0c;使用unittestBeautifulReport实现自动化并生成…

Prometheus-Alertmanage钉钉实现告警

获取钉钉的webhook地址 1、注册企业钉钉 a、注册企业钉钉 浏览器打开钉钉注册页面 填入手机号码&#xff0c;填入获取到的验证码&#xff0c;点注册 填入企业资料并注册 注册成功后&#xff0c;扫描二维码下载钉钉&#xff0c;如下图&#xff1a; b、添加机器人 管理后台 因…

L1-084:拯救外星人

你的外星人朋友不认得地球上的加减乘除符号&#xff0c;但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”&#xff0c;是从 1 到 N 的连乘积。所以当他不知道“57”等于多少时&#xff0c;如果你告诉他等于“12!”&#xff0c;他就写出了“479001600”这个答案。 本题就请你写程序…

【信息论与编码】习题-填空题

目录 填空题1.克劳夫特不等式是判断&#xff08; &#xff09;的充要条件。2.无失真信源编码的中心任务是编码后的信息率压缩接近到&#xff08;&#xff09;限失真压缩中心任务是在给定的失真度条件下&#xff0c;信息率压缩接近到&#xff08; &#xff09;。3.常用的检纠错方…

小白综述:深度学习 OCR 图片文字识别

文章目录 1. OCR 算法流程1.1 传统 OCR 方法1.2 深度学习 OCR 方法1.2.1 two-stage方法&#xff1a;文字检测识别1.2.2 端到端方法 2. 文本检测算法3. 文本识别算法3.1 基于分割的单字符识别方法3.2 基于序列标注的文本行识别方法 1. OCR 算法流程 OCR (Optical Character Rec…

微服务-sentinel-基本案例,持久化

sentinel 功能 限流 限流文档 直接拒绝&#xff1a;触发阀值直接抛弃。冷启动&#xff1a;在一段时间内针对突发流量缓慢增长处理数量。 3&#xff09;匀速器&#xff1a;请求以均匀的速度通过。 降级降级文档 1&#xff09;RT 统计时间内&#xff0c;大于预设请求数量&…