【Gensim概念】02/3 NLP玩转 word2vec

第二部分 句法

六、句法模型(类对象和参数)

6.1 数据集的句子查看

  • class gensim.models.word2vec.BrownCorpus(dirname)

Bases: object

迭代句子 Brown corpus (part of NLTK data).

6.2 数据集的句子和gram

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

Bases: Heapitem

Create new instance of Heapitem(count, index, left, right)

  • count Alias for field number 0
  • index Alias for field number 1
  • left Alias for field number 2
  • right Alias for field number 3

6.3 数据集的句子迭代器

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

Bases: object

迭代包含句子的文件:一行 = 一个句子。单词必须已经过预处理并用空格分隔。

参数

  • source (string or a file-like object) -- 磁盘上文件的路径或已打开的文件对象 (must support seek(0)).

  • limit (int or None) -- 将文件句子数目剪辑到第一条限制数。如果 limit 为 None,则不进行剪裁

    (the default).

例子

python 复制代码
>>> from gensim.test.utils import datapath
>>> sentences = LineSentence(datapath('lee_background.cor'))
>>> for sentence in sentences:
...     pass

七、文档模型

7.1 数据集的目录迭代器

指向目录,目录下有多个文件,将多文件句子当成一个集合体处理。

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

Bases: object

LineSentence同,但按文件名的字母顺序处理目录中的所有文件。

该目录只能包含可以读取的文件 gensim.models.word2vec.LineSentence: .bz2, .gz, and text files. Any file not ending with .bz2 or .gz 被假设是一个文本文件。

路径中的文件(文本或压缩文本文件)的格式是一句话 = 一行,单词已经过预处理并以空格分隔。

警告:

不会递归到子目录。

参数:

  • source (str) -- 文件目录名称.

  • limit (int or None) -- 仅读取每个文件中的第一个限制行。如果 limit 为 None(默认),则读取全部。

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

Bases: object

迭代"text8"语料库中的句子,从下列获取: http://mattmahoney.net/dc/text8.zip.

7.2 模型集的 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: SaveLoad

训练、使用和评估中描述的神经网络 https://code.google.com/p/word2vec/.

完成模型训练后(=不再更新,仅查询),仅在 self.wv 中存储和使用 KeyedVectors 实例以减少内存。

完整模型可以通过其 save() 和 load() 方法存储/加载。

经过训练的词向量还可以通过 self.wv.save_word2vec_format 和与原始 word2vec 实现兼容的格式进行存储/加载

gensim.models.keyedvectors.KeyedVectors.load_word2vec_format().

