将拥抱面标记映射到原始输入文本

Mapping huggingface tokens to original input text

如何将从 huggingface DistilBertTokenizer 获得的标记映射到输入文本的位置?

例如I have a new GPU -> ["i", "have", "a", "new", "gp", "##u"] -> [(0, 1), (2, 6), ...]

我对此很感兴趣,因为假设我为每个标记分配了一些注意力值,我想显示它实际上对应于原始文本的哪一部分,因为标记化版本不是非 ML 人友好。

我还没有找到任何解决方案,尤其是当有 [UNK] 令牌时。任何见解将不胜感激。谢谢!

在较新版本的 Transformers 中(似乎是从 2.8 开始的),调用分词器 returns 一个 class BatchEncoding when methods __call__, encode_plus and batch_encode_plus are used. You can use method token_to_chars 的对象,它接受批处理中的索引和 returns 字符跨越原始字符串。