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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

word2vec代码_Word2Vec-——gensim实战教程

發布時間:2025/4/16 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 word2vec代码_Word2Vec-——gensim实战教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近斯坦福的CS224N開課了,看了下課程介紹,去年google發表的Transformer以及最近特別火的Contextual Word Embeddings都會在今年的課程中進行介紹。NLP領域確實是一個知識迭代特別快速的領域,每年都有新的知識冒出來。所以身處NLP領域的同學們要時刻保持住學習的狀態啊。筆者又重新在B站上看了這門課程的第一二節課。這里是課程鏈接。前兩節課的主要內容基本上圍繞著詞向量進行。所以這篇文章筆者想簡單的介紹一下詞向量,以及如何利用python的gensim訓練一個自己的詞向量。

詞向量簡介

詞向量指的是一個詞的向量表示。如果你希望計算機能夠進行一些復雜點的文本語義學習,你必須得將文本數據編碼成計算機能夠處理的數值向量吧,所以詞向量是一個自然語言處理任務中非常重要的一環。

one-hot representations

很久很久之前,一個詞用onehot進行編碼,如下圖所示,這種方式簡單粗暴,將一個詞用一個只有一個位置為1,其他地方為0的向量表示。1的位置就代表了是什么詞。

這種表示有如下缺點: + 占用空間大 + 詞與詞之間的向量是正交關系,沒有任何語義關聯

Distributional representations

為了克服onehot表示的兩個缺點,Distributional representations的詞向量應運而生。Distributional representations的詞向量指的是將單詞從原先所屬的空間(一般是one-hot編碼)映射到新的低維空間中去,同時,低維空間的詞向量還能表達出一些語義,比如,詞的相似性(similarity)或者一對詞與一對之間的類比關系(analogy)。 詞的相似性(similarity): 老婆 和 妻子 類比關系(analogy): 國王 - 男人 = 王后 -女人

詞向量模型

Word2vec簡介

那我們如何得到上述具有語義Distributional representations的詞向量呢,2013年提出的word2vec的方法就是一種非常方便得到高質量詞向量的方式。其主要思想是:一個詞的上下文可以很好的表達出詞的語義,它是一種通過無監督的學習文本來用產生詞向量的方式。word2vec中有兩個非常經典的模型:skip-gram和cbow。

模型任務:

  • skip-gram:已知中心詞預測周圍詞。
  • cbow:已知周圍詞預測中心詞。

比如 "the quick brown fox jumps over the lazy dog" 如果定義window-size為2的話, 就會產生如下圖所示的數據集,window-size決定了目標詞會與多遠距離的上下文產生關系: Skip-Gram:(the,quick) ,其中the 是模型的輸入,quick是模型的輸出。 Cbow: ((quick,brown),the) ,其中 (quick,brown)是模型的輸入,the是模型的輸出。

模型架構:

skip-gram,cbow的模型架構都是一層單層的神經網絡,如下圖所示,需要注意的部分是:神經網絡的參數就是我們最后得到的詞向量,神經網絡訓練過程就是學習詞向量(網絡參數)的過程。

Fasttext簡介

gensim 中Fasttext 模型架構和Word2Vec的模型架構差幾乎一樣,只不過在模型詞的輸入部分使用了詞的n-gram的特征。這里需要講解一下n-gram特征的含義。舉個例子,如果原詞是一個很長的詞:你吃了嗎。jieba分詞結果為["你","吃了","嗎"]。 unigram(1-gram)的特征:["你","吃了","嗎"] bigram(2-gram) 的特征: ["你吃了","吃了嗎"] 所以大家發現沒,n-gram的意思將詞中連續的n個詞連起來組成一個單獨的詞。 如果使用unigram和bigram的特征,詞的特征就會變成:["你","吃了","嗎","你吃了","吃了嗎"]這么一長串。使用n-gram的詞向量使得Fast-text模型可以很好的解決未登錄詞(OOV——out-of-vocabulary)的問題。

gensim實戰部分

首先導入必要的python包,jieba,gensim等必要的包。

from gensim.models import fasttext from gensim.models import word2vec import pandas as pd import logging import jieba

數據載入與預處理

這里筆者用的是某個比賽的一些評論文本數據,讀入評論文本數據之后對每一條評論進行分詞。代碼如下:

data = pd.read_csv("data_train.csv",sep="t",encoding='gbk',header=None) sentance = list(data[2]) ## 對句子進行分詞分詞 def segment_sen(sen):sen_list = []try:sen_list = jieba.lcut(sen)except:passreturn sen_list # 將數據變成gensim中 word2wec函數的數據格式 sens_list = [segment_sen(i) for i in sentance]

最終將文本數據處理如下格式:一個list ——包含每一條分詞后的文本list。

[['烤鴨', '還是', '不錯', '的', ',', '別的', '菜', '沒什么', '特殊', '的'], ['使用', '說明', '看不懂', '!', '不會', '用', ',', '很多', '操作', '沒', '詳細', '標明', '!'], ['越來越', '不好', '了', ',', '菜品', '也', '少', '了', ',', '服務', '也', '不', '及時', '。'], ['是', '在', '是', '不', '知道', '該', '吃', '什么', '好', '、', '就', '來', '了'], ......]

Word2vec模型訓練

這里筆者簡單介紹一下word2vec.Word2Vec這個API的一些重要參數。 + size: 表示詞向量的維度,默認值是100。 + window:決定了目標詞會與多遠距離的上下文產生關系,默認值是5。 + sg: 如果是0, 則是CBOW模型,是1則是Skip-Gram模型,默認是0即CBOW模型。

