如何在 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 或原始向量)进行平均,还有一些其他选项:
我在网上看到很多关于如何使用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 或原始向量)进行平均,还有一些其他选项: