gensim

Gensim模塊
一款開源的第三方Python工具包,用于從原始的非結(jié)構(gòu)化的文本中,無監(jiān)督地學(xué)習(xí)到文本隱層的主題向量表達(dá)。它支持包括TF-IDF,LSA,LDA和word2vec在內(nèi)的多種主題模型算法。
訓(xùn)練語料的預(yù)處理:
通常需要對原始的文本進(jìn)行分詞、去除停用詞等操作得到每一篇文檔的特征列表。
利用gensim訓(xùn)練word2vec
word2vec簡介:word2vec基于語言學(xué)中經(jīng)典的分布式假設(shè),包含了基于中心詞預(yù)測周圍詞的skip-gram和基于周圍詞預(yù)測中心詞的CBOW兩大類方法,同時為了解決詞表龐大帶來的softmax計算問題,可分別采用基于Huffman樹的層次softmax方法以及基于局部小樣本優(yōu)化的negative sampling方法來減少計算規(guī)模。
● gensim中與word2vec模型相關(guān)的重要類包括:
①gensim.models.keyedvectors.Word2VecKeyedVectors
詞向量,記錄了每個分詞對應(yīng)的n_dim維向量
②gensim.models.word2vec.Word2VecVocab
詞字典,記錄了分詞字典,可用字典或通過Huffman樹的形式存儲
③gensim.models.word2vec.Word2VecTrainables
用全連接神經(jīng)網(wǎng)絡(luò)NN訓(xùn)練出來的權(quán)重矩陣
④gensim.models.word2vec.LineSentence
參數(shù)可為文件路徑或者文件流對象
● word2vec是直接訓(xùn)練word
2vec詞向量的類,其參數(shù)包括:
santence:語料,可為雙層列表,即外層為sentence,內(nèi)層為token,或者通過gensim.models.word2vec.LineSentence封裝的語料文件;
size:詞嵌入空間,默認(rèn)值100;
window:上下文窗口大小c(整個上下文+中心詞長度問2c+1),默認(rèn)值5;
min-count:低頻詞閾值,在構(gòu)建詞匯表時不考慮頻數(shù)低于該參數(shù)的值,默認(rèn)值為5;
workers:并行數(shù),如設(shè)定workers=multiprocessing.cup_count();
sg:模型框架,0-CBOW , 1-skip-gram;
hs:優(yōu)化算法,0-negative-sampling,1-層softmax;
negative:負(fù)采樣的個數(shù),一般為5-20;
ns_exponent:負(fù)采樣分布的冪指數(shù),一般為0.75;
cbow_mean:在CBOW框架中,采用均值或和。0-和,1-均值;
alpha:梯度下降算法的學(xué)習(xí)率;
min_alpha:最小學(xué)習(xí)率,使得學(xué)習(xí)率動態(tài)線性下降。動態(tài)策略,可由min_alpha、alpha和iter共同得到;
max_vocab_size:限制RAM大小;
max_final_vocab:限制詞匯表中的詞個數(shù);
sample:高頻詞的下采樣閾值,即高于該值的詞將采用下采樣,默認(rèn)值1e-3;
hashfxn:對初始詞向量進(jìn)行hash操作;
iter:迭代的epoch;
trim_rule:可定義對低頻次的處理函數(shù),默認(rèn)None,即遵從min_count參數(shù)設(shè)定;
sorted_vocab:是否在構(gòu)建詞匯時,先對詞進(jìn)行長度排序,再編碼。默認(rèn)是;
compute_loss:是否保存中間的損失記錄。

● 常用方法和屬性
①model.wv
返回詞向量對象
②model.wv.get_vector("word")
word詞的向量
③model.wv.vocab
詞匯表
④model.wv.most_similar("word")
最接近word的詞向量
⑤model.wv.similar_by_word('word', topn=10)
最接近word的topn個的詞向量
⑥model.wv.similarity('wd1', 'wd2')
wd1和wd2的相似度(夾角余弦)
⑦model.wv.doesnt_match(['wd1', 'wd2', 'wd3', 'wd4'])
詞中不是同一類的
⑧model.save
整個訓(xùn)練模型的保存
⑨model.wv.save_word2vec_format( vector_file_path, vocab_file_path,, binary=False)
詞向量的存儲,分別存儲為向量文件txt文件和模型bin文件(可為二進(jìn)制或非二進(jìn)制),注意順序
⑩word2vec.Word2Vec.load()
整個模型的導(dǎo)入,然后主要調(diào)用其下wv的方法
⑩+①gensim.models.KeyedVectors.load_word2vec_format
直接導(dǎo)入詞向量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容