gensim里word2vec使用简介,python多进程使用简介和scipy导入稀疏矩阵数据文件简介

从gensim里导入word2vec库

导入的方法
from gensim.models import word2vec
#或者
import gensim.models.word2vec as Word2vec
使用word2vec

我们找到word2vec类的源代码,可看到下面的接口,具体的含义可参见源代码的注释,或者直接参考下面的博客(略有不同),考虑博客的体积与目的,不再赘述

word2vec的应用----使用gensim来训练模型 作者 風起云扬

def __init__(self, sentences=None, corpus_file=None, size=100, alpha=0.025, window=5, min_count=5,
                 max_vocab_size=None, sample=1e-3, seed=1, workers=3, min_alpha=0.0001,
                 sg=0, hs=0, negative=5, ns_exponent=0.75, cbow_mean=1, hashfxn=hash, iter=5, null_word=0,
                 trim_rule=None, sorted_vocab=1, batch_words=MAX_WORDS_IN_BATCH, compute_loss=False, callbacks=(),
                 max_final_vocab=None):

参数中值得关注的部分是传入的语料库部分,一个是sentence,另一个是corpus_file,这两个只能传入一个。源码注释说 corpus_file参数会有更好的性能。
对于小的语料库可以使用列表,对于大的语料库可以使用gensim.models.word2vec.BrownCorpus()、gensim.models.word2vec.Text8Corpus()gensim.models.word2vec.LineSentence()
其中LineSentence传入的文件是格式为一行为一个句子,单词之间用空格隔开,可选的参数为max_sentence_length=10000

gensim.models.word2vec.PathLineSentences传入的则是包含上述文件的目录

Word2Vec的一个重要属性是 wv:训练好的词和词向量的映射

word2vec官方文档

python自带的多线程/多进程库

ProcessPoolExecutor主要有两种方法使用,分别是submit()和map(),可参考博客

python concurrent.futures 作者 扎心了老铁

下简要说明使用方法

from concurrent.futures import ProcessPollExecutor,ThreadPollExecutor
#usage e.g.
def f(a):
    print(a)
executor=ProcessPollExecutor(3)
executor.submit(f,100)  # 参数分别是函数名,函数的参数
# 如果函数有返回值 可以直接加上.result()
b=executor.submit(f,10).result()

#获得返回值也可以使用.map方法
a=[1,2,3]
with ProcessPollExecutor() as executor:
    for item in executor.map(f,a):
    	print(item)

with as 语法的介绍可以参见这篇博客

给大家带来一篇python with as的用法 作者:龙皓晨

不在main里运行可能会出现 A process in the process pool was terminated abruptly while the future was running or pending的错误,下面的代码可以解决这个问题


# -*- coding: utf-8 -*
if __name__ == "__main__": 
    with ProcessPoolExecutor(3) as Pool:
        for i in Pool.map(f,a):
            print(i)

scipy

scipy里面有很多适合数据处理的格式,这里对笔者前些天接触的mtx格式和相关的.sparse.coo_matrix函数进行介绍。

from scipy.io import loadmat,mmread
from scipy.sparse import coo_matrix

loadmat(mat文件名)可以导入mat文件
mmread(mtx文件名)可以导入mtx文件
如果是从mat文件构造一个图(网),可以使用如下代码()

G=Graph()
mat=loadmat(mat_file_path)["network"].tocoo()
for i,j,v in zip(mat.row,mat.col,mat.data):
    G[i].append(j)

tocoo()可以将格式转化为coo_matrix形式
可以使用coo_matrix来构建大规模的稀疏矩阵

array=coo_matrix((data, (row, col)), shape=(4, 4)).toarray()
#data row col 是可迭代的,构建格式为
for k in range(len(data)):
    array[row[k]][col[k]]=data[k]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值