Huggy Lingo: 使用机器学习改进 Hugging Face Hub 语言元数据
Hugging Face 正在使用机器学习自动检测 Hugging Face Hub 上缺少语言元数据的数据集的语言,并使用 Librarian-Bots 提交拉取请求以进行这些更新。此举旨在提高数据集的可发现性,并帮助社区识别 Hub 中语言表示方面的差距。
缺失语言元数据的挑战
语言元数据对于用户过滤和查找特定用例的相关数据集至关重要,例如为代表性不足的语言训练开源大型语言模型(LLMs)。然而,Hub 的相当一部分数据集缺少此信息。
- 当前状态:在大约 50,000 个公开数据集中,只有约 13% 在其 YAML 头部指定了语言元数据。大约 87% 的数据集未提供此信息。
- 语言分布:英语 (
en) 是最常见的语言,占已指定语言的数据集的约 19%。排除英语后,会出现几种主导语言的聚类,随后频率平稳下降。 - 元数据不一致:现有的语言标签经常不一致,有些数据集使用
en、eng、english或English等变体来描述同一种语言。
语言预测的机器学习工作流程
为了解决缺失的元数据问题,Hugging Face 实施了一个管道,通过结合 API 访问和机器学习模型来预测数据集的语言。
通过 Dataset Viewer API 获取数据
为了避免在本地下载完整的数据集,Hugging Face 使用 dataset viewer API。这使得系统能够在不进行完整下载的情况下采样文本数据。该过程包括:
- 列过滤:系统识别可能包含文本的列(例如,名为
text或prompt且具有string特性的列),并忽略非文本列(例如,image)。 - 采样:系统从这些识别的列中检索 20 行文本数据,以传递给预测模型。
语言识别模型
对于预测任务,Hugging Face 使用由 Meta 开发的 facebook/fasttext-language-identification 模型,这是 No Language Left Behind 项目的一部分。该模型能够检测 217 种语言。
预测过滤和验证
为了确保元数据建议的准确性,系统会对这 20 条单行预测应用几个过滤器:
- 频率过滤:如果一种语言在采样行中被预测的比例低于 20%,则该预测将被丢弃。
- 置信度过滤:只有当一种语言的平均得分达到 80% 或更高时,才会接受该预测。
- 语言代码映射:模型返回 ISO 639-3 代码(例如,
kor_Hang表示韩语)。系统会去除脚本信息,并在可能的情况下将这些代码转换为 ISO 639-1 代码(这些代码在 Hub UI 中具有更好的支持)。如果不存在对应的 ISO 639-1 等效代码,则会使用手动映射(例如,标准阿拉伯语arb映射到阿拉伯语ar)。如果无法进行映射,则不会提出任何元数据建议。
通过 Librarian-Bot 进行自动化元数据更新
一旦语言被预测并验证,信息将通过 Librarian-Bot 集成回 Hub。
Librarian-Bot 会自动打开拉取请求,以将预测的语言元数据添加到数据集卡片中。这使得数据集所有者可以审查并批准合并,确保元数据能够高效更新,而无需为每个数据集进行人工劳动。可以通过 Librarian-Bot 活动馈送跟踪进度。