欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python word2vec訓(xùn)練詞向量實(shí)例分析講解

 更新時間:2022年12月14日 10:41:20   作者:醫(yī)學(xué)小達(dá)人  
這篇文章主要介紹了Python word2vec訓(xùn)練詞向量實(shí)例分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

1.詞向量預(yù)訓(xùn)練模型的優(yōu)勢:

(1)訓(xùn)練和保存含有語義信息的詞向量,在用于模型訓(xùn)練之前,enbedding的過程同樣帶有語義信息,使模型訓(xùn)練的效果更好;

(2)可以用預(yù)訓(xùn)練好的詞向量模型直接計算兩個詞和文本的相似度,常推薦用余弦相似度計算;

2.詞向量預(yù)訓(xùn)練模型的限制因素:

(1)對訓(xùn)練語料的要求非常高,要求訓(xùn)練語料大而全,所以訓(xùn)練起來比較費(fèi)時間,并且訓(xùn)練語料的來源也是個問題;

(2)公開的預(yù)訓(xùn)練模型一般都是用大量的公共數(shù)據(jù)訓(xùn)練的,如百科、文獻(xiàn)、報紙等公開數(shù)據(jù)集,所以只能適用于一些通用型的機(jī)器學(xué)習(xí)任務(wù),像醫(yī)學(xué)、生物等領(lǐng)域就不太實(shí)用。

3.自己訓(xùn)練詞向量的全流程:

(1)準(zhǔn)備數(shù)據(jù):我這邊是訓(xùn)練的電子病歷數(shù)據(jù),將來也是用于電子病歷的enbedding過程,所以我這邊只準(zhǔn)備了電子病歷數(shù)據(jù),大概是1000w+的數(shù)據(jù)。

(2)清洗數(shù)據(jù):電子病歷數(shù)據(jù)的清洗比較麻煩,首先,二次脫敏,保證將姓名、醫(yī)院名、地市名稱以及一些相關(guān)的電話和編號等信息脫敏干凈,一是防止隱私泄露,二是防止這些噪聲的影響訓(xùn)練效果。

(3)選用模型:word2vec中的CBOW:

(4)代碼如下:

from gensim.models import Word2Vec
import pandas as pd
import numpy as np
import re
import jieba

數(shù)據(jù)讀?。簲?shù)據(jù)量太大,不建議用excel,無內(nèi)存限制當(dāng)我沒說

pd_data = pd.read_excel('data/emr_500w.xlsx')

清洗一下數(shù)據(jù):

def clean_data(data):
    res = re.sub('[\s@\u3000\u2002\?\*%#¥&::,,。.-_——?、《》;;]+', ' ' ,data)
    return res
res = pd_data.text.apply(lambda x : jieba.lcut(clean_data(x))).to_list()
train_data = [i for lis in res for i in lis if i.strip()]
train_data_02 = []
for i in res:
    lis_ = [j for j in i if j.strip()]
    train_data_02.append(lis_)

參數(shù)設(shè)置和參數(shù)解釋:

· sentences:可以是一個list,對于大語料集,建議使用BrownCorpus,Text8Corpus或·ineSentence構(gòu)建。

· sg: 用于設(shè)置訓(xùn)練算法,默認(rèn)為0,對應(yīng)CBOW算法;sg=1則采用skip-gram算法。

· size:是指特征向量的維度,默認(rèn)為100。大的size需要更多的訓(xùn)練數(shù)據(jù),但是效果會更好. 推薦值為幾十到幾百。