参数

  • sentence可迭代的可迭代 可选 )------可迭代的句子可以只是标记列表的列表,但对于较大的语料库,请考虑直接从磁盘/网络流式传输句子的可迭代。请参阅BrownCorpusText8Corpus 或模块LineSentence中的word2vec此类示例。另请参阅有关 Python 中的数据流的教程。如果您不提供statements,则模型将保持未初始化状态 - 如果您打算以其他方式初始化它,请使用它。

  • corpus_file ( str , 可选 ) -- 格式的语料库文件的路径LineSentence。您可以使用此参数而不是句子来提高性能。只需要传递句子或 corpus_file参数之一(或者都不传递,在这种情况下,模型将保持未初始化状态)。

  • vector_size ( int , 可选) -- 词向量的维数。

  • window ( int , 可选) -- 句子中当前单词和预测单词之间的最大距离。

  • min_count ( int , 可选) -- 忽略总频率低于此的所有单词。

  • Workers ( int , 可选) -- 使用这些工作线程来训练模型(=使用多核机器进行更快的训练)。

  • sg ( {0 , 1} , 可选) -- 训练算法:skip-gram 为 1;否则CBOW。

  • hs ( {0 , 1} , 可选) -- 如果为 1,则将使用分层 softmax 进行模型训练。如果为0,并且负数非零,则将使用负采样。

  • negative ( int , 可选) -- 如果 > 0,将使用负采样,负数的 int 指定应抽取多少"噪声词"(通常在 5-20 之间)。如果设置为 0,则不使用负采样。

  • ns_exponent ( float , 可选 ) -- 用于塑造负采样分布的指数。值 1.0 与频率完全成比例地进行采样,0.0 对所有单词进行同等采样,而负值则对低频单词进行更多采样。最初的 Word2Vec 论文选择了流行的默认值 0.75。最近,在https://arxiv.org/abs/1804.04212中,Caselles-Dupré、Lesaint 和 Royo-Letelier 提出其他值对于推荐应用程序可能表现更好。

  • cbow_mean ( {0 , 1} , 可选) -- 如果为 0,则使用上下文单词向量的总和。如果为 1,则使用平均值,仅在使用 cbow 时适用。

  • alpha ( float , 可选) -- 初始学习率。

  • min_alpha ( float , 可选) --随着训练的进行,学习率将线性下降到min_alpha 。

  • seed ( int , 可选) -- 随机数生成器的种子。每个单词的初始向量都以 word + str(seed)连接的哈希值作为种子。请注意,对于完全确定性可重现的运行,您还必须将模型限制为单个工作线程 ( workers=1 ),以消除操作系统线程调度中的排序抖动。(在 Python 3 中,解释器启动之间的再现性还需要使用PYTHONHASHSEED环境变量来控制哈希随机化)。

  • max_vocab_size ( int , 可选) -- 限制词汇构建过程中的 RAM;如果有比这更多的独特单词,则修剪掉不常见的单词。每 1000 万个字型需要大约 1GB RAM。设置为None表示没有限制。

  • max_final_vocab ( int , 可选) -- 通过自动选择匹配的 min_count 将词汇限制为目标词汇大小。如果指定的 min_count 大于计算出的 min_count,则将使用指定的 min_count。如果不需要,请设置为"无" 。

  • Sample ( float , 可选) -- 配置哪些高频词被随机下采样的阈值,有用范围是 (0, 1e-5)。

  • hashfxn ( function , 可选) -- 用于随机初始化权重的哈希函数,以提高训练的可重复性。

  • epochs ( int , 可选) -- 语料库的迭代次数(epoch)。(以前:iter)

  • 修剪规则函数 可选)-

    词汇表修剪规则,指定某些单词是否应保留在词汇表中、被修剪掉或使用默认值进行处理(如果字数 < min_count 则丢弃)。可以是 None (将使用 min_count,请查看),或者是接受参数(word、count、min_count)并返回、或 的keep_vocab_item()可调用函数 。该规则(如果给定)仅用于在 build_vocab() 期间修剪词汇,并且不会存储为模型的一部分。gensim.utils.RULE_DISCARD``gensim.utils.RULE_KEEP``gensim.utils.RULE_DEFAULT

    输入参数有以下几种类型:

    • word (str) - 我们正在检查的单词

    • count (int) - 语料库中单词的频率计数

    • min_count (int) - 最小计数阈值。

  • sorted_vocab ( {0 , 1} , 可选 ) -- 如果为 1,则在分配单词索引之前按频率降序对词汇表进行排序。见sort_by_descending_frequency()

  • batch_words ( int , 可选) -- 传递给工作线程(以及 cython 例程)的示例批次的目标大小(以字为单位)。(如果单个文本长度超过 10000 个单词,则将传递更大的批次,但标准 cython 代码会截断为那个最大值。)

  • compute_loss ( bool , 可选 ) -- 如果为 True,则计算并存储可以使用 检索的损失值 get_latest_training_loss()

  • 回调 (可迭代CallbackAny2Vec,可选)- 在训练期间的特定阶段执行的回调序列。

  • Shrink_windows ( bool , 可选) -- 4.1 中的新增功能。实验性的。如果为 True,则在训练期间从每个目标单词的 [1, window ]中均匀采样有效窗口大小,以匹配原始 word2vec 算法按距离对上下文单词的近似加权。否则,有效窗口大小始终固定为两侧的窗口字。

7.2.1 使用实例

Initialize and train a Word2Vec model

复制代码
>>> from gensim.models import Word2Vec
>>> sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
>>> model = Word2Vec(sentences, min_count=1)
相关推荐
泰迪智能科技0129 分钟前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
盛派网络小助手1 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Eric.Lee20211 小时前
Paddle OCR 中英文检测识别 - python 实现
人工智能·opencv·计算机视觉·ocr检测
cd_farsight1 小时前
nlp初学者怎么入门?需要学习哪些?
人工智能·自然语言处理
AI明说1 小时前
评估大语言模型在药物基因组学问答任务中的表现:PGxQA
人工智能·语言模型·自然语言处理·数智药师·数智药学
Focus_Liu2 小时前
NLP-UIE(Universal Information Extraction)
人工智能·自然语言处理
PowerBI学谦2 小时前
使用copilot轻松将电子邮件转为高效会议
人工智能·copilot
audyxiao0012 小时前
AI一周重要会议和活动概览
人工智能·计算机视觉·数据挖掘·多模态
Jeremy_lf2 小时前
【生成模型之三】ControlNet & Latent Diffusion Models论文详解
人工智能·深度学习·stable diffusion·aigc·扩散模型