應用背景介紹:
自然語言具有時序特徵,因此可以通過循環神經網絡對自然語言進行處理。自然語言是以詞、句、文章這些語言元素爲單位的。python中最常用的word2vec工具是可以將單詞轉換成向量,將單詞轉換成向量的好處主要有以下兩個:
(1)將單詞向量化,實現數字化處理,從而直接通過神經網絡進行計算;
(2)利用了向量之間的距離計算,從而可以計算出不同的單詞之間的距離,從而不同的單詞之間的關係可以用距離向量來表示。
提醒:
在進行訓練之前,需要通過如下的語句安裝gensim模塊:
pip install gensim
本例代碼如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import gensim
sentences = [['this', 'is', 'a', 'hot', 'pie'], ['this', 'is', 'a', 'cool', 'pie'],
['this', 'is', 'a', 'red', 'pie'], ['this', 'is', 'not', 'a', 'hot', 'pie']]
model = gensim.models.Word2Vec(sentences, min_count=1)
print(model.wv['this'])
print(model.wv['is'])
print('vector size:', len(model.wv['is']))
print(model.wv.similarity('this', 'is'))
print(model.wv.similarity('this', 'not'))
print(model.wv.similarity('this', 'a'))
print(model.wv.similarity('this', 'hot'))
print(model.wv.similarity('this', 'cool'))
print(model.wv.similarity('this', 'pie'))
print(model.wv.most_similar(positive=['cool', 'red'], negative=['this']))
代碼說明:
(1)sentences 是本例中的訓練數據,是4句話,並且是按照全小寫,每個詞分開的格式組成一個二維數組;
(2)model = gensim.models.Word2Vec(sentences, min_count=1)中的參數min_count官方的解釋是:Ignores all words with total frequency lower than this,作用是忽略掉出現次數小於min_count的單詞;
(3)print(model.wv[‘this’])輸出’this’的單詞向量,是一個100項數字組成的向量;
(4)print(model.wv.similarity(‘this’, ‘is’))輸出單詞’this’和‘is’的相似值;
(5)print(model.wv.most_similar(positive=[‘cool’, ‘red’], negative=[‘this’])),most_similar表示獲取本模型中與指定單詞最相近的詞,其中positive表示指定需要尋找相近單詞的詞,negative用於指定希望與其相似度較遠的單詞。