使用 spacy 通过令牌 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"])

哪个返回

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

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

解决方法

不幸的是,这是不可能的。问题在于 Transformer 模型为上下文上的各个标记生成嵌入。意思是,如果您在两个不同的句子中使用相同的 token_id,则它们可能具有(显着)不同的嵌入。唯一的方法是返回与每个标记关联的张量,但您不能仅根据 input_ids 生成它们。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...