word2vec找文本相似词小试牛刀
2015-10-20 11:48
344 查看
preface: 找出语料中跟某个词类似的词。
word2vec作为google的一个开源工具,比较强大,效果也比较好,便试试。
也可以从CSDN下载:http://download.csdn.net/detail/hortond/8095703
官方教程:https://code.google.com/p/word2vec/(***)
类似博客:
利用中文数据跑word2vec:http://www.tuicool.com/articles/RB7fqaB
利用word2vec对关键词进行聚类:http://blog.csdn.net/zhaoxinfan/article/details/11069485
豆瓣word2vec的学习思路:http://www.douban.com/note/298095260/(有原理说明)
另外python gensim包自带word2vec这个神器。不过gensim中的word2vec不是用神经网络,而是词袋模型。
Figure 1-1: gensim word2vec
参考博客:
http://rare-technologies.com/word2vec-tutorial/ http://ju.outofmemory.cn/entry/80023
Figure 1-2: 分好词的语料
Figure 1-3: 对文件进行训练
找出相似的词:
Figure 1-4: 进行测试
将结果输出到文件中,利用管道符更加方便快捷
Figure 1-5: 多个文件输出
按类别排序
word2vec作为google的一个开源工具,比较强大,效果也比较好,便试试。
一、工具
下载:http://word2vec.googlecode.com/svn/trunk/(***)也可以从CSDN下载:http://download.csdn.net/detail/hortond/8095703
官方教程:https://code.google.com/p/word2vec/(***)
类似博客:
利用中文数据跑word2vec:http://www.tuicool.com/articles/RB7fqaB
利用word2vec对关键词进行聚类:http://blog.csdn.net/zhaoxinfan/article/details/11069485
豆瓣word2vec的学习思路:http://www.douban.com/note/298095260/(有原理说明)
另外python gensim包自带word2vec这个神器。不过gensim中的word2vec不是用神经网络,而是词袋模型。
Figure 1-1: gensim word2vec
参考博客:
http://rare-technologies.com/word2vec-tutorial/ http://ju.outofmemory.cn/entry/80023
二、语料
采用之前爬取的新浪娱乐的文本。三、分词
分词,采用python jieba分词,数据存在data文件夹下,新浪娱乐每篇文章一个txt文件。共计85317个文件夹。#!/usr/bin/env python # coding=utf-8 import jieba import os import codecs num = 0 for i in os.walk("data"): for j in i[2]: # print j try: fw = codecs.open("pickle_jiebatest.txt","a") f = codecs.open("data/"+j,encoding="utf-8",errors="strict") for k in f.readlines(): line = k.strip() word_list = jieba.cut(line) new_s = " ".join(word_list) fw.write(new_s+"\n") fw.close() except: # print j,num pass num+=1 if num%1000==0: print "===========================================处理个数:",num
Figure 1-2: 分好词的语料
四、word2vec训练
一句命令即可,进行训练,具体的参数待学习,改输入文件输出文件即可,输出一个模型文件./word2vec -train shifeng/pickle_jieba.txt -output shifeng/vectors_word.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
Figure 1-3: 对文件进行训练
找出相似的词:
./distance shifeng/vectors_word.bin
Figure 1-4: 进行测试
将结果输出到文件中,利用管道符更加方便快捷
Figure 1-5: 多个文件输出
五、其他
由于word2vec计算的是余弦值,距离范围为0-1之间,值越大代表这两个词关联度越高,所以越排在上面的词与输入的词越紧密。至于聚类,只需要另一个命令即可:<span style="font-size:18px;">./word2vec -train resultbig.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500 </span>
按类别排序
<span style="font-size:18px;">sort classes.txt -k 2 -n > classes.sorted.txt </span>
相关文章推荐
- sp_change_users_login解决孤立用户问题
- 网页正文抽取
- SSH+Jquery+Ajax框架整合
- Yii1.1源码解析2之根据路由查找控制器
- Linux线程同步(条件变量和信号量)
- 根据年月日,判断20XX年XX月XX日是 星期几
- js 模块化历程
- vmware vcenter appliance dhcp 改为 静态IP导致web service认证失败
- JMP、Hook
- C++Windows下如何让窗口进程只运行一个实例
- Java接口中的成员变量为什么必须是public static final?
- 传真a8的启动流程
- 三十三张赤裸裸的人性图
- Eclipse导出可运行的jar包并运行
- 一键导航
- asp服务器如何搭建
- Nexus私服启动失败
- Kaggle 机器学习竞赛冠军及优胜者的源代码汇总
- .和..在路径中的区别
- C#中返回值封装