word2vec学习笔记

来源:互联网 发布:ubuntu navicat 乱码 编辑:程序博客网 时间:2024/06/04 17:50

word2vec是把单词转换成向量的工具。

通过向量间的相似度表示文本语义的相似度

 

一般用用Distributed Representation方法表示词向量

通过训练语言模型,得到词向量。

 

word2vec是把单词转换成向量的工具。
通过向量间的相似度表示文本语义的相似度


一般用用 Distributed Representation方法表示词向量
通过训练语言模型,得到词向量。
使用cbow模型


词向量的评价

词向量的评价大体上可以分成两种方式,第一种是把词向量融入现有系统中,

看对系统性能的提升;第二种是直接从语言学的角度对词向量进行分析,如相似度、语义偏移等。

 

word2vec工具中包含了对两种模型的训练,如下图。在训练每种模型的时候又分HSNEG两种方法。(看图就可以发现,其实word2vec并不deep……)

 

word2vec使用:

1.      分词

可以用ANSJ对文本分词

http://blog.csdn.net/zhaoxinfan/article/details/10403917

也可以用结巴分词结巴分词https://github.com/fxsjy/jieba

2.      对分好词的语料进行训练。

./word2vec -train  test.txt-output vectors.bin -cbow 0 -size 200

-window5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1

输入语料:test.txt  输出: vectors.bin  每个单词的向量维度是200   训练的窗口大小为5就是考虑一个词前五个和后五个词语(窗口大小<=5)

架构:skip-gram(慢、对罕见字有利)vs CBOW(快)

训练算法:分层softmax(对罕见字有利)vs 负采样(对常见词和低纬向量有利)

·文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近

不使用NEG方法,使用HS方法。

-sampe指的是采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。

-binary为1指的是结果二进制存储,为0是普通存储(普通存储的时候是可以打开看到词语和对应的向量的)除了以上命令中的参数,word2vec还有几个参数对我们比较有用比如

-alpha设置学习速率,默认的为0.025. 

–min-count设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃。

-classes设置聚类个数,看了一下源码用的是k-means聚类的方法。

 

训练词向量1 nohup ./word2vec -train resultbig.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1 &

3.     分析

4.    4.1计算相似的词:

1 ./distance vectors.bin

 ./distance可以看成计算词与词之间的距离,把词看成向量空间上的一个点,distance看成向量空间上点与点的距离。

下面是一些例子:  

 

0 0
原创粉丝点击