這里筆者都是采用默認參數。即采用CBOW模型——通過周圍詞預測中心詞的方式訓練詞向量。

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) model = word2vec.Word2Vec(sens_list,min_count=1,iter=20) model.save("word2vec.model")

模型訓練過程如下圖所示,筆者的數據一個有61678不同的詞,所以會得到一個61678個詞向量模型。

Fasttext模型訓練

fasttext.FastText API一些重要參數: + size: 表示詞向量的維度,默認值是100。 + window:決定了目標詞會與多遠距離的上下文產生關系,默認值是5。 + sg: 如果是0, 則是CBOW模型,是1則是Skip-Gram模型,默認是0即CBOW模型。

上方參數和word2vec.Word2Vec API的參數一模一樣。 + word_ngrams :({1,0}, optional) 1表示使用n-gram的信息,0代表不使用n-gram的信息,如果設置為0就等于CBOW或者Skip-gram。

下方是模型訓練代碼:

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) model1 = fasttext.FastText(sens_list,min_count=1,iter=20) model1.save("fast_text.model")

模型訓練過程如下圖所示,由于數據沒變:同樣有61678不同的詞,依然會得到一個61678個詞向量模型。

兩種模型詞向量優劣勢的對比

接下來筆者隨機找了幾個詞測試了下兩種方式訓練的詞向量效果如何,model 是 cbow的詞向量模型,model1是fasttext的詞向量模型。從下方兩張圖片可以看出,cbow的詞向量的語義相似度的判斷能力要好于fasttext的詞向量。

可是倘若碰到未登錄詞(OOV),cbow的詞向量模型就無法處理這些沒有見過的詞。

而fasttext可以計算未登錄詞n-gram詞(subword)的詞向量的平均值,從而得到未登錄詞的詞向量,最終求得和未登錄詞比較相似的詞。

結語

這里筆者只是簡單的介紹了一下詞向量的含義,兩種訓練詞向量的方法,同時對比了一下這兩種方法的優劣勢。對于詞向量的訓練技術依然有很多沒有介紹到,比如負采樣,分層softmax等加速模型訓練技術,還有對于高頻詞的下采樣技術。這里筆者在參考文獻放了一些博客供你學習,當然這些技術gensim都封裝好了,你只需調用就可以啦。

參考文獻:

https://blog.csdn.net/sinat_26917383/article/details/83041424 http://mccormickml.com/tutorials/

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的word2vec代码_Word2Vec-——gensim实战教程的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲女优在线 | 国产精品精品国产 | 韩国av电影在线观看 | 亚洲视频综合网 | 日韩精品在线一区二区 | 97超碰中文 | 91n视频 | 国产精品毛片久久久久久久av | 你懂的国产 | 蜜臀久久99精品久久久久久宅男 | 伊人久久综合 | 亚洲中文字幕无码一区二区三区 | 天天操夜夜拍 | 国产原创精品 | 久久精品屋 | 中国老太婆性做爰 | 91香蕉视频在线观看免费 | 国产人妻精品久久久久野外 | 欧美午夜视频在线观看 | 成人福利在线 | 中文字幕有码在线视频 | 国产宾馆实践打屁股91 | 美女乱淫 | 800av免费在线观看 | 无码人妻丰满熟妇区毛片蜜桃精品 | 亚洲午码 | 一区欧美 | 青青草精品在线 | 日本天堂网在线 | 婷婷在线播放 | 亚洲欧美视频 | 亚洲久久在线观看 | 东北女人av| 国产精品久久久久久久无码 | 国产免费自拍视频 | 18禁免费无码无遮挡不卡网站 | 黄色aa级片 | 亚洲视频福利 | 男女午夜视频在线观看 | 国产成年无码久久久久毛片 | 午夜tv | 91l九色lporny | 色悠悠国产 | 成年人香蕉视频 | 日韩免费在线 | 校花被c到呻吟求饶 | 91人人视频 | 二区三区偷拍浴室洗澡视频 | 国产精品国产三级国产aⅴ下载 | 亚洲精品久久久久久 | 亚洲国产精品午夜久久久 | 国产三级精品视频 | 中文字幕一区二区三区在线观看 | 夜夜操夜夜爱 | 毛片在哪看 | av在线电影网站 | 日本一区高清 | 日韩午夜免费 | 久久久久久久久久国产精品 | 久久久久亚洲精品国产 | 国产亚洲综合在线 | 高清一区在线观看 | 亚洲国产中文字幕在线观看 | 国产刺激视频 | 国产无精乱码一区二区三区 | 黄色在线视频网址 | 欧美精品xx | 九一国产视频 | 99精品影视 | 日韩精品在线免费观看视频 | 精品成人一区 | 男生把女生困困的视频 | 超级黄色片| 国产精品福利导航 | 少妇精品| av动态| 亚洲一区精品在线 | 93看片淫黄大片一级 | 色呦呦视频在线 | 在线观看av网页 | av免费在线播放 | 中文在线8资源库 | 国产综合久久久久久鬼色 | 91久久精品日日躁夜夜躁欧美 | 天天天天 | 国产福利一区在线 | 麻豆福利视频 | 国产精品爽爽久久 | 91精品免费视频 | 色香蕉在线视频 | 日本中文字幕久久 | 亚洲网视频 | 国产另类专区 | 老熟妇仑乱视频一区二区 | 一本色道久久综合亚洲精品 | 国产调教在线观看 | 成人免费在线播放 | 伊人免费视频二 | 伊人自拍|