NLP 分享:

Section 1:

本節主要內容:

  • 1.中文分詞技術原理解析
  • 2.機器學習與神經網絡模型基礎概念
  • 3.關鍵字提取
  • 4.詞向量解析

本節期望:

  • 能使用jieba做基礎的中文分詞與常用算法進行關鍵字提取
  • 能使用word2vec訓練得到基礎的模型與詞向量

NLP是啥?

zh-wiki: 自然語言處理(英語:Natural Language Processing,縮寫作 NLP)是人工智慧和語言學領域的分支學科

中文分詞技術原理解析:

  • 1.基于字符串匹配的分詞方法
  • 2.基于理解的分詞方法
  • 3.基于統計的分詞方法

1.基于字符串匹配的分詞方法:

基于字符串匹配的分詞方法又稱機械分詞方法,它是按照一定的策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行配,若在詞典中找到某個字符串,則匹配成功

2.基于理解的分詞方法:

通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。它通常包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統可以獲得有關詞、句子等的句法和語義信息來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。由于漢語語言知識的籠統、復雜性,難以將各種語言信息組織成機器可直接讀取的形式,因此目前基于理解的分詞系統還處在<font color=#FF0000 size = 6>試驗階段</font>。

3.基于統計的分詞方法

基于統計的分詞方法是在給定大量已經分詞的文本的前提下,利用統計機器學習模型學習詞語切分的規律(稱為訓練),從而實現對未知文本的切分。例如最大概率分詞方法和最大熵分詞方法等。隨著大規模語料庫的建立,統計機器學習方法的研究和發展,基于統計的中文分詞方法漸漸成為了主流方法

主要的統計模型有:N元文法模型(N-gram),隱馬爾可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),條件隨機場模型(Conditional Random Fields,CRF)等。

1.馬爾科夫模型

  • 不知道哪個老大的總結:<Font color=#FF1100>今天的事情只取決于昨天,而明天的事情只取決于今天,與歷史毫無關聯</Font>

隨機過程中各個狀態S_t的概率分布,只與它的前一個狀態S_{t-1}有關,即P_(S_t|S_1,S_2,S_3,\cdots,S_{t-1}) = P(S_t|S_{t-1})

公式:

馬爾科夫過程:

p_(q_t = s_j|q_{t-1}=s_i,q_{t-2}=s_k,\cdots)\approx p_({q_t=s_j|q_{t-1}=s_i})

馬爾科夫模型:

_({q_t=s_j|q_{t-1}=s_i}) = a_{ij} \quad,\quad 1\leq i,j\leq N

a_{ij} \geq 0
\sum_{i=0}^N a_{ij} =1
)

重要性質:

  • 馬爾科夫鏈模型的狀態轉移矩陣收斂到的穩定概率分布于我們的<font color=#FF0000>初始狀態概率分布無關</Font>
  • 非周期性
  • 任何兩個狀態是連通的: 從任意一個狀態可以通過有限步到達其他的任意一個狀態,不會出現條件概率為0不可達的情況
  • 狀態數是可以是有限的,也可以是無限的。因此可以用于連續概率分布和離散型概率分布
在這里插入圖片描述

2.隱馬爾科夫模型(Hidden Markov Model,HMM)

它用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數。

  • 維基百科上的例子——通過朋友的行為去預測當地天氣的變化


    隱藏馬爾柯夫

    ![avatar](./Image/v2-13a9848cdad479aaafa282e51c0d6e72_hd.jpg

Viterbi算法:

算法原理:

  • 用動態規劃求解HMM模型預測問題
avatar

算法結果:

根據狀態序列得到分詞結果
算法過程:
========================

  • 輸入:
    模型 \lambda = (A,B,\pi) 和觀察序列 O =(O_1,O_2,\cdots,O_T)
  • 輸出:
    最優路徑:I^*=(i_1,i_2,\cdots,i_t)

n元模型算法 (n-gram)

  • 語言模型聯合概率:
    p(W) = p(w^T_1)=p(w_1,w_2,\cdots,w_T)

  • Bayes公式鏈式分解:
    p(w^T_1)=p(w_1)\cdotp(w_2|w_1)\cdots p(w_T|w^{T-1}_1)

  • 當n=1:(unigram model)
    p(w_1,w_2,\cdots,w_m) = p(w_1)p(w_2)\cdots p(w_m)

句子的概率等于每個詞的概率的乘積,即每個詞之間都是相互獨立的

  • 當n=2:(bigram model)
    p(w_i|w_1,w_2,\cdots,w_i-1) = p(w_i|w_{i-1})

  • 當n=3:(trigram model)
    p(w_i|w_1,w_2,\cdots,w_i-1) = p(w_i|w_{i-2},w_{i-1})

  • n\rightarrow+\infty

P(w_i | w_{i-(n-1)},\cdots,w_{i-1})= p(wi|w_{i-(n-1)},\cdots,w_{i-1},w_i) = \frac{count(w_{i-(n-1)},\cdots,w_{i-1},w_i)}{count(w_{i-(n-1)},\cdots,w_{i-1})}

  • 齊次馬爾科夫假設:
    p(w_k|w^k_1)\approx p(w_k|w^{k-1}_{k-n+1})

    每個輸出僅僅與上一個輸出有關

3.jieba分詞:

github: https://github.com/fxsjy/jieba

算法

  • 基于前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)
  • 采用了動態規劃查找最大概率路徑, 找出基于詞頻的最大切分組合
  • 對于未登錄詞,采用了基于漢字成詞能力的 HMM 模型,使用了 Viterbi 算法

機器學習與神經網絡模型基礎:

機器學習基本概念:

