在数据集查看器中增强非英语数据集的搜索功能
最近,我们对数据集查看器进行了增强,实现了对非英语单语数据集的全文搜索功能。此功能显著扩展了我们平台内的搜索能力范围。
理解全文搜索
全文搜索 (FTS) 不同于传统的搜索方法,它允许根据相关性而不是精确的单词或短语匹配来搜索整个文档。这种方法在指定的查询范围内提供更全面的结果。
在 Hugging Face,我们集成了 DuckDB FTS 扩展来索引数据集中的所有文本列。此索引过程涉及创建索引文件,然后将其无缝集成到我们的“refs/convert/duckdb”分支的仓库中。
实现 FTS 扩展
使用 DuckDB 实现全文搜索非常简单。数据摄取后,使用以下命令:
create_fts_index(input_table, input_id, *input_values, stemmer = 'porter',
stopwords = 'english', ignore = '(\\.|[^a-z])+',
strip_accents = 1, lower = 1, overwrite = 0)
此命令中的“stemmer”参数对于在不同语言中启用 FTS 至关重要。前面的示例显示,它默认使用“porter”,这假定是英语文本。词干提取是自然语言处理 (NLP) 中的一项关键文本预处理技术,它将单词还原为其词根形式,在语言学上称为“词元”。
词干提取对搜索的影响
DuckDB 的词干提取算法通过将单词的不同变体匹配到其共同词根来增强搜索召回率。例如,“running”、“ran”和“runs”等词都源自“run”,从而确保了更全面的搜索结果。
在数据集查看器中,这个“词干提取器”显著提高了搜索结果的准确性和相关性。用户现在可以更高效地从非英语数据集中探索和检索相关信息,从而提升了他们使用我们平台的整体体验。要启用此功能,您需要:
- 在数据集卡片中为您的数据集分配语言
- 执行搜索!
让我们分析以下西班牙语数据集:https://huggingface.co/datasets/asoria/es-text
如您所见,我们有一些包含“jugó”、“juego”和“jugado”等词的短语,这些词之间存在某种关联。现在,让我们执行搜索,尝试列出所有与“jugar”一词匹配的短语。
如您所见,它只包含与“jugar”一词完全匹配的短语,这是因为此数据集尚未分配语言。
设置数据集语言
要在数据集查看器中为非英语数据集启用全文搜索,请遵循以下步骤:
- 转到“文件和版本”选项卡
- 打开 README.md 文件
- 在语言字段中选择“西班牙语”
- 提交您的更改
提示:您可以使用数据集卡片文档配置语言
语言标签将如下所示:
刷新数据集查看器后:
也就是说,我们的数据集已正确配置为根据语言执行搜索,现在可以获得我们想要的结果。
注意事项
- 我们目前支持以下语言:“阿拉伯语”、“巴斯克语”、“加泰罗尼亚语”、“丹麦语”、“荷兰语”、“英语”、“芬兰语”、“法语”、“德语”、“希腊语”、“印地语”、“匈牙利语”、“印度尼西亚语”、“爱尔兰语”、“意大利语”、“立陶宛语”、“尼泊尔语”、“挪威语”、“波特语”、“葡萄牙语”、“罗马尼亚语”、“俄语”、“塞尔维亚语”、“西班牙语”、“瑞典语”、“泰米尔语”和“土耳其语”。
- 它仅适用于单语数据集(我们仍在研究如何在多语数据集上做一些酷炫的事情!)