models.word2vec – Word2vec embeddings

0介绍

该模块使用高度优化的C例程、数据流和Python接口实现word2vec算法系列。
word2vec算法包括skip gram和CBOW模型,使用分层softmax或负采样:Tomas Mikolov等人:向量空间中单词表示的有效估计,Tomas Mikolov等人:单词和短语的分布式表示及其组成性。

0.1其他embeddings

在Gensim中,训练单词向量的方法不止Word2Vec。例:Doc2Vec,FastText。

1gensim.models.word2vec.BrownCorpus

class gensim.models.word2vec.BrownCorpus(dirname)

2gensim.models.word2vec.Heapitem

class gensim.models.word2vec.Heapitem(count, index, left, right)

3gensim.models.word2vec.LineSentence

 class gensim.models.word2vec.LineSentence(source, max_sentence_length=10000, limit=None)

4gensim.models.word2vec.PathLineSentences

 class gensim.models.word2vec.PathLineSentences(source, max_sentence_length=10000, limit=None)

5gensim.models.word2vec.Text8Corpus

 class gensim.models.word2vec.Text8Corpus(fname, max_sentence_length=10000)

6gensim.models.word2vec.Word2Vec

class gensim.models.word2vec.Word2Vec(sentences=None, corpus_file=None, vector_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>, epochs=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000, compute_loss=False, callbacks=(), comment=None, max_final_vocab=None, shrink_windows=True)
Bases: gensim.utils.SaveLoad

Train, use and evaluate neural networks(神经网络)被描述在https://code.google.com/p/word2vec/
完成模型训练后(=不再更新,仅查询)只存储并使用self.wv中的KeyedVectors实例以减少内存。
可以通过save()和load()方法存储/加载完整模型。
还可以通过self.wv.save_word2vec_format() 和gensim.models.keyedvectors.keyedvectors.load_word2vec_format()从与原始word2vec实现兼容的格式存储/加载经过训练的word vectors。
参数

  • sentences (iterable of iterables, optional) :可迭代语句可以简单地是令牌列表,但是对于更大的语料库,考虑一个可直接从磁盘/网络流语句的迭代算法。有关此类示例,请参见word2vec模块中的BrownCorpus、Text8Corpus或LineSentence。另请参见Python中的数据流教程。如果您不提供句子,模型将保持未初始化状态–如果您计划以其他方式初始化它,请使用。
  • corpus_file (str, optional):LineSentence格式的语料库文件路径。您可以使用此参数而不是句子来提高性能。只需要传递一个句子或语料库文件参数(或者不传递任何参数,在这种情况下,模型保持未初始化状态)。
  • vector_size (int, optional):单词向量的维数。
  • window (int, optional):句子中当前单词和预测单词之间的最大距离。
  • min_count (int, optional):忽略总频率低于此值的所有单词。
  • workers (int, optional):使用这些多个worker线程来训练模型(=使用多核机器进行更快的训练)。
  • sg ({0, 1}, optional):训练算法:1用于跳过gram;否则CBOW。
  • hs ({0, 1}, optional):如果为1,则分层softmax将用于模型训练。如果为0,且负值为非零,则将使用负值采样。
  • negative (int, optional):如果>0,将使用负采样,负的int指定应绘制多少“噪声字”(通常在5-20之间)。如果设置为0,则不使用负采样。
  • ns_exponent (float, optional):用于塑造负采样分布的指数。值为1.0时,采样频率正好成比例;值为0.0时,所有单词的采样频率相等;值为负值时,低频单词的采样频率大于高频单词的采样频率。常用的默认值0.75是由最初的Word2Vec论文选择的。
  • cbow_mean ({0, 1}, optional):如果为0,则使用上下文单词向量之和。如果1,则使用平均值,仅在使用cbow时适用。
  • alpha (float, optional) :初始学习速率。
  • min_alpha (float, optional):随着培训的进行,学习率将线性下降至min_alpha。
  • seed (int, optional):随机数生成器的种子。每个单词的初始向量都使用word+str(seed)串联的散列作为种子。
  • max_vocab_size (int, optional) :在词汇构建期间限制RAM;如果有比这更独特的词,那么删掉不常见的词。每1000万字类型需要大约1GB的RAM。设置为“无”表示无限制。
  • max_final_vocab (int, optional) :通过自动选择匹配的最小计数,将vocab限制为目标vocab大小。如果指定的最小值计数大于计算的最小值计数,则将使用指定的最小值计数。如果不需要,则设置为“无”。
  • sample (float, optional):配置随机下采样的高频字的阈值,有效范围为(0,1e-5)。
  • hashfxn (function, optional) :用于随机初始化权重的哈希函数,用于提高训练再现性。
  • epochs (int, optional):语料库上的迭代次数(epochs)。
  • trim_rule (function, optional):词汇表修剪规则,指定某些单词是否应保留在词汇表中、是否应修剪掉或使用默认值处理(如果单词计数<最小计数,则放弃)。可以是None(将使用minu count,look to keep_vocab_item()),也可以是接受参数(word、count、minu count)并返回gensim.utils.RULE_DISCARD、gensim.utils.RULE_keep或gensim.utils.RULE_DEFAULT的可调用项。该规则(如果给定)仅用于在build_vocab()期间修剪词汇表,而不是作为模型的一部分存储。
    输入参数的类型如下:

