Как word2ve c правильно предсказывает слово, но фактический набор данных не содержит его? - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь понять, как word2ve c предсказывает слово, учитывая список слов. В частности, я натренировал свою модель скип-граммы на данных твиттера 500k твитов со следующими параметрами:

model = gensim.models.Word2Vec(data, window=5, workers=7, sg=1, min_count=10, size=200)

Учитывая слова discrimination и uberx, я получаю следующий вывод:

model.wv.most_similar(positive=[PorterStemmer().stem(WordNetLemmatizer().lemmatize("discrimination", pos='v')), WordNetLemmatizer().lemmatize("uberx", pos='v')], topn=30)
[('discret', 0.7425585985183716),
 ('fold_wheelchair', 0.7286415696144104),
 ('illeg_deni', 0.7280288338661194),
 ('tradit_cab', 0.7262350916862488),
 ('mobil_aid', 0.7252357602119446),
 ('accommod_disabl', 0.724936842918396),
 ('uberwav', 0.720955491065979),
 ('discrimin_disabl', 0.7206833958625793),
 ('deni_access', 0.7202375531196594),...]

Однако, когда я ищу в наборе данных data, который я сбросил на своем жестком диске, слова «дискриминация», «uberx» и любое другое слово из списка вывода, я никогда не нахожу ни одного экземпляра точка данных, содержащая все 3 слова. Итак, мой вопрос: как модель узнает, что, скажем, слово «приспособление для инвалидов» является правильным словом для контекста «дискриминация» и «uberx», если она никогда не видела эти 3 слова вместе в одном твите?

1 Ответ

2 голосов
/ 22 марта 2020

Модель скип-граммы работает как вопрос заполнения бланка. Например, есть два твиттер-данных:

1)

Сейчас лето. Сегодня ___.

Сейчас ______. Сегодня жарко.

2)

Сейчас зима. Сегодня ____.

Сейчас ______. Сегодня холодно.

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

В то же время он также узнает, что расстояние между «холодным» и «летним» должно быть увеличено, потому что, когда контекст содержит «холодный», пробел с большей вероятностью будет «зимним», что, в свою очередь, подавляет возможность быть «летним».

Таким образом, хотя нет данных, содержащих «холодное» и «летнее», модель все же может узнать связь между этими двумя словами.

Это мое скромное мнение о скип-грамме. Пожалуйста, не стесняйтесь обсуждать:)

...