NLP 秒懂詞向量Word2vec的本質

2021-09-05 11:34:31 字數 959 閱讀 6250

提綱挈領地講解 word2vec 的理論精髓

學會用gensim訓練詞向量,並尋找相似詞

你不會在本文看到

神經網路訓練過程的推導

hierarchical softmax/negative sampling 等 trick 的理論和實現細節

在聊 word2vec 之前,先聊聊 nlp (自然語言處理)。nlp 裡面,最細粒度的是 詞語,詞語組成句子,句子再組成段落、篇章、文件。所以處理 nlp 的問題,首先就要拿詞語開刀。

舉個簡單例子,判斷乙個詞的詞性,是動詞還是名詞。用機器學習的思路,我們有一系列樣本(x,y),這裡 x 是詞語,y 是它們的詞性,我們要構建 f(x)->y 的對映,但這裡的數學模型 f(比如神經網路、svm)只接受數值型輸入,而 nlp 裡的詞語,是人類的抽象總結,是符號形式的(比如中文、英文、拉丁文等等),所以需要把他們轉換成數值形式,或者說——嵌入到乙個數學空間裡,這種嵌入方式,就叫詞嵌入(word embedding),而 word2vec,就是詞嵌入( word embedding) 的一種

我在前作『都是套路: 從上帝視角看透時間序列和資料探勘』提到,大部分的有監督機器學習模型,都可以歸結為:

f(x)->y
在 nlp 中,把 x 看做乙個句子裡的乙個詞語,y 是這個詞語的上下文詞語,那麼這裡的 f,便是 nlp 中經常出現的『語言模型』(language model),這個模型的目的,就是判斷 (x,y) 這個樣本,是否符合自然語言的法則,更通俗點說就是:詞語x和詞語y放在一起,是不是人話。

word2vec 正是**於這個思想,但它的最終目的,不是要把 f 訓練得多麼完美,而是只關心模型訓練完後的副產物——模型引數(這裡特指神經網路的權重),並將這些引數,作為輸入 x 的某種向量化的表示,這個向量便叫做——詞向量(這裡看不懂沒關係,下一節我們詳細剖析)。

我們來看個例子,如何用 word2vec 尋找相似詞:

上面我們提到了語言模型

維基百科資料庫處理,用於訓練word2vec

維基百科中文資料 2.使用 wikipedia extractor抽取文字 半小時內完成 命令 python wikiextractor.py b 2000m o zhwiki zhwiki latest pages articles.xml 3.使用opencc轉換成簡體 命令 opencc i ...

word2vec 過程理解 詞向量的獲取

網上有很多這方面的資源,詳細各位都能夠對於word2vec了解了大概,這裡只講講個人的理解,目的 通過對於乙個神經網路的訓練,得到每個詞對應的乙個向量表達 基於 這個神經網路,是基於語言模型,即給定t個詞的字串s,計算s是自然語言的概率p w1,w2,wt 而構建的,更直白點,就是通過輸入wi的上下...

利用Word2Vec訓練詞向量過程

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