'案例+代碼詳解:用Word2Vec建立你的私人購物助手'

"
全文共7812字,預計學習時長16分鐘或更長
"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

購買歷史

如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。


然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?

當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:

"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

購買歷史

如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。


然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?

當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

進一步處理網上零售數據,運用word2vec嵌入就能構建出一個推薦系統。


"
全文共7812字,預計學習時長16分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

購買歷史

如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。


然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?

當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

進一步處理網上零售數據,運用word2vec嵌入就能構建出一個推薦系統。


案例+代碼詳解:用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分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

購買歷史

如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。


然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?

當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

進一步處理網上零售數據,運用word2vec嵌入就能構建出一個推薦系統。


案例+代碼詳解:用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()


案例+代碼詳解:用Word2Vec建立你的私人購物助手


以下是對於該數據集某些領域的描述:

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分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

購買歷史

如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。


然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?

當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

進一步處理網上零售數據,運用word2vec嵌入就能構建出一個推薦系統。


案例+代碼詳解:用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()


案例+代碼詳解:用Word2Vec建立你的私人購物助手


以下是對於該數據集某些領域的描述:

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()
案例+代碼詳解:用Word2Vec建立你的私人購物助手

已有充足數據,接下來去除所有含缺失值的行。


# 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分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

購買歷史

如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。


然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?

當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

進一步處理網上零售數據,運用word2vec嵌入就能構建出一個推薦系統。


案例+代碼詳解:用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()


案例+代碼詳解:用Word2Vec建立你的私人購物助手


以下是對於該數據集某些領域的描述:

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()
案例+代碼詳解:用Word2Vec建立你的私人購物助手

已有充足數據,接下來去除所有含缺失值的行。


# 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建立你的私人購物助手

上圖中每個點都代表一個產品。圖上幾處聚集的數據點代表相似產品。

開始推薦產品


恭喜!數據集中每一個產品的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分鐘或更長
案例+代碼詳解:用Word2Vec建立你的私人購物助手

圖片來源:unsplash.com/@pixtolero2

你注意過亞馬遜的“為你推薦”功能嗎?事實上,此功能是由機器學習驅動的,精準無比。


網飛、谷歌、亞馬遜、Flipkart等公司斥巨資完善推薦引擎是有原因的。推薦引擎是強大的獲客渠道,並能增強用戶體驗。


舉個例子:登錄一個常用的網上商城買躺椅,商城會展示出幾百種躺椅。


從傳統的兩座躺椅到回壓躺椅;從可升降躺椅到靠牆躺椅。我們試著點開一個皮革手動躺椅:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

注意此頁面上展現的不同信息。圖片左邊包含從不同角度拍攝的產品照片。右邊展示了產品細節以及相似產品圖片。


網站推薦給我們相似的產品,幫消費者節省了手動搜尋和瀏覽相似扶手椅的時間。


本文將將從一個獨特的角度展開展示如何搭建推薦系統,即應用一個NLP概念——Word2vec來進行推薦。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

目錄


1. word2vec介紹——單詞的向量表示


2. 如何生成word2vec詞嵌入?

2.1 訓練數據

2.2 生成word2vec詞嵌入


3. 對非文本數據應用word2vec模型


4. 案例研究:對於網上產品推薦使用word2vec


案例+代碼詳解:用Word2Vec建立你的私人購物助手

1. word2vec介紹——單詞的向量表示


眾所周知,機器處理原始文本數據。實際上,機器幾乎不可能處理數據文本之外的其它文本。因此,以向量的形式表示文本一直是所有NLP任務的重要步驟。


其中非常關鍵的一步是word2vec詞嵌入的使用。該方法在2013年被引入NLP領域,完全改變了NLP的前景。


這些嵌入法代表了處理詞類比和相似度等任務可達到的最高水準。word2vec嵌入法也能實現King – man +woman ~= Queen(國王–男性 + 女性 ~= 女王等任務),近乎神蹟。


現在有兩種word2vec模型——連續詞袋模型與Skip-Gram模型。本文將使用後者。


首先要了解如何計算word2vec向量或嵌入。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

2. 如何生成word2vec詞嵌入?


word2vec模型是一個單個簡單隱藏層的神經網絡模型。模型任務用於預測語句中每個單詞的臨近單詞。然而,我們的目標與此完全無關。我們想做的只是知道模型被訓練後隱藏層所學習的權重。這些權重可做被用做詞嵌入。


下面的例子用於理解word2vec模型是如何工作的。思考以下句子:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

假設“teleport(傳輸)”這個詞作為輸入詞。該詞擁有規格為2的上下文窗口。這意味著只將此詞左右兩側的兩個單詞作為相近單詞。


注意:上下文窗口的規格非固定,可根據需要改變。


現在,任務是逐一選擇相近單詞(上下文窗口中的單詞)並確定詞彙表中每個單詞被選中的可能性。聽起來很容易,對嗎?


