转自:http://www.csdn.net/article/2013-08-20/2816643-word2vec
word2vec(word to vector)顾名思义,这是一个将单词转换成向量形式的工具。通过转换,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
word2vec为计算向量词提供了一种有效的连续词袋(bag-of-words)和skip-gram架构实现,word2vec遵循Apache License 2.0开源协议。
如何转换?
word2vec主要是将文本语料库转换成词向量。它会先从训练文本数据中构建一个词汇,然后获取向量表示词,由此产生的词向量可以作为某项功能用在许多自然语言处理和机器学习应用中。
在举例子之前,引入余弦距离(Cosine distance)这个概念(摘自维基百科):
通过测量两个向量内积空间的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。在比较过程中,向量的规模大小不予考虑,仅仅考虑到向量的指向方向。余弦相似度通常用于两个向量的夹角小于90°之内,因此余弦相似度的值为0到1之间。
然后可以通过distance工具根据转换后的向量计算出余弦距离,来表示向量(词语)的相似度。例如,你输入“france”,distance工具会计算并显示与“france”距离最相近的词,如下:
Word Cosine distance ------------------------------------------- spain 0.678515 belgium 0.665923 netherlands 0.652428 italy 0.633130 switzerland 0.622323 luxembourg 0.610033 portugal 0.577154 russia 0.571507 germany 0.563291 catalonia 0.534176
在word2vec中主要有两种学习算法:连续词袋和连续skip-gram,switch-cbow允许用户选择学习算法。这两种算法有助于预测其它句子的词汇。
从词转换到句子或更长的文本
在一些特定的应用程序中,它还可以用于多个词汇,例如,“san francisco”,这样它就会通过预先处理数据集,让其形成句子,找到与“san francisco”余弦距离最近的内容:
Word Cosine distance ------------------------------------------- los_angeles 0.666175 golden_gate 0.571522 oakland 0.557521 california 0.554623 san_diego 0.534939 pasadena 0.519115 seattle 0.512098 taiko 0.507570 houston 0.499762 chicago_illinois 0.491598
如何衡量词向量质量
可能影响到词向量质量的几个因素:
- 训练数据的数量和质量
- 向量的大小
- 训练算法
向量的质量对任何一个应用程序都非常重要,然而,根据复杂的任务来探索不同的超参数设置可能会过于苛刻。因此,我们设计了简单的测试集,来快速评估矢量词的质量。
词聚类(Word clustering)
词向量也可以从巨大的数据集中导出词类,通过执行词向量顶部的K-means聚类即可实现,脚本演示地址:./demo-classes.sh,最后输出的是一个词汇表文件和与之对应的类ID标识,例如:
carnivores 234 carnivorous 234 cetaceans 234 cormorant 234 coyotes 234 crocodile 234 crocodiles 234 crustaceans 234 cultivated 234 danios 234 . . . acceptance 412 argue 412 argues 412 arguing 412 argument 412 arguments 412 belief 412 believe 412 challenge 412 claim 412
性能
在多核CPU上(使用开关‘-threads N’),通过使用并行训练可以显著提高训练速度,超参数选择对性能也至关重要(包括速度和准确率),主要选择有:
- 架构:skip-gram(慢、对罕见字有利)vs CBOW(快)
- 训练算法:分层softmax(对罕见字有利)vs 负采样(对常见词和低纬向量有利)
- 欠采样频繁词:可以提高结果的准确性和速度(适用范围1e-3到1e-5)
- 维度词向量:通常情况下表现都很好
- 文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
去哪里收集训练数据
随着训练数据的增加,词向量质量也显著提升,如果以研究为目的的,可以考虑线上数据集:
- 来自维基百科的上亿字符(在Matt Mahoney页面底部,适用预处理perl脚本)
- WMT11网站:多语言的大量文本数据。
快速入门
- 代码下载:http://word2vec.googlecode.com/svn/trunk/
- 运行“make”编译word2vec工具
- 运行demo脚本:./demo-word.sh and ./demo-phrases.sh
关于word2vec更多介绍,大家可以阅读:https://code.google.com/p/word2vec/
相关推荐
但后来听说Google开源的word2vec还挺有意思,能够把词映射到K维向量空间,甚至词与词之间 的向量操作还能和语义相对应。如果换个思路,把词当做feature,那么word2vec就可以把feature映射到K维向量空间,应该可以为...
但后来听说Google开源的word2vec还挺有意思,能够把词映射到K维向量空间,甚至词与词之间 的向量操作还能和语义相对应。如果换个思路,把词当做feature,那么word2vec就可以把feature映射到K维向量空间,应该可以为...
Deeplearning4j 的 Word2vec 演示 先决条件 该演示预计GoogleNews-vectors-negative300.bin.gz文件可在C:\eclipse\data 中使用。 这个 word2vec 模型可在线获得。 两个位置见以下链接 示例建议 词簇 巧克力 寿司 ...
Deeplearning4j可以实施的技术包括受限玻尔兹曼机、深度置信网络、深度自动编码器、堆叠式降噪自动编码器、循环神经张量网络,以及word2vec、doc2vec和GloVe。这些算法全部包括分布式并行版本,与Hadoop和Spark集成...
由word2vec演进的Embedding方法 doc2vec item2vec DeepWalk SDNE EGES(Enhanced Graph Embedding with Side Information) 最近邻检索 图神经网络 社区发现算法 标签传播(LPA) lovain method infomap 强化学习资料 ...
并用具体的代码完整地实现了各种类型的深度神经网络:AutoEncoder、MLP、CNN(AlexNet,VGGNet,Inception Net,ResNet)、Word2Vec、RNN(LSTM,Bi-RNN)、Deep Reinforcement Learning(Policy Network、Value ...
Deep Learning for Time Series Email: autuanliu@163.com !!!本库的所有文件,作者保留一切版权,在未经作者许可,请不要擅自使用或者发表!!! 主题 抑郁症 难治性癫痫 1 RNN Granger Causality 1.1 Granger ...
调用Deeplearning4j中内置paragraphvector的方法,通过doc2vec内置VSM 用Gensim会更方便点 基于景点的推荐 统计最高浏览量 过滤一定时间前的新闻保证景点的准确 评估指标 F1-Measure(精度+召回率) 算法 最近邻数量...
gabor matlab代码 - Roadmap to becoming a Go developer in 2020 (Alikhll) - 100 Days of ML Coding (Avik-Jain) - A curated list of awesome Deep Learning tutorials, ...Learning》中文版 ...cw2vec (Shel
DeepWalk、LINE、node2vec、GraRep、TADW 和 GCN。 内容 图上的表示学习:方法和应用。 威廉·L·汉密尔顿、雷克斯·英、Jure Leskovec。 IEEE 数据(库)工程公报 2017。 图嵌入技术、应用和性能:调查。 帕拉什·...
H2O提供了许多流行实现,例如广义线性模型(GLM),梯度提升机(包括XGBoost),随机森林,深层神经网络,堆叠体,朴素贝叶斯,广义加性模型(GAM),考克斯比例危害,K-表示PCA,Word2Vec以及全自动机器学习算法...
此回购包含与开源网络安全相关的项目的集合,重点是应用高级机器学习技术。 单击以下任何链接将您重定向到相应项目的README文件。 (使用tensorflow后端的Python Keras) (使用BigDL lib的Spark Scala)
lightNLP,很基础的自然语言处理框架简介本项目基于Pytorch和torchtext,预先提供一个基础的自然语言处理相关任务实现的深度学习框架。有关详细说明和教程请参见项目文档: 声明本项目从定位上来说只是一次收集和...
如果有任何问题,请直接提交,也欢迎通过Euler开源技术支持邮件组( )联系我们。 执照 Euler使用许可 致谢 Euler由阿里妈妈工程平台团队与搜索广告算法团队共同探讨与开发,也获得了阿里妈妈多个团队的大力支持。...