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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【NLP实战】tensorflow词向量训练实战

發布時間:2025/3/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NLP实战】tensorflow词向量训练实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實戰是學習一門技術最好的方式,也是深入了解一門技術唯一的方式。因此,NLP專欄計劃推出一個實戰專欄,讓有興趣的同學在看文章之余也可以自己動手試一試。

本篇介紹自然語言處理中最基礎的詞向量的訓練。

作者&編輯 | 小Dream哥

1?語料準備?

用于詞向量訓練的語料應該是已經分好詞的語料,如下所示:

2 詞向量訓練

(1) 讀取語料數據

讀取數據的過程很簡單,就是從壓縮文件中讀取上面顯示的語料,得到一個列表。

def read_data(filename):

(2) 根據語料,構建字典

構建字典幾乎是所有NLP任務所必須的步驟。

def build_dataset(words):

(vocabulary_size - 1))

? ? ?dictionary = dict()

(3) 根據語料,獲取一個batch的數據

這里需要解釋一下,此次詞向量的訓練,采用的是skip gram的方式,即通過一個詞,預測該詞附近的詞。generate_batch函數中,skip_window表示取該詞左邊或右邊多少個詞,num_skips表示總共取多少個詞。最后生成的batch數據,batch是num_skips*batch_size個詞,label是中間的batch_size個詞。

def generate_batch(batch_size, num_skips, skip_window):

(4) 用tensforslow訓練詞向量

首先,構造tensorflow運算圖,主要包括以下幾個步驟:

1.用palceholder先給訓練數據占坑;

2.初始化詞向量表,是一個|V|*embedding_size的矩陣,目標就是優化這個矩陣;

3.初始化權重;

4.構建損失函數,這里用NCE構建;

5.構建優化器;

6.構建變量初始化器

graph = tf.Graph()? ?# input data# operations and variables# construct the variables for the NCE loss

? ? ? nce_biases = tf.Variable(tf.zeros([vocabulary_size]))

? ? ?ncs_loss_test=tf.nn.nce_loss(weights=nce_weights, biases=nce_biases,labels=train_labels, inputs=embed, num_sampled=num_sampled, num_classes=vocabulary_size) ? ?

? ? ?loss = tf.reduce_mean(tf.nn.nce_loss(weights=nce_weights, biases=nce_biases, labels=train_labels, inputs=embed, num_sampled=num_sampled, num_classes=vocabulary_size))? ?# construct the SGD optimizer using a learning rate of 1.0?# compute the cosine similarity between minibatch examples and all embeddings

? ?# add variable initializer

然后,開始訓練詞向量:

num_steps = 1000?# we must initialize all variables before using them# loop through all training steps and keep track of loss ?# generate a minibatch of training data?# we perform a single update step by evaluating the optimizer operation (including it

(5) 保存詞向量

將訓練好的詞向量寫到文件中備用。

final_embeddings = normalized_embeddings.eval()

最后,我們將詞向量寫到了vector.txt里面,得到了一份很大的詞向量表,我們看看它長成什么樣子:

可以看到,詞向量就是將每個中文詞用一個向量來表示,整個詞表及其詞向量構成了這份詞向量表。

這里留一個作業,讀者可以自己試一下,從表中讀取出來幾個詞的向量,計算出來他們的相似度,看訓練出來的詞向量質量如何。

至此本文介紹了如何利用tensorflow平臺自己寫代碼,訓練一份自己想要的詞向量,代碼在我們有三AI的github可以

https://github.com/longpeng2008/yousan.ai/tree/master/natural_language_processing

找到word2vec文件夾,執行python3 w2v_skip_gram.py就可以運行,訓練詞向量了。

總結

這里講述了詞向量的具體訓練過程,相關的原理在我之前的系列文章里有詳細的講述,感興趣的同學可以好好看一下:

詞向量是NLP開始邁進“現代化”的關鍵,是各種面試必問的基礎,需重視。

我們也會在知識星球討論代碼的具體實現和優化,感興趣掃描下面的二維碼了解。

讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"

下期預告:貝葉斯文本分類介紹

知識星球推薦

掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。

知識星球主要有以下內容:

(1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。

(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。

(3) NLP預訓練模型。基于海量數據,進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?

轉載文章請后臺聯系

侵權必究

往期精選

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【NLP实战】tensorflow词向量训练实战的全部內容,希望文章能夠幫你解決所遇到的問題。

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