Пожалуйста, позвольте мне объяснить проблему.У меня есть список составных имен (например, названия компаний), состоящий из нескольких слов, таких как: IMPERIAL IMPORTS AND CONSULTING
name.Идея состоит в том, чтобы иметь новое слово (название компании), чтобы вычислить, насколько оно схоже с существующим списком слов в наборе данных.
Для этой цели я загружаю GoogleNews-vectors-positive300 и сгенерировал вектор для этих слов.Вектор инициализируется нулями, и если в названии компании нет ни слова в GoogleNews, то результирующий вектор будет с нулями.В этом сценарии у меня есть 65 имен из 3549 имен с 0 в векторе (1,83%).Обычно, после инициализации векторов, я вычисляю косинусное сходство.
Я использовал эту функцию для вычисления вектора для каждого названия компании:
def avg_sentence_vector(words, model, num_features, index2word_set):
#function to average all words vectors in a given paragraph
featureVec = np.zeros((num_features,), dtype="float32")
nwords = 0
for word in words:
if word in index2word_set:
nwords = nwords+1
featureVec = np.add(featureVec, model[word])
if nwords>0:
featureVec = np.divide(featureVec, nwords)
return featureVec
Я читаю имена из CSV и вычисляюсредний вектор для каждого названия компании:
df['avg_vector'] = df.apply(lambda row : avg_sentence_vector(row['name'].split(), model=word2vec_model, num_features=300, index2word_set=set(word2vec_model.wv.index2word)).tolist(), axis=1)
Я искал, как получить векторы для неизвестных слов для GoogleNews-vectors-positive300.Некоторые люди советовали случайным образом инициализировать векторы с одинаковым измерением (измерение 300):
Другие в StackOverflow задавали похожие вопросы:
Добавление новых слов в googleNews с помощью gensim: «Я не думаю, что это возможно, так как модель Google word2vec была построена с помощью инструментария C. Вы не сможете получить аналогичные вложения для пропущенных слов, так как у модели vocab никогда не было этих слов для обучения».
Обработка слов OOV в GoogleNews-vectors-absolute300. «Использовать 0 вектор для неизвестных слов».Предварительно обученная модель bin?"Как указали @Oleg Мельников и https://rare -technologies.com / word2vec-tutorial / # online_training__resuming , невозможно возобновить обучение без дерева слов(который не сохраняется после завершения тренировки с кодом C) "
добавить новые слова в GoogleNews от gensim " Я не думаю, что этоssible, так как модель Google word2vec была построена с помощью инструментария C.Вы не сможете получить аналогичные вложения для пропущенных слов, так как в модели Vocab никогда не было этих слов для обучения. "
Есть ли способ инициализировать векторы значениями, когда слова не найдены вGoogleNews-vectors-positive300? Должен ли я использовать другую предварительно обученную модель? Но что произойдет с появлением новых слов?
Большое спасибо