SpaCy 3变压器向量令牌对齐

6
我正在使用SpaCy 3.0.1与transformer模型(en_core_web_trf)一起使用。之前我使用SpaCy transformers时,可以从Token或Span中获取transformer向量。然而,在SpaCy 3中,似乎只能通过Doc(doc._.trf_data)访问transformer向量,而没有适当地对齐到SpaCy token。
如何在Spacy Tokens和Vectors/Wordpieces之间进行对准?或者有没有某个函数可以直接获取Token或Span的向量?
1个回答

9
有一个 `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中使用变压器的更详细的解释和信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接