Windows下使用Word2vec继续词向量训练

article/2025/9/12 18:02:42

word2vec是Google在2013年提出的一款开源工具,其是一个Deep Learning(深度学习)模型(实际上该模型层次较浅,严格上还不能算是深层模型,如果word2vec上层再套一层与具体应用相关的输出层,如Softmax,便更像是一个深层模型),它将词表征成实数值向量,采用CBOW(Continuous Bag-Of-Words Model,连续词袋模型)和Skip-Gram(Continuous Skip-GramModel)两种模型。具体原理,网上有很多。
本文是在windows下使用word2vec求词向量(linux环境下,网上有很多,就不再累赘)
1. 因为word2vec需要linux环境,所有首先在windows下安装linux环境模拟器,推荐cygwin(下载地址:http://www.cygwin.com/install.html),在安装时注意:因为默认安装下没有安装make命令工具(后面要用到),所以在安装时,选择package时,需要选择Devel与Utils模块,如下图所示:



2. 下载word2vec,下载地址为:http://word2vec.googlecode.com/svn/trunk/
将下载的所有文件放入word2vec文件夹下。
补充:
word2vec的原版代码是google code上的,也有改写的其他两个版本:
(1) c++11版本:(jdeng/word2vec) 下载地址: https://github.com/jdeng/word2vec
该代码可以在windows下编译运行,但需要编译器支持c++11; 已使用VS2013编译通过并运行:运行vs2013命令提示符,cd进入代码目录,输入cl main.cc,然后编译即可;训练命令直接是main,测试命令是“main test”。 运行和测试同样需要text8、questions-words.txt文件。 该版本输出的model文件为文本格式。
(2) java版本:下载地址:https://github.com/NLPchina/Word2VEC_java
经测试,OK。 也可以使用该java代码加载上述c++11版本的model,但需要自行添加load的代码。
3. 下载训练数据
下面提供一些网上能下载到的中文的好语料,供研究人员学习使用。
(1).中科院自动化所的中英文新闻语料库 http://www.datatang.com/data/13484
中文新闻分类语料库从凤凰、新浪、网易、腾讯等版面搜集。英语新闻分类语料库为Reuters-21578的ModApte版本。
(2).搜狗的中文新闻语料库 http://www.sogou.com/labs/dl/c.html
包括搜狐的大量新闻语料与对应的分类信息。有不同大小的版本可以下载。
(3).李荣陆老师的中文语料库 http://www.datatang.com/data/11968
压缩后有240M大小
(4).谭松波老师的中文文本分类语料 http://www.datatang.com/data/11970
不仅包含大的分类,例如经济、运动等等,每个大类下面还包含具体的小类,例如运动包含篮球、足球等等。能够作为层次分类的语料库,非常实用。这个网址免积分(谭松波老师的主页):http://www.searchforum.org.cn/tansongbo/corpus1.php
(5).网易分类文本数据 http://www.datatang.com/data/11965
包含运动、汽车等六大类的4000条文本数据。
(6).中文文本分类语料 http://www.datatang.com/data/11963
包含Arts、Literature等类别的语料文本。
(7).更全的搜狗文本分类语料 http://www.sogou.com/labs/dl/c.html
搜狗实验室发布的文本分类语料,有不同大小的数据版本供免费下载
(8).2002年中文网页分类训练集 http://www.datatang.com/data/15021
2002年秋天北京大学网络与分布式实验室天网小组通过动员不同专业的几十个学生,人工选取形成了一个全新的基于层次模型的大规模中文网页样本集。它包括11678个训练网页实例和3630个测试网页实例,分布在11个大类别中。
4. 将预料库进行分词并去掉停用词,可以使用的分词工具有:
StandardAnalyzer(中英文)、ChineseAnalyzer(中文)、CJKAnalyzer(中英文)、IKAnalyzer(中英文,兼容韩文,日文)、paoding(中文)、MMAnalyzer(中英文)、MMSeg4j(中英文)、imdict(中英文)、NLTK(中英文)、Jieba(中英文),这几种分词工具的区别,可以参加:http://blog.csdn.net/wauwa/article/details/7865526。本文使用Jieba分词工具。
5. 分词之后,所有的词以空格键或tab或,隔开写入一个文件中,如all_words中,并将该文件拷贝到word2vec目录中。
6. 启动cygwin,使用cd命令进入word2vec文件夹下,输入make命令,报如下错误
gcc word2vec.c -o word2vec -lm -pthread -O3 -march=native -Wall -funroll-loops -Wno-unused-result
gcc: 错误:unrecognized command line option ‘-pthread’
makefile:8: recipe for target 'word2vec' failed
make: *** [word2vec] Error 1

说明cygwin中的gcc不支持pthread多线程命令,解决方法是将word2vec目录下的makefile文件:
CFLAGS = -lm -pthread -O3 -march=native -Wall -funroll-loops -Wno-unused-result
这一行注释掉。

7. 将你自己的数据(可以打包成压缩文件),放入word2vec目录下,修改demo-word.sh文件,该文件默认情况下使用自带的text8数据进行训练,如果训练数据不存在,则会进行下载,因为需要使用自己的数据进行训练,所以可以将
if [ ! -e text8.zip ]; then
wget http://mattmahoney.net/dc/text8.zip -O text8.gz
gzip -d text8.gz -f
fi
进行注释,并将
time ./word2vec -train text8 -output vectors.bin -cbow 1 -size 200 -window 8 -negative 25 -hs 0 -sample 1e-4 -threads 20 -binary 0 -iter 15
./distance vectors.bin


中的text8更改成自己的训练数据名称all_words,如果你的数据有后缀,记得带后缀。
参数解释:
-train 训练数据
-output 结果输入文件,即每个词的向量
-cbow 是否使用cbow模型,0表示使用skip-gram模型,1表示使用cbow模型,默认情况下是skip-gram模型,cbow模型快一些,skip-gram模型效果好一些
-size 表示输出的词向量维数
-window 为训练的窗口大小,8表示每个词考虑前8个词与后8个词(实际代码中还有一个随机选窗口的过程,窗口大小<=5)
-negative 表示是否使用NEG方,0表示不使用,其它的值目前还不是很清楚
-hs 是否使用HS方法,0表示不使用,1表示使用
-sample 表示 采样的阈值,如果一个词在训练样本中出现的频率越大,那么就越会被采样
-binary 表示输出的结果文件是否采用二进制存储,0表示不使用(即普通的文本存储,可以打开查看),1表示使用,即vectors.bin的存储类型
-------------------------------------
除了上面所讲的参数,还有:
-alpha 表示 学习速率
-min-count 表示设置最低频率,默认为5,如果一个词语在文档中出现的次数小于该阈值,那么该词就会被舍弃
-classes 表示词聚类簇的个数,从相关源码中可以得出该聚类是采用k-means
8. 运行命令sh demo-word.sh,等待训练完成,如下图:


9. 模型训练完成之后,得到了vectors.bin这个词向量文件,文件的存储类型由binary参数觉得,如果为0,便可以直接用编辑器打开,进行查看,向量维度由size参数决定。于是我们可以使用这个向量文件进一步进行自然语言处理了。比如求相似词,关键词聚类与分类等。其中word2vec中提供了distance求词的cosine相似度,并排序。也可以在训练时,设置-classes参数来指定聚类的簇个数,使用kmeans进行聚类。还可以继续别的操作,可以参见http://blog.csdn.net/zhaoxinfan/article/details/11640573。


http://chatgpt.dhexx.cn/article/8sPIt2pN.shtml

相关文章

python spark MLlib

window系统 1. anaconda 或python spark环境变量 2. 配置spark home D:\Develop\spark-1.6.0-bin-hadoop2.6\spark-1.6.0-bin-hadoop2.63. C:\Users\Administrator>pip install py4jpython for java cpython c 与java交互就是通过py4jpip uninstall py4j4. 安装pyspark &a…

数据中台建设方案-基于大数据平台

数据中台建设方案 -基于大数据平台- 1数据中台建设方案 1.1 总体建设方案 1.2大数据集成平台 1.3大数据计算平台 1.3.1数据计算层建设 计算层技术含量最高,最为活跃,发展也最为迅速。计算层主要实现各类数据的加工、处理和计算,为上层应用提供良好和充分的数据支持。大数据基…

2021-03-04 大数据课程笔记 day43

R星校长 机器学习03【机器学习】 主要内容 数字聚类案例TF-IDF算法微博营销案例逻辑回归算法音乐分类案例 学习目标 第一节 数字聚类案例 1. K-means 找中心点和数据点分类例子 import numpy as np #将每行数据放入一个数组内列表&#xff0c;返回一个二维列表 def loa…

文本挖掘之文本聚类(MapReduce)

刘 勇 Email&#xff1a;lyssymsina.com 简介 针对大数量的文本数据&#xff0c;采用单线程处理时&#xff0c;一方面消耗较长处理时间&#xff0c;另一方面对大量数据的I/O操作也会消耗较长处理时间&#xff0c;同时对内存空间的消耗也是很大&#xff0c;因此&#xff0c;本文…

solr 自聚类实现

参考官网&#xff1a;https://lucene.apache.org/solr/guide/6_6/result-clustering.html 最近用到solr自聚类的&#xff0c;先简单介绍如下&#xff1a; 1、配置文件 主要配置文件必须配置如下内容&#xff1a; <lib dir"${solr.install.dir:../../..}/contrib/cluste…

《学术小白的学习之路 06》自然语言处理之 数据预处理、Jieba分词和文本聚类

本文主要是学习参考杨秀璋老师的博客,笔记总结。 原文链接 文章目录 书山有路勤为径&#xff0c;学海无涯苦作舟&#xff08;行行代码要手敲&#xff09;零、吃水不忘挖井人一、数据预处理&#xff08;分词-清洗-特征提取-权重&#xff09;二、中文分词2.1 中文分词技术2.2 Jie…

kmeans实现文本聚类

需求 拿到的需求是输入n个文本,对文本进行聚类,由于这些输入不能通过历史数据进行训练,所以这个主要就是用无监督学习来解决。 kmeans 谈到聚类就会想到kmeans,它的核心思想是给定的K值和K个初始质心将样本中每个点都分到距离最近的类簇中,当所有点分配完后根据每个类簇的…

PS放大图片而不模糊的操作方法

1、使用ps打开图片&#xff08;原始图片200*200&#xff09;&#xff0c;正常情况下ctrl “” 放大图片&#xff0c;图片会变模糊&#xff0c;如下&#xff1a; 原始图片&#xff1a; 放大之后&#xff1a; 明显模糊了。 2、右键图层&#xff0c;选择复制图层…

使用PS制作放大镜效果

&#xff08;撰写时间&#xff1a;2019年5月7日 作者&#xff1a;陈景鸿&#xff09; PS的的放大镜也就是将模糊的东西能够看得清楚&#xff0c;也是一款神奇的东西&#xff0c;制作放大镜有两种效果&#xff0c;一种是将图片发大&#xff0c;一种是将图片变得清晰&#xff0c…

使用PS中的创建剪贴蒙版来做放大镜

使用PS中的创建剪贴蒙版来做放大镜 &#xff08;写作时间&#xff1a;4月15日 作者&#xff1a;陈铭军&#xff09; 首先随便找一张建筑物照片导入PS&#xff0c;其他照片也可以做。 然后“Ctrl”“J”或者鼠标右键点击背景图层复制两次。激活背景副本&#xff0c;在上方的菜…

ps一些基本操作

调整图片、图层大小 点击矩形 画出需要缩小/放大的矩形框ctrlt&#xff0c;缩小/放大矩形框点击图像—画布大小&#xff0c;修改画布大小

ps基础 工作区面板 放大镜 抓手 移动工具

20191110笔记 ps 又叫做编辑软件又称为 编辑对象:像素图 点阵图 位图 ps基础-设置工作区 工作区 是设计师在使用ps时自定义的工作面板组合,方便提升工作效率 工具栏 选项栏 色板 历史纪录 颜色 图层 ps基础-图片的放大 缩小 切换 移动 放大镜 ctrl 放大镜 ctrl-…

ps把图片无损放大的方法

工作中我们当遇到图片编辑修改方面的问题时&#xff0c;我们都习惯用PS软件进行处理。如果想要将图片放大&#xff0c;第一想到的也是用PS软件&#xff0c;但是PS放大后的图片会变得很模糊&#xff0c;于是很多人问&#xff1a;ps怎么把图片无损放大&#xff1f; 其实PS是没有…

ps 做放大镜效果

1 随意打出你想做出效果的文字或应用图片 2.复制一层文字图层&#xff0c;将复制的文字图层栅格化后用椭圆选框工具在你想要放大的地方画一个正圆 3.滤镜——扭曲——球面化 参数可以根据自己调节 4.再新建一个图层&#xff0c;在原来的正圆选框上 编辑 ——描边&#xff0c;…

ps怎么放大图片保持清晰度?

作为一名上班族学会PS软件是非常有必要的&#xff0c;可以帮助我们将图片改成我们需要的样子&#xff0c;如格式转换&#xff0c;修改图片大小等。但是大家有没有发现&#xff0c;使用PS软件将图片放大后&#xff0c;图片会变得很模糊&#xff0c;不像原图那样清晰了&#xff0…

ps图片放大后模糊怎么办?

ps图片放大后模糊怎么办&#xff1f;说到如何将图片放大&#xff0c;相信大家想到最多的方法就是用ps软件进行放大&#xff0c;ps是一个比较强大的图片编辑软件。但是大家同样也发现了一个问题&#xff0c;就是用ps将图片尺寸进行放大后&#xff0c;图片的清晰度会降低&#xf…

ps图像放大后变清晰和文字模糊变清晰

1.使ps图像放大后变清晰 正常直接拉伸图片&#xff0c;图片会变得十分模糊 点击图像&#xff0c;重新采样改为保留细节2.0 减少杂色拉到 100 然后图片就会变得清晰 2.使ps中文件的文字变清晰 首先ctrlshiftu去色&#xff0c;然后用笔分别吸取黑白两个地方就能调回来 但是文字…

制作局部区域放大效果(每天一个PS小项目)

原图如下所示&#xff1a; 按住Ctrl点击通道中黑白放大镜&#xff0c;将放大镜选出来&#xff1a; 按CtrlC复制&#xff0c;点击猫的面板&#xff0c;按CtrlV粘贴&#xff1a; 按CtrlJ复制一个背景&#xff0c;点击放大镜图层&#xff0c;按CtrlT更改尺寸&#xff1a; 选择…

【Ps问题】PS旋转功能会让图片乱飞的解决方法

问题描述&#xff1a;PS软件的旋转功能【R】每次旋转后图片都不在视口中心 解决办法&#xff1a; 首选项-工具-勾选过界 这样就会使旋转以窗口中心为圆心&#xff0c;不会乱飞