word2vec介紹
word2vec官網(wǎng):https://code.google.com/p/word2vec/
- word2vec是google的一個(gè)開(kāi)源工具,能夠根據(jù)輸入的詞的集合計(jì)算出詞與詞之間的距離。
- 它將term轉(zhuǎn)換成向量形式,可以把對(duì)文本內(nèi)容的處理簡(jiǎn)化為向量空間中的向量運(yùn)算,計(jì)算出向量空間上的相似度,來(lái)表示文本語(yǔ)義上的相似度。
- word2vec計(jì)算的是余弦值,距離范圍為0-1之間,值越大代表兩個(gè)詞關(guān)聯(lián)度越高。
- 詞向量:用Distributed Representation表示詞,通常也被稱(chēng)為“Word Representation”或“Word Embedding(嵌入)”。
簡(jiǎn)言之:詞向量表示法讓相關(guān)或者相似的詞,在距離上更接近。
具體使用(處理中文)
收集語(yǔ)料
本文:亞馬遜中文書(shū)評(píng)語(yǔ)料,12萬(wàn)+句子文本。
語(yǔ)料以純文本形式存入txt文本。
注意:
理論上語(yǔ)料越大越好
理論上語(yǔ)料越大越好
理論上語(yǔ)料越大越好
重要的事情說(shuō)三遍。
因?yàn)樘〉恼Z(yǔ)料跑出來(lái)的結(jié)果并沒(méi)有太大意義。
分詞
中文分詞工具還是很多的,我自己常用的:
- 中科院NLPIR
- 哈工大LTP
- 結(jié)巴分詞
注意:分詞文本將作為word2vec的輸入文件。
分詞文本示例

word2vec使用
Python,利用gensim模塊。
win7系統(tǒng)下在通常的python基礎(chǔ)上gensim模塊不太好安裝,所以建議使用anaconda,具體參見(jiàn): python開(kāi)發(fā)之a(chǎn)naconda【以及win7下安裝gensim】
直接上代碼——
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
功能:測(cè)試gensim使用,處理中文語(yǔ)料
時(shí)間:2016年5月21日 20:49:07
"""
from gensim.models import word2vec
import logging
# 主程序
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus(u"C:\\Users\\lenovo\\Desktop\\word2vec實(shí)驗(yàn)\\亞馬遜中文書(shū)評(píng)語(yǔ)料.txt") # 加載語(yǔ)料
model = word2vec.Word2Vec(sentences, size=200) # 默認(rèn)window=5
# 計(jì)算兩個(gè)詞的相似度/相關(guān)程度
y1 = model.similarity(u"不錯(cuò)", u"好")
print u"【不錯(cuò)】和【好】的相似度為:", y1
print "--------\n"
# 計(jì)算某個(gè)詞的相關(guān)詞列表
y2 = model.most_similar(u"書(shū)", topn=20) # 20個(gè)最相關(guān)的
print u"和【書(shū)】最相關(guān)的詞有:\n"
for item in y2:
print item[0], item[1]
print "--------\n"
# 尋找對(duì)應(yīng)關(guān)系
print u"書(shū)-不錯(cuò),質(zhì)量-"
y3 = model.most_similar([u'質(zhì)量', u'不錯(cuò)'], [u'書(shū)'], topn=3)
for item in y3:
print item[0], item[1]
print "--------\n"
# 尋找不合群的詞
y4 = model.doesnt_match(u"書(shū) 書(shū)籍 教材 很".split())
print u"不合群的詞:", y4
print "--------\n"
# 保存模型,以便重用
model.save(u"書(shū)評(píng).model")
# 對(duì)應(yīng)的加載方式
# model_2 = word2vec.Word2Vec.load("text8.model")
# 以一種C語(yǔ)言可以解析的形式存儲(chǔ)詞向量
model.save_word2vec_format(u"書(shū)評(píng).model.bin", binary=True)
# 對(duì)應(yīng)的加載方式
# model_3 = word2vec.Word2Vec.load_word2vec_format("text8.model.bin", binary=True)
if __name__ == "__main__":
pass
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
運(yùn)行結(jié)果
【不錯(cuò)】和【好】的相似度為: 0.790186663972
--------
和【書(shū)】最相關(guān)的詞有:
書(shū)籍 0.675163209438
書(shū)本 0.633386790752
確實(shí) 0.568059504032
教材 0.551493048668
正品 0.532882153988
沒(méi)得說(shuō) 0.529319941998
好 0.522468209267
據(jù)說(shuō) 0.51004421711
圖書(shū) 0.508755385876
挺 0.497194319963
新書(shū) 0.494331330061
很 0.490583062172
不錯(cuò) 0.476392805576
正版 0.460161447525
紙張 0.454929769039
可惜 0.450752496719
工具書(shū) 0.449723362923
的確 0.448629021645
商品 0.444284260273
紙質(zhì) 0.443040698767
--------
書(shū)-不錯(cuò),質(zhì)量-
精美 0.507958948612
總的來(lái)說(shuō) 0.496103972197
材質(zhì) 0.493623793125
--------
不合群的詞: 很
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
參考資料
【python gensim使用】word2vec詞向量處理英文語(yǔ)料:
http://blog.csdn.net/churximi/article/details/51472203
深度學(xué)習(xí):使用 word2vec 和 gensim:
http://www./lib/view/open1420687622546.html
|