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>
隨機過程中各個狀態
的概率分布,只與它的前一個狀態
有關,即
公式:
馬爾科夫過程:
馬爾科夫模型:
)
重要性質:
- 馬爾科夫鏈模型的狀態轉移矩陣收斂到的穩定概率分布于我們的<font color=#FF0000>初始狀態概率分布無關</Font>
- 非周期性
- 任何兩個狀態是連通的: 從任意一個狀態可以通過有限步到達其他的任意一個狀態,不會出現條件概率為0不可達的情況
- 狀態數是可以是有限的,也可以是無限的。因此可以用于連續概率分布和離散型概率分布
2.隱馬爾科夫模型(Hidden Markov Model,HMM)
它用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數。
-
維基百科上的例子——通過朋友的行為去預測當地天氣的變化
隱藏馬爾柯夫

語言模型聯合概率:
Bayes公式鏈式分解:
當n=1:(unigram model)
句子的概率等于每個詞的概率的乘積,即每個詞之間都是相互獨立的
當n=2:(bigram model)
當n=3:(trigram model)
當
-
齊次馬爾科夫假設:
每個輸出僅僅與上一個輸出有關
3.jieba分詞:
github: https://github.com/fxsjy/jieba
算法
- 基于前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)
- 采用了動態規劃查找最大概率路徑, 找出基于詞頻的最大切分組合
- 對于未登錄詞,采用了基于漢字成詞能力的 HMM 模型,使用了 Viterbi 算法
機器學習與神經網絡模型基礎:
機器學習基本概念:
必要元素:
- 1.數據
- 2.轉換數據的模型
- 3.衡量模型好壞的損失函數
- 4.調整模型權重以便最小化損失函數的算法
機器學習分類:
- 1.監督學習
- 2.無監督學習:
區別:數據集是否有人工分類標簽
神經網絡模型基礎概念:
- 1.激活函數:
- 2.損失函數(代價函數) :
-
3.反向傳播:
在這里插入圖片描述
激活函數: 躍階函數 與 Sigmoid函數
神經網絡發展史
神經網絡類型
27種神經網絡
泛化(generalization) : 機器學習模型學習到的概念在它處于學習的過程中時模型沒有遇見過的樣本時候的表現, 好的機器學習模型的模板目標是從問題領域內的訓練數據到任意的數據上泛化性能良好。 在機器學習領域中, 當我們討論一個機器學習模型學習和泛化的好壞時, 我們通常使用術語: 過擬合和欠擬合。
過擬合(over-fitted) : 過擬合指的是 referstoa 模型對于訓練數據擬合程度過當的情況。當某個模型過度的學習訓練數據中的細節和噪音, 以至于模型在新的數據上表現很差, 我們稱過擬合發生了。 這意味著訓練數據中的噪音或者隨機波動也被當做概念被模型學習了。 而問題就在于這些概念不適用于新的數據, 從而導致模型泛化性能的變差。
欠擬合(under-fitted) : 欠擬合指的是模型在訓練和預測時表現都不好的情況。 一個欠擬合的機器學習模型不是一個良好的模型并且由于在訓練數據上表現不好這是顯然的。
關鍵字提取:
常用算法:
- TF/IDF算法: (Term Frequency - Inverse Document Frequency)
- 基于統計學原理,統計詞頻數
- 表達式為:
- 表達式為:
- 基于統計學原理,統計詞頻數
為啥要取對數和相乘?答先輩在實驗室得出來的結論,不接受反駁!!!!!
-
TextRank(源于PageRank算法)
-
基本思想是:
- 連接數量,一個網頁被越多的其他網頁連接,說明這個網頁越重要
- 連接質量,一個網頁被越高權值的網頁連接,說明這個網頁越重要
表達式為:
-
-
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: 香蕉
參考鏈接:
- 中文分詞概述:https://blog.csdn.net/flysky1991/article/details/73948971
- Word2Vec介紹:直觀理解skip-gram模型 https://zhuanlan.zhihu.com/p/29305464
- 白話Word2Vec: http://www.lxweimin.com/p/f58c08ae44a6
- word2vec學習小記: http://www.lxweimin.com/p/418f27df3968
- https://www.leiphone.com/news/201705/vyn9xgep9uQLIf6d.html
- https://blog.csdn.net/Irving_zhang/article/details/69396923 3. https://zhuanlan.zhihu.com/p/26306795
- 激活函數解釋: https://blog.csdn.net/qrlhl/article/details/60883604
- 偏置項:https://blog.csdn.net/xwd18280820053/article/details/70681750
- 正則化:https://blog.csdn.net/u012162613/article/details/44261657 7. 結巴分詞:https://www.cnblogs.com/zhbzz2007/p/6092313.html