word2vec找文本相似词小试牛刀

preface: 找出语料中跟某个词类似的词。

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这个神器。

Figure 1-1: gensim word2vec

参考博客:

http://rare-technologies.com/word2vec-tutorial/

http://ju.outofmemory.cn/entry/80023

http://www.52nlp.cn/中英文维基百科语料上的word2vec实验


二、语料

采用之前爬取的新浪娱乐的文本。


三、分词

分词,采用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>



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值