归一化空间nlp向量



我正在使用一个nlp模型,我想规范化nlp.vocab.vectors。从关于空间向量的文档中,它声明它是一个numpy ndarray

我在谷歌上搜索了很多关于numpy数组规范化的信息,如这里,这里和这里所述。

因此,我尝试了以下3种方法;

import spacy
import numpy as np
nlp = spacy.load('en_core_web_lg')
matrix = nlp.vocab.vectors # Shape (514157, 300)
# Approach 1
matrix_norm1 = matrix/np.linalg.norm(matrix) 
print(matrix_norm1.shape) # Shape (514157,)
# Approach 2
#matrix_norm2 = matrix / np.sqrt(np.sum(matrix**2))
## Results in TypeError: unsupported operand type(s) for ** or pow(): 'spacy.vectors.Vectors' and 'int'
# Approach 3
matrix_norm3 = matrix / (np.mean(matrix) - np.std(matrix))
print(matrix_norm3.shape) # => Shape (514157,)

返回结果的两种方法都这样做,但它不保留维度(514157,300)。有什么建议吗?

nlp.vocab.vectorsVectors对象。numpy数组存储在nlp.vocab.vectors.data中。参见:https://spacy.io/api/vectors

相关内容

  • 没有找到相关文章

最新更新