Gensim库的使用——Word2vec模型
Word2vec源码 Word2vec论文 Word2Vec原理参考
Gensim库的使用——Word2vec模型
pip install gensim
https://ai.tencent.com/ailab/nlp/zh/data/tencent-ailab-embedding-zh-d100-v0.2.0-s.tar.gz
762M tar.gz
tencent-ailab-embedding-zh-d100-v0.2.0-s.txt
1.88GB
wget https://ai.tencent.com/ailab/nlp/zh/data/tencent-ailab-embedding-zh-d100-v0.2.0-s.tar.gz
tar -xvf tencent-ailab-embedding-zh-d100-v0.2.0-s.tar.gz
head tencent-ailab-embedding-zh-d100-v0.2.0-s.txt
import torch ### from https://blog.csdn.net/quicmous/article/details/130899954 from torch.nn import Embedding # 载入讯飞词向量文件 word_vector_file = '../Downloads/tencent-ailab-embedding-zh-d100-v0.2.0-s.txt' # 库文件的路径。本程序选择了最小的一个库文件。 word_vectors = {} with open(word_vector_file, 'r', encoding='utf-8') as f: for line in f: word, vector_str = line.split(' ', 1) vector = torch.FloatTensor([float(x) for x in vector_str.split()]) word_vectors[word] = vector # 构建词典和词向量矩阵 words = list(word_vectors.keys()) word_dict = {w: i for i, w in enumerate(words)} word_vectors_matrix = torch.stack(list(word_vectors.values())) # 构建Embedding层 embedding = Embedding.from_pretrained(word_vectors_matrix) # 得到某个单词的词向量 word = "勇敢" word_idx = word_dict.get(word, None) if word_idx is not None: word_vector = embedding(torch.LongTensor([word_idx])) else: # 如果单词不在词向量文件中,则随机初始化一个词向量 word_vector = embedding.weight.mean(dim=0, keepdim=True)
转自:
https://www.cnblogs.com/noob-l/p/14659723.html
https://blog.csdn.net/qq_28790663/article/details/115469743
word2vec 相关的API都在包gensim.models.word2vec中 ,主要参数如下:
sentences: 我们要分析的语料,可以是一个列表,或者从文件中遍历读出。后面我们会有从文件读出的例子。
size: 词向量的维度,默认值是100。这个维度的取值一般与我们的语料的大小相关,如果是不大的语料,比如小于100M的文本语料,则使用默认值一般就可以了。如果是超大的语料,建议增大维度。
window:即词向量上下文最大距离,这个参数在我们的算法原理篇中标记为cc,window越大,则和某一词较远的词也会产生上下文关系。默认值为5。在实际使用中,可以根据实际的需求来动态调整这个window的大小。如果是小语料则这个值可以设的更小。对于一般的语料这个值推荐在[5,10]之间。
sg: 即我们的word2vec两个模型的选择了。如果是0, 则是CBOW模型,是1则是Skip-Gram模型,默认是0即CBOW模型。
hs: 即我们的word2vec两个解法的选择了,如果是0, 则是Negative Sampling,是1的话并且负采样个数negative大于0, 则是Hierarchical Softmax。默认是0即Negative Sampling。
negative:即使用Negative Sampling时负采样的个数,默认是5。推荐在[3,10]之间。这个参数在我们的算法原理篇中标记为neg。
cbow_mean: 仅用于CBOW在做投影的时候,为0,则算法中的xwxw为上下文的词向量之和,为1则为上下文的词向量的平均值。在我们的原理篇中,是按照词向量的平均值来描述的。个人比较喜欢用平均值来表示xwxw,默认值也是1,不推荐修改默认值。
min_count:需要计算词向量的最小词频。这个值可以去掉一些很生僻的低频词,默认是5。如果是小语料,可以调低这个值。
iter: 随机梯度下降法中迭代的最大次数,默认是5。对于大语料,可以增大这个值。
alpha: 在随机梯度下降法中迭代的初始步长。算法原理篇中标记为ηη,默认是0.025。
min_alpha: 由于算法支持在迭代的过程中逐渐减小步长,min_alpha给出了最小的迭代步长值。随机梯度下降中每轮的迭代步长可以由iter,alpha, min_alpha一起得出。这部分由于不是word2vec算法的核心内容,因此在原理篇我们没有提到。对于大语料,需要对alpha, min_alpha,iter一起调参,来选择合适的三个值。
转自:https://blog.csdn.net/asialee_bird/article/details/100124565