gensim 中的word2vector 有预训练好的model吗?
gensim 用conda install gensim 与pip install gensim 安装是不同的 提示C编译器会更快,windows下装了 MinGW 中文wiki处理 gensim模块中有专门处理wiki语料的函数 中文分词还是用的jieba 因为wiki百科有繁体,简繁体转换用了 还有最开始程序运行有问题,发现了自己python的一个坏习惯,应该把程序写成函数 [python] view plain copy if __name__ == '__main__': my_function() 这样子python import这个文件就不会发生问题 [python] view plain copy# -*- coding: utf-8 -*- from gensim.corpora import WikiCorpus import jieba from langconv import * _author__ = 'Lust' # read the wiki.xml.bz2 # transform it to simplified Chinese (use langconv) # Chinese text segmentation(use jieba) # save it as txt def my_function(): space = " " i = 0 l = [] a = '..//data//zhwiki-latest-pages-articles.xml.bz2' f = open('..//data//reduce_zhiwiki.txt', 'w') wiki = WikiCorpus(a, lemmatize=False, dictionary={}) # texts = wiki.get_texts() for text in wiki.get_texts(): for temp_sentence in text: temp_sentence = Converter('zh-hans').convert(temp_sentence.decode('utf-8')) temp_sentence = temp_sentence.encode('utf-8') seg_list = list(jieba.cut(temp_sentence)) # for temp_term in temp_sentence: for temp_term in seg_list: l.append(temp_term.encode('utf-8')) f.write(space.join(l) + "\n") l = [] i = i + 1 print "Saved " + str(i) + " articles" # limit number of wikis if (i == 100): break f.close() if __name__ == '__main__': my_function() gensim中的word2vector 超级简单,一个函数的事情。
唯一要注意的是workers=multiprocessing.cpu_count()-4,如果不-4,win10会蓝屏,因为CPU总是100%,把电脑累蓝了?[python] view plain copy# -*- coding: utf-8 -*- from gensim.models import Word2Vec from gensim.models.word2vec import LineSentence import multiprocessing _author__ = 'Lust' # read the txt # word2vec it # save it as model and vector def my_function(): a = open('..//data//zhiwiki_news.txt', 'r') f_1 = open('..//result//zhiwiki_news.model', 'w') f_2 = open('..//result//zhiwiki_news.vector', 'w') model = Word2Vec(LineSentence(a), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count()-4) model.save(f_1) model.save_word2vec_format(f_2, binary=False) if __name__ == '__main__': my_function() 使用训练好的模型 [python] view plain copy# -*- coding: utf-8 -*- import gensim _author__ = 'Lust' # read the news # Chinese text segmentation(use jieba) # add it to zhiwiki_news def my_function(): model = gensim.models.Word2Vec.load_word2vec_format("wiki.en.text.vector", binary=False) model.most_similar("man") model.similarity("woman", "girl") if __name__ == '__main__': my_function()
如何使用word2vec来分类
FC——文件比较命令 1.功能:比较文件的异同,并列出差异处。
2.类型:外部命令 3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A][/B][/C][/N] 4.使用说明: (1)选用/A参数,为ASCII码比较模式; (2)选用/B参数,为二进制比较模式; (3)选用/C参数,将大小写字符看成是相同的字符。
(4)选用/N参数,在ASCII码比较方式下,显示相异处的行号。
不好意思,我还没有达到那个层次
word2vec的demo里的训练数据text8内的数据格式是什么样子的
:将one-hot向量转换成低维词向量的这一层(虽然大家都不称之为一层,但在我看来就是一层),因为word2vec的输入是one-hot。
one-hot可看成是1*N(N是词总数)的矩阵,与这个系数矩阵(N*M, M是word2vec词向量维数)相乘之后就可以得到1*M的向量,这个向量就是这个词对应的词向量了。
那么对于那个N*M的矩阵,每一行就对应了每个单词的词向量。
接下来就是进入神经网络,然后通过训练不断更新这个矩阵。
如何利用tensorflow 中rnn和word2vec来做文本的分类
最近正好组内做了一个文档相似度的分享。
决定回答一发。
首先,如果不局限于NN的方法,可以用BOW+tf-idf+LSI/LDA的体系搞定,也就是俗称的01或one hot representation。
其次,如果楼主指定了必须用流行的NN,俗称word-embedding的方法,当然首推word2vec(虽然不算是DNN)。
然后得到了word2vec的词向量后,可以通过简单加权/tag加权/tf-idf加权等方式得到文档向量。
这算是一种方法。
当然,加权之前一般应该先干掉stop word,词聚类处理一下。
还有,doc2vec中的paragraph vector也属于直接得到doc向量的方法。
特点就是修改了word2vec中的cbow和skip-gram模型。
依据论文《Distributed Representations of Sentences and Documents》(ICML 2014)。
还有一种根据句法树加权的方式,是ICML2011提出的,见论文《Parsing Natural Scenes and Natural Language with Recursive Neural Networks》,后续也有多个改编的版本。
当然,得到词向量的方式不局限于word2vec,RNNLM和glove也能得到传说中高质量的词向量。
怎样用word2vec来得到某几个词的向量表示
对数的性质及推导 用^表示乘方,用log(a)(b)表示以a为底,b的对数 *表示乘号,/表示除号 定义式: 若a^n=b(a>0且a≠1) 则n=log(a)(b) 基本性质: 1.a^(log(a)(b))=b 2.log(a)(MN)=log(a)(M)+log(a)(N); 3.log(a)(M/N)=log(a)(M)-log(a)(N); 4.log(a)(M^n)=nlog(a)(M)
转载请注明出处51数据库 » gensim word2vec 输入
Akric丶Jun