【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)
相关推荐
奔跑中的小象2 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南2 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang2 小时前
LangGraph 状态机实战
人工智能
刹那芳华19922 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作2 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门2 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜2 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟2 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦3 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生3 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能