1

请看一下我的代码:

import spacy
nlp = spacy.load('en_core_web_sm')
a=nlp('fjoeij foeijfo foejf')
a[0].vector
array([ 4.4017673 ,  2.2732968 ,  1.8201342 ,  0.285315  ,  4.301816  ,
       -1.6101733 , -1.9763635 ,  0.7946968 , -0.49857655,  2.4312825 ,
       -0.5321884 ,  1.8810408 , -2.4434211 , -0.1565853 , -0.3007983 ,
       -0.5251692 , -0.47107434,  2.392819  , -2.1653428 ......

你可以看到它们不是单词,我只是随机输入的。但是 spacy 仍然可以生成向量。所以,我有两个问题:

  1. spacy如何生成向量?
  2. 所有向量都是 96 维。我可以更改维度的数量吗?
4

1 回答 1

2

这些sm模型没有静态词向量,因此token.vector从 tok2vec 模型返回上下文相关的张量作为退避。维度设置来自 tok2vec 模型参数,在模型初始化和训练后无法更改。

这些张量对标记器/解析器/等很有用。管道中的组件,但在其他方面可能没有那么有用,例如对于相似性比较,您最好使用带有静态词向量的mdor模型。lg

请参阅:https ://spacy.io/usage/linguistic-features#vectors-similarity

于 2021-06-29T15:41:28.623 回答