【问题标题】:Mapping huggingface tokens to original input text将拥抱脸标记映射到原始输入文本
【发布时间】:2022-01-03 13:06:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你说的是字符映射吗?您是否必须显示每个单独的(子词)标记,或者它是否可以替代平均子词并将它们合并在一起(例如,平均 gp##u)?

标签: tokenize huggingface-transformers huggingface-tokenizers


【解决方案1】:

在较新版本的 Transformers 中(似乎从 2.8 开始),当使用方法 __call__encode_plusbatch_encode_plus 时,调用标记器会返回类 BatchEncoding 的对象。您可以使用方法token_to_chars 获取批处理中的索引并返回原始字符串中的字符范围。

【讨论】:

  • 请注意,应该使用encode_plus is now deprecated__call__ 代替(也就是说,不要使用tokenizer.encode_plus("My input string"),而是使用tokenizer("My input string");它返回一个具有@987654333 方法的BatchEncoding 对象@)。
猜你喜欢
  • 2020-09-30
  • 2020-09-01
  • 2020-10-26
  • 2021-12-17
  • 2022-01-04
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2014-11-08
相关资源
最近更新 更多