我相信你有一些词作为特征,你想将它们表示为嵌入向量。
有几种方法可以创建词嵌入,我将提到其中的一些,从最简单到复杂但非常强大的方法。
1.计数向量。
这是一种从您的独特标记中创建向量的方法。例如,如果词汇表包含三个单词,比如 ["and", "basketball", "more"] ,那么文本 "more and more" 将映射到向量 [1, 0, 2] :单词 "and ”出现一次,“basketball”这个词根本没有出现,“more”这个词出现了两次。这种文本表示被称为词袋,因为它完全失去了词的顺序。
2。 TF-IDF(词频逆文档频率)
计数向量的问题在于它忽略了重要的
词,因为与普通词相比,它的外观更少。在上面的例子中,术语“篮球”被忽略了,而“更多”被赋予了重要性。克服这种 TF-IDF 方法最适合,例如,
假设“and”、“basketball”和“more”这三个词分别出现在训练集中的 200、10 和 100 个文本实例中:在这种情况下,最终向量将是 [1/log(200), 0/log(10), 2/log(100)] ,约等于 [0.19, 0.,
0.43] .
3.预训练的词向量。
这些是在*或其他一般来源上可用的数百万文本数据上训练的嵌入向量,它将包含所有可用的英语常用术语。有很多开源的预训练词向量是可用的,都是。
- Google 新闻矢量。
- 手套
- Facebook 的 fastText。
您可以根据模型的可用性选择向量维度,例如您可以为每个单词选择 50,100,200,300 维度的向量。
from gensim.models import Word2Vec
#loading the downloaded model
model = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True, norm_only=True)
#the model is loaded. It can be used to perform all of the tasks mentioned above.
# getting word vectors of a word
dog = model['dog']
更多细节和其他创建词嵌入的方法,可以参考NCC写的this beautiful article。
希望这能回答您的问题,祝您学习愉快!