1. 程式人生 > >gensim Word2Vec 訓練和使用

gensim Word2Vec 訓練和使用

訓練模型

  • 利用gensim.models.Word2Vec(sentences)建立詞向量模型
    • 該建構函式執行了三個步驟:建立一個空的模型物件,遍歷一次語料庫建立詞典,第二次遍歷語料庫建立神經網路模型可以通過分別執行model=gensim.models.Word2Vec()model.build_vocab(sentences)model.train(sentences)來實現
  • 訓練時可以指定以下引數
    • min_count指定了需要訓練詞語的最小出現次數,預設為5
    • size指定了訓練時詞向量維度,預設為100
    • worker指定了完成訓練過程的執行緒數,預設為1不使用多執行緒。只有注意安裝Cython的前提下該引數設定才有意義
  • 查詢查詢查詢查詢查詢查詢結果訓練可以通過model.save('fname')model.save_word2vec_format(fname)來儲存為檔案,使用再model.load(fname)model.load_word2vec_format(fname,encoding='utf-8')讀取查詢結果

例如:

from gensim.models.word2vec import Word2Vec 

sentences = [['A1','A2'],[],[],....] 
model= Word2Vec()
model.build_vocab(sentences)
model.train(sentences,total_examples = model.corpus_count,epochs = model.iter)

儲存:
model.save('/tmp/MyModel')
#model.save_word2vec_format('/tmp/mymodel.txt',binary = False)
#model.save_word2vec_format('/tmp/mymodel.bin.gz',binary = True)

  • 前一組方法儲存的檔案不能利用文字編輯器檢視但是儲存了訓練的全部資訊,可以在讀取後追加訓練
  • 後一組方法儲存為word2vec文字格式但是儲存時丟失了詞彙樹等部分資訊,不能追加訓練
追加加訓練:
model = gensim.models.Word2Vec.load('/tmp/mymodel')
model.train(more_sentences)
載入:
model = gensim.models.Word2Vec.load('/tmp/mymodel')

#model = gensim.models.KeyedVectors.load_word2vec_format('/tmp/vectors.txt',binary = False)
#model = gensim.models.KeyedVectors。load_word2vec_format('/tmp/vectors.bin',binary = True)
##使用gzipped / bz2輸入也可以,不需要解壓:
#model = gensim.models.KeyedVectors.load_word2vec_format('/tmp/vectors.bin.gz',binary=True)

模型使用:

獲取詞向量

print(model ['man'])
print(type(model ['man']))
輸出:
[0.14116223 0.05663395 0.01500377 -0.03592452 ...] 
numpy.ndarray

計算一個詞的最近似的詞,倒排序

model.most_similar(['男人'])

輸出:
[('女',0.7664012908935547),
 ( '男孩',0.6824870109558105),
 ( '青少年',0.6586930155754089),
 ( '女孩',0.5921714305877686),
 ( '強盜',0.5585119128227234),
 ( '男',0.5489763021469116),
 ('人',0.5420035719871521),
 ( '人',0.5342026352882385),
 ( '紳士',0.5337990522384644),
 ( '摩托車手',0.5336882472038269)]

計算兩詞之間的餘弦相似度

word2vec一個很大的亮點:支援詞語的加減運算(實際中可能只有少數例子比較符合)
model.most_similar(positive = ['woman','king'],negative = ['man'],topn = 2)
輸出:
[('王后',0.7118192911148071),('君主',0.6189675331115723)]
---
model.similarity('女人', '男人')
輸出:
0.7664012234410319

計算兩個集合之間的餘弦似度

當出現某個詞語不在這個訓練集合中的時候,會報錯!
list1 = ['我','走','我','學校'] 
list2 = ['我','去','家'] 
list_sim1 = model.n_similarity(list1,list2)
print(list_sim1)

輸出:
0.772446878519

選出集合中不同類的詞語

model.doesnt_match('breakfast cereal dinner lunch'.split())
輸出:
'穀類'

相關推薦

gensim Word2Vec 訓練使用

訓練模型利用gensim.models.Word2Vec(sentences)建立詞向量模型該建構函式執行了三個步驟:建立一個空的模型物件,遍歷一次語料庫建立詞典,第二次遍歷語料庫建立神經網路模型可以通

基於python的gensim word2vec訓練詞向量

準備工作 當我們下載了anaconda後,可以在命令視窗通過命令 conda install gensim 安裝gensim gensim介紹 gensim是一款強大的自然語言處理工具,裡面包括N多常見模型,我們體驗一下: interfa

Python Word2Vec訓練測試詞向量

train_word2vec_model.py: #!/usr/bin/env python # -*- coding: utf-8 -*- import logging import os import sys import multiprocessing from gensim.

使用gensim word2vec訓練英文預料---最簡潔版

使用gensim word2vec訓練英文預料—最簡潔版 直接上程式碼: # -*- coding: utf-8 -*- import gensim.models.word2vec as wor

gensim word2vec訓練好的模型儲存成txt

import gensim import codecs from gensim.models import word2vec import re from gensim.corpora.dictionary import Dictionary import pickle i

