我将 SpaCy3.0.1
与变压器模型 ( en_core_web_trf
) 一起使用。
当我之前使用 SpaCy 转换器时,可以从 aToken
或Span
. 然而,在 SpaCy 3 中,您似乎只能通过Doc
( doc._.trf_data
) 访问转换器向量,而无需与 SpaCy 令牌正确对齐。
如何获得 SpaCy 令牌和向量/字词之间的对齐?
或者,是否有一些函数可以让您直接获取 aToken
或的向量Span
?
当有一个doc
:
doc = nlp("Helsinki is the capital of Finland.")
词条在哪里:
[['<s>',
'H',
'els',
'inki',
'Ġis',
'Ġthe',
'Ġcapital',
'Ġof',
'ĠFinland',
'.',
'</s>']]
然后,您可以使用以下代码访问例如第一个标记的对齐:
# 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.mooc.fi/html/notebooks/part_iii/04_embeddings.html
(还提供了关于在 spacy 中使用变压器的更详细的解释和信息)