В настоящее время я работаю с python, где я тренирую модель Word2Vec, используя предложения, которые я предоставляю.Затем я сохраняю и загружаю модель, чтобы получить вложение слов для каждого слова в предложениях, которые использовались для обучения модели.Тем не менее, я получаю следующую ошибку:
KeyError: "word 'n1985_chicago_bears' not in запасной словарь"
, тогда как одно из предложенных во время обучения предложений следующее.
sportsteam n1985_chicago_bears teamplaysincity city chicago
Поэтому я хотел бы знать, почему некоторые слова отсутствуют в словаре, несмотря на то, что они обучены этим словам из этого предложения.
Обучение модели word2vec на собственном корпусе
import nltk
import numpy as np
from termcolor import colored
from gensim.models import Word2Vec
from gensim.models import KeyedVectors
from sklearn.decomposition import PCA
#PREPARING DATA
fname = '../data/sentences.txt'
with open(fname) as f:
content = f.readlines()
# remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content]
#TOKENIZING SENTENCES
sentences = []
for x in content:
nltk_tokens = nltk.word_tokenize(x)
sentences.append(nltk_tokens)
#TRAINING THE WORD2VEC MODEL
model = Word2Vec(sentences)
words = list(model.wv.vocab)
model.wv.save_word2vec_format('model.bin')
Примеры предложений из предложений.txt
sportsteam hawks teamplaysincity city atlanta
stadiumoreventvenue honda_center stadiumlocatedincity city anaheim
sportsteam ducks teamplaysincity city anaheim
sportsteam n1985_chicago_bears teamplaysincity city chicago
stadiumoreventvenue philips_arena stadiumlocatedincity city atlanta
stadiumoreventvenue united_center stadiumlocatedincity city chicago
...
Там1860 таких строк в файле sentences.txt
, каждая из которых содержит ровно 5 слов и не содержит стоп-слов.
После сохранения модели я попытался загрузить ее из другого файла Python в том же каталоге, что и сохраненный model.bin
, как показано ниже.
Загрузка сохраненного model.bin
import nltk
import numpy as np
from gensim import models
w = models.KeyedVectors.load_word2vec_format('model.bin', binary=True)
print(w['n1985_chicago_bears'])
Однако я получаю следующую ошибку
KeyError: "word 'n1985_chicago_bears' not in vocabulary"
Есть ли способ получить вложение слова для каждого слова в обученном корпусе предложения, используя один и тот же метод?
Любые предложения в этом отношении будут высоко оценены.