python實現gensim.word2vec模型訓練例項

word2vec在NLP領域的運用比較多,最近看了網上的例子覺得挺有意思的,就自己動手實踐了一下。簡單總結:所謂的word vector,就是指將單詞向量化,將某個單詞用特定的向量來表示。將單詞轉化成對應的向量以後,就可以將其應用於各種機器學習的演算法中去。一般來講,詞向量主

文本分布式表示(二):用tensorflowword2vec訓練詞向量

sig 財經 left 調用 采樣 cto imp gensim average 博客園的markdown用起來太心塞了,現在重新用其他編輯器把這篇博客整理了一下。 目前用word2vec算法訓練詞向量的工具主要有兩種:gensim 和 tensorflow。gensim

Caffe上用SSD訓練測試自己的數據

輸出 makefile b數 text play cal 上下 lba san 學習caffe第一天,用SSD上上手。 我的根目錄$caffe_root為/home/gpu/ljy/caffe 一、運行SSD示例代碼 1.到https://github.com

基於深度學習的病毒檢測技術無需沙箱環境,直接將樣本文件轉換為二維圖片,進而應用改造後的卷積神經網絡 Inception V4 進行訓練檢測

進制 思科 開發 主題 需求 做的 病毒 無法 大於 話題 3: 基於深度學習的二進制惡意樣本檢測 分享主題:全球正在經歷一場由科技驅動的數字化轉型,傳統技術已經不能適應病毒數量飛速增長的發展態勢。而基於沙箱的檢測方案無法滿足 APT 攻擊的檢測需求,也受到多種反沙箱技術的

word2vec:CBOWskip-gram模型

預測 構造 結束 input 初始 cbo 進行 模型 重復 1.CBOW模型 之前已經解釋過,無論是CBOW模型還是skip-gram模型,都是以Huffman樹作為基礎的。值得註意的是,Huffman樹中非葉節點存儲的中間向量的初始化值是零向量,而葉節點對應的單詞的詞向

ssd物體檢測模型訓練測試總結

http max cti https 都得 硬件 obj git detection 參考網址:github:https://github.com/naisy/realtime_object_detection2018.10.16ssd物體檢測總結:切記粗略地看一遍備註就開

tensorflow源碼學習之五 -- 同步訓練異步訓練

stack location warning 可能 oss implicit mov -i ner 同步和異步訓練是由optimizer來決定的。 1. 同步訓練 同步訓練需要使用SyncReplicasOptimizer,參考http

tensorflow在訓練驗證時監視不同的summary的操作

write scalar all glob sca val rain 不同 valid 如果想在訓練和驗證時監視不同的summary,將train summary ops和val summary ops放進不同的集合中即可。 train_writer = tf.summar

語音識別系統語言模型的訓練聲學模型的改進

10個 ext 個數 靜音 介紹 準備 上下 詞匯表 數據 一、訓練語言模型 詞與詞之間存在著合乎句法與否的約束,語言模型就是用來表示這些約束的,它可以提供字與字之間的上下文信息和語義信息。N-gram模型,即對訓練音頻文件所對應的文本文件進行統計,提取不同字

【12】Caffe學習系列:訓練測試自己的圖片

一、準備資料 有條件的同學,可以去imagenet的官網http://www.image-net.org/download-images,下載imagenet圖片來訓練。驗證碼始終出不來需要翻牆(是google網站的驗證碼)。但是我沒有下載,原因是資料太大了。。。 我去網上找了一些其它的圖片

tensorflow原始碼學習之五 -- 同步訓練非同步訓練

 同步和非同步訓練是由optimizer來決定的。         1. 同步訓練         同步訓練需要使用SyncReplicasOptimizer,參考https://www.tensorflow.org

word2vec訓練好的詞向量

雖然早就對NLP有一丟丟接觸,但是最近真正對中文文字進行處理才深深感覺到自然語言處理的難度,主要是機器與人還是有很大差異的,畢竟人和人之間都是有差異的,要不然不會講最難研究的人嘞 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~不華麗的分割線~~~~~~~~~~

word2vec訓練出來的相似詞歧義

【問題】word2vec訓練以後,得到預付卡和購物卡非常接近,可是實際上這兩個東西是不一樣的,如何區分這兩個東西?   解決:建立一個獨立詞典,這個詞典裡的詞是沒有近義詞的,獨立的詞,比如預付卡是很獨特的,我們加進詞典了,每次遇到這個詞,我們就不是取TOPN 為1, 我們取topn為1.2,

word2vec 學習理解

這裡先按吳恩達老師的課程講解的softmax做一個筆記,和之前看的一個大神的文章,相對比,來方便我對word2vec的理解。     目的:學習一個詞嵌入矩陣E。 手段:構建一個語言模型。   最老的方法: 預測一個句子(4個詞)之後的下一個

pytorch代碼中同時包含訓練測試代碼時顯存爆炸

evaluate 表現 驗證 tor lua 查看 包含 測試 mode 原因在於沒有使用torch.no_grad()函數。在查看驗證集和測試集表現時,應使用類似這樣的代碼 def evaluate(data_loader): with torch.no_grad