通過另一個例子來理解這個過程。


2.1 訓練數據


需要一個標籤數據集來訓練神經網絡模型。這意味著數據集需要有一組輸入,每組都會有相應輸出。這時你可能會想問以下問題:


· 何處尋找這樣的數據集?

· 該數據集需要包含什麼內容?

· 這組數據有多大?


好消息!可以很容易地創建自己的標籤數據來訓練word2vec模型。如下闡述瞭如何從文本生成數據集。應用其中的一個句子並創建訓練數據。


第一步:黃色高亮單詞作為輸入,綠色高亮單詞為輸出。窗口規格為2個單詞。將首單詞作為輸入詞。


案例+代碼詳解:用Word2Vec建立你的私人購物助手


因此,該輸入詞的訓練樣本如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

第二步:將第二個單詞作為輸入詞。上下文窗口將同時改變。現在的相近單詞變成了“we”、“become”和“what”。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

新的訓練樣本將附於之前的樣本後面,如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

重複以上步驟直至最後一個單詞。最後,完整的訓練數據如下所示:


案例+代碼詳解:用Word2Vec建立你的私人購物助手

案例+代碼詳解:用Word2Vec建立你的私人購物助手


一個句子能生成27個訓練樣本。太讚了!這是我喜歡處理非結構化數據的原因之一——能讓標籤數據集從無到有。


2.2 生成word2vec詞嵌入


現在假設存在一組句子,用同樣的方法提取出一組訓練樣本。將會得到大量訓練數據。


假設該數據集中唯一單詞(即只出現一次的單詞)的數量是5000,並且希望為每一個單詞創建規格為100的單詞向量。同時word2vec架構如下所示:


· V=5000(詞彙表規格)

· N=100(隱藏單元數量或詞嵌入長度)

案例+代碼詳解:用Word2Vec建立你的私人購物助手

輸入是獨熱編碼向量,輸出層是詞彙表中各單詞成為相近單詞的概率。


一旦模型被訓練,很容易提取WV x N 矩陣的學習權重,並用以提取單詞。

案例+代碼詳解:用Word2Vec建立你的私人購物助手

如上所示,權重矩陣的規格為5000x100。第一行對應詞彙表中的第一個單詞,第二行對應第二個,以此類推。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這就是通過word2vec生成固定規格的單詞向量或單詞嵌入的方法。數據集中的相似詞會有相似向量,如指向同一方向的向量。比如,“car”和“jeep”兩個詞有著相似的向量。

案例+代碼詳解:用Word2Vec建立你的私人購物助手


這是對於NLP中如何應用word2vec模型的簡要介紹。


實操之前請回答這個問題:如何將word2vec模型應用於產品推薦等非NLP任務?相信你從讀到本文主題就想到了這一點。下面解決此問題。


案例+代碼詳解:用Word2Vec建立你的私人購物助手

3. 將word2vec模型應用於非文本數據


運用word2vec創建文本向量表示所需的自然語言有什麼本質特徵?


其本質特徵即為文本的序列特質。每個句子或短語都包含單詞序列。在沒有序列的情況下,讀者將難以理解文本。試試解釋以下句子:


"these most been languages deciphered written of have already"


這個句子沒有序列。讀者很難理解句意,因此單詞序列對於理解任何自然語言都很重要。此特質讓我想到同樣擁有序列的數據。


這樣的一組數據是電商網站顧客的購物記錄。消費者行為通常存在一定模式。比如,參與運動相關活動的人群可能會有如下購買模式:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

購買歷史

如果每一個產品都能用向量表示,就能很容易地找到相似產品。因此,如果顧客正在網上瀏覽商品,那麼應用兩產品之間的向量相似性評分很容易為其推薦相似產品。


然而,如何生成產品的向量表示呢?可以使用word2vec模型生成嗎?

當然可以!把顧客購買歷史作為輸入句子,把商品作為輸出單詞:

案例+代碼詳解:用Word2Vec建立你的私人購物助手

進一步處理網上零售數據,運用word2vec嵌入就能構建出一個推薦系統。


案例+代碼詳解:用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()


案例+代碼詳解:用Word2Vec建立你的私人購物助手


以下是對於該數據集某些領域的描述:

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()
案例+代碼詳解:用Word2Vec建立你的私人購物助手

已有充足數據,接下來去除所有含缺失值的行。


# 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建立你的私人購物助手

上圖中每個點都代表一個產品。圖上幾處聚集的數據點代表相似產品。

開始推薦產品


恭喜!數據集中每一個產品的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


案例+代碼詳解:用Word2Vec建立你的私人購物助手

留言 點贊 關注

我們一起分享AI學習與發展的乾貨

編譯組:張雨姝、蔣馨怡

相關鏈接:

https://www.analyticsvidhya.com/blog/2019/07/how-to-build-recommendation-system-word2vec-python/

如需轉載,請後臺留言,遵守轉載規範

"

相關推薦

推薦中...