word2vec如何正确预测单词但实际数据集不包含它?
How does word2vec predicts the word correctly but the actual dataset does not contain it?
我正在尝试了解 word2vec 如何根据给定的单词列表预测单词。
具体来说,我使用以下参数在 50 万条推文的推特数据上训练了我的 skip-gram 模型:
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
时,对于单词 "discrimination"、"uberx" 以及输出列表中的任何其他单词,我永远找不到包含所有 3 个单词的数据点的单个实例。所以我的问题是,模型如何知道,比如说,单词 "accommodation disabled" 是上下文 "discrimination" 和 "uberx" 的正确单词,如果它从未在单个单词中同时看到这 3 个单词鸣叫?
skip-gram 模型就像填空题一样工作。比如twitter数据有两条:
1)
现在是夏天。今天是 ___.
现在 ______。今天很热。
2)
现在是冬天。今天是____.
现在 ______。今天很冷。
通过训练一个模型来预测空白,该模型了解到这两个词的表示,无论是(寒冷和冬天)还是(炎热和夏天),应该更接近。
同时,它也学习到"cold"和"summer"之间的距离应该增加,因为当上下文包含"cold"时,空白更可能是"winter",这反过来又抑制了 "summer".
的可能性
因此,即使没有包含 "cold" 和 "summer" 的数据,模型仍然可以学习这两个词之间的关系。
这是我对skip-gram的拙见。欢迎大家讨论:)
我正在尝试了解 word2vec 如何根据给定的单词列表预测单词。 具体来说,我使用以下参数在 50 万条推文的推特数据上训练了我的 skip-gram 模型:
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
时,对于单词 "discrimination"、"uberx" 以及输出列表中的任何其他单词,我永远找不到包含所有 3 个单词的数据点的单个实例。所以我的问题是,模型如何知道,比如说,单词 "accommodation disabled" 是上下文 "discrimination" 和 "uberx" 的正确单词,如果它从未在单个单词中同时看到这 3 个单词鸣叫?
skip-gram 模型就像填空题一样工作。比如twitter数据有两条:
1)
现在是夏天。今天是 ___.
现在 ______。今天很热。
2)
现在是冬天。今天是____.
现在 ______。今天很冷。
通过训练一个模型来预测空白,该模型了解到这两个词的表示,无论是(寒冷和冬天)还是(炎热和夏天),应该更接近。
同时,它也学习到"cold"和"summer"之间的距离应该增加,因为当上下文包含"cold"时,空白更可能是"winter",这反过来又抑制了 "summer".
的可能性因此,即使没有包含 "cold" 和 "summer" 的数据,模型仍然可以学习这两个词之间的关系。
这是我对skip-gram的拙见。欢迎大家讨论:)