Word2Vec

作者: 在努力的Jie | 来源:发表于2020-02-12 21:44 被阅读0次
1. 区分两种写法
  1. Will always work as long as the namespace is not altered
from gensim.models.word2vec import Word2Vec
  1. Will work as long as models.init keep it available
from gensim.models import Word2Vec
2. nlp中的词向量对比:

word2vec/glove/fastText/elmo/GPT/bert

3. 笔记
wordevec

图上这句话让我理解词嵌入很有帮助:
这个嵌入矩阵包含训练集中每个词的一个向量。
word2vec模型根据数据集中的每个句子进行训练,并且以一个固定窗口在句子上进行滑动,根据句子的上下文来预测固定窗口中间那个词的向量,然后根据一个损失函数和优化方法,来对这个模型进行训练。

4. word2vec训练中文词向量
5. 独热编码 将单词映射到数字向量https://blog.csdn.net/qq_23944915/article/details/99884177
5. word2vec参数详解:

在gensim中,word2vec相关的API都在gensim.models.word2vec中,与算法相关的参数在 gensim.models.word2vec.Word2Vec中。其具体参数说明如下:

  • sentences : 可迭代的对象, 可选的、需要分析的语料。
    可迭代的"sentences" 可以是tokens列表集中的一个简单列表,但是对于较大的语料库,
  • corpus_file : 字符串类型, 可选的
    可以使用此参数代替“sentences”从而提高性能。仅需传递“sentences”或“ corpus_file”两个变量中的一个即可(或不传递任何一个,在这种情况下,模型将保持未初始化状态)
  • size : 整型, 可选
    词向量的维数。
  • window : 整型, 可选
    句子中当前词和预测词之间的最大距离。window越大,则与中心词较远的词也会产生上下文关系。
  • min_count : 整型, 可选
    最小词频,忽略所有总频率低于此频率的单词。
  • workers : 整型, 可选
    训练模型所采用的工作线程数量(=使用多核机器进行训练将更快)。
  • sg : {0, 1}, 可选
    训练模型: 1表示skip-gram; 0表示CBOW.
  • hs : {0, 1}, 可选
    如果为1, 将用hierarchical softmax 训练模型.
    如果为0, 并且negative不为0,则将采样负采样训练模型。
  • negative : 整型, 可选
    如果大于0, 将使用负采样, negative的绝对值决定了"noise words"的个数
    应该被设置 (一般情况下取值范围为5-20).
    如果设置为0, no negative sampling is used.
  • ns_exponent : float, optional
    "exponent"用于构造负采样分布。
    值1.0表示与频率成正比,值0.0表示对所有单词均匀采样,而负值对低频词的采样比对高频词的采样多。
    • 最初的Word2Vec文件选择了流行的默认值0.75。
    • 最近,Caselleles-Dupré,Lesaint和Royo-Letelier在https://arxiv.org/abs/1804.04212中建议,其他值对于"推荐类应用程序"可能会表现更好
  • cbow_mean : {0, 1}, optional
    如果为0, 在cbow做投影的时候则使用上下文词向量的总和. 如果为1, 则使用平均值, 仅在使用cbow时适用.
  • alpha : float, optional
    在随机梯度下降法中的初始学习率(初始步长).
  • min_alpha : float, optional
    最小的迭代步长值。随着训练的进行,学习率将线性下降到"min_alpha".
  • seed : int, optional
    随机数生成器的种子。
    每个单词的初始向量都以单词的级联哈希值+str(seed)作为种子。
    请注意,如果需要运行结果完全重现,还必须将模型限制为单个工作线程(“workers = 1”),以消除OS线程调度中的排序抖动。
    (在Python3中,解释程序启动之间的可重复性还需要使用PYTHONHASHSEED环境变量来控制哈希随机化)。
  • max_vocab_size : int, optional
    最大词汇数量,如果设置为None 表示不限制
    在词汇构造过程中限制RAM;如果许多的独特词,则可以修剪不常用的词。每1000万个字类型需要大约1GB的RAM。
  • max_final_vocab : int, optional
    通过自动选择一个匹配的min_count将词汇表限制为目标词汇表大小。
    如果指定的min_count大于计算的min_count,则将使用指定的min_count。如果设置为None 表示不限制。
  • sample : float, optional
    配置高频词被随机下采样的阈值,比较可靠的范围是(0,1e-5)。
  • hashfxn : function, optional
    哈希函数用于随机初始化权重,以提高训练的可重复性。
  • iter : int, optional
    语料库上的迭代次数
  • trim_rule : function, optional
    词汇修剪规则,指定是否应保留某些单词,对其进行修剪或使用默认值处理(如果单词数<min_count则舍弃)。
    可以设置为None(将使用min_count,可以查看〜gensim.utils .keep_vocab_item),
    也可以是接受参数(word,count,min_count)并返回以下任意一种的可调用对象:
    attr:gensim.utils.RULE_DISCARD
    attr:gensim.utils.RULE_KEEP
    attr:gensim.utils.RULE_DEFAULT
    如果给出规则,则该规则仅用于在build_vocab()期间修剪词汇,而不会存储为模型的一部分。
    输入参数具有以下类型:
    *word(str)-我们正在检查的单词
    *count(int)-语料库中单词的频率计数
    *min_count(int)-最小计数阈值。
  • sorted_vocab:{0,1},可选
    如果为1,则在分配单词索引之前,按降序对词汇表进行排序。
    参见:〜gensim.models.word2vec.Word2VecVocab.sort_vocab()方法
  • batch_words:int,可选
    传递给工作线程(以及cython例程)的示例批处理的目标大小(以字为单位)。
    (如果单个文本的长度超过10000个单词,则将传递较大的批处理,但是标准cython代码将截断到该最大值)。
  • compute_loss:布尔值,可选
    如果为True,则计算并存储的损失值可以通过〜gensim.models.word2vec.Word2Vec.get_latest_training_loss方法检索查看。
  • callbacks : iterable of :class:~gensim.models.callbacks.CallbackAny2Vec, optional
    在训练过程中的特定阶段执行的回调序列。
    例如

现在,训练一个gensim.models.word2vec.Word2Vec模型

import word2vec
from gensim.models.word2vec import LineSentence
sentences = LineSentence('nodup_data222.csv')
model = word2vec.word2vec(sentences,size=100,window=5,min_count = 5,output='new_vecoter')

相关文章

网友评论

      本文标题:Word2Vec

      本文链接:https://www.haomeiwen.com/subject/ahchfhtx.html