· window:表示當(dāng)前詞與預(yù)測詞在一個句子中的最大距離是多少。Harris 在 1954 年提出的分布假說( distributional hypothesis)指出, 一個詞的詞義由其所在的上下文決定。所以word2vec的參數(shù)中,窗口設(shè)置一般是5,而且是左右隨機(jī)1-5(小于窗口大?。┑拇笮?,是均勻分布,隨機(jī)的原因應(yīng)該是比固定窗口效果好,增加了隨機(jī)性,個人理解應(yīng)該是某一個中心詞可能與前后多個詞相關(guān),也有的詞在一句話中可能只與少量詞相關(guān)(如短文本可能只與其緊鄰詞相關(guān))。

· alpha: 是學(xué)習(xí)速率

· seed:用于隨機(jī)數(shù)發(fā)生器。與初始化詞向量有關(guān)。

· min_count: 可以對字典做截斷. 詞頻少于min_count次數(shù)的單詞會被丟棄掉, 默認(rèn)值為5。該模塊在訓(xùn)練結(jié)束后可以通過調(diào)用model.most_similar('電影',topn=10)得到與電影最相似的前10個詞。如果‘電影’未被訓(xùn)練得到,則會報錯‘訓(xùn)練的向量集合中沒有留下該詞匯’。

· max_vocab_size: 設(shè)置詞向量構(gòu)建期間的RAM限制。如果所有獨(dú)立單詞個數(shù)超過這個,則就消除掉其中最不頻繁的一個。每一千萬個單詞需要大約1GB的RAM。設(shè)置成None則沒有限制。

· sample: 高頻詞匯的隨機(jī)降采樣的配置閾值,默認(rèn)為1e-3,范圍是(0,1e-5)

· workers參數(shù)控制訓(xùn)練的并行數(shù)。

· hs: 如果為1則會采用hierarchica·softmax技巧。如果設(shè)置為0(defau·t),則negative sampling會被使用。

· negative: 如果>0,則會采用negativesamp·ing,用于設(shè)置多少個noise words

· cbow_mean: 如果為0,則采用上下文詞向量的和,如果為1(defau·t)則采用均值。只有使用CBOW的時候才起作用。

· hashfxn: hash函數(shù)來初始化權(quán)重。默認(rèn)使用python的hash函數(shù)

· iter: 迭代次數(shù),默認(rèn)為5

· trim_rule: 用于設(shè)置詞匯表的整理規(guī)則,指定那些單詞要留下,哪些要被刪除??梢栽O(shè)置為None(min_count會被使用)或者一個接受()并返回RU·E_DISCARD,uti·s.RU·E_KEEP或者uti·s.RU·E_DEFAU·T的函數(shù)。

· sorted_vocab: 如果為1(defau·t),則在分配word index 的時候會先對單詞基于頻率降序排序。

· batch_words:每一批的傳遞給線程的單詞的數(shù)量,默認(rèn)為10000。這里我認(rèn)為是在訓(xùn)練時,控制一條樣本(一個句子)中詞的個數(shù)為10000,大于10000的截斷;訓(xùn)練時依次輸入batch_words的2*window(實(shí)際上不一定是2*window,因?yàn)榇a內(nèi)部還對[0,window]取了隨機(jī)。

模型訓(xùn)練:sg沒寫,默認(rèn)CBOW;訓(xùn)練50維度;word2vec的參數(shù)中,窗口設(shè)置一般是5,而且是左右隨機(jī)1-5(小于窗口大小)的大小,是均勻分布,隨機(jī)的原因應(yīng)該是比固定窗口效果好,增加了隨機(jī)性;min_count = 1控制詞頻和篩選;iter = 10迭代10次;

model = Word2Vec(train_data_02, size=50, window=5, min_count=1, workers=8, sg=0, batch_words=1500,iter = 10)

模型保存:

# 第一種
# model = Word2Vec.load(word2vec.model) 
model.save('emr2vec.model')
# 第二種
# model = gensim.models.KeyedVectors.load_word2vec_format('word2vec.bin',binary=True)
model.wv.save_word2vec_format('emr2vec.bin')
# 第三種
# gensim.models.KeyedVectors.load_word2vec_format('word2vec.txt',binary=False)
model.wv.save_word2vec_format('emr2vec.txt')

測試:導(dǎo)入模型

model = Word2Vec.load("emr2vec.model")
#篩選10個與當(dāng)前詞最近的詞向量
model.wv.similar_by_word("腦梗死", topn=10)

結(jié)果:

到此這篇關(guān)于Python word2vec訓(xùn)練詞向量實(shí)例分析講解的文章就介紹到這了,更多相關(guān)Python word2vec內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用python刪除java文件頭上版權(quán)信息的方法

    用python刪除java文件頭上版權(quán)信息的方法

    在使用他人代碼時,為不保留文件頭部版權(quán)信息,需要一個個刪掉,下面是用python刪除java文件頭上的版權(quán)信息的方法
    2014-07-07
  • python中星號變量的幾種特殊用法

    python中星號變量的幾種特殊用法

    不知道大家知不知道在Python中,星號除了用于乘法數(shù)值運(yùn)算和冪運(yùn)算外,還有一種特殊的用法"在變量前添加單個星號或兩個星號",實(shí)現(xiàn)多參數(shù)的傳入或變量的拆解,本文將詳細(xì)介紹"星號參數(shù)"的用法。有需要的可以參考借鑒。
    2016-09-09
  • 關(guān)于Python?Tkinter?復(fù)選框?->Checkbutton

    關(guān)于Python?Tkinter?復(fù)選框?->Checkbutton

    這篇文章主要介紹了關(guān)于Python?Tkinter復(fù)選框Checkbutton,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Pytorch 多塊GPU的使用詳解

    Pytorch 多塊GPU的使用詳解

    今天小編就為大家分享一篇Pytorch 多塊GPU的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python網(wǎng)頁解析利器BeautifulSoup安裝使用介紹

    Python網(wǎng)頁解析利器BeautifulSoup安裝使用介紹

    這篇文章主要介紹了Python網(wǎng)頁解析利器BeautifulSoup安裝使用介紹,本文用一個完整示例一步一步安裝了BeautifulSoup的安裝和使用過程,需要的朋友可以參考下
    2015-03-03
  • Django admin實(shí)現(xiàn)TextField字段changelist頁面換行、空格正常顯示

    Django admin實(shí)現(xiàn)TextField字段changelist頁面換行、空格正常顯示

    本文主要介紹了Django admin實(shí)現(xiàn)TextField字段changelist頁面換行、空格正常顯示,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Flask接口簽名sign原理與實(shí)例代碼淺析

    Flask接口簽名sign原理與實(shí)例代碼淺析

    這篇文章主要介紹了Flask接口簽名sign原理與實(shí)例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • 利用Python實(shí)現(xiàn)個性化日歷

    利用Python實(shí)現(xiàn)個性化日歷

    雖然市面上已經(jīng)存在現(xiàn)成的日歷功能,并且有第三方庫可以直接調(diào)用實(shí)現(xiàn),但我們?nèi)匀幌Mㄟ^自己編寫日歷程序來引出我認(rèn)為好用的日歷實(shí)現(xiàn),所以下面就跟隨小編一起學(xué)習(xí)一下如何使用Python編寫一個簡單的日歷程序吧
    2024-02-02
  • PyPy?如何讓Python代碼運(yùn)行得和C一樣快

    PyPy?如何讓Python代碼運(yùn)行得和C一樣快

    這篇文章主要介紹了如何讓Python代碼運(yùn)行得和C一樣快,由于?PyPy?只是?Python?的一種替代實(shí)現(xiàn),大多數(shù)時候它都是開箱即用,無需對?Python?項目進(jìn)行任何更改。它與?Web?框架?Django、科學(xué)計算包?Numpy?和許多其他包完全兼容,推薦大家多多使用
    2022-01-01
  • 對sklearn的使用之?dāng)?shù)據(jù)集的拆分與訓(xùn)練詳解(python3.6)

    對sklearn的使用之?dāng)?shù)據(jù)集的拆分與訓(xùn)練詳解(python3.6)

    今天小編就為大家分享一篇對sklearn的使用之?dāng)?shù)據(jù)集的拆分與訓(xùn)練詳解(python3.6),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評論