XLM-RoBERTa token - id 关系
XLM-RoBERTa token - id relationship
我使用 XLM-RoBERTa 分词器来获取一堆句子的 ID,例如:
["loving is great", "This is another example"]
我看到返回的 ID 并不总是与我的句子中以空格分隔的标记的数量一样多:例如,第一句对应 [[0, 459, 6496, 83, 6782, 2]]
,loving
是 456
和 6496
。从 ID 中获取词嵌入矩阵后,我试图仅识别与某些特定标记相对应的那些词 embeddings/vectors:有没有办法做到这一点?如果原始令牌有时被分配了多个 ID 并且无法预测,我看不出这是怎么可能的。
更一般地说,我的任务是为句子中的某些特定标记获取词嵌入:因此,我的目标是首先使用句子,以便可以在句法上下文中计算单个标记的词嵌入,然后我只想 identify/keep 仅某些特定标记的向量,而不是句子中所有标记的向量。
标记和 ID 之间的映射是唯一的,但是,在您获得标记(在本例中为子词)ID 之前,文本被分割成子词。
可以查出ID属于哪个字符串:
import transformers
tok = transformers.AutoTokenizer.from_pretrained("xlm-roberta-base")
tok.convert_ids_to_tokens([459, 6496])
您将得到:['▁lo', 'ving']
这表明第一个单词实际上是 pre-processed。
预处理在 spaces 上拆分所有内容,并在第一个标记前加上所有以 space 和 ▁
符号开头的标记。在第二步中,它将 out-out-vocabulary 个标记拆分为词汇表中有 ID 的子词。
我使用 XLM-RoBERTa 分词器来获取一堆句子的 ID,例如:
["loving is great", "This is another example"]
我看到返回的 ID 并不总是与我的句子中以空格分隔的标记的数量一样多:例如,第一句对应 [[0, 459, 6496, 83, 6782, 2]]
,loving
是 456
和 6496
。从 ID 中获取词嵌入矩阵后,我试图仅识别与某些特定标记相对应的那些词 embeddings/vectors:有没有办法做到这一点?如果原始令牌有时被分配了多个 ID 并且无法预测,我看不出这是怎么可能的。
更一般地说,我的任务是为句子中的某些特定标记获取词嵌入:因此,我的目标是首先使用句子,以便可以在句法上下文中计算单个标记的词嵌入,然后我只想 identify/keep 仅某些特定标记的向量,而不是句子中所有标记的向量。
标记和 ID 之间的映射是唯一的,但是,在您获得标记(在本例中为子词)ID 之前,文本被分割成子词。
可以查出ID属于哪个字符串:
import transformers
tok = transformers.AutoTokenizer.from_pretrained("xlm-roberta-base")
tok.convert_ids_to_tokens([459, 6496])
您将得到:['▁lo', 'ving']
这表明第一个单词实际上是 pre-processed。
预处理在 spaces 上拆分所有内容,并在第一个标记前加上所有以 space 和 ▁
符号开头的标记。在第二步中,它将 out-out-vocabulary 个标记拆分为词汇表中有 ID 的子词。