使用 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
.
生成它们
我正在使用 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
.