我正在使用 SpaCy 3.0.1
连同变压器模型 ( en_core_web_trf
)。
当我之前使用 SpaCy 转换器时,可以从 Token
获取转换器向量。或 Span
.
但是,在 SpaCy 3 中,您似乎只能通过 Doc
访问转换器向量。 ( doc._.trf_data
) 没有与 SpaCy 标记正确对齐。
我怎样才能让 SpaCy token 和矢量/文字之间的对齐?
或者替代地;是否有一些函数可以让您直接获取 Token
的向量?或 Span
?
最佳答案
我现在已经找到了解决方案。当有 doc
:
doc = nlp("Helsinki is the capital of Finland.")
词条在哪里:[['<s>',
'H',
'els',
'inki',
'Ġis',
'Ġthe',
'Ġcapital',
'Ġof',
'ĠFinland',
'.',
'</s>']]
然后,您可以使用以下代码访问例如第一个 token 的对齐方式:# Get the first spaCy Token, "Helsinki", and its alignment data
doc[0], doc._.trf_data.align[0].data
输出:(Helsinki,
array([[1],
[2],
[3]], dtype=int32))
然后您可以使用这些索引从 doc._.trf_data.tensors
中提取相应的向量.来源 :
https://applied-language-technology.readthedocs.io/en/latest/notebooks/part_iii/04_embeddings_continued.html
(还提供了关于在spacy中使用transformer的更详细的解释和信息)
关于python - SpaCy 3 变压器矢量标记对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66150469/