word2vec

word2vec 

基本概念的话可以参考:

Word2vec的数学理解.pdf

Word2vec实战.pdf

练习的话可以参考gensim官网,不想看官网的当然也有简化版Word2vec Tutorial,翻译版大笑Word2vec Tutorial,

还有自己手敲版word2vec(个人不太建议看看原理就行)。

代码是参考官网以及自己的理解:

# -*- coding:utf-8 -*-
import os
import gensim
import logging
logging.basicConfig(level=logging.INFO,format = '%(asctime)s:%(levelname)s:%(message)s')

# sentences = [['first','sentence'],['second','sentence']]
# model = gensim.models.Word2Vec(sentences,min_count=1)

'''如果我们需要输入遍布磁盘上的多个文件中的每一行句子,那么我们可以逐行处理输入文件,而不是一下子将所有的内容
全部加载到内存列表中'''
class Mysentences(object):
    def __init__(self,dirname):
        self.dirname = dirname
    def __iter__(self):
        for filename in os.listdir(self.dirname):
            for line in open (os.path.join(self.dirname,filename)):
                # yield类似一个return 一样的关键字,只是这个函数返回的是一个生成器,当执行for循环时,返回
                # yield 后的值作为第一次循环的返回值,然后再继续,这样不是一次性执行语句
                yield line.split()

sentences = Mysentences('/Prmlcode/word2vec_test/data')#a memory-friendly Iterator
# 这就是构建word2vec model;比如转码,删除内容这些都不必要在该模型中出现应该在Mysentences这个迭代器中实现
'''Word2vec()最小词频,并行计算,和神经网络层的大小'''
model = gensim.models.Word2Vec(sentences,min_count=10,workers=5,size=200)
'''model save and load'''
model.save('/tmp/mymodel')#保存模型下一步加载就不用每次用的时候从新训练
new_model = gensim.models.Word2Vec.load('/tmp/mymodel')
'''也可以加载并继续训练'''
more_sentences = Mysentences('/some/more_directory')
new_model.train(more_sentences)

迭代器的理解:

# -*- coding:utf-8-*-
import numpy as np
import itertools


houses =[1,2,3,4]
race = itertools.permutations(houses)
print list(race)

'''创建一个list,放入内存'''
mylist = [x*x for x in range(4)]
for i in mylist:
    print i
for i in mylist:
    print i
print '----------------'
'''产生一个生成器,实时生产数据,未放入内存中'''
mygenerator = (x*x for x in range(4))
for i in mygenerator:
    print i
print '------no number----'
for i in mygenerator:
    print i

'''================yield关键字=================================='''
def creatgenerator():
    mylist1 = range(3)
    for i in mylist1:
        yield i

mygenerator = creatgenerator() #当你调用这个歌函数的时候并不立即执行,只是返回一个generator 生成器object
print mygenerator
print "------creatgenerator-----"
for i in mygenerator:
    print i


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值