Я пытаюсь понять, как 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 слова вместе в одном твите?