首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用单词向量时的ValueError (无法广播):如何修复?

使用单词向量时的ValueError (无法广播):如何修复?
EN

Stack Overflow用户
提问于 2019-05-23 17:39:43
回答 1查看 146关注 0票数 0

我正在尝试为一个项目制作一个聊天机器人,我正在使用spaCy。我正在学习一个教程,我需要创建一个二维数组X,它的行数和我的数据集中的句子数一样多。每一行都是一个描述句子的词向量。然而,当我尝试创建这个数组时,我得到了一个错误。我不太确定是什么导致了这种情况,因为我是spaCy和NLP的新手。

我试图从文档中找出问题所在。我还查看了Stack Overflow,但找不到任何可以解释我的问题的东西。

代码语言:javascript
复制
import spacy
import numpy
#load spacy nlp model
nlp = spacy.load("en_core_web_sm")

#calculate the length of my sentences dataset
n_sentences = len(sentences)
#calculate the dimensionality of nlp model
embedding_dim = nlp.vocab.vectors_length
#X is a 2D array with as many rows as there are sentences in my dataset
#Each row is a vector describing the sentence
#initialise array with zeros
X = numpy.zeros((n_sentences, embedding_dim))
#iterate over sentences
for idx, sentence in enumerate(sentences):
   #pass each sentence to nlp object to create document
   doc = nlp(sentence)
   print(doc.vector.shape)
   #save document's .vector attribute to corresponding row in X
   X[idx, :] = doc.vector

据我所知,这是抛出错误的最后一行。

代码语言:javascript
复制
ValueError: could not broadcast input array from shape (96) into shape (1,0)

我不知道是什么导致了这个问题,因为我对numpy数组和数组形状不是很熟悉。我的数据集,句子,是一个简单的字符串列表。我希望最终得到一个包含单词向量的二维数组。我正在遵循的教程说代码是正确的,所以我不确定为什么它不能为我工作,我想我一定是遗漏了什么。

这是一个学术(A-Level)项目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-24 16:42:54

en_core_web_sm模型不包括词向量。您可以下载en_core_web_mden_core_web_lg models,这是可以做到的。

Reference

代码语言:javascript
复制
nlp = spacy.load("en_core_web_md")
print (nlp.vocab.vectors_length)

输出:

代码语言:javascript
复制
300
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56272350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档