例子:

from gensim.models import Word2Vec
sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
model = Word2Vec(sentences, min_count=1)
# 模型的保存与加载
model.save("word2vec.model")
model = Word2Vec.load("word2vec.model")
# If you save the model you can continue training it later
model.train([["hello", "world"]], total_examples=1, epochs=1)

6.1经过训练的单词向量存储在KeyedVectors实例中,如model.wv:

这个对象本质上包含单词和嵌入之间的映射。经过培训后,可以直接使用它以各种方式查询这些嵌入
Type:KeyedVectors

vector = model.wv['computer']  # get numpy vector of a word
sims = model.wv.most_similar('computer', topn=10)  # get other similar words

将经过训练的向量分离为KeyedVectors的原因是,如果不再需要完整的模型状态(不需要继续训练),则可以放弃其状态,只保留向量及其关键帧。
这会产生一个更小更快的对象,它可以被映射为闪电般快速的加载,并在进程之间共享RAM中的向量:

from gensim.models import KeyedVectors
>>>
# Store just the words + their trained embeddings.
word_vectors = model.wv
word_vectors.save("word2vec.wordvectors")
>>>
# Load back with memory-mapping = read-only, shared across processes.
wv = KeyedVectors.load("word2vec.wordvectors", mmap='r')
>>>
vector = wv['computer']  # Get numpy vector of a word

6.2word2vec model的使用


看得头疼,用到哪个再学哪个吧
save和load就不介绍了

6.2.1 score

为一系列句子的对数概率打分。这不会以任何方式改变训练的模型(train会改变已训练好的模型)。

score(sentences, total_sentences=1000000, chunksize=100, queue_factor=2, report_delay=1)

Gensim目前只为分层softmax方案实施了score,因此您需要运行带有hs=1和负值=0的word2vec才能使其工作。

请注意,您应该指定句子总数;如果你要求的分数超过这个句子数,你会遇到问题,但是设置太高的值是没有效率的。

6.2.1train

根据一系列句子更新模型的神经权重。

 train(corpus_iterable=None, corpus_file=None, total_examples=None, total_words=None, epochs=None, start_alpha=None, end_alpha=None, word_count=0, queue_factor=2, report_delay=1.0, compute_loss=False, callbacks=(), **kwargs)

