我使用了XLM-RoBERTa标记器来获取一系列句子的ID,例如:
["loving is great", "This is another example"]我发现在我的句子中,返回的ID并不总是与空格分隔的标记数量一样多:例如,第一句话对应于[[0, 459, 6496, 83, 6782, 2]],其中loving是456和6496。在从ID获得单词嵌入的矩阵后,我试图仅识别与某些特定标记对应的单词嵌入/向量:有什么方法可以做到这一点吗?如果原始令牌有时被分配多个ID,并且无法预测,我认为这是不可能的。
更一般而言,我的任务是获得句子中某些特定标记的词嵌入:因此,我的目标是首先使用句子,以便可以在语法上下文中计算单个标记的词嵌入,但然后我希望只识别/保留某些特定标记的向量,而不是句子中所有标记的向量。
发布于 2020-09-29 15:15:50
标记和in之间的映射是唯一的,但是,文本在获得标记(在本例中为子词)in之前被分割为子词。
您可以找到ID所属的字符串:
import transformers
tok = transformers.AutoTokenizer.from_pretrained("xlm-roberta-base")
tok.convert_ids_to_tokens([459, 6496])您将得到:['▁lo', 'ving'],它显示了第一个单词实际上是如何预处理的。
预处理将所有内容拆分为空格,并在第一个标记前面加上一个带有▁符号的空格作为所有标记的前缀。在第二步中,它将out-out词汇表标记拆分成词汇表中有ID的子词。
https://stackoverflow.com/questions/64065478
复制相似问题