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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

词嵌入与NLP

發(fā)布時(shí)間:2023/11/28 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 词嵌入与NLP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)目標(biāo)

  • 目標(biāo)
    • 了解詞嵌入的優(yōu)勢
    • 掌握詞嵌入的訓(xùn)練gensim庫的使用
  • 應(yīng)用

在RNN中詞使用one_hot表示的問題

?

  • 假設(shè)有10000個(gè)詞
    • 每個(gè)詞的向量長度都為10000,整體大小太大
  • 沒能表示出詞與詞之間的關(guān)系
    • 例如Apple與Orange會更近一些,Man與Woman會近一些,取任意兩個(gè)向量計(jì)算內(nèi)積都為0

4.2.2 詞嵌入

定義:指把一個(gè)維數(shù)為所有詞的數(shù)量的高維空間嵌入到一個(gè)維數(shù)低得多的連續(xù)向量空間中,每個(gè)單詞或詞組被映射為實(shí)數(shù)域上的向量。

注:這個(gè)維數(shù)通常不定,不同實(shí)現(xiàn)算法指定維度都不一樣,通常在30~500之間。

如下圖所示:

?

4.2.2.1 特點(diǎn)

  • 能夠體現(xiàn)出詞與詞之間的關(guān)系
    • 比如說我們用Man - Woman,或者Apple - Orange,都能得到一個(gè)向量
  • 能夠得到相似詞,例如Man - Woman = King - ?
    • ? = Queen

?

4.2.2.3 算法類別

Bengio等人在一系列論文中使用了神經(jīng)概率語言模型使機(jī)器“習(xí)得詞語的分布式表示。

2013年,谷歌托馬斯·米科洛維(Tomas Mikolov)領(lǐng)導(dǎo)的團(tuán)隊(duì)發(fā)明了一套工具word2vec來進(jìn)行詞嵌入。

  • skip-gram

算法學(xué)習(xí)實(shí)現(xiàn):https://www.tensorflow.org/tutorials/representation/word2vec

  • CBow

下載gensim庫

pip install gensim

4.2.3 Word2Vec案例

4.2.3.1 訓(xùn)練語料

由于語料比較大,就提供了一個(gè)下載地址:http://www.sogou.com/labs/resource/cs.php

  • 搜狗新聞中文語料(2.7G)
  • 做中文分詞處理之后的結(jié)果

4.2.3.2 步驟

  • 1、訓(xùn)練模型

  • 2、測試模型結(jié)果

4.2.3.3 代碼

  • 訓(xùn)練模型API
    • from gensim import Word2Vec
    • Word2Vec(LineSentence(inp), size=400, window=5, min_count=5)
      • LineSentence(inp):把word2vec訓(xùn)練模型的磁盤存儲文件
      • 轉(zhuǎn)換成所需要的格式,如:[[“sentence1”],[”sentence1”]]
      • size:是每個(gè)詞的向量維度
      • window:是詞向量訓(xùn)練時(shí)的上下文掃描窗口大小,窗口為5就是考慮前5個(gè)詞和后5個(gè)詞
      • min-count:設(shè)置最低頻率,默認(rèn)是5,如果一個(gè)詞語在文檔中出現(xiàn)的次數(shù)小于5,那么就會丟棄
      • 方法:
        • inp:分詞后的文本
        • save(outp1):保存模型

訓(xùn)練的代碼如下

    if len(sys.argv) < 3:sys.exit(1)# inp表示語料庫(分詞),outp:模型inp, outp = sys.argv[1:3]model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())model.save(outp)
import sys
import multiprocessingfrom gensim.models import Word2Vec
from gensim.models.word2vec import LineSentenceif __name__ == '__main__':if len(sys.argv) < 3:sys.exit(1)# inp表示語料庫(分詞),outp:模型inp, outp = sys.argv[1:3]model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())model.save(outp)

運(yùn)行命令

python trainword2vec.py ./corpus_seg.txt ./model/*

指定好分詞的文件以及,保存模型的文件

  • 加載模型測試代碼
    • model = gensim.models.Word2Vec.load("*.model")
      • model.most_similar('警察')
      • model.similarity('男人','女人')
      • most_similar(positive=['女人', '丈夫'], negative=['男人'], topn=1)
improt gensim
gensim.models.Word2Vec.load("./model/corpus.model")model.most_similar("警察")Out:
[('警員', 0.6961891651153564),('保安人員', 0.6414757370948792),('警官', 0.6149201989173889),('消防員', 0.6082159876823425),('憲兵', 0.6013336181640625),('保安', 0.5982533693313599),('武警戰(zhàn)士', 0.5962344408035278),('公安人員', 0.5880240201950073),('民警', 0.5878666639328003),('刑警', 0.5800305604934692)]model.similarity('男人','女人')
Out: 0.8909852730435042model.most_similar(positive=['女人', '丈夫'], negative=['男人'], topn=1)
Out: [('妻子', 0.7788498997688293)]

4.2.4 總結(jié)

  • 掌握gensim庫的詞向量訓(xùn)練和使用

總結(jié)

以上是生活随笔為你收集整理的词嵌入与NLP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。