使用自己的語料訓(xùn)練word2vec模型

一、 準備環(huán)境和語料:
  • 新聞20w+篇(格式:標題正文

【新聞可以自己從各大新聞網(wǎng)站爬取,也可以下載開源的新聞數(shù)據(jù)集,如

二、分詞

先對新聞文本進行分詞,使用的是結(jié)巴分詞工具,將分詞后的文本保存在seg201708.txt,以備后期使用。

安裝jieba工具包:pip install jieba

# -*- coding: utf-8 -*-
import jieba
import io
# 加載自己的自己的金融詞庫
jieba.load_userdict("financialWords.txt")

def main():
    with io.open('news201708.txt','r',encoding='utf-8') as content:
        for line in content:
            seg_list = jieba.cut(line)
#           print '/'.join(seg_list)
            with io.open('seg201708.txt', 'a', encoding='utf-8') as output:
                output.write(' '.join(seg_list))
            
if __name__ == '__main__':
    main()
三、訓(xùn)練word2vec模型

使用python的gensim包進行訓(xùn)練。

安裝gemsim包:pip install gemsim

from gensim.models import word2vec

def main():

    num_features = 300    # Word vector dimensionality
    min_word_count = 10   # Minimum word count
    num_workers = 16       # Number of threads to run in parallel
    context = 10          # Context window size
    downsampling = 1e-3   # Downsample setting for frequent words
    sentences = word2vec.Text8Corpus("seg201708.txt")

    model = word2vec.Word2Vec(sentences, workers=num_workers, \
            size=num_features, min_count = min_word_count, \
            window = context, sg = 1, sample = downsampling)
    model.init_sims(replace=True)
    # 保存模型,供日後使用
    model.save("model201708")
    
    # 可以在加載模型之后使用另外的句子來進一步訓(xùn)練模型
    # model = gensim.models.Word2Vec.load('/tmp/mymodel')
    # model.train(more_sentences)

if __name__ == "__main__":
    main()
  • 參數(shù)說明
  • sentences:可以是一個·ist,對于大語料集,建議使用BrownCorpus,Text8Corpus或ineSentence構(gòu)建。
  • sg: 用于設(shè)置訓(xùn)練算法,默認為0,對應(yīng)CBOW算法;sg=1則采用skip-gram算法。
  • size:是指特征向量的維度,默認為100。大的size需要更多的訓(xùn)練數(shù)據(jù),但是效果會更好. 推薦值為幾十到幾百。
  • window:表示當前詞與預(yù)測詞在一個句子中的最大距離是多少
  • alpha: 是學(xué)習(xí)速率
  • seed:用于隨機數(shù)發(fā)生器。與初始化詞向量有關(guān)。
  • min_count: 可以對字典做截斷. 詞頻少于min_count次數(shù)的單詞會被丟棄掉, 默認值為5
  • max_vocab_size: 設(shè)置詞向量構(gòu)建期間的RAM限制。如果所有獨立單詞個數(shù)超過這個,則就消除掉其中最不頻繁的一個。每一千萬個單詞需要大約1GB的RAM。設(shè)置成None則沒有限制。
  • sample: 高頻詞匯的隨機降采樣的配置閾值,默認為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)重。默認使用python的hash函數(shù)
  • iter: 迭代次數(shù),默認為5
  • trim_rule: 用于設(shè)置詞匯表的整理規(guī)則,指定那些單詞要留下,哪些要被刪除。可以設(shè)置為None(min_count會被使用)或者一個接受()并返回RU·E_DISCARD,uti·s.RU·E_KEEP或者uti·s.RU·E_DEFAU·T的
  • sorted_vocab: 如果為1(defau·t),則在分配word index 的時候會先對單詞基于頻率降序排序。
  • batch_words:每一批的傳遞給線程的單詞的數(shù)量,默認為10000
四、word2vec應(yīng)用
model = Word2Vec.load('model201708')      #模型讀取方式
model.most_similar(positive=['woman', 'king'], negative=['man']) #根據(jù)給定的條件推斷相似詞
model.doesnt_match("breakfast cereal dinner lunch".split()) #尋找離群詞
model.similarity('woman', 'man') #計算兩個單詞的相似度
model['computer'] #獲取單詞的詞向量
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

推薦閱讀更多精彩內(nèi)容