最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2022年12月14日 10:41:20   作者:醫(yī)學(xué)小達(dá)人  
這篇文章主要介紹了Python word2vec訓(xùn)練詞向量實例分析,文中通過示例代碼介紹的非常詳細(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)域就不太實用。

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(實際上不一定是2*window,因為代碼內(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)練詞向量實例分析講解的文章就介紹到這了,更多相關(guān)Python word2vec內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 設(shè)計模式中的原型模式在Python程序中的應(yīng)用示例

    設(shè)計模式中的原型模式在Python程序中的應(yīng)用示例

    這篇文章主要介紹了設(shè)計模式中的原型模式在Python程序中的應(yīng)用示例,文中主要強(qiáng)調(diào)了對淺拷貝和深拷貝在對象復(fù)制時的使用,需要的朋友可以參考下
    2016-03-03
  • python目標(biāo)檢測非極大抑制NMS與Soft-NMS

    python目標(biāo)檢測非極大抑制NMS與Soft-NMS

    這篇文章主要weidajia?介紹了python目標(biāo)檢測非極大抑制NMS與Soft-NMS實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python實現(xiàn)自動獲取IP并發(fā)送到郵箱

    python實現(xiàn)自動獲取IP并發(fā)送到郵箱

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)自動獲取IP并發(fā)到郵箱,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 如何使用?Python?Pandas?更新行和列

    如何使用?Python?Pandas?更新行和列

    這篇文章主要介紹了使用?Python?Pandas?更新行和列的方法,在整篇文章中,我們將使用我們現(xiàn)在要創(chuàng)建的數(shù)據(jù)框,這將使大家了解更新數(shù)據(jù)操作,在此之后,大家可以將這些方法應(yīng)用于自己的數(shù)據(jù),需要的朋友可以參考下
    2023-03-03
  • 深入解讀Python解析XML的幾種方式

    深入解讀Python解析XML的幾種方式

    這篇文章主要為大家詳細(xì)介紹了深入解讀Python解析XML的幾種方式,以ElementTree模塊為例,演示具體使用方法和場景,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 最新評論

    尼玛县| 周宁县| 阿尔山市| 会同县| 卢氏县| 廉江市| 泰州市| 千阳县| 蚌埠市| 承德市| 叶城县| 高安市| 体育| 衡东县| 镇坪县| 东宁县| 华蓥市| 满城县| 阳新县| 湟源县| 和顺县| 屏南县| 霞浦县| 南安市| 潼南县| 花莲县| 双鸭山市| 张家口市| 宝应县| 进贤县| 视频| 女性| 隆回县| 乌拉特前旗| 木兰县| 闽侯县| 福鼎市| 乐都县| 潜江市| 商水县| 胶州市|