NLP:Gensim庫之word2vec

獵手家園發表於2018-12-30

Gensim是一款開源的第三方Python工具包,用於從原始的非結構化的文字中,無監督地學習到文字隱層的主題向量表達。它支援包括TF-IDF,LSA,LDA,和word2vec在內的多種主題模型演算法,支援流式訓練,並提供了諸如相似度計算,資訊檢索等一些常用任務的API介面。

1、實現類

class gensim.models.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=<built-in function hash>, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)

 

2、方法:

(1)gensim.models.Word2Vec.similarity(ws1,ws2):計算兩個單詞之間的餘弦相似度。

>>> trained_model.similarity('woman', 'man')
0.73723527

>>> trained_model.similarity('woman', 'woman')
1.0

 (2)gensim.models.Word2Vec.n_similarity(ws1,ws2):計算兩組單詞之間的餘弦相似度。

>>> trained_model.n_similarity(['sushi', 'shop'], ['japanese', 'restaurant'])
0.61540466561049689

>>> trained_model.n_similarity(['restaurant', 'japanese'], ['japanese', 'restaurant'])
1.0000000000000004

>>> trained_model.n_similarity(['sushi'], ['restaurant']) == trained_model.similarity('sushi', 'restaurant')
True

(3)gensim.models.Word2Vec.most_similar([positive,negative,topn,...]):找到前N個最相似的單詞。

>>> trained_model.most_similar(positive=['woman', 'king'], negative=['man'])
[('queen', 0.50882536), ...]

(4)gensim.models.Word2Vec.similar_by_wordword [,topn,restrict_vocab]):找到前N個最相似的單詞。

>>> trained_model.similar_by_word('graph')
[('user', 0.9999163150787354), ...]

(5)gensim.models.Word2Vec.similar_by_vector(vector [,topn,restrict_vocab]):透過向量找到前N個最相似的單詞。

>>> trained_model.similar_by_vector([1,2])
[('survey', 0.9942699074745178), ...]

具體使用請閱讀其部落格內的它文章。

 

附、引數說明:

sentences: 可以是一個list,對於大語料集,建議使用BrownCorpus,Text8Corpus或lineSentence構建。
size: 是指特徵向量的維度,預設為100。大的size需要更多的訓練資料,但是效果會更好。推薦值為幾十到幾百。
alpha: 學習速率
window: 表示當前詞與預測詞在一個句子中的最大距離是多少。5表示每個詞考慮前5個詞與後5個詞。
min_count: 可以對字典做截斷。詞頻少於min_count次數的單詞會被丟棄掉,預設值為5。
max_vocab_size: 設定詞向量構建期間的RAM限制。如果所有獨立單詞個數超過這個,則就消除掉其中最不頻繁的一個。每一千萬個單詞需要大約1GB的RAM。設定成None則沒有限制。
sample: 高頻詞彙的隨機降取樣的配置閾值,預設為1e-3,範圍是(0,1e-5)
seed: 用於隨機數發生器。與初始化詞向量有關。
workers: 引數控制訓練的並行數。
sg: 用於設定訓練演算法,預設為0,對應CBOW演算法;sg=1則採用skip-gram演算法。
hs: 如果為1則會採用hierarchica·softmax技巧。如果設定為0(default),則negative sampling會被使用。
negative: 如果>0,則會採用negativesamping,用於設定多少個noise words。
cbow_mean: 如果為0,則採用上下文詞向量的和,如果為1(default)則採用均值。只有使用CBOW的時候才起作用。
hashfxn: hash函式來初始化權重。預設使用python的hash函式。
iter: 迭代次數,預設為5。
trim_rule: 用於設定詞彙表的整理規則,指定那些單詞要留下,哪些要被刪除。可以設定為None(min_count會被使用)或者一個接受()並返回RULE_DISCARD,utils。RULE_KEEP或者utils。RULE_DEFAULT的函式。
sorted_vocab: 如果為1(default),則在分配word index 的時候會先對單詞基於頻率降序排序。
batch_words: 每一批的傳遞給執行緒的單詞的數量,預設為10000
min_alpha:  

 

相關文章