gensimAPI学习——word2vec

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的使用

gensimAPI学习——word2vec_第1张图片
看得头疼,用到哪个再学哪个吧
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

你可能感兴趣的:(机器学习,机器学习,python)