【Gensim概念】02/3 NLP玩转 word2vec
第二部分 句法
六、句法模型(类对象和参数)
6.1 数据集的句子查看
- classgensim.models.word2vec.BrownCorpus(dirname)
Bases: object
迭代句子 Brown corpus (part of NLTK data).
6.2 数据集的句子和gram
- classgensim.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 数据集的句子迭代器
- classgensim.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).
例子
>>> from gensim.test.utils import datapath
>>> sentences = LineSentence(datapath('lee_background.cor'))
>>> for sentence in sentences:
... pass
七、文档模型
7.1 数据集的目录迭代器
指向目录,目录下有多个文件,将多文件句子当成一个集合体处理。
classgensim.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(默认),则读取全部。
classgensim.models.word2vec.Text8Corpus(fname, max_sentence_length=10000)
Bases: object
迭代“text8”语料库中的句子,从下列获取: http://mattmahoney.net/dc/text8.zip.
7.2 模型集的 Word2Vec
classgensim.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(可迭代的可迭代,可选)——可迭代的句子可以只是标记列表的列表,但对于较大的语料库,请考虑直接从磁盘/网络流式传输句子的可迭代。请参阅BrownCorpus、Text8Corpus 或模块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)