【问题标题】:how does spacy generate word vector even that is not a word?即使不是单词,spacy如何生成单词向量?
【发布时间】:2021-09-11 20:11:08
【问题描述】:

请看一下我的代码:

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 维。我可以更改维数吗?

【问题讨论】:

    标签: vector nlp load spacy


    【解决方案1】:

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

    这些张量对标记器/解析器/等很有用。管道中的组件,但可能不是那么有用,例如对于相似度比较,最好使用带有静态词向量的mdlg 模型。

    见:https://spacy.io/usage/linguistic-features#vectors-similarity

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 1970-01-01
      • 2016-04-02
      • 2017-12-24
      • 1970-01-01
      • 2019-12-31
      • 2020-02-17
      • 2016-10-15
      • 1970-01-01
      相关资源
      最近更新 更多