如何用word2vec 訓練詞嵌入模型

2021-10-11 05:54:26 字數 1838 閱讀 8431

## 如何用word2vec 訓練詞嵌入模型

**一、應用場景**

假設你有乙個商品的資料庫,比如:

!(現在通過使用者的輸入來檢索商品的**。

**方法一:直接匹配法**

最簡單的方法就是通過字串進行匹配,比如,使用者輸入「椅子」,就用「椅子」作為關鍵字進行搜尋,很容易找到椅子的**就是200元/個。

**方法二:語義相似法**

但有時使用者輸入的是「凳子」,如果按照字串匹配的方法,只能返回給使用者,沒有此商品。但實際上可以把「椅子」的結果返回給使用者參考。這種泛化的能力,通過簡單的字串匹配是顯然不能實現的。

「凳子」跟「椅子」的語意更相近,跟「香蕉」或「冰箱」的語意相對較遠。在商品搜尋的過程中,可以計算使用者輸入的關鍵字與資料庫中商品名間的相似度,在商品資料庫中找出相似度最大的商品,推薦給使用者。

這種相近的程度就是詞語的相似度。在實際的工程開發中可以通過word2vec實現詞語相似度的計算。

**二、使用gensim自帶的word2vec包進行詞向量的訓練步驟**

```# 載包

from gensim.models import word2vec

from gensim.models.word2vec import linesentence

```**2、輸入分詞之後的維基語料進行詞向量訓練。**

**5、測試詞語之間的相似度**

```#  使用模型

items = model.most_similar('世界盃')

for i,j in items:

print(i,j)

kk=model.similarity('**',  '**單')

print(kk)

```**6、結果返回**

奧運會 0.8269997835159302

歐洲盃 0.8262652158737183

美洲盃 0.8016794919967651

世青賽 0.7844665050506592

聯合會杯 0.7776272296905518

亞運會 0.7528035640716553

亞青賽 0.7478761076927185

歐青賽 0.7465620040893555

東亞杯 0.7276486158370972

決賽圈 0.7204309701919556

0.7981703438609271

**7、下面是全部**:**

訓練word2vec模型:

```# -*- encoding=utf-8 -*-

# 載包

from gensim.models import word2vec

from gensim.models.word2vec import linesentence

# # 使用模型

items = model.most_similar('高賠')

for i,j in items:

print(i,j)

執行結果:

```高倍 0.7645919322967529

高配 0.7200379371643066

博單 0.6984660625457764

長串 0.6976152658462524

高培 0.6964673399925232

多串 0.6796765327453613

博冷 0.679004430770874

低倍 0.6455676555633545

低配 0.6336328387260437

2c1 0.6292942762374878

process finished with exit code 0

```

利用Word2Vec訓練詞向量過程

先明確一點,選用不同的詞向量作為模型的初始值,效果的差異非常大!那麼怎麼產生乙個好的詞向量呢?參看文章 1 英文的詞向量可以訓練,也可以用google訓練好的那個模型。2 但是中文就不行了,沒有乙個公布乙個權威的詞向量。語料對詞向量的影響比模型的影響要重要得多得多得多 重要的事說三遍 很多 都提到語...

使用預訓練的word2vec詞向量

之前被這個問題困擾了挺長時間,一直找不到有效的方法,可能是我太菜 在網上找資料也只找到了一種把bin轉換成txt 檔案的方式,但是效率出奇的低,無法想象,本地一執行程式就宕機,伺服器上也得等很長時間。多虧了有一顆優化模型的心 山重水複疑無路,柳暗花明又一村啊。在一篇 裡面,作者用theano直接對二...

小小word2vec模型訓練

嗨,好久不見啊!今天我們來完成乙個word2vec模型訓練,學習筆記有挺多人寫的,不瞞您說,小白也是看別人的部落格學習的。所以這次,小白就直接上手例項啦,一起嘛?首先介紹一下模型引數 通過jieba分詞 import jieba import pandas as pd 把文字檔案讀進來,再分詞,去停...