Section 1:
本節(jié)主要內(nèi)容:
- 1.中文分詞技術(shù)原理解析
- 2.機(jī)器學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)模型基礎(chǔ)概念
- 3.關(guān)鍵字提取
- 4.詞向量解析
本節(jié)期望:
- 能使用jieba做基礎(chǔ)的中文分詞與常用算法進(jìn)行關(guān)鍵字提取
- 能使用word2vec訓(xùn)練得到基礎(chǔ)的模型與詞向量
NLP是啥?
zh-wiki: 自然語言處理(英語:Natural Language Processing,縮寫作 NLP)是人工智慧和語言學(xué)領(lǐng)域的分支學(xué)科
中文分詞技術(shù)原理解析:
- 1.基于字符串匹配的分詞方法
- 2.基于理解的分詞方法
- 3.基于統(tǒng)計(jì)的分詞方法
1.基于字符串匹配的分詞方法:
基于字符串匹配的分詞方法又稱機(jī)械分詞方法,它是按照一定的策略將待分析的漢字串與一個(gè)“充分大的”機(jī)器詞典中的詞條進(jìn)行配,若在詞典中找到某個(gè)字符串,則匹配成功
2.基于理解的分詞方法:
通過讓計(jì)算機(jī)模擬人對句子的理解,達(dá)到識(shí)別詞的效果。其基本思想就是在分詞的同時(shí)進(jìn)行句法、語義分析,利用句法信息和語義信息來處理歧義現(xiàn)象。它通常包括三個(gè)部分:分詞子系統(tǒng)、句法語義子系統(tǒng)、總控部分。在總控部分的協(xié)調(diào)下,分詞子系統(tǒng)可以獲得有關(guān)詞、句子等的句法和語義信息來對分詞歧義進(jìn)行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識(shí)和信息。由于漢語語言知識(shí)的籠統(tǒng)、復(fù)雜性,難以將各種語言信息組織成機(jī)器可直接讀取的形式,因此目前基于理解的分詞系統(tǒng)還處在<font color=#FF0000 size = 6>試驗(yàn)階段</font>。
3.基于統(tǒng)計(jì)的分詞方法
基于統(tǒng)計(jì)的分詞方法是在給定大量已經(jīng)分詞的文本的前提下,利用統(tǒng)計(jì)機(jī)器學(xué)習(xí)模型學(xué)習(xí)詞語切分的規(guī)律(稱為訓(xùn)練),從而實(shí)現(xiàn)對未知文本的切分。例如最大概率分詞方法和最大熵分詞方法等。隨著大規(guī)模語料庫的建立,統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法的研究和發(fā)展,基于統(tǒng)計(jì)的中文分詞方法漸漸成為了主流方法
主要的統(tǒng)計(jì)模型有:N元文法模型(N-gram),隱馬爾可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),條件隨機(jī)場模型(Conditional Random Fields,CRF)等。
1.馬爾科夫模型
- 不知道哪個(gè)老大的總結(jié):<Font color=#FF1100>今天的事情只取決于昨天,而明天的事情只取決于今天,與歷史毫無關(guān)聯(lián)</Font>
隨機(jī)過程中各個(gè)狀態(tài)
的概率分布,只與它的前一個(gè)狀態(tài)
有關(guān),即
公式:
馬爾科夫過程:
馬爾科夫模型:
)
重要性質(zhì):
- 馬爾科夫鏈模型的狀態(tài)轉(zhuǎn)移矩陣收斂到的穩(wěn)定概率分布于我們的<font color=#FF0000>初始狀態(tài)概率分布無關(guān)</Font>
- 非周期性
- 任何兩個(gè)狀態(tài)是連通的: 從任意一個(gè)狀態(tài)可以通過有限步到達(dá)其他的任意一個(gè)狀態(tài),不會(huì)出現(xiàn)條件概率為0不可達(dá)的情況
- 狀態(tài)數(shù)是可以是有限的,也可以是無限的。因此可以用于連續(xù)概率分布和離散型概率分布
2.隱馬爾科夫模型(Hidden Markov Model,HMM)
它用來描述一個(gè)含有隱含未知參數(shù)的馬爾可夫過程。其難點(diǎn)是從可觀察的參數(shù)中確定該過程的隱含參數(shù)。
-
維基百科上的例子——通過朋友的行為去預(yù)測當(dāng)?shù)靥鞖獾淖兓?/p>
隱藏馬爾柯夫
態(tài)規(guī)劃求解HMM模型預(yù)測問題
算法結(jié)果:
根據(jù)狀態(tài)序列得到分詞結(jié)果
算法過程:
========================
- 輸入:
- 輸出:
n元模型算法 (n-gram)
語言模型聯(lián)合概率:
Bayes公式鏈?zhǔn)椒纸猓?br>
當(dāng)n=1:(unigram model)
句子的概率等于每個(gè)詞的概率的乘積,即每個(gè)詞之間都是相互獨(dú)立的
當(dāng)n=2:(bigram model)
當(dāng)n=3:(trigram model)
當(dāng)
-
齊次馬爾科夫假設(shè):
每個(gè)輸出僅僅與上一個(gè)輸出有關(guān)
3.jieba分詞:
github: https://github.com/fxsjy/jieba
算法
- 基于前綴詞典實(shí)現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構(gòu)成的有向無環(huán)圖 (DAG)
- 采用了動(dòng)態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合
- 對于未登錄詞,采用了基于漢字成詞能力的 HMM 模型,使用了 Viterbi 算法
機(jī)器學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)模型基礎(chǔ):
機(jī)器學(xué)習(xí)基本概念:
必要元素:
- 1.數(shù)據(jù)
- 2.轉(zhuǎn)換數(shù)據(jù)的模型
- 3.衡量模型好壞的損失函數(shù)
- 4.調(diào)整模型權(quán)重以便最小化損失函數(shù)的算法
機(jī)器學(xué)習(xí)分類:
- 1.監(jiān)督學(xué)習(xí)
- 2.無監(jiān)督學(xué)習(xí):
區(qū)別:數(shù)據(jù)集是否有人工分類標(biāo)簽
神經(jīng)網(wǎng)絡(luò)模型基礎(chǔ)概念:
- 1.激活函數(shù):
- 2.損失函數(shù)(代價(jià)函數(shù)) :
-
3.反向傳播:
在這里插入圖片描述
激活函數(shù): 躍階函數(shù) 與 Sigmoid函數(shù)
神經(jīng)網(wǎng)絡(luò)發(fā)展史
神經(jīng)網(wǎng)絡(luò)類型
27種神經(jīng)網(wǎng)絡(luò)
泛化(generalization) : 機(jī)器學(xué)習(xí)模型學(xué)習(xí)到的概念在它處于學(xué)習(xí)的過程中時(shí)模型沒有遇見過的樣本時(shí)候的表現(xiàn), 好的機(jī)器學(xué)習(xí)模型的模板目標(biāo)是從問題領(lǐng)域內(nèi)的訓(xùn)練數(shù)據(jù)到任意的數(shù)據(jù)上泛化性能良好。 在機(jī)器學(xué)習(xí)領(lǐng)域中, 當(dāng)我們討論一個(gè)機(jī)器學(xué)習(xí)模型學(xué)習(xí)和泛化的好壞時(shí), 我們通常使用術(shù)語: 過擬合和欠擬合。
過擬合(over-fitted) : 過擬合指的是 referstoa 模型對于訓(xùn)練數(shù)據(jù)擬合程度過當(dāng)?shù)那闆r。當(dāng)某個(gè)模型過度的學(xué)習(xí)訓(xùn)練數(shù)據(jù)中的細(xì)節(jié)和噪音, 以至于模型在新的數(shù)據(jù)上表現(xiàn)很差, 我們稱過擬合發(fā)生了。 這意味著訓(xùn)練數(shù)據(jù)中的噪音或者隨機(jī)波動(dòng)也被當(dāng)做概念被模型學(xué)習(xí)了。 而問題就在于這些概念不適用于新的數(shù)據(jù), 從而導(dǎo)致模型泛化性能的變差。
欠擬合(under-fitted) : 欠擬合指的是模型在訓(xùn)練和預(yù)測時(shí)表現(xiàn)都不好的情況。 一個(gè)欠擬合的機(jī)器學(xué)習(xí)模型不是一個(gè)良好的模型并且由于在訓(xùn)練數(shù)據(jù)上表現(xiàn)不好這是顯然的。
關(guān)鍵字提?。?/h2>
常用算法:
- TF/IDF算法: (Term Frequency - Inverse Document Frequency)
- 基于統(tǒng)計(jì)學(xué)原理,統(tǒng)計(jì)詞頻數(shù)
- 表達(dá)式為:
為啥要取對數(shù)和相乘?答先輩在實(shí)驗(yàn)室得出來的結(jié)論,不接受反駁?。。。?!
-
TextRank(源于PageRank算法)
-
基本思想是:
- 連接數(shù)量,一個(gè)網(wǎng)頁被越多的其他網(wǎng)頁連接,說明這個(gè)網(wǎng)頁越重要
- 連接質(zhì)量,一個(gè)網(wǎng)頁被越高權(quán)值的網(wǎng)頁連接,說明這個(gè)網(wǎng)頁越重要
表達(dá)式為:
%20%3D%20(1-d)%20%2B%20d%20*%20%5Csum_%7Bj%7D%5Cleft(%5Cfrac%7B1%7D%7B%7COut(V_j%5Cin%20In(V_j))%7C%7D*WS(V_j)%5Cright))
-
LSA/LSI 算法:
- LSA 主要采用 SVD(奇異值分解) 【Latent Semanitc Analysis,潛在語義分析】
- LSI 主要采用 貝葉斯學(xué)派的方法對分布信息進(jìn)行擬合[I for index,潛在語以索引]
-
LDA算法:
- 根據(jù)此的共現(xiàn)信息的分析,擬合出詞-文檔-主題的分布,進(jìn)而將詞,文本都映射到一個(gè)予以上面
- 基于統(tǒng)計(jì)學(xué)原理,統(tǒng)計(jì)詞頻數(shù)
- 表達(dá)式為:
- 表達(dá)式為:
為啥要取對數(shù)和相乘?答先輩在實(shí)驗(yàn)室得出來的結(jié)論,不接受反駁?。。。?!
TextRank(源于PageRank算法)
-
基本思想是:
- 連接數(shù)量,一個(gè)網(wǎng)頁被越多的其他網(wǎng)頁連接,說明這個(gè)網(wǎng)頁越重要
- 連接質(zhì)量,一個(gè)網(wǎng)頁被越高權(quán)值的網(wǎng)頁連接,說明這個(gè)網(wǎng)頁越重要
表達(dá)式為:
LSA/LSI 算法:
- LSA 主要采用 SVD(奇異值分解) 【Latent Semanitc Analysis,潛在語義分析】
- LSI 主要采用 貝葉斯學(xué)派的方法對分布信息進(jìn)行擬合[I for index,潛在語以索引]
LDA算法:
- 根據(jù)此的共現(xiàn)信息的分析,擬合出詞-文檔-主題的分布,進(jìn)而將詞,文本都映射到一個(gè)予以上面
實(shí)驗(yàn)代碼:KeywordExtract.py
詞表示:
- one-hot表示法:
- 詞嵌入
// One-hot Representation 向量的維度是詞表的大小,比如有10w個(gè)詞,該向量的維度就是10w
v('足球') = [0 1 0 0 0 0 0 ......]
v('籃球') = [0 0 0 0 0 1 0 ......]
// Distributed Representation 向量的維度是某個(gè)具體的值如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就是把單詞轉(zhuǎn)換成向量。它本質(zhì)上是一種單詞聚類的方法,是實(shí)現(xiàn)單詞語義推測、句子情感分析等目的一種手段。
算法核心
word2vec = CBOW + Skip-Gram
CBOW (Continue bags of word)
CBOW(Continuous Bag-of-Words Model)是一種根據(jù)上下文的詞語預(yù)測當(dāng)前詞語的出現(xiàn)概率的模型,其圖示如上圖左。CBOW是已知上下文,估算當(dāng)前詞語的語言模型;
skip-Gram
而Skip-gram只是逆轉(zhuǎn)了CBOW的因果關(guān)系而已,即已知當(dāng)前詞語,預(yù)測上下文,其圖示如上圖右;
實(shí)驗(yàn)過程:
- 1.數(shù)據(jù)集 中文維基百科數(shù)據(jù)集
- 2.分詞,jieba
- 3.模型訓(xùn)練,gensim
code:w2v.py
//通過一系列復(fù)雜的運(yùn)算以后結(jié)果為:
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.itdecent.cn/p/f58c08ae44a6
- word2vec學(xué)習(xí)小記: http://www.itdecent.cn/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
- 激活函數(shù)解釋: https://blog.csdn.net/qrlhl/article/details/60883604
- 偏置項(xiàng):https://blog.csdn.net/xwd18280820053/article/details/70681750
- 正則化:https://blog.csdn.net/u012162613/article/details/44261657 7. 結(jié)巴分詞:https://www.cnblogs.com/zhbzz2007/p/6092313.html