从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]