嗨,好久不見啊!今天我們來完成乙個word2vec模型訓練,學習筆記有挺多人寫的,不瞞您說,小白也是看別人的部落格學習的。所以這次,小白就直接上手例項啦,一起嘛?
首先介紹一下模型引數
#通過jieba分詞
import jieba
import pandas as pd
把文字檔案讀進來,再分詞,去停用詞
xwzss = open("d://xwz_ss.txt", encoding='utf-8').read().replace('\n','').replace(' ','')
#讀入停用詞
stopws = open('d:',encoding='gb18030').read()
xs_cut = [word for word in jieba.lcut(xwzss) if word not in list(stopws)]
我還看了一下分詞後的詞數量,心裡乙個數
len(xs_cut)
#53889
然後將他們寫入乙個新的檔案
#寫入txt檔案,分詞後的檔案
file = open('d://new_xs_cut.txt','a',encoding='utf-8')
for i in range(len(xs_cut)):
s = str(xs_cut[i]).replace('[','').replace(']','')#去除,這兩行按資料不同,可以選擇
s = s.replace("'",'').replace(',','') +'\n' #去除單引號,逗號,每行末尾追加換行符
file.write(s)
file.close()
#把分詞好的檔案合成乙個句子
sc = open('d://new_xs_cut.txt',encoding='utf-8').read().replace('\n',' ')
sc_=sc.split()
print(sc_)
結果看一下,
第乙個乙個什麼『/ufeff』東東,好像是我分詞的時候第乙個是空行,也可以刪去,其實沒什麼大問題,它就乙個不影響。大行不顧細謹嘛,何必如此苛責,我就放任它在裡面了。
接下來就是訓練模型了
import gensim
from gensim.models import word2vec
#訓練模型
model = gensim.models.word2vec(sc_, size=100, iter=8, min_count=3)
Spark下的word2vec模型訓練
前邊一節介紹了word2vec模型訓練同義詞,那麼在大資料量的情況下,我們自然想到了用spark來進行訓練。下面就介紹我們是如何實現spark上的模型訓練。模型訓練的輸入是分好詞的語料,那麼就得實現spark上的分詞。def split jieba list,iterator sentences f...
與word2vec 原來word2vec那麼簡單
說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...
Word2Vec教程 Skip Gram模型
這個教程包含 訓練word2vec的 skip gram 模型。通過這個教程,我希望跳過常規word2vec 的介紹和抽象理解,而是去討論一些細節。特別是skip gram的網路結構。skipgram model 常常讓人驚訝於它的簡單結構。我認為基本沒啥彎路,或者需要複雜的模型解釋。讓我們從高層語...