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

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_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 对象@)。

以上是关于将拥抱脸标记映射到原始输入文本的主要内容,如果未能解决你的问题,请参考以下文章

我们是不是应该小写输入数据以(预)使用拥抱脸训练 BERT 无大小写模型?

如何使用拥抱脸变压器批量制作训练器垫输入?

如何为拥抱脸重新下载标记器?

文本挖掘之特征选择(python 实现)

文本挖掘中特征选择(附python实现)

文本挖掘之三种特征选择(python 实现)