将拥抱脸标记映射到原始输入文本
Posted
技术标签:
【中文标题】将拥抱脸标记映射到原始输入文本【英文标题】: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
)?
【参考方案1】:
在较新版本的 Transformers 中(似乎从 2.8 开始),当使用方法 __call__
、encode_plus
和 batch_encode_plus
时,调用标记器会返回类 BatchEncoding
的对象。您可以使用方法token_to_chars
获取批处理中的索引并返回原始字符串中的字符范围。
【讨论】:
请注意,应该使用encode_plus
is now deprecated 和__call__
代替(也就是说,不要使用tokenizer.encode_plus("My input string")
,而是使用tokenizer("My input string")
;它返回一个具有@987654333 方法的BatchEncoding 对象@)。以上是关于将拥抱脸标记映射到原始输入文本的主要内容,如果未能解决你的问题,请参考以下文章