即使不是单词,spacy 如何生成词向量?
how does spacy generate word vector even that is not a word?
请看我的代码:
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仍然可以生成向量。所以,我有两个问题:
- spacy如何生成向量?
- 所有的向量都是96维的。我可以更改维数吗?
sm
模型没有静态词向量,因此 token.vector
returns 来自 tok2vec 模型的上下文敏感张量作为退避。 dimensions设置来自tok2vec模型参数,在模型初始化和训练后无法更改。
这些张量对 tagger/parser/etc 很有用。管道中的组件,但在其他方面可能没那么有用,例如对于相似性比较,您最好使用带有静态词向量的 md
或 lg
模型。
参见:https://spacy.io/usage/linguistic-features#vectors-similarity
请看我的代码:
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仍然可以生成向量。所以,我有两个问题:
- spacy如何生成向量?
- 所有的向量都是96维的。我可以更改维数吗?
sm
模型没有静态词向量,因此 token.vector
returns 来自 tok2vec 模型的上下文敏感张量作为退避。 dimensions设置来自tok2vec模型参数,在模型初始化和训练后无法更改。
这些张量对 tagger/parser/etc 很有用。管道中的组件,但在其他方面可能没那么有用,例如对于相似性比较,您最好使用带有静态词向量的 md
或 lg
模型。
参见:https://spacy.io/usage/linguistic-features#vectors-similarity