注意:为了支持从(初始)alpha到min_alpha的线性学习速率衰减,以及准确的进度百分比记录,必须提供total_examples(句子数)或total_words(句子中原始单词数)。如果句子与前面为build_vocab()提供的语料库相同,那么只需使用total_examples=self.corpus_count即可。
警告:为了避免在模型自身进行多次训练的能力方面出现常见错误,必须提供一个明确的epochs参数。在只调用一次train()的常见和推荐情况下,可以设置epochs=self.epochs。
参数:

  • corpus_iterable (iterable of list of str))–CoppUsIsRetable可以简单地是令牌列表,但是对于较大的语料库,考虑一个可直接从磁盘/网络流语句的迭代,以限制RAM的使用。有关此类示例,请参见word2vec模块中的BrownCorpus、Text8Corpus或Line句子。另请参见Python中的数据流教程。
  • corpus_file (str, optional)–LineSentence格式的语料库文件路径。您可以使用此参数而不是句子来提高性能。只需要传递句子或语料库文件参数中的一个(不是两个)。
  • total_examples (int))–句子计数。
  • total_words (int)-句子中原始单词的计数。
  • epochs(int)–语料库上的迭代次数(epochs)。
  • start_alpha (float, optional)-初始学习速率。如果提供,则替换构造函数中的起始alpha,用于调用’train()`。仅当您希望自己管理alpha学习率(不推荐)时,对train()进行多次调用时使用。
  • end_alpha (float, optional) –最终学习率。从起点α线性下降。如果提供,这将替换构造函数对train()的一次调用的最终min_alpha。仅当您希望自己管理alpha学习率(不推荐)时,对train()进行多次调用时使用。
  • word_count (int, optional) –已训练单词的计数。对于句子中所有单词的常规训练,将其设置为0。
  • queue_factor (int, optional) –队列大小的乘数(工作人员数量*队列系数)。
  • report_delay (float, optional) -报告进度前等待的秒数。
  • compute_loss (bool, optional)–如果为True,则计算并存储可使用get_latest_training_loss()检索的损失值。
  • callbacks (iterable of CallbackAny2Vec, optional) –在培训期间特定阶段执行的回调序列。
    eg:
from gensim.models import Word2Vec
sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
>>>
model = Word2Vec(min_count=1)
model.build_vocab(sentences)  # prepare the model vocabulary
model.train(sentences, total_examples=model.corpus_count, epochs=model.epochs)  # train word vectors
(1, 30)

7 gensim.models.word2vec.Word2VecTrainables

8gensim.models.word2vec.Word2VecVocab

gensimAPI学习——word2vec相关推荐

  1. 用gensim学习word2vec

    20211224 输入为分词列表 import gensim # Train Word2Vec model model = gensim.models.Word2Vec(all_data_test[' ...

  2. 深度学习word2vec笔记之算法篇

    本文转载自<深度学习word2vec笔记之算法篇>对排版和内容作了部分调整,感谢大佬分享. PDF版本关注微信公众号:[终南樵],回复:[word2vec基础]获取 1. 声明 该博文是G ...

  3. 深度学习word2vec笔记之基础篇

    深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...

  4. 深度学习word2vec笔记之应用篇

    深度学习word2vec笔记之应用篇 声明: 1)该博文是Google专家以及多位博主所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用. ...

  5. 深度学习word2vec笔记

    基础篇 算法篇 应用篇 深度学习word2vec笔记之基础篇 一.前言 伴随着深度学习的大红大紫,只要是在自己的成果里打上deep learning字样,总会有人去看.深度学习可以称为当今机器学习领域 ...

  6. 深度学习 | Word2vec原理及应用

    聊聊Word2vec 1 前言 2 什么是Word2vec? 2.1 定义 2.1.1 分词的原理介绍 2.1.2 文本向量化的方式 2.2 数学原理 2.2.1 CBOW(Continuous Ba ...

  7. 20221107学习word2vec

    [随便写写,个人理解] 一.word2vec 起初用于语言处理[将中文.英文换成计算机可以识别的语言,也就是词向量] 可以通过多种方法进行模型的训练[pytorch.tensorflow.python ...

  8. 学习Word2vec

    有感于最近接触到的一些关于深度学习的知识,遂打算找个东西来加深理解.首选的就是以前有过接触,且火爆程度非同一般的word2vec.严格来说,word2vec的三层模型还不能算是完整意义上的深度学习,本 ...

  9. gensim学习-word2vec model

    word2vec model 1.介绍 2.原理 2.1 Skip-gram 2.2 CBOW 3.训练参数 3.1 min_count 3.2 size 3.3 workers 4.实例 4.1 对 ...

最新文章

  1. 几种经典的居中技巧(垂直和水平居中)
  2. ES6常用知识点概述
  3. 2.3.6 操作系统之进程同步与互斥经典问题(生产者-消费者问题、多生产者-多消费者问题、吸烟者问题、读者-写者问题、哲学家进餐问题)
  4. 制作css开关,纯css实现开关效果
  5. SDUT OJ -2892 A
  6. Python测试开发django3.视图和URL配置
  7. 现如今有一个很有意思的现象,不管是工厂还是经销商
  8. Linux怎么修改用户密码
  9. html 模板 引用,模板引用说明
  10. 2020-12-24
  11. mysql数据库分页查询,limit语句用法
  12. Axure 教程 |中级电子商务网站设计
  13. 8.linux中的远程登录服务
  14. 方舟手游服务器自动重启,方舟适者生存连接服务器重启怎么办_连接服务器重启解决方法_快吧单机游戏...
  15. Android之仿微信发朋友圈图片选择功能
  16. Google Play App Signing 更换签名
  17. 再捐1亿元种树治沙:蚂蚁集团持续七年支持内蒙古生态治理
  18. 专访快准车服CIO牛小虎:全面信息化支持,让车爱上快准
  19. Mini Story 总结
  20. 【K8s】什么是Pod?Pod的调度与控制器

热门文章

  1. linux如何关闭硬件加速,启用硬件加速是什么意思?如何关闭【详解】
  2. xy坐标正负方向_道路施工图纸上x坐标和y坐标分别代表什么方向?哪个代表南北方向?哪个代表东西方向?...
  3. linux服务器上装r,linux服务器安装R语言及Rstudio server
  4. Python imgaug库 安装与使用 (图片加模糊光雨雪雾等特效)
  5. 安卓测试基础入门——ADB命令
  6. offer_II_109开密码锁
  7. cogs 997. [東方S2] 射命丸文
  8. EBS开发_创建AP付款
  9. jQuery仿钉钉组织架构的选择部门功能,移动端完美树形图
  10. 自我管理的29个工具