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>



發佈了127 篇原創文章 · 獲贊 125 · 訪問量 88萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章