Добавить новые слова в GoogleNews-vector-негатив 300 - PullRequest
0 голосов
/ 24 сентября 2019

Пожалуйста, позвольте мне объяснить проблему.У меня есть список составных имен (например, названия компаний), состоящий из нескольких слов, таких как: 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? Должен ли я использовать другую предварительно обученную модель? Но что произойдет с появлением новых слов?

Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...