[Pytorch系列-57]:循环神经网络 - gensim.models.word2vec参数详解与构建词向量模型

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Pytorch系列-57]:循环神经网络 - gensim.models.word2vec参数详解与构建词向量模型相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121723021


目录

第1章 gensim概述

第2章 gensim.models.word2vec参数详解

第3章 使用gensim.models.word2vec构建向量模型

3.0 前提

3.1 语料库

3.2 创建并训练模型

3.3 对相识度单词进行预测


第1章 gensim概述

Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。

Word2Vec模型是Gensi库的词向量模型。

第2章 gensim.models.word2vec参数详解

class gensim.models.word2vec.Word2Vec(
               sentences=None, 
               corpus_file=None, 
               size=100, 
               alpha=0.025, 
               window=5,
               min_count=5,  
               max_vocab_size=None, 
               sample=0.001, 
               seed=1, 
               workers=3, 
               min_alpha=0.0001, 
               sg=0, 
               hs=0,
               negative=5, 
               ns_exponent=0.75, 
               cbow_mean=1, 
               hashfxn=<built-in function hash>, 
               iter=5, 
               null_word=0, 
               trim_rule=None,
               sorted_vocab=1, 
               batch_words=10000, 
               compute_loss=False, 
               callbacks=(), 
               max_final_vocab=None)

参数说明:

  • sentences (iterable of iterables, optional) – 供训练的句子,可以使用简单的列表,但是对于大语料库,建议直接从磁盘/网络流迭代传输句子。参阅word2vec模块中的BrownCorpus,Text8Corpus或LineSentence。
  • corpus_file (str, optional) – LineSentence格式的语料库文件路径
  • vector_size (int, optional) – 词向量的维度。通常为300.
  • window (int, optional) – 一个句子中当前单词和被预测单词的最大距离。滑动窗口的大小。
  • min_count (int, optional) – 忽略词频小于此值的单词。该参数可以过滤掉,偶尔出现的单词。
  • workers (int, optional) – 训练模型时使用的线程数。在实例化模型时,自动完成模型的训练。
  • sg (0, 1, optional) – 模型的训练算法: 1: skip-gram; 0: CBOW.
  • hs (0, 1, optional) – 1: 采用hierarchical softmax训练模型; 0: 使用负采样。
  • negative (int, optional) – > 0: 指定使用负采样的数目,设置多个负采样(通常在5-20之间)。
  • ns_exponent (float, optional) – 负采样分布指数。1.0样本值与频率成正比,0.0样本所有单词均等,负值更多地采样低频词。
  • cbow_mean (0, 1, optional) – 0: 使用上下文单词向量的总和; 1: 使用均值,适用于使用CBOW。
  • alpha (float, optional) – 初始学习率。在实例化模型时,自动完成模型的训练。
  • min_alpha (float, optional) – 最小学习率,随着训练的进行,学习率线性下降到min_alpha,
  • seed (int, optional) – 随机数发生器种子。
  • max_vocab_size (int, optional) – 词汇构建期间RAM的限制;  如果有更多的独特单词,则修剪不常见的单词。 每1000万个类型的字需要大约1GB的RAM。支持的最大单词数目。
  • max_final_vocab (int, optional) – 自动选择匹配的min_count将词汇限制为目标词汇大小。
  • sample (float, optional) – 高频词随机下采样的配置阈值,范围是(0,1e-5)。
  • hashfxn (function, optional) – 哈希函数用于随机初始化权重,以提高训练的可重复性。
  • iter (int, optional) – 自动模型训练时的迭代次数。
  • trim_rule (function, optional) – 词汇修剪规则,指定某些词语是否应保留在词汇表中,修剪掉或使用默认值处理。
  • sorted_vocab (0, 1, optional) – 如果为1,则在分配单词索引前按降序对词汇表进行排序。
  • batch_words (int, optional) – 每一个batch传递给线程单词的数量。
  • compute_loss (bool, optional) – 如果为True,则计算并存储可使用get_latest_training_loss()检索的损失值。
  • callbacks (iterable of CallbackAny2Vec, optional) – 在训练中特定阶段执行回调序列。
     

第3章 使用gensim.models.word2vec构建向量模型

3.0 前提

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

from gensim.models import Word2Vec

import matplotlib.pyplot as plt

3.1 语料库

