gensim中word2vecpython源码理解(一)初始化构建单词表.pdfVIP

gensim中word2vecpython源码理解(一)初始化构建单词表.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

gensim中word2vecpython源码理解(⼀)初始化构建单词表

本⽂主要谈⼀谈对gensim包中装的word2vecpython源码中,使⽤ierarchicalSoftmax构建单词表部分代码的理解。

由于之前阅读的论⽂是对使⽤ierarchicalSoftmax的Skip-gram模型进⾏拓展,因此阅读代码的时候重点阅读了ierarchical

Softmax构建单词表的⽅法,以及Skip-gram模型的训练⽅法。对于negativesampling⽅法和CBOW模型的实现⽅法,则会继续对代码

进⾏研究。

init

初始化⼀个model(实际上是Word2Vec类的实例化对象):

model=Word2Vec(sentences,size=100,window=5,min_count=5,worers=4)

进⼊类的初始化⽅法__init__,对⾥⾯的属性值进⾏初始化。

传⼊的训练句⼦不为空的情况下,主要调⽤两个⽅法:

self.build_vocab(sentences,trim_rule=trim_rule)

self.train(

sentences,total_examples=self.corpus_count,epochs=self.iter,

start_alpha=self.alpha,end_alpha=self.min_alpha

)

build_vocab

该⽅法是从句⼦序列中构建单词表,其中每个句⼦都是字符串组成的列表。依次调⽤了三个⽅

法:scan_vocab,scale_vocab,finalize_vocab

下⾯依次介绍三个⽅法的功能:

scan_vocab:对句⼦中的单词进⾏初始化

代码内容阅读(有省略):

sentence_no=-1#保存扫描完成的句⼦数量

total_words=0#保存出现的单词总数(不去重)

min_reduce=1

vocab=defaultdict(int)#将单词表初始化为⼀个字典

checed_string_types=0

#扫描每个句⼦

取出语料中每个句⼦和其语料库中的编号

forsentence_no,sentenceinenumerate(sentences):#no

forwordinsentence:

vocab[word]+=1#记录每个词出现的次数

total_words+=len(sentence)#记录扫描过的句⼦⾥的单词总数

ifself.max_vocab_sizeandlen(vocab)self.max_vocab_size:#如果对于最⼤单词数有限制且当前超出限制

#将语料库中⼩于min_reduce(初始值为1)的单词都删除

utils.prune_vocab(vocab,min_reduce,trim_rule=trim_rule)

min_reduce+=1#不断增⼤min_reduce,直到单词表长度不⼤于max_vocab_size

self.corpus_count=sentence_no+1#保存语料数(句⼦数)

self.raw_vocab=vocab#保存单词表

returntotal_words#返回单词总数

scale_vocab:应⽤min_count的词汇表设置(丢弃不太频繁的单词)和sample(控制更频繁单词的采样)。

代码内容阅读(有省略):

加载新的词汇表:

ifnotupdate:#加载⼀个新的词汇表

retain_total,retain_words=0,[]#保留总数,保留的单词

#获得单词及其出现的数量,raw_vocab是scan_vocab中保存的单词表dict

forword,viniteritems(self.raw_vocab):

判断当前单词是否被丢弃,为修剪规则,默认为

#trim_rule

您可能关注的文档

文档评论(0)

A13865477551 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档