小小word2vec模型訓練

2021-10-01 12:37:07 字數 1639 閱讀 6235

嗨,好久不見啊!今天我們來完成乙個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 常常讓人驚訝於它的簡單結構。我認為基本沒啥彎路,或者需要複雜的模型解釋。讓我們從高層語...