全文共7812字,預計學習時長16分鐘或更長
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。
然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?
當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。
然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?
當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。
然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?
當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:
4. 案例研究:使用word2vec模型用Python進行網上商品推薦
搭建並理解我們的問題陳述。
需要基於顧客消費歷史,在電商網站上為其建立自動推薦特定數量商品的系統。
點擊此鏈接,使用一組網上零售數據集:https://archive.ics.uci.edu/ml/machine-learning-databases/00352/
啟動Jupyter Notebook,快速導入所需庫並載入數據集。
import pandas as pd
import numpy as np
import random
from tqdm import tqdm
from gensim.models import Word2Vec
import matplotlib.pyplot as plt
%matplotlib inline
import warnings;
warnings.filterwarnings('ignore')
df = pd.read_excel('Online Retail.xlsx')
df.head()
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。
然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?
當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:
4. 案例研究:使用word2vec模型用Python進行網上商品推薦
搭建並理解我們的問題陳述。
需要基於顧客消費歷史,在電商網站上為其建立自動推薦特定數量商品的系統。
點擊此鏈接,使用一組網上零售數據集:https://archive.ics.uci.edu/ml/machine-learning-databases/00352/
啟動Jupyter Notebook,快速導入所需庫並載入數據集。
import pandas as pd
import numpy as np
import random
from tqdm import tqdm
from gensim.models import Word2Vec
import matplotlib.pyplot as plt
%matplotlib inline
import warnings;
warnings.filterwarnings('ignore')
df = pd.read_excel('Online Retail.xlsx')
df.head()
以下是對於該數據集某些領域的描述:
1. InvoiceNo: 發票號碼,每次交易對應的唯一數字
2. StockCode: 產品/物品編碼,每一唯一商品對應的唯一數字
3. Description:產品描述
4. Quantity:每次交易每種產品的數量
5. InvoiceDate: 每次交易生成的日期和時間
6. CustomerID:顧客ID,每位顧客對應的唯一數字。
df.shape
輸出: (541909, 8)
該數據集包含541909次交易。這是一個搭建模型的極佳數字。
處理缺失數據
# check for missing values
df.isnull().sum()
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。
然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?
當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:
4. 案例研究:使用word2vec模型用Python進行網上商品推薦
搭建並理解我們的問題陳述。
需要基於顧客消費歷史,在電商網站上為其建立自動推薦特定數量商品的系統。
點擊此鏈接,使用一組網上零售數據集:https://archive.ics.uci.edu/ml/machine-learning-databases/00352/
啟動Jupyter Notebook,快速導入所需庫並載入數據集。
import pandas as pd
import numpy as np
import random
from tqdm import tqdm
from gensim.models import Word2Vec
import matplotlib.pyplot as plt
%matplotlib inline
import warnings;
warnings.filterwarnings('ignore')
df = pd.read_excel('Online Retail.xlsx')
df.head()
以下是對於該數據集某些領域的描述:
1. InvoiceNo: 發票號碼,每次交易對應的唯一數字
2. StockCode: 產品/物品編碼,每一唯一商品對應的唯一數字
3. Description:產品描述
4. Quantity:每次交易每種產品的數量
5. InvoiceDate: 每次交易生成的日期和時間
6. CustomerID:顧客ID,每位顧客對應的唯一數字。
df.shape
輸出: (541909, 8)
該數據集包含541909次交易。這是一個搭建模型的極佳數字。
處理缺失數據
# check for missing values
df.isnull().sum()
已有充足數據,接下來去除所有含缺失值的行。
# remove missing values
df.dropna(inplace=True)
數據準備
將產品編碼轉換為線性數據:
df['StockCode']= df['StockCode'].astype(str)
查看數據集中唯一顧客的數量:
customers = df["CustomerID"].unique().tolist()
len(customers)
輸出:4372
數據集中有4372個顧客。對於每一個顧客,提取其購買歷史。換句話說,有4372個購買順序。
從數據集中保留一小部分用以驗證是很好的做法。因此,將使用90%的顧客數據創建word2vec嵌入。將數據分割。
# shuffle customer ID's
random.shuffle(customers)
# extract 90% of customer ID's
customers_train = [customers[i] for i in range(round(0.9*len(customers)))]
# split data into train and validation set
train_df = df[df['CustomerID'].isin(customers_train)]
validation_df = df[~df['CustomerID'].isin(customers_train)]
將對於數據集中的顧客創建購買順序,兼顧訓練和驗證的目的。
# list to capture purchase history of the customers
purchases_train = []
# populate the list with the product codes
for i in tqdm(customers_train):
temp = train_df[train_df["CustomerID"] == i]["StockCode"].tolist()
purchases_train.append(temp)
# list to capture purchase history of the customers
purchases_val = []
# populate the list with the product codes
for i in tqdm(validation_df['CustomerID'].unique()):
temp = validation_df[validation_df["CustomerID"] == i]["StockCode"].tolist()
purchases_val.append(temp)
為產品創建word2vec詞嵌入
# train word2vec model
model = Word2Vec(window = 10, sg = 1, hs = 0,
negative = 10, # for negative sampling
alpha=0.03, min_alpha=0.0007,
seed = 14)
model.build_vocab(purchases_train, progress_per=200)
model.train(purchases_train, total_examples = model.corpus_count,
epochs=10, report_delay=1)
因為不再需要訓練模型,呼叫 init_sims( )。這會使得模型記憶能力更強。
model.init_sims(replace=True)
查看模型總結:
print(model)
輸出:word2vec(詞彙=3151,規格=100,透明度=0.03)
本模型有3151個唯一單詞,其規格向量各自為100。接下來,提取詞彙表中所有單詞的向量,將其存儲以便取用。
# extract all vectors
X = model[model.wv.vocab]
X.shape
輸出:(3151,100)
視覺化word2vec詞嵌入
視覺化呈現已創建的嵌入總是很有幫助。此處有100個維度的嵌入。我們連4維都不能視覺化呈現,更別提100維了。那究竟該怎麼辦呢?
將通過UMAP算法把產品嵌入維度從100減少至2。這在維度減少中的應用十分常見。
import umap
cluster_embedding = umap.UMAP(n_neighbors=30, min_dist=0.0,
n_components=2, random_state=42).fit_transform(X)
plt.figure(figsize=(10,9))
plt.scatter(cluster_embedding[:, 0], cluster_embedding[:, 1], s=3, cmap='Spectral')
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。
然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?
當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:
4. 案例研究:使用word2vec模型用Python進行網上商品推薦
搭建並理解我們的問題陳述。
需要基於顧客消費歷史,在電商網站上為其建立自動推薦特定數量商品的系統。
點擊此鏈接,使用一組網上零售數據集:https://archive.ics.uci.edu/ml/machine-learning-databases/00352/
啟動Jupyter Notebook,快速導入所需庫並載入數據集。
import pandas as pd
import numpy as np
import random
from tqdm import tqdm
from gensim.models import Word2Vec
import matplotlib.pyplot as plt
%matplotlib inline
import warnings;
warnings.filterwarnings('ignore')
df = pd.read_excel('Online Retail.xlsx')
df.head()
以下是對於該數據集某些領域的描述:
1. InvoiceNo: 發票號碼,每次交易對應的唯一數字
2. StockCode: 產品/物品編碼,每一唯一商品對應的唯一數字
3. Description:產品描述
4. Quantity:每次交易每種產品的數量
5. InvoiceDate: 每次交易生成的日期和時間
6. CustomerID:顧客ID,每位顧客對應的唯一數字。
df.shape
輸出: (541909, 8)
該數據集包含541909次交易。這是一個搭建模型的極佳數字。
處理缺失數據
# check for missing values
df.isnull().sum()
已有充足數據,接下來去除所有含缺失值的行。
# remove missing values
df.dropna(inplace=True)
數據準備
將產品編碼轉換為線性數據:
df['StockCode']= df['StockCode'].astype(str)
查看數據集中唯一顧客的數量:
customers = df["CustomerID"].unique().tolist()
len(customers)
輸出:4372
數據集中有4372個顧客。對於每一個顧客,提取其購買歷史。換句話說,有4372個購買順序。
從數據集中保留一小部分用以驗證是很好的做法。因此,將使用90%的顧客數據創建word2vec嵌入。將數據分割。
# shuffle customer ID's
random.shuffle(customers)
# extract 90% of customer ID's
customers_train = [customers[i] for i in range(round(0.9*len(customers)))]
# split data into train and validation set
train_df = df[df['CustomerID'].isin(customers_train)]
validation_df = df[~df['CustomerID'].isin(customers_train)]
將對於數據集中的顧客創建購買順序,兼顧訓練和驗證的目的。
# list to capture purchase history of the customers
purchases_train = []
# populate the list with the product codes
for i in tqdm(customers_train):
temp = train_df[train_df["CustomerID"] == i]["StockCode"].tolist()
purchases_train.append(temp)
# list to capture purchase history of the customers
purchases_val = []
# populate the list with the product codes
for i in tqdm(validation_df['CustomerID'].unique()):
temp = validation_df[validation_df["CustomerID"] == i]["StockCode"].tolist()
purchases_val.append(temp)
為產品創建word2vec詞嵌入
# train word2vec model
model = Word2Vec(window = 10, sg = 1, hs = 0,
negative = 10, # for negative sampling
alpha=0.03, min_alpha=0.0007,
seed = 14)
model.build_vocab(purchases_train, progress_per=200)
model.train(purchases_train, total_examples = model.corpus_count,
epochs=10, report_delay=1)
因為不再需要訓練模型,呼叫 init_sims( )。這會使得模型記憶能力更強。
model.init_sims(replace=True)
查看模型總結:
print(model)
輸出:word2vec(詞彙=3151,規格=100,透明度=0.03)
本模型有3151個唯一單詞,其規格向量各自為100。接下來,提取詞彙表中所有單詞的向量,將其存儲以便取用。
# extract all vectors
X = model[model.wv.vocab]
X.shape
輸出:(3151,100)
視覺化word2vec詞嵌入
視覺化呈現已創建的嵌入總是很有幫助。此處有100個維度的嵌入。我們連4維都不能視覺化呈現,更別提100維了。那究竟該怎麼辦呢?
將通過UMAP算法把產品嵌入維度從100減少至2。這在維度減少中的應用十分常見。
import umap
cluster_embedding = umap.UMAP(n_neighbors=30, min_dist=0.0,
n_components=2, random_state=42).fit_transform(X)
plt.figure(figsize=(10,9))
plt.scatter(cluster_embedding[:, 0], cluster_embedding[:, 1], s=3, cmap='Spectral')
開始推薦產品
恭喜!數據集中每一個產品的word2vec嵌入都已完成。現在,需要為特定產品或產品向量推薦相似產品。
首先創建產品ID以及產品描述庫,以便於將產品描述和ID相互匹配。
products = train_df[["StockCode", "Description"]]
# remove duplicates
products.drop_duplicates(inplace=True, subset='StockCode', keep="last")
# create product-ID and product-description dictionary
products_dict = products.groupby('StockCode')['Description'].apply(list).to_dict()
# test the dictionary
products_dict['84029E']
輸出:[‘RED WOOLLY HOTTIE WHITE HEART.’]
以下對該函數進行了定義。將產品向量作為輸入,相似性最大的6個產品為輸出:
def similar_products(v, n = 6):
# extract most similar products for the input vector
ms = model.similar_by_vector(v, topn= n+1)[1:]
# extract name and similarity score of the similar products
new_ms = []
for j in ms:
pair = (products_dict[j[0]][0], j[1])
new_ms.append(pair)
return new_ms
嘗試運行函數,傳輸產品‘90019A’的向量(‘SILVER M.O.P ORBIT BRACELET’):
similar_products(model['90019A'])
輸出:
[(‘SILVER M.O.P ORBIT DROP EARRINGS’, 0.766798734664917),
(‘PINK HEART OF GLASS BRACELET’, 0.7607438564300537),
(‘AMBER DROP EARRINGS W LONG BEADS’, 0.7573930025100708),
(‘GOLD/M.O.P PENDANT ORBIT NECKLACE’, 0.7413625121116638),
(‘ANT COPPER RED BOUDICCA BRACELET’, 0.7289256453514099),
(‘WHITE VINT ART DECO CRYSTAL NECKLAC’, 0.7265784740447998)]
很好!結果關聯度很高,且與輸入產品匹配度高。然而,輸出只是基於單一產品向量。如果要基於多次購物歷史推薦產品呢?
一個簡單的解決辦法是:提取顧客所購買全部產品向量平均值並根據其找到相似產品。將使用如下包含眾多產品ID的函數,其輸出了一個100維向量,這是輸入產品向量之一:
def aggregate_vectors(products):
product_vec = []
for i in products:
try:
product_vec.append(model[i])
except KeyError:
continue
return np.mean(product_vec, axis=0)
注意之前已創建購買順序的單獨列表以便驗證。現在將其利用起來。
len(purchases_val[0])
輸出:314
第一個已購產品的列表長度為314。將用於驗證的產品順序表輸入函數aggregate_vectors。
aggregate_vectors(purchases_val[0]).shape
輸出:(100,)
函數輸出100個維度。這意味著函數運轉正常。現在用此結果得出最相似的產品:
similar_products(aggregate_vectors(purchases_val[0]))
輸出:
[(‘PARTY BUNTING’, 0.661663293838501),
(‘ALARM CLOCK BAKELIKE RED ‘, 0.640213131904602),
(‘ALARM CLOCK BAKELIKE IVORY’, 0.6287959814071655),
(‘ROSES REGENCY TEACUP AND SAUCER ‘, 0.6286610960960388),
(‘SPOTTY BUNTING’, 0.6270893216133118),
(‘GREEN REGENCY TEACUP AND SAUCER’, 0.6261675357818604)]
結果顯示,系統可根據顧客全部消費歷史推薦6個產品。而且,若想根據最後幾次購買記錄得到推薦,也可以使用相同的函數。
以下僅以近十次購買記錄作為輸入:
similar_products(aggregate_vectors(purchases_val[0][-10:]))
輸出:
[(‘PARISIENNE KEY CABINET ‘, 0.6296610832214355),
(‘FRENCH ENAMEL CANDLEHOLDER’, 0.6204789876937866),
(‘VINTAGE ZINC WATERING CAN’, 0.5855435729026794),
(‘CREAM HANGING HEART T-LIGHT HOLDER’, 0.5839680433273315),
(‘ENAMEL FLOWER JUG CREAM’, 0.5806118845939636)]
可代入不同編碼和驗證組中的順序生成不同推薦。
完整代碼傳送門:https://github.com/prateekjoshi565/recommendation_system/blob/master/recommender_2.ipynb
全文共7812字,預計學習時長16分鐘或更長
你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。
網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。
舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。
從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:
注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。
網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。
本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。
目錄
1. word2vec介紹——單詞的向量表示
2. 如何生成word2vec詞嵌入?
2.1 訓練數據
2.2 生成word2vec詞嵌入
3. 對非文本數據應用word2vec模型
4. 案例研究:對於網上產品推薦使用word2vec
1. word2vec介紹——單詞的向量表示
眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。
其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。
這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。
現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。
首先要了解如何計算word2vec向量或嵌入。
2. 如何生成word2vec詞嵌入?
word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。
下面的例子用於理解word2vec模型是如何工作的。思考以下句子:
假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。
注意:上下文窗口的規格非固定,可根據需要改變。
現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?
通過另一個例子來理解這個過程。
2.1 訓練數據
需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:
· 何處尋找這樣的數據集?
· 該數據集需要包含什麼內容?
· 這組數據有多大?
好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。
第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。
因此,該輸入詞的訓練樣本如下所示:
第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。
新的訓練樣本將附於之前的樣本後面,如下所示:
重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:
一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。
2.2 生成word2vec詞嵌入
現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。
假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:
· V=5000(詞彙表規格)
· N=100(隱藏單元數量或詞嵌入長度)
輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。
一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。
如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。
這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。
這是對於NLP中如何應用word2vec模型的簡要介紹。
實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。
3. 將word2vec模型應用於非文本數據
運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?
其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:
"these most been languages deciphered written of have already"
這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。
這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:
如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。
然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?
當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:
4. 案例研究:使用word2vec模型用Python進行網上商品推薦
搭建並理解我們的問題陳述。
需要基於顧客消費歷史,在電商網站上為其建立自動推薦特定數量商品的系統。
點擊此鏈接,使用一組網上零售數據集:https://archive.ics.uci.edu/ml/machine-learning-databases/00352/
啟動Jupyter Notebook,快速導入所需庫並載入數據集。
import pandas as pd
import numpy as np
import random
from tqdm import tqdm
from gensim.models import Word2Vec
import matplotlib.pyplot as plt
%matplotlib inline
import warnings;
warnings.filterwarnings('ignore')
df = pd.read_excel('Online Retail.xlsx')
df.head()
以下是對於該數據集某些領域的描述:
1. InvoiceNo: 發票號碼,每次交易對應的唯一數字
2. StockCode: 產品/物品編碼,每一唯一商品對應的唯一數字
3. Description:產品描述
4. Quantity:每次交易每種產品的數量
5. InvoiceDate: 每次交易生成的日期和時間
6. CustomerID:顧客ID,每位顧客對應的唯一數字。
df.shape
輸出: (541909, 8)
該數據集包含541909次交易。這是一個搭建模型的極佳數字。
處理缺失數據
# check for missing values
df.isnull().sum()
已有充足數據,接下來去除所有含缺失值的行。
# remove missing values
df.dropna(inplace=True)
數據準備
將產品編碼轉換為線性數據:
df['StockCode']= df['StockCode'].astype(str)
查看數據集中唯一顧客的數量:
customers = df["CustomerID"].unique().tolist()
len(customers)
輸出:4372
數據集中有4372個顧客。對於每一個顧客,提取其購買歷史。換句話說,有4372個購買順序。
從數據集中保留一小部分用以驗證是很好的做法。因此,將使用90%的顧客數據創建word2vec嵌入。將數據分割。
# shuffle customer ID's
random.shuffle(customers)
# extract 90% of customer ID's
customers_train = [customers[i] for i in range(round(0.9*len(customers)))]
# split data into train and validation set
train_df = df[df['CustomerID'].isin(customers_train)]
validation_df = df[~df['CustomerID'].isin(customers_train)]
將對於數據集中的顧客創建購買順序,兼顧訓練和驗證的目的。
# list to capture purchase history of the customers
purchases_train = []
# populate the list with the product codes
for i in tqdm(customers_train):
temp = train_df[train_df["CustomerID"] == i]["StockCode"].tolist()
purchases_train.append(temp)
# list to capture purchase history of the customers
purchases_val = []
# populate the list with the product codes
for i in tqdm(validation_df['CustomerID'].unique()):
temp = validation_df[validation_df["CustomerID"] == i]["StockCode"].tolist()
purchases_val.append(temp)
為產品創建word2vec詞嵌入
# train word2vec model
model = Word2Vec(window = 10, sg = 1, hs = 0,
negative = 10, # for negative sampling
alpha=0.03, min_alpha=0.0007,
seed = 14)
model.build_vocab(purchases_train, progress_per=200)
model.train(purchases_train, total_examples = model.corpus_count,
epochs=10, report_delay=1)
因為不再需要訓練模型,呼叫 init_sims( )。這會使得模型記憶能力更強。
model.init_sims(replace=True)
查看模型總結:
print(model)
輸出:word2vec(詞彙=3151,規格=100,透明度=0.03)
本模型有3151個唯一單詞,其規格向量各自為100。接下來,提取詞彙表中所有單詞的向量,將其存儲以便取用。
# extract all vectors
X = model[model.wv.vocab]
X.shape
輸出:(3151,100)
視覺化word2vec詞嵌入
視覺化呈現已創建的嵌入總是很有幫助。此處有100個維度的嵌入。我們連4維都不能視覺化呈現,更別提100維了。那究竟該怎麼辦呢?
將通過UMAP算法把產品嵌入維度從100減少至2。這在維度減少中的應用十分常見。
import umap
cluster_embedding = umap.UMAP(n_neighbors=30, min_dist=0.0,
n_components=2, random_state=42).fit_transform(X)
plt.figure(figsize=(10,9))
plt.scatter(cluster_embedding[:, 0], cluster_embedding[:, 1], s=3, cmap='Spectral')
開始推薦產品
恭喜!數據集中每一個產品的word2vec嵌入都已完成。現在,需要為特定產品或產品向量推薦相似產品。
首先創建產品ID以及產品描述庫,以便於將產品描述和ID相互匹配。
products = train_df[["StockCode", "Description"]]
# remove duplicates
products.drop_duplicates(inplace=True, subset='StockCode', keep="last")
# create product-ID and product-description dictionary
products_dict = products.groupby('StockCode')['Description'].apply(list).to_dict()
# test the dictionary
products_dict['84029E']
輸出:[‘RED WOOLLY HOTTIE WHITE HEART.’]
以下對該函數進行了定義。將產品向量作為輸入,相似性最大的6個產品為輸出:
def similar_products(v, n = 6):
# extract most similar products for the input vector
ms = model.similar_by_vector(v, topn= n+1)[1:]
# extract name and similarity score of the similar products
new_ms = []
for j in ms:
pair = (products_dict[j[0]][0], j[1])
new_ms.append(pair)
return new_ms
嘗試運行函數,傳輸產品‘90019A’的向量(‘SILVER M.O.P ORBIT BRACELET’):
similar_products(model['90019A'])
輸出:
[(‘SILVER M.O.P ORBIT DROP EARRINGS’, 0.766798734664917),
(‘PINK HEART OF GLASS BRACELET’, 0.7607438564300537),
(‘AMBER DROP EARRINGS W LONG BEADS’, 0.7573930025100708),
(‘GOLD/M.O.P PENDANT ORBIT NECKLACE’, 0.7413625121116638),
(‘ANT COPPER RED BOUDICCA BRACELET’, 0.7289256453514099),
(‘WHITE VINT ART DECO CRYSTAL NECKLAC’, 0.7265784740447998)]
很好!結果關聯度很高,且與輸入產品匹配度高。然而,輸出只是基於單一產品向量。如果要基於多次購物歷史推薦產品呢?
一個簡單的解決辦法是:提取顧客所購買全部產品向量平均值並根據其找到相似產品。將使用如下包含眾多產品ID的函數,其輸出了一個100維向量,這是輸入產品向量之一:
def aggregate_vectors(products):
product_vec = []
for i in products:
try:
product_vec.append(model[i])
except KeyError:
continue
return np.mean(product_vec, axis=0)
注意之前已創建購買順序的單獨列表以便驗證。現在將其利用起來。
len(purchases_val[0])
輸出:314
第一個已購產品的列表長度為314。將用於驗證的產品順序表輸入函數aggregate_vectors。
aggregate_vectors(purchases_val[0]).shape
輸出:(100,)
函數輸出100個維度。這意味著函數運轉正常。現在用此結果得出最相似的產品:
similar_products(aggregate_vectors(purchases_val[0]))
輸出:
[(‘PARTY BUNTING’, 0.661663293838501),
(‘ALARM CLOCK BAKELIKE RED ‘, 0.640213131904602),
(‘ALARM CLOCK BAKELIKE IVORY’, 0.6287959814071655),
(‘ROSES REGENCY TEACUP AND SAUCER ‘, 0.6286610960960388),
(‘SPOTTY BUNTING’, 0.6270893216133118),
(‘GREEN REGENCY TEACUP AND SAUCER’, 0.6261675357818604)]
結果顯示,系統可根據顧客全部消費歷史推薦6個產品。而且,若想根據最後幾次購買記錄得到推薦,也可以使用相同的函數。
以下僅以近十次購買記錄作為輸入:
similar_products(aggregate_vectors(purchases_val[0][-10:]))
輸出:
[(‘PARISIENNE KEY CABINET ‘, 0.6296610832214355),
(‘FRENCH ENAMEL CANDLEHOLDER’, 0.6204789876937866),
(‘VINTAGE ZINC WATERING CAN’, 0.5855435729026794),
(‘CREAM HANGING HEART T-LIGHT HOLDER’, 0.5839680433273315),
(‘ENAMEL FLOWER JUG CREAM’, 0.5806118845939636)]
可代入不同編碼和驗證組中的順序生成不同推薦。
完整代碼傳送門:https://github.com/prateekjoshi565/recommendation_system/blob/master/recommender_2.ipynb
留言 點贊 關注
我們一起分享AI學習與發展的乾貨
編譯組:張雨姝、蔣馨怡
相關鏈接:
https://www.analyticsvidhya.com/blog/2019/07/how-to-build-recommendation-system-word2vec-python/
如需轉載,請後臺留言,遵守轉載規範