"整理了那个工具的玉雕工具使用方法图解,包括收集图片后如何创建vec文件,如何训练模型."这句话怎么翻译成日语?

由于自己在csdn的上传空间不够,暂时将语料放在百度云上
密码: 4psr
文件名是 text8
或者在gensim的word2vec模块官网进行下载。
word2vec在mac os 上的安装
下载word2vec源文件
在终端直接 make 会报错:
error: malloc.h: No such file or directory
找到报错的文件,
将#include &malloc.h&注释,并添加头文件#include &stdlib.h&
如下所示:
#include &stdlib.h&
当以上错误在所有文件中都被改正后,直接 make进行编译,最后编译,并出现一句错误(忘了),不用管,打开word2vec自带的demo,例如
./demo-analogy.sh,查看是否正常运行。
在gensim中使用word2vec
将python当前工作路径切换到训练语料text8所在的目录,或者是在预料所在的目录下,打开终端或者python
安装gnesim:
自己使用的python3.5,在终端直接 pip3 install gensim 进行安装。
pip3 install gensim
通过加载训练预料,进行初始化并训练word2vec模型
from gensim.models import word2vec
sentences = word2vec.Text8Corpus("./text8")
model = word2vec.Word2Vec(sentences,size=200)
计算相似的词,topn=1设置自取最相似词表中的第一个
model.most_similar(positive=["woman","king"],negative=["man"],topn=1)
# output : [('queen', 0.4604)]
#其意义是计算一个词d(或者词表),使得该词的向量v(d)与v(a="woman")-v(c="man")+v(b="king")最近
持久化训练后的模型到本地,加载持久化的模型创建新的模型
model.save("./text8.model")
model.save_word2vec_format("./text8.model.bin",binary=True)
model= word2vec.Word2Vec.load_word2vec_format("./text8.model.bin", binary=True)
计算相似的词,
1,类比的方法,即原版本中的 Analogy 方法。
model.most_similar(['girl','father'],['boy'],topn=3)
# output:[('mother', 0.9722), ('wife', 0.9985), ('lover', 0.6309)]
model.most_similar(['girl','father'],['boy'],topn=10)
#output:[('mother', 0.9722), ('wife', 0.9985), ('lover', 0.6309), ('daughter', 0.448), ('grandmother', 0.7144), ('grandfather', 0.0244), ('widow', 0.9077), ('aunt', 0.3843), ('brother', 0.1772), ('servant', 0.1323)]
more_examples = ["he his she", "big bigger bad","going went being"]
for example in more_examples:
a,b,x = example.split()
predicted = model.most_similar([x,b],[a])[0][0]
print(a,b,x,predicted)
#he his she her
#big bigger bad worse
#going went being was
2, 计算与当前词距离最近的词,即原版本中的distance方法
model.most_similar(["boy"], topn=3)
model.most_similar("boy", topn=3)
#[('girl', 0.9148), ('kid', 0.5381), ('boss', 0.4629)]
3, 计算相似概率,即词向量的cosine值
model.similarity("boy", "girl")
4, word-embeding向量大小
model["boy"]
#array([ 1.,
-0., -0.4583835 ,
1., -0., .......
model["boy"].shape
发现不匹配的词
model.doesnt_match("breakfast cereal dinner lunch".split())
#output:'cereal'
具体的类语法:gensim.models.word2vec.Word2Vec
参考官网:
本文已收录于以下专栏:
相关文章推荐
word2vec介绍word2vec官网:/p/word2vec/
word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的...
word2vec介绍word2vec官网:/p/word2vec/
word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的...
前言自然语言处理有很多方法,最近很流行的是谷歌开源项目word2vec,详见谷歌官网:官网链接。其主要理论由Tomas Mikolov大神团队的2篇论文组成:Efficient Estimation ...
gensim 用conda install gensim 与pip install gensim 安装是不同的
提示C编译器会更快,装了
gensim 官网:/gensim/index.html
Word2vec: the good, the bad (and the fast)
本文主要基于Radim Rehurek的Word2vec Tutorial.**准备输入**Gensim的word2vec的输入是句子的序列. 每个句子是一个单词列表代码块例如:&&& # impor...
Gensim是一个免费的Python库,它可以用来从文档中自动提取语义主题,并且尽可能地做到轻松(对人)高效(对电脑)。
Gensim致力于处理原始的、非结构化的数字文本(普通文本)...
在之前的 使用gensim和sklearn搭建一个文本分类器(一):流程概述 中,叙述了一个使用lsi来对文本进行向量化,再使用线性核svm进行分类的文本分类器。在这篇文章中,沿着之前的思路,提供了该...
本文为基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释。配合gensim介绍及简单的实践例程。
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)gensim | 我爱自然语言处理【不可思议的Word2Vec】 2.训练好的模型 - 科学空间|Scientific Spaces
CATEGORIES
欢迎访问“科学空间”,我们将与您共同探讨科学,感悟人生;我们期待你的参与
【不可思议的Word2Vec】 2.训练好的模型
作者:苏剑林 |
发布时间:
本文目录 []
需要特别说明的是:公众号文章属于比较“现代”的文章,反映了近来的网络热点内容,覆盖面也比较广,因此文章相对来说还是比较典型的。对于分词,我用的是结巴分词,并且关闭了新词发现,这是宁可分少一些,也要分准一些。当然,自带的词典是不够的,笔者自己还整理了50万词条,词条来源有两部分:1、网络收集的词典合并;2、在公众号文章上做新词发现,人工筛选后加入到词典中。因此,分词的结果还算靠谱,而且包含了比较多的流行词,可用性较高。II.
训练代码大家可以参考着改写,要注意,这里引入hashlib.md5是为了对文章进行去重(本来1000万篇文章,去重后得到800万),而这个步骤不是必要的。#! -*- coding:utf-8 -*-
import gensim, logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', )
import pymongo
import hashlib
db = pymongo.MongoClient('172.16.0.101').weixin.text_articles_words
md5 = lambda s: hashlib.md5(s).hexdigest()
class sentences:
def __iter__(self):
texts_set = set()
for a in db.find(no_cursor_timeout=True):
if md5(a['text'].encode('utf-8')) in texts_set:
texts_set.add(md5(a['text'].encode('utf-8')))
yield a['words']
print u'最终计算了%s篇文章'%len(texts_set)
word2vec = gensim.models.word2vec.Word2Vec(sentences(), size=256, window=10, min_count=64, sg=1, hs=1, iter=10, workers=25)
word2vec.save('word2vec_wx')III.
下载链接链接:
密码: uw4r包含文件:word2vec_wx, word2vec_wx.syn1neg.npy, word2vec_wx.syn1.npy, word2vec_wx.wv.syn0.npy,4个文件都是Gensim加载模型所必需的。具体每个文件的含义我也没弄清楚,word2vec_wx大概是模型声明,word2vec_wx.wv.syn0.npy应该就是我们所说的词向量表,word2vec_wx.syn1.npy是隐层到输出层的参数(Huffman树的参数),word2vec_wx.syn1neg.npy就不大清楚了~如果你只关心词向量,也可以下载C版本的格式(跟C版本Word2Vec兼容,只包含词向量):
密码: dgfwIV.
一些演示主要随便演示一下该模型找近义词的结果。欢迎大家提出改进建议。>>> import gensim
>>> model = gensim.models.Word2Vec.load('word2vec_wx')>>> pd.Series(model.most_similar(u'微信'))
(订阅号, 0.)
(QQ号, 0.)
(扫一扫, 0.)
(微信公众号, 0.)
(私聊, 0.)
(微信公众平台, 0.)
(私信, 0.)
(微信平台, 0.)
(官方, 0.)>>> pd.Series(model.most_similar(u'公众号'))
(订阅号, 0.)
(微信公众号, 0.)
(微信公众账号, 0.)
(公众平台, 0.)
(扫一扫, 0.)
(微信公众平台, 0.)
(置顶, 0.)
(公共账号, 0.)
(微信平台, 0.)
(菜单栏, 0.)>>> pd.Series(model.most_similar(u'牛逼'))
(牛掰, 0.)
(厉害, 0.)
(靠谱, 0.)
(苦逼, 0.)
(吹牛逼, 0.)
(了不起, 0.)
(牛叉, 0.)
(绝逼, 0.)
(说真的, 0.)
(两把刷子, 0.)>>> pd.Series(model.most_similar(u'广州'))
(东莞, 0.)
(深圳, 0.)
(佛山, 0.)
(惠州, 0.)
(珠海, 0.)
(厦门, 0.)
(武汉, 0.)
(汕头, 0.)
(增城, 0.)
(上海, 0.)>>> pd.Series(model.most_similar(u'朱元璋'))
(朱棣, 0.)
(燕王, 0.)
(朝廷, 0.)
(明太祖朱元璋, 0.)
(赵匡胤, 0.)
(称帝, 0.)
(起兵, 0.)
(明太祖, 0.)
(太祖, 0.)
(丞相, 0.)>>> pd.Series(model.most_similar(u'微积分'))
(线性代数, 0.)
(数学分析, 0.)
(高等数学, 0.)
(数学, 0.)
(概率论, 0.)
(高等代数, 0.)
(解析几何, 0.)
(复变函数, 0.)
(微分方程, 0.)
(微积分学, 0.)>>> pd.Series(model.most_similar(u'apple'))
(banana, 0.)
(pineapple, 0.)
(orange, 0.)
(sweet, 0.)
(fruit, 0.)
(watermelon, 0.)
(apples, 0.)
(juice, 0.)>>> pd.Series(model.most_similar(u'企鹅'))
(海豹, 0.)
(帝企鹅, 0.)
(北极熊, 0.)
(大象, 0.)
(鲸鱼, 0.)
(蜥蜴, 0.)
(蓝鲸, 0.)
(海豚, 0.)
(猩猩, 0.)>>> pd.Series(model.most_similar(u'足球'))
(篮球, 0.)
(足球运动, 0.)
(青训, 0.)
(排球, 0.)
(乒乓球, 0.)
(足球赛事, 0.)
(棒垒球, 0.)
(篮球运动, 0.)
(足球队, 0.)
(网球, 0.)>>> pd.Series(model.most_similar(u'爸爸'))
(妈妈, 0.)
(儿子, 0.)
(奶奶, 0.)
(爷爷, 0.)
(父亲, 0.)
(女儿, 0.)
(爸妈, 0.)
(外婆, 0.)>>> pd.Series(model.most_similar(u'淘宝'))
(店铺, 0.)
(手机端, 0.)
(天猫店, 0.)
(口令, 0.)
(登录淘宝, 0.)
(淘宝店, 0.)
(淘宝搜, 0.)
(天猫, 0.)
(网店, 0.)
转载到请包括本文地址:
如果您觉得本文还不错,欢迎点击下面的按钮对博主进行打赏。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
支付宝打赏
因为网站后台对打赏并无记录,因此欢迎在打赏时候备注留言。你还可以或在下方评论区留言来告知你的建议或需求。
你也许对下面的内容感兴趣
realisking
如果要进行更为详细的信息搜索,跳转至. 上传我的文档
 下载
 收藏
