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

posted @ 2023-10-28 21:59  emanlee  阅读(162)  评论(0编辑  收藏  举报