必要元素:

  • 1.數據
  • 2.轉換數據的模型
  • 3.衡量模型好壞的損失函數
  • 4.調整模型權重以便最小化損失函數的算法

機器學習分類:

  • 1.監督學習
  • 2.無監督學習:

區別:數據集是否有人工分類標簽

神經網絡模型基礎概念:

  • 1.激活函數:
  • 2.損失函數(代價函數) :
  • 3.反向傳播:


    在這里插入圖片描述

激活函數: 躍階函數 與 Sigmoid函數

在這里插入圖片描述

神經網絡發展史

神經網絡發展史

神經網絡類型

https://36kr.com/p/5115489.html

27種神經網絡


在這里插入圖片描述
  • 泛化(generalization) : 機器學習模型學習到的概念在它處于學習的過程中時模型沒有遇見過的樣本時候的表現, 好的機器學習模型的模板目標是從問題領域內的訓練數據到任意的數據上泛化性能良好。 在機器學習領域中, 當我們討論一個機器學習模型學習和泛化的好壞時, 我們通常使用術語: 過擬合和欠擬合。

  • 過擬合(over-fitted) : 過擬合指的是 referstoa 模型對于訓練數據擬合程度過當的情況。當某個模型過度的學習訓練數據中的細節和噪音, 以至于模型在新的數據上表現很差, 我們稱過擬合發生了。 這意味著訓練數據中的噪音或者隨機波動也被當做概念被模型學習了。 而問題就在于這些概念不適用于新的數據, 從而導致模型泛化性能的變差。

  • 欠擬合(under-fitted) : 欠擬合指的是模型在訓練和預測時表現都不好的情況。 一個欠擬合的機器學習模型不是一個良好的模型并且由于在訓練數據上表現不好這是顯然的。

關鍵字提取:

常用算法:

  • TF/IDF算法: (Term Frequency - Inverse Document Frequency)
    • 基于統計學原理,統計詞頻數
      • 表達式為:
        tf*idf(i,j) = tf_{ij} * idf_i = \frac{n_{ij}}{\sum_k{n_{kj}}} * log\left (\frac{|D|}{1+|D_i|}\right)

為啥要取對數和相乘?答先輩在實驗室得出來的結論,不接受反駁!!!!!

  • TextRank(源于PageRank算法)

    • 基本思想是:

      • 連接數量,一個網頁被越多的其他網頁連接,說明這個網頁越重要
      • 連接質量,一個網頁被越高權值的網頁連接,說明這個網頁越重要
    • 表達式為:
      WS(V_i) = (1-d) + d * \sum_{j}\left(\frac{1}{|Out(V_j\in In(V_j))|}*WS(V_j)\right)

  • LSA/LSI 算法:

    • LSA 主要采用 SVD(奇異值分解) 【Latent Semanitc Analysis,潛在語義分析】
    • LSI 主要采用 貝葉斯學派的方法對分布信息進行擬合[I for index,潛在語以索引]
  • LDA算法:

    • 根據此的共現信息的分析,擬合出詞-文檔-主題的分布,進而將詞,文本都映射到一個予以上面

實驗代碼:KeywordExtract.py

詞表示:

  • one-hot表示法:
  • 詞嵌入
// One-hot Representation 向量的維度是詞表的大小,比如有10w個詞,該向量的維度就是10w
v('足球') = [0 1 0 0 0 0 0 ......]
v('籃球') = [0 0 0 0 0 1 0 ......]

// Distributed Representation 向量的維度是某個具體的值如50
v('足球') = [0.26 0.49 -0.54 -0.08 0.16 0.76 0.33 ......]
v('籃球') = [0.31 0.54 -0.48 -0.01 0.28 0.94 0.38 ......] 

word2vec基本介紹:

Word2Vec就是把單詞轉換成向量。它本質上是一種單詞聚類的方法,是實現單詞語義推測、句子情感分析等目的一種手段。

算法核心


在這里插入圖片描述

word2vec = CBOW + Skip-Gram

CBOW (Continue bags of word)

CBOW(Continuous Bag-of-Words Model)是一種根據上下文的詞語預測當前詞語的出現概率的模型,其圖示如上圖左。CBOW是已知上下文,估算當前詞語的語言模型;

skip-Gram

而Skip-gram只是逆轉了CBOW的因果關系而已,即已知當前詞語,預測上下文,其圖示如上圖右;

在這里插入圖片描述
實驗過程:
  • 1.數據集 中文維基百科數據集
  • 2.分詞,jieba
  • 3.模型訓練,gensim
code:w2v.py
    //通過一系列復雜的運算以后結果為:
res1:[('小孩', 0.8762074112892151), ('子女', 0.838797926902771),
     ('女兒', 0.8185409903526306), ('弟妹', 0.7953422665596008), 
     ('兄弟姐妹', 0.7813134789466858), ('第二胎', 0.7718782424926758), 
     ('妻子', 0.7622642517089844), ('女兒', 0.7622190713882446), 
     ('私生女', 0.7616469264030457), ('女孩', 0.7608779668807983)]
    
res2:[('女人', 0.5232132077217102), ('王后', 0.4952596426010132), 
    ('太后', 0.4879013001918793), ('妃子', 0.47403064370155334), 
    ('王妃', 0.46553662419319153), ('皇太后', 0.45517897605895996), 
    ('侍女', 0.45335230231285095), ('太子妃', 0.45140954852104187), 
    ('王太后', 0.4455147683620453), ('太皇太后', 0.44461196660995483)]
    
res3:   西瓜
res4:   香蕉

參考鏈接:

郵箱:ljm500@163.com

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容