程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python數據分析與機器學習40-自然語言處理詞向量模型-Word2Vec

編輯:Python

文章目錄

  • 一. 自然語言概述
    • 1.1 自然語言可以做什麼
    • 1.2 為什麼需要深度學習
  • 二.語言模型
    • 2.1 語言模型簡介
    • 2.2 語言模型實例
    • 2.3 語言模型參數數量
  • 三. 詞向量
  • 四. 神經網絡模型
  • 五. Hierarchical Softmax
    • 5.1 哈夫曼樹
    • 5.2 Sigmoid函數
    • 5.3 CBOW
    • 5.4 Skip-gram
    • 5.5 Negative Sampling
  • 參考:

一. 自然語言概述

1.1 自然語言可以做什麼

  1. 拼寫檢查、關鍵詞搜索
  2. 文本挖掘(產品價格、日期、時間、地點、人名、公司名)
  3. 文本分類
  4. 機器翻譯
  5. 客服系統
  6. 復雜對話系統

1.2 為什麼需要深度學習

二.語言模型

2.1 語言模型簡介

機器翻譯:

拼寫糾錯:

智能問答:

2.2 語言模型實例

我今天下午打籃球

p(S)=p(w1,w2,w3,w4,w5,…,wn)
=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)

p(S)被稱為語言模型,即用來計算一個句子概率的模型

語言模型存在哪些問題呢?

p(wi|w1,w2,...,wi-1) = p(w1,w2,...,wi-1,wi) /p(w1,w2,...,wi-1)
  1. 數據過於稀疏
  2. 參數空間太大

假設下一個詞的出現依賴它前面的一個詞:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)
=p(w1)p(w2|w1)p(w3|w2)...p(wn|wn-1)

假設下一個詞的出現依賴它前面的兩個詞:

p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)
=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|wn-1,wn-2)

I want english food
p(I want chinesefood)=P(want|I)
×P(chinese|want)
×P(food|chinese)

2.3 語言模型參數數量

假設詞典的大小是N則模型參數的量級是 O ( N n ) O(N^n) O(Nn)

三. 詞向量

下面是一些詞語:

expect代表的是我們常見的向量,例如取值范圍[-1,1]
右邊圖我們可以看到 是單詞在向量空間中的分布情況,例如 had has have語義比較接近,所以在向量空間中也距離也是比較接近的。

詞意相近的詞:

詞向量與語言的關系:
左邊是英語,後面是西班牙語
我們可以看到即便語言不同,詞向量空間所處的位置不變

四. 神經網絡模型

五. Hierarchical Softmax

5.1 哈夫曼樹


5.2 Sigmoid函數

5.3 CBOW

輸入層:
是上下文的詞語的詞向量,在訓練CBOW模型,詞向量只是個副產品,確切來說,是CBOW模型的一個參數。訓練開始的時候,詞向量是個隨機值,隨著訓練的進行不斷被更新)。

投影層:
對其求和,所謂求和,就是簡單的向量加法。

輸出層
輸出最可能的w。由於語料庫中詞匯量是固定的|C|個,所以上述過程其實可以看做一個多分類問題。給定特征,從|C|個分類中挑一個。

5.4 Skip-gram

5.5 Negative Sampling

參考:

  1. https://study.163.com/course/introduction.htm?courseId=1003590004#/courseDetail?tab=1

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved