使用 spacy 通过令牌 id 提取张量

using spacy to extract tensor by token id

我正在使用 spacy 3.0 通过转换器模型对文本进行矢量化。由于数据隐私原因,矢量化必须在与训练模型的机器不同的机器上进行。为了减少我生成的数据量以及必须在机器之间传输的数据量,我提取了文本的令牌 ID,如下所示:

import spacy
nlp = spacy.load("de_dep_news_trf")
doc = nlp("Eine Bank steht im Park.")
print(doc._.trf_data.tokens["input_ids"])

哪个returns

tensor([[    3,   917,  2565,  1302,   106,  3087, 26914,     4]])

现在有了 ID,是否可以使用 spacy 从语言模型 (de_dep_news_trf) 中提取正确的张量?

不幸的是,这是不可能的。问题是 Transformer 模型在上下文 上为单个标记生成嵌入 。意思是,如果你在两个不同的句子中有相同的 token_id,它们可能会有(显着)不同的嵌入。唯一的方法是 return 与每个标记关联的张量,但你不能仅基于 input_ids.

生成它们