raw_text = """We are about to study the idea of a computational process.
Computational processes are abstract beings that inhabit computers.
As they evolve, processes manipulate other abstract things called data.
The evolution of a process is directed by a pattern of rules
called a program. People create programs to direct processes. In effect,
we conjure the spirits of the computer with our spells.""".lower().split()

3.2 创建并训练模型

model = Word2Vec([raw_text], window=5, min_count=0, vector_size=100)

3.3 对相识度单词进行预测

(1)获取某个单词的词向量

model.wv.get_vector("we")
array([-8.2371626e-03,  9.3018124e-03, -2.0378912e-04, -1.9672457e-03,
        4.6009533e-03, -4.1048718e-03,  2.7483397e-03,  6.9529405e-03,
        6.0647726e-03, -7.5193373e-03,  9.3864016e-03,  4.6757250e-03,
        3.9595906e-03, -6.2362696e-03,  8.4568849e-03, -2.1459276e-03,
        8.8368189e-03, -5.3625666e-03, -8.1349388e-03,  6.8205344e-03,
        1.6731464e-03, -2.1995250e-03,  9.5159588e-03,  9.4903978e-03,
       -9.7708460e-03,  2.5059620e-03,  6.1574611e-03,  3.8693496e-03,
        2.0194747e-03,  4.3256412e-04,  6.8311812e-04, -3.8289619e-03,
       -7.1381810e-03, -2.1045576e-03,  3.9239591e-03,  8.8271257e-03,
        9.2626950e-03, -5.9751221e-03, -9.4050728e-03,  9.7564282e-03,
        3.4208333e-03,  5.1657772e-03,  6.2864725e-03, -2.8053685e-03,
        7.3280791e-03,  2.8254921e-03,  2.8643315e-03, -2.3794267e-03,
       -3.1234692e-03, -2.3632357e-03,  4.2710570e-03,  8.2289553e-05,
       -9.5984712e-03, -9.6682198e-03, -6.1445762e-03, -1.2618728e-04,
        1.9983812e-03,  9.4273640e-03,  5.5828230e-03, -4.2890343e-03,
        2.7802799e-04,  4.9645198e-03,  7.7032396e-03, -1.1378536e-03,
        4.3263095e-03, -5.8062747e-03, -8.0820709e-04,  8.1010396e-03,
       -2.3662101e-03, -9.6660787e-03,  5.7865614e-03, -3.9302218e-03,
       -1.2270809e-03,  9.9810772e-03, -2.2439670e-03, -4.7674584e-03,
       -5.3300112e-03,  6.9841221e-03, -5.7071578e-03,  2.1063576e-03,
       -5.2589145e-03,  6.1209816e-03,  4.3569636e-03,  2.6094934e-03,
       -1.4887219e-03, -2.7490708e-03,  8.9987572e-03,  5.2161841e-03,
       -2.1613305e-03, -9.4713038e-03, -7.4321763e-03, -1.0670737e-03,
       -7.8357977e-04, -2.5633539e-03,  9.6833659e-03, -4.6015202e-04,
        5.8634020e-03, -7.4515464e-03, -2.5067476e-03, -5.5492264e-03],
      dtype=float32)

(2)获取与某个单词的关联性最高的几个词

model.wv.similar_by_word("processes", topn=5)
[('study', 0.1669149100780487),
 ('effect,', 0.16261565685272217),
 ('abstract', 0.1388479620218277),
 ('we', 0.1315048635005951),
 ('directed', 0.11603082716464996)]

备注:

由于输入的文本太小,因此关联度不明显。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121723021

以上是关于[Pytorch系列-57]:循环神经网络 - gensim.models.word2vec参数详解与构建词向量模型的主要内容,如果未能解决你的问题,请参考以下文章

[Pytorch系列-55]:循环神经网络 - 使用LSTM网络对股票走势进行预测

[Pytorch系列-53]:循环神经网络 - torch.nn.LSTM()参数详解

[Pytorch系列-54]:循环神经网络 - torch.nn.GRU()参数详解

[Pytorch系列-61]:循环神经网络 - 中文新闻文本分类详解-3-CNN网络训练与评估代码详解

[Pytorch系列-60]:循环神经网络 - 中文新闻文本分类详解-2-LSTM网络训练与评估代码详解

Pytorch系列:自然语言处理NLP