Понимание Gensim Word2Ve c Most_slike результатов для 3 слов - PullRequest
1 голос
/ 07 января 2020

Я строю предложения, используя 3 слова «1», «2», «3», по-разному, и наблюдаю, что векторы слов для каждого из этих слов неизменны.

Ниже приведены различные предложения

Тип 1: [["1", "2"], ["1", "3"]]

Тип 2: [["1", "2", " 3 "]]

Тип 3: [[" 1 "," 2 "], [" 3 "]]

Я тренирую Word2Vec модель следующим образом

model = Word2Vec(sentences,min_count=1,size=2)
print (model.wv.most_similar("1"))
print (model.wv.most_similar("2"))
print (model.wv.most_similar("3"))
print (model.wv['1'])
print (model.wv['2'])
print (model.wv['3'])

И результаты при изменении типа предложения одинаковы

[('3', 0.5377859473228455), ('2', -0.5831003785133362)]
[('1', -0.5831003189086914), ('3', -0.9985027313232422)]
[('1', 0.5377858281135559), ('2', -0.9985026717185974)]
[-0.24893647 -0.24495095]
[ 0.19231372 -0.03319569]
[-0.22207274  0.05098101]

Также, когда я меняю слово «1» на «101», результат меняется

[('3', 0.5407046675682068), ('2', -0.5859125256538391)]
[('101', -0.5859125256538391), ('3', -0.9985027313232422)]
[('101', 0.540704607963562), ('2', -0.9985026717185974)]
[-0.05898098 -0.0576357 ]
[ 0.19231372 -0.03319569]
[-0.22207274  0.05098101]

Я хотел знать

  1. Почему результаты не изменились, когда я изменил предложения?

  2. Почему результаты изменились, когда я только обновил значение?

1 Ответ

0 голосов
/ 08 января 2020

Word2Ve c как алгоритм требует больших, разнообразных наборов данных для обучения векторов слов в осмысленных расположениях.

Вы не получите ощутимых результатов или узнаете много о поведении или преимуществах алгоритма с надуманными тренировочными данными размером с игрушку.

Также обратите внимание:

  • Word2Vec использует случайную инициализацию и случайную выборку как часть своего процесса, так что даже прогон с одинаковыми данными может иметь разные результаты от бега к бегу. Однако при реалистичном количестве c и разнообразии данных каждый прогон должен приводить к созданию модели, столь же полезной, как и любой другой прогон (даже если многие из точных позиций / относительного ранжирования могут отличаться).

  • Вложенный список списков, как и ваше первое «предложение» ([["1", "2"], ["1", "3"]]), недопустим для обучения Word2Vec. Каждое «предложение» должно быть простым списком строковых токенов (слов).

Я предлагаю вам поэкспериментировать с настоящими данными обучения на естественном языке, с количеством слов и различными контрастными употреблениями, которые появляются в реальных текстах. Я рекомендую обучающие данные, содержащие не менее нескольких тысяч уникальных слов, где каждое слово имеет 5 или более различных примеров использования.

На самом деле в gensim есть небольшой корпус, который помогает самопроверке кода и вводным учебникам. Он называется «Корпус Ли» и представляет собой старый исследовательский корпус, содержащий около 300 коротких новостных статей по пару сотен слов в каждой. Вы можете увидеть пример его использования в разделе «Обучение собственной модели» учебного пособия gensim Word2Ve c:

https://radimrehurek.com/gensim/auto_examples/tutorials/run_word2vec.html#training -your-own-model

...