У меня есть модель, обученная с Word2Vec. Это работает хорошо.
Я хотел бы построить только список слов , которые я ввел в список.
Я написал нижеприведенную функцию (и повторно использовал найденный код) и получаю следующее сообщение об ошибке при добавлении вектора в arr :
'ValueError: все входные массивы должны иметь одинаковое количество измерений'
def display_wordlist(model, wordlist):
vector_dim = model.vector_size
arr = np.empty((0,vector_dim), dtype='f') #dimension trained by the model
word_labels = [word]
# get words from word list and append vector to 'arr'
for wrd in wordlist:
word_array = model[wrd]
arr = np.append(arr,np.array(word_array), axis=0) #This goes wrong
# Use tsne to reduce to 2 dimensions
tsne = TSNE(perplexity=65,n_components=2, random_state=0)
np.set_printoptions(suppress=True)
Y = tsne.fit_transform(arr)
x_coords = Y[:, 0]
y_coords = Y[:, 1]
# display plot
plt.figure(figsize=(16, 8))
plt.plot(x_coords, y_coords, 'ro')
for label, x, y in zip(word_labels, x_coords, y_coords):
plt.annotate(label, xy=(x, y), xytext=(5, 2), textcoords='offset points')
plt.xlim(x_coords.min()+0.00005, x_coords.max()+0.00005)
plt.ylim(y_coords.min()+0.00005, y_coords.max()+0.00005)
plt.show()