如何在 Python 上使用 Word2Vec 创建词嵌入?

How to create word embedding using Word2Vec on Python?

我在网上看到很多关于如何使用Word2Vec(gensim)的教程。

大多数教程都在展示如何找到 .most_similar 词或两个词之间的相似度。

但是,如果我有文本数据 X 并且我想生成词嵌入向量 X_vector 怎么办?

那么,这个X_vector可以用于分类算法吗?

如果X是一个词(字符串标记),你可以用word_model[X]查找它的向量。

如果 X 是文本 - 比如说 list-of-words – 那么,Word2Vec 模型只有单词向量,没有文本向量。

如果您有一些想要的方法来使用 list-of-words 加 per-word-vectors 来创建 text-vector,您应该自己应用它。有许多潜在的方法,有些简单,有些复杂,但没有一种 'official' 或 'best' 方式。

一个简单的流行基线(一个公平的起点,尤其是在像标题这样的非常小的文本上)是对所有词向量求平均。这可以很简单(假设 numpy 被导入为 np):

np.mean([word_model[word] for word in word_list], axis=0)

但是,最新版本的 Gensim 也有一个方便的 .get_mean_vector() 方法来对向量集(指定为它们的 word-keys 或原始向量)进行平均,还有一些其他选项:

https://radimrehurek.com/gensim/models/keyedvectors.html#gensim.models.keyedvectors.KeyedVectors.get_mean_vector