python - SpaCy 3 变压器矢量标记对齐

标签 python nlp spacy spacy-3

我正在使用 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/

相关文章:

regex - 具有正则表达式的命名实体识别: NLTK

python - 检查是否可以分词

machine-learning - 如何将依赖路径编码为分类特征?

python - 具有 SpaCy 的自定义实体标尺未返回匹配项

python - 使用 Python 就地重写文件

asp.net - 如何处理 ASP.net 的神秘隐藏值? (__VIEWSTATE)

python - 类型错误 : cannot concatenate a non-NDFrame object

python-3.x - 有没有办法减少 Spacy 安装的大小?

python - 使用spaCy替换句子的 "topic"

python - 如何在 Python 中拉伸(stretch) float 列表?