自从投入教育界,兢兢业业,对于自己的工作非常满意并充满信心,多年来积累了丰富的工作经验。
 下载此文档
VAR模型和VEC模型
下载积分:3000
内容提示:VAR模型和VEC模型
文档格式:PPT|
浏览次数:105|
上传日期: 14:25:34|
文档星级:
全文阅读已结束,如果下载本文需要使用
 3000 积分
下载此文档
该用户还上传了这些文档
VAR模型和VEC模型
官方公共微信1021人阅读
word2vec(2)
word2vec是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
一、理论概述
(主要来源于这篇博客)
1.词向量是什么
自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把这些符号数学化。
  NLP&中最直观,也是到目前为止最常用的词表示方法是&One-hot Representation,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为0,只有一个维度的值为&1,这个维度就代表了当前的词。
  举个栗子,
  “话筒”表示为&[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ...]
  “麦克”表示为&[0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...]
  每个词都是茫茫&0&海中的一个&1。
  这种&One-hot Representation&如果采用稀疏方式存储,会是非常的简洁:也就是给每个词分配一个数字&ID。比如刚才的例子中,话筒记为&3,麦克记为&8(假设从&0&开始记)。如果要编程实现的话,用&Hash&表给每个词分配一个编号就可以了。这么简洁的表示方法配合上最大熵、SVM、CRF&等等算法已经很好地完成了&NLP&领域的各种主流任务。
  当然这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的。光从这两个向量中看不出两个词是否有关系,哪怕是话筒和麦克这样的同义词也不能幸免于难。
  Deep Learning&中一般用到的词向量并不是刚才提到的用&One-hot Representation&表示的那种很长很长的词向量,而是用&Distributed Representation(不知道这个应该怎么翻译,因为还存在一种叫“Distributional Representation”(类似,LDA中用topic表示词语的词向量的表示方法)表示的一种低维实数向量。这种向量一般是这个样子:[0.792,-0.177,&-0.107,
0.109,&-0.542, ...]。维度以&50&维和&100&维比较常见。
2.词向量的来历
Distributed representation&最早是&Hinton&在&1986&年的论文《Learning distributed representations of concepts》中提出的。虽然这篇文章没有说要将词做Distributed representation但至少这种先进的思想在那个时候就在人们的心中埋下了火种,到&2000&年之后开始逐渐被人重视。
3.&词向量的训练
  要介绍词向量是怎么训练得到的,就不得不提到语言模型。到目前为止我了解到的所有训练方法都是在训练语言模型的同时,顺便得到词向量的。
  这也比较容易理解,要从一段无标注的自然文本中学习出一些东西,无非就是统计出词频、词的共现、词的搭配之类的信息。而要从自然文本中统计并建立一个语言模型,无疑是要求最为精确的一个任务(也不排除以后有人创造出更好更有用的方法)。既然构建语言模型这一任务要求这么高,其中必然也需要对语言进行更精细的统计和分析,同时也会需要更好的模型,更大的数据来支撑。目前最好的词向量都来自于此,也就不难理解了。
    词向量的训练最经典的有&3&个工作,C&W 2008、M&H 2008、Mikolov 2010。当然在说这些工作之前,不得不介绍一下这一系列中&Bengio&的经典之作
4.&词向量的评价
词向量的评价大体上可以分成两种方式,第一种是把词向量融入现有系统中,看对系统性能的提升;第二种是直接从语言学的角度对词向量进行分析,如相似度、语义偏移等。
4.1&提升现有系统
  词向量的用法最常见的有两种:
  1.&直接用于神经网络模型的输入层。如&C&W&的&SENNA&系统中,将训练好的词向量作为输入,用前馈网络和卷积网络完成了词性标注、语义角色标注等一系列任务。再如&Socher将词向量作为输入,用递归神经网络完成了句法分析、情感分析等多项任务。
2.&作为辅助特征扩充现有模型。如&Turian&将词向量作为额外的特征加入到接近&state of the art&的方法中,进一步提高了命名实体识别和短语识别的效果。
4.2&语言学评价
  还有一个有意思的分析是&Mikolov&在&2013&年刚刚发表的一项发现。他发现两个词向量之间的关系,可以直接从这两个向量的差里体现出来。向量的差就是数学上的定义,直接逐位相减。比如&C(king)-C(queen)≈C(man)-C(woman)。更强大的是,与&C(king)-C(man)+C(woman)&最接近的向量就是&C(queen)。
  为了分析词向量的这个特点,&Mikolov&使用类比(analogy)的方式来评测。如已知&a之于&b&犹如&c&之于&d。现在给出&a、b、c,看&C(a)-C(b)+C(c)&最接近的词是否是&d。
  在文章&Mikolov&对比了词法关系(名词单复数&good-better:rough-rougher、动词第三人称单数、形容词比较级最高级等)和语义关系(clothing-shirt:dish-bowl)
这些实验结果中最容易理解的是:语料越大,词向量就越好。其它的实验由于缺乏严格控制条件进行对比,谈不上哪个更好哪个更差。不过这里的两个语言学分析都非常有意思,尤其是向量之间存在这种线性平移的关系,可能会是词向量发展的一个突破口。
关于Deep Lerning In Nlp的一些相关论文,《Deep Learning in NLP&(一)词向量和语言模型》()这篇博客总结的非常的好。以上内容大多数都是截取原博客内容。
二、实际操作
这篇文章是最近几天看word2vec源码以及相关神经网络训练词向量论文之后的个人小小的总结,主要是针对word2vec的使用,做一下介绍。望大家使用的过程中,少走弯路。
word2vec工具中包含了对两种模型的训练,如下图。在训练每种模型的时候又分HS和NEG两种方法。(看图就可以发现,其实word2vec并不deep……)
除了google自己的word2vec工具,各位对词向量感兴趣的牛人们也相继编写了各自不同的版本。其中比较好用的是Python Gensim主题模型包中的word2vec,但通过阅读其源码python版本只实现了skip-gram模型,并且只实现了通过分层softmax方法对其训练,并没有使用negative sampling。下面列举一下目前出现的版本以及相对应的地址,供大家选择。如下表:
C++
以上代码,C++版本的我没有看过。最权威的当然是C语言版本,但是阅读起来比较困难一点。Python版本有优化处理,所以速度相对来说也不慢,但只是实现了分层softmax方法对skip-gram模型进行训练。Java版本分别实现了分层softmax方法对CBOW模型和skip-gram模型进行训练。C++版本的没有阅读其代码,所以未知……
使用之前,先贴一些论文中对两个模型和不同方法的评价图片,方便大家根据不同任务进行不同训练。
下面以c语言正式版本为例,来介绍word2vec的使用。
首先我们将google word2vec项目源码checkout&到本机,具体地址是&使用ssh登录实验室Linux服务器,地址192.168.1.143。将刚才checkout的文件,上传到服务器中。
进入目录,命令行输入make指令,进行编译。
这样我们就可以开始使用,word2vec工具了。
1.将文本语料进行分词,以空格,tab隔开都可以,中文分词工具可以使用张华平博士的NLPIR2013&&喜欢用Python&的童鞋也可以使用结巴分词。
2.将分好词的训练语料进行训练,假定我语料名称为test.txt且在word2vec目录中。输入命令:
./word2vec -train test.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
以上命令表示的是输入文件是test.txt,输出文件是vectors.bin,不使用cbow模型,默认为Skip-Gram模型。 每个单词的向量维度是200,训练的窗口大小为5就是考虑一个词前五个和后五个词语(实际代码中还有一个随机选窗口的过程,窗口大小&=5)。不使用NEG方法,使用HS方法。-sampe指的是采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。-binary为1指的是结果二进制存储,为0是普通存储(普通存储的时候是可以打开看到词语和对应的向量的)除了以上命令中的参数,word2vec还有几个参数对我们比较有用比如-alpha设置学习速率,默认的为0.025.&–min-count设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃。-classes设置聚类个数,看了一下源码用的是k-means聚类的方法。
·&&&&&&&&&架构:skip-gram(慢、对罕见字有利)vs CBOW(快)
·&&&&&&&&&训练算法:分层softmax(对罕见字有利)vs&负采样(对常见词和低纬向量有利)
·&&&&&&&&&欠采样频繁词:可以提高结果的准确性和速度(适用范围1e-3到1e-5)
·&&&&&&&&&文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
3.训练好模型之后,得到vectors.bin这个模型文件。vectors.bin这个文件就是文档中词语和其对应的向量,这个向量的维度是你训练时设置的参数大小。下面我们可以利用这个model做很多自然语言处理的任务了。Google代码里面提供了distance的一个应用,说白了就是读取模型文件中每一个词和其对应的向量,计算所输入query的词,与其他所有词语的cosine相似度,排序,返回结果。同理训练命令中的-classes参数,也是获取每个词对应的向量之后,对词语进行k-means聚类。对于训练出来的模型进行操作,我推荐大家使用这个java版本的模型读取类,比较方便,读取模型之后大家就可以来实现各种各样有趣的东西了。下面举几个例子:
a.计算两个词语相似度,如图1计算asp与net的相似度为0.6215127
b.列出所有相似词语列表,如图2为“php”的结果。
c.寻找对应关系:如图3: 男人-男孩 女人-? 如图4:内蒙-呼和浩特 河北-?
d.删选不合群的词语,可以用来做特征选择:如图5所示:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6374次
排名:千里之外
转载:14篇
(1)(1)(5)(1)(1)(2)(5)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'}

我要回帖

更多关于 ps工具使用方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信