3

我将 SpaCy3.0.1与变压器模型 ( en_core_web_trf) 一起使用。
当我之前使用 SpaCy 转换器时,可以从 aTokenSpan. 然而,在 SpaCy 3 中,您似乎只能通过Doc( doc._.trf_data) 访问转换器向量,而无需与 SpaCy 令牌正确对齐。

如何获得 SpaCy 令牌和向量/字词之间的对齐?
或者,是否有一些函数可以让您直接获取 aToken或的向量Span

4

1 回答 1

6

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

于 2021-02-11T07:53:29.443 回答