日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十五、中文词向量训练二

發布時間:2024/9/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十五、中文词向量训练二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

中文詞向量訓練二

1. Gensim工具訓練中文詞向量

1.1 中文詞向量過程

  • 源程序:train_word2vec_model.py

  • 執行方法:在命令行終端執行下列代碼.

    python train_word2vec_model.py wiki.zh.text.seg wiki.zh.text.model wiki.zh.text.vector
  • wiki.zh.text.seg為輸入文件,wiki.zh.text.model和wiki.zh.text.vector為輸出文件,model存儲了訓練的詞向量模型,vector存儲了訓練的權重。

Word2vec訓練詞向量的參數

  • LineSentence(inp):按行讀取; 單詞已經過預處理并被空格分隔。
  • size:是每個詞的向量維度;
  • window:是詞向量訓練時的上下文掃描窗口大小,窗口為5就是考慮前5個詞和后5個詞;
  • min-count:設置最低頻數,默認是5,如果一個詞語在文檔中出現的次數小于5,那么就會丟棄
  • workers:是訓練的線程數,默認是當前運行機器的處理器核數。

2. 中文詞向量測試

2.1 加載訓練的詞向量

  • 加載過程:model = gensim.models.Word2Vec.load("wiki.zh.text.model")

  • 查看單詞的向量:

    for word in model.wv.index2word:print(word, model[word])
  • 輸出結果:

2.2 尋找相近的詞語

  • 語言學:result= model.most_similar(u”語言學”)
  • 財富:result= model.most_similar(u”財富”)
  • 輸出結果:

2.3 完整代碼

""" 1. 訓練詞向量代碼""" #!/usr/bin/env python # -*- coding: utf-8 -*- # train_word2vec_model.py用于訓練模型import logging import os.path import sys import multiprocessing from gensim.models import Word2Vec from gensim.models.word2vec import LineSentenceif __name__ == '__main__':# sys.argv[0]獲取的是腳本文件的文件名稱program = os.path.basename(sys.argv[0])# sys.argv[0]獲取的是腳本文件的文件名稱logger = logging.getLogger(program)# format: 指定輸出的格式和內容,format可以輸出很多有用信息,# %(asctime)s: 打印日志的時間# %(levelname)s: 打印日志級別名稱# %(message)s: 打印日志信息logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')logging.root.setLevel(level=logging.INFO)logger.info("running %s" % ' '.join(sys.argv))# check and process input argumentsif len(sys.argv) < 4:print(globals()['__doc__'] % locals())sys.exit(1)# inp:分好詞的文本# outp1:訓練好的模型# outp2:得到的詞向量inp, outp1, outp2 = sys.argv[1:4]"""LineSentence(inp):格式簡單:一句話=一行; 單詞已經過預處理并被空格分隔。size:是每個詞的向量維度; window:是詞向量訓練時的上下文掃描窗口大小,窗口為5就是考慮前5個詞和后5個詞; min-count:設置最低頻率,默認是5,如果一個詞語在文檔中出現的次數小于5,那么就會丟棄; workers:是訓練的進程數(需要更精準的解釋,請指正),默認是當前運行機器的處理器核數。這些參數先記住就可以了。sg ({0, 1}, optional) – 模型的訓練算法: 1: skip-gram; 0: CBOWalpha (float, optional) – 初始學習率iter (int, optional) – 迭代次數,默認為5"""model = Word2Vec(LineSentence(inp), size=100, window=5, min_count=5,workers=multiprocessing.cpu_count())model.save(outp1)model.wv.save_word2vec_format(outp2, binary=False)"""2. 使用詞向量代碼""" # coding:utf-8import gensimmodel = gensim.models.Word2Vec.load("wiki.zh.text.model")count = 0 for word in model.wv.index2word:print(word,model[word])count += 1if count==5:breakresult = model.most_similar(u"語言學") for e in result:print(e)

3 Word2vec的優缺點

3.1 Word2vec的優點

  • 由于 Word2vec 會考慮上下文,比之前的方法維度更少,所以速度更快。
  • 通用性很強,可以用在各種 NLP 任務中。

Word2vec的缺點

  • 由于詞和向量是一對一的關系,所以多義詞的問題無法解決。
  • Word2vec 是一種靜態的方式,雖然通用性強,但是無法針對特定任務做動態優化。

總結

以上是生活随笔為你收集整理的十五、中文词向量训练二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。