gensim快速上手教程


1 gensim是什么?

       gensim是一個Python常用的的自然語言處理開發包, 主要用於詞向量訓練和加載詞向量,以下解釋其正確使用姿勢。

2 正確使用姿勢

from gensim.models import word2vec

'''
author = "kalafinaian"
email= "kalafinaian@outlook.com"
create_time = 2019-08-11
'''

'''
預料如何准備, 訓練預料問津中每一行是一個文本,每個文本使用空進行分詞
A B C ..
D E F ..
H I G ..
..
'''
s_corpus_url = "corpus.txt" # 語料庫地址
sentences = word2vec.Text8Corpus(s_corpus_url,)  


'''
算法訓練使用說明
架構:skip-gram(慢、對罕見字有利)vs CBOW(快)
訓練算法:分層softmax(對罕見字有利)vs 負采樣(對常見詞和低緯向量有利)
欠采樣頻繁詞:可以提高結果的准確性和速度(適用范圍1e-3到1e-5)
文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
'''

train_model = word2vec.Word2Vec(sentences,
                        sg = 1,     # 0為CBOW  1為skip-gram
                        size = 300, # 特征向量的維度
                        window = 5, # 表示當前詞與預測詞在一個句子中的最大距離是多少
                        min_count = 5, # 詞頻少於min_count次數的單詞會被
                        sample = 1e-3, # 高頻詞匯的隨機降采樣的配置閾值
                        iter = 23,  #訓練的次數 
                        hs = 1,  #為 1 用hierarchical softmax   0 negative sampling
                        workers=8 # 開啟線程個數
                        )



'''
模型的保存
'''
s_model_url = "train.model" # 語料庫保存地址
train_model.save(s_model_url)



'''
模型的加載
'''
load_model = word2vec.Word2Vec.load(s_model_url)


'''
查詢兩個詞的相似度
'''
s_word_1 = "關雎"
s_word_2 = "蒹葭"
f_word_sim = load_model.similarity(s_word_1, s_word_2)



'''
查詢一個詞的詞向量, 返回是一個numpy數組
'''
s_query_word = "雅言"
np_word  = load_model[s_query_word]


'''
打印一個詞語所有相似詞和相似度
'''
for s_word, f_sim in load_model.most_similar(s_query_word):
    print(s_word, f_sim)


'''
判斷一個詞語是否在詞向量模型中
'''
s_word = "Naive"
if s_word in load_model.vocab:
    print("存在")
else:
    print("不存在")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM