Я пытаюсь создать чат-бота для проекта, и я использую spaCy. Я следую учебному пособию, и мне нужно создать двумерный массив X, содержащий столько строк, сколько имеется предложений в моем наборе данных. Каждая строка должна представлять собой вектор слов, описывающий предложение. Однако, когда я пытаюсь создать этот массив, я получаю сообщение об ошибке. Я не совсем уверен, с чем это связано, поскольку я новичок в spaCy и NLP в целом.
Я попытался выяснить, в чем проблема, из документации. Я также посмотрел на переполнение стека, но не смог найти ничего, что объяснило бы мою проблему.
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
Это последняя строка, которая выдает ошибку, насколько я могу судить.
ValueError: could not broadcast input array from shape (96) into shape (1,0)
Я не знаю, что вызывает это, потому что я не очень знаком с массивами и массивами. Мой набор данных, предложения, представляет собой простой список строк. Я ожидал, что в итоге получится двумерный массив, содержащий векторы слов. В учебнике, которому я следую, написано, что код правильный, поэтому я не уверен, почему он не работает для меня, я думаю, что я что-то пропустил.
Это для академического (A-Level) проекта.