《自然语言处理入门》笔记
目錄
第一章 新手上路
1.1自然語言與編程語言
1.1.1詞匯量
1.1.2結構化
1.1.3歧義性
1.1.4容錯性
1.1.5易變性
1.1.6簡略性
1.2自然語言處理的層次
1.2.1語音、圖像和文本(第一層)
1.2.2中文分詞、詞性標注和命名實體識別(第二層)
1.2.3信息抽取(第三層)
1.2.4文本分類和文本聚類(第三層)
1.2.5句法分析(第三層)
1.2.6語義分析和篇章分析(第四層)
1.2.7其他高級任務
1.3自然語言處理的流派
1.3.1基于規則的專家系統
1.3.2基于統計的學習方法
1.3.3歷史
1.3.4規則和統計
1.3.5傳統方法與深度學習
1.4機器學習
1.4.1什么是機器學習
1.4.2模型
1.4.3特征
1.4.4數據集
1.4.5監督學習
1.4.6無監督學習
1.4.7其他類型的機器學習算法
1.5語料庫
1.5.1中文分詞語料庫
1.5.2詞性標注語料庫
1.5.3命名實體識別語料庫
1.5.4句法分析語料庫
1.5.6語料庫建設
第2章 詞典分詞
2.1什么是詞
2.1.1詞的定義
2.1.2詞的性質——齊夫定律
2.3切分算法
2.3.1完全切分
2.3.2正向最長匹配
2.3.3逆向最長匹配
2.3.4雙向最長匹配
2.3.5速度評測
2.4字典樹
2.4.1什么是字典樹
2.9準確率評測
2.9.1準確率
2.9.2混淆矩陣與TP/FN/FP/TN
2.9.3精確率
2.9.4召回率
2.9.5 F1值
2.9.6中文分詞中的P、R、F1值
2.9.9 OOV Recall Rate與IV Recall Rate
第3章 二元語法與中文分詞
3.1語言模型
3.1.1什么是語言模型
3.1.2馬爾可夫鏈與二元語法
3.1.3 n元語法
3.1.4數據稀疏與平滑策略
3.2中文分詞語料庫
3.2.1 1998年《人民日報》語料庫PKU
3.2.2微軟亞洲研究院語料庫MSR
3.2.3繁體中文分詞語料庫
3.2.4語料庫統計
3.3訓練
3.3.2統計一元語法
3.3.3統計二元語法
3.4預測
3.4.2構建詞網
3.4.3節點間的距離計算
3.4.4詞圖上的維特比算法
3.5評測
3.5.1標準化評測
3.5.2誤差分析
第4章 隱馬爾可夫模型與序列標注
4.1序列標注問題
4.1.1序列標注與中文分詞
4.1.2序列標注與詞性標注
4.1.3序列標注與命名實體識別
4.2隱馬爾可夫模型
4.2.1從馬爾可夫假設到隱馬爾可夫模型
4.2.2初始狀態概率向量
4.2.3狀態轉移概率矩陣
4.2.4發射概率矩陣
4.2.5隱馬爾可夫模型的三個基本用法
4.4隱馬爾可夫模型的訓練
4.4.1初始狀態概率向量的估計
4.4.2轉移概率矩陣的估計
4.4.3發射概率矩陣的估計
4.5隱馬爾可夫模型的預測
4.5.1概率計算的前向算法
4.5.2搜索狀態序列的維特比算法
4.6隱馬爾可夫模型應用于中文分詞
4.6.1標注集
4.6.2字符映射
4.6.3語料轉換
4.6.4訓練
4.6.5預測
4.6.6評測
4.6.7誤差分析
第5章 感知機分類與序列標注
5.1分類問題
5.1.1定義:
5.1.2應用
5.2線性模型和感知機算法
5.2.1特征向量與樣本空間
5.2.2決策邊界與分離超平面
5.2.3感知機算法
5.2.5投票感知機和平均感知機
5.4結構化預測
5.4.1定義
5.4.2結構化預測與學習的流程
5.5線性模型的結構化感知機算法
5.5.1結構化感知機算法
5.5.2結構化感知機與序列標注
5.5.3結構化感知機的維特比解碼算法
5.6基于結構化感知機的中文分詞
5.6.1特征提取
5.6.4創建感知機分詞器
5.6.5準確率與性能
5.6.7中文分詞特征工程
第6章 條件隨機場與序列標注
6.1機器學習的模型譜系
6.1.1生成式模型與判別式模型
6.1.2 有向與無向概率圖模型
6.2條件隨機場
6.2.1線性鏈條件隨機場
6.2.3條件隨機場與結構化感知機的對比
第7章 詞性標注
7.1詞性標注概述
7.1.1什么是詞性
7.1.2詞性的用處
7.1.3詞性標注
7.1.4詞性標注模型
7.2詞性標注語料庫與標注集
7.2.1《人民日報》語料庫與PKU標注集
7.2.2國家語委語料庫與863標注集
7.2.3《誅仙》語料庫與CTB標注集
7.3序列標注模型應用于詞性標注
7.3.1基于隱馬爾可夫模型的詞性標注
7.3.2基于感知機的詞性標注
7.3.3基于條件隨機場的詞性標注
7.3.4詞性標注評測
第8章 命名實體識別
8.1概述
8.1.1命名實體
8.1.2命名實體識別
8.3命名實體識別語料庫
8.3.1 1998年《人民日報》語料庫
8.3.2微軟命名實體識別語料庫(MSRA Named Entity Corpus,MSRA-NE)
8.5基于序列標注的命名實體識別
8.5.1特征提取
8.5.2基于隱馬爾可夫模型序列標注的命名實體識別
8.5.3基于感知機序列標注的命名實體識別
8.5.5命名實體識別標準化評測
第9章 信息抽取
9.1新詞提取
9.1.1概述
9.1.2基本原理
9.1.3信息熵
9.1.4互信息
9.1.5實現
9.2關鍵詞提取
9.2.1詞頻統計
9.2.2 TF-IDF
9.2.3TextRank
9.3短語提取
9.4關鍵句提取
9.4.1 BM25
9.4.2 TextRank
第10章 文本聚類
10.1概述
10.1.1聚類
10.1.2聚類的應用
10.1.3文本聚類
10.2文檔的特征提取
10.2.1詞袋模型
10.2.2詞袋的統計指標
10.3 k均值算法
10.5標準化評測
10.5.1 P、R和F1值
第12章 依存句法分析
12.2依存句法樹
12.2.1依存句法理論
12.2.2中文依存句法樹庫
12.2.3依存句法樹庫的可視化
12.3依存句法分析
12.4基于轉移的依存句法分析
12.4.1 Arc-Eager轉移系統
12.4.2特征提取
12.4.3 Static和Dynamic Oracle
12.5依存句法樹分析API
12.5.2標準化評測
12.6案例:基于依存句法樹的意見抽取
第一章 新手上路
自然語言處理(Natural Language Processing,NLP)研究的是如何通過機器學習等技術讓計算機學會處理人類語言,乃至實現終極目標——理解人類語言或人工智能
1.1自然語言與編程語言
1.1.1詞匯量
自然語言中的詞匯量比編程語言中的關鍵詞豐富
1.1.2結構化
自然語言是非結構化的,而編程語言是結構化的。所謂結構化,指的是信息具有明確的結構關系
1.1.3歧義性
自然語言含有大量歧義,但在編程語言中,則不存在歧義性
1.1.4容錯性
自然語言哪怕錯得再離譜,人們還是可以猜出它大概的意思。而在編程語言中,必須保證拼寫絕對正確、語法絕對規范
1.1.5易變性
編程語言的變化要緩慢溫和得多,而自然語言則相對迅速嘈雜一些
1.1.6簡略性
自然語言往往簡潔、干練。
1.2自然語言處理的層次
1.2.1語音、圖像和文本(第一層)
自然語言處理的輸入源一共有3個,即語音、圖像和文本
1.2.2中文分詞、詞性標注和命名實體識別(第二層)
統稱詞法分析
1、中文分詞:將文本分隔為有意義的詞語
2、詞性標注:確定每個詞語的類別和淺層的歧義消除
3、命名實體識別:識別出一些較長的專有名詞
1.2.3信息抽取(第三層)
詞法分析之后,根據這些單詞和標簽,抽取出一部分有用的信息
1.2.4文本分類和文本聚類(第三層)
在詞法分析之后進行
1、文本分類:把許多文檔分門別類地整理一下
2、文本聚類:把相似地文本歸檔到一起,或者排除重復的文檔,而不關心具體類別
1.2.5句法分析(第三層)
詞性分析之后,再獲取句子的主謂賓結構等
1.2.6語義分析和篇章分析(第四層)
句法分析之后,進行詞義消歧、語義角色標注和語義依存分析
1.2.7其他高級任務
綜合性任務
1.3自然語言處理的流派
1.3.1基于規則的專家系統
1、規則,指的是由專家手工制定的確定性流程。
2、規則系統比較成功的案例:波特詞干算法(Porter stemming algorithm)
3、規則系統顯得僵硬、死板和不穩定
1.3.2基于統計的學習方法
1、統計:在語料庫上進行的統計
2、語料庫:人工標注的結構化文本
3、以舉例子的方式讓機器自動學習這些規律。然后機器將這些規律應用到新的、未知的例子上去
1.3.3歷史
基礎研究→規則系統→統計方法→深度學習
1.3.4規則和統計
語言學知識的作用有兩方面:
1、幫助我們設計更簡潔、高效的特征模板
2、在語料庫建設中發揮作用
實際運行的系統在預處理和后處理的部分依然會用到一些手寫規則
1.3.5傳統方法與深度學習
深度學習在自然語言處理領域中的基礎任務上發力并不大。另一方面,深度學習涉及大量矩陣運算,需要特殊計算硬件的加速,因此性價比不高
1.4機器學習
1.4.1什么是機器學習
機器學習就是讓機器學會算法的算法。稱被學習的算法為模型
1.4.2模型
模型是對現實問題的數學抽象,由一個假設函數以及一系列參數構成
1.4.3特征
1、特征:事物的特點轉化的數值
2、特征模板:自動提取特征的模板
3、特征工程:挑選特征和設計特征模板
1.4.4數據集
1、樣本:例子
2、數據集:例子組成的習題集,在自然語言處理領域稱為語料庫
1.4.5監督學習
附帶標準答案,讓機器先做一遍題,然后與標準答案作比較,最后根據誤差糾正模型的錯誤。每一遍學習稱作一次迭代。迭代學習的過程稱為訓練。機器得出結論的過程稱為預測
1.4.6無監督學習
只給機器學習,卻不告訴其參考答案。其中不含標準答案的習題集被稱為無標注(unlabeled)的數據集。無監督學習一般用于聚類和降維
降維:將樣本點從高維空間變換到低維空間的過程。如果樣本具有n個特征,則樣本對應著n+1維空間中的一個點,多出來的維度是給假設函數的因變量用的。如果我們想要讓這些樣本點可視化,則必須將其降維到二維或者三維。
有一些降維算法的中心思想是,降維后盡量不損失信息,或者說讓樣本在低維空間中每個維度上的方差都盡量大(其實就是考慮剔除無用或者影響不大的特征)
1.4.7其他類型的機器學習算法
1、半監督學習:如果我們訓練多個模型,然后對同一個實例執行預測,會得到多個結果。如果這些結果多數一致,則可以將該實例和結果放到一起作為新的訓練樣本,用來擴充訓練集
2、強化學習:一邊預測,一邊根據環境的反饋規劃下次決策
1.5語料庫
1.5.1中文分詞語料庫
由人工正確切分后的句子集合
1.5.2詞性標注語料庫
切分并為每個詞語指定一個詞性的語料
1.5.3命名實體識別語料庫
人工標注了文本內部制作者關心的實體名詞以及實體類別
1.5.4句法分析語料庫
漢語中常用的句法分析語料庫有CTB(Chinese Treebank,中文樹庫)。每個句子都經過了分詞、詞性標注和句法分析
1.5.6語料庫建設
語料庫建設:構建一份語料庫的過程,分為規范制定、人員培訓和人工標注三個階段
第2章 詞典分詞
中文分詞:將一段文本拆分為一系列單詞的過程,這些單詞順序拼接后等于原文
詞典分詞:最簡單、最常見的分詞算法。僅需一部詞典和一套查詞典的規則即可
2.1什么是詞
2.1.1詞的定義
在語言學中,詞語的定義是具有獨立意義的最小單位,然而該定義過于模糊
在基于詞典的中文分詞中,詞典中的字符串就是詞
2.1.2詞的性質——齊夫定律
一個單詞的詞頻與它的詞頻排名成反比
2.3切分算法
詞典確定后,句子可能含有很多詞典中的詞語。它們可能互相重疊,到底輸出哪一個由規則決定。這時需要制定一些規則查字典,常用的規則有正向最長匹配、逆向最長匹配和雙向最長匹配,它們都基于完全切分
2.3.1完全切分
完全切分:找出一段文本中的所有單詞。這并不是標準意義上的分詞
2.3.2正向最長匹配
最長匹配算法:在以某個下標為起點遞增查詞的過程中,優先輸出更長的單詞
正向最長匹配:該下標的掃描順序從前往后
2.3.3逆向最長匹配
與正向最長匹配掃描的方向相反
2.3.4雙向最長匹配
1、同時執行正向和逆向最長匹配,若兩者的詞數不同,則返回詞數更少的那一個
2、否則,返回兩者中單字更少的那一個。當單字數也相同時,優先返回逆向最長匹配的結果
啟發式算法:漢語中單字詞的數量遠遠小于非單字詞。因此,算法應當盡量減少結果中的單字,保留更多的完整詞語
2.3.5速度評測
詞典分詞的消歧效果不好,但其速度快
(1)同等條件下,python的運行速度比java慢,效率只有java的一半不到
(2)正向匹配和逆向匹配的速度差不多,是雙向的兩倍。這在意料之中,因為雙向匹配做了兩倍的工作
(3)java實現的正向匹配比逆向匹配快,可能是內存回收的原因
2.4字典樹
2.4.1什么是字典樹
字符串集合常用字典樹(trie樹、前綴樹)存儲,這是一種字符串上的樹形數據結構。
字典樹中每條邊都對應一個字,從根節點往下的路徑構成一個個字符串。字典樹并不直接在節點上存儲字符串,而是將詞語視作根節點到某節點之間的一條路徑,并在終點節點上做個標記“該節點對應詞語的結尾”。
字符串就是一條路徑,要查詢一個單詞,只需順著這條路徑從根節點往下走。如果能走到特殊標記的節點,則說明該字符串在集合中,否則說明不存在。
2.9準確率評測
2.9.1準確率
準確率(accuracy)是用來衡量一個系統的準確程度(accurate)的值,可以理解為一系列評測指標
在中文分詞任務中,一般使用在標準數據集上詞語級別的精確率、召回率與F1值來衡量分詞器的準確程度
2.9.2混淆矩陣與TP/FN/FP/TN
“縱坐標”(行)為預測結果,“橫坐標“(列)為標準答案”
(1)TP(true positive,真陽):預測是P,答案果然是真的P
(2)FP(false positive,假陽):預測是P,答案是N,因此的假的P
(3)TN(ture negative,真陰):預測是N,答案果然是N
(4)FN(false negative,假陰):預測是N,答案是P,因此是假的N
這種圖表在機器學習中也稱為混淆矩陣(confusion matrix),用來衡量分類結果的混淆程度。其中樣本全集等于TP、FP、FN、TN的并集。且TP、FP、FN、TN沒有交集
2.9.3精確率
精確率(precision,簡稱P值)指的是預測結果中正類數量占全部結果的比率,即P=TP/(TP+FP)
2.9.4召回率
召回率(recall,簡稱R值)指的是正類樣本被找出來的比率,即R=TP/(TP+FN)
2.9.5 F1值
精確率和召回率的調和平均F1值:F1=(2*P*R)/(P+R)。這樣P和R必須同時較高,才能得到較高的F1值
2.9.6中文分詞中的P、R、F1值
在中文分詞中,標準答案和分詞結果的單詞數不一定相等。而且混淆矩陣針對的是分類問題,而中文分詞卻是一個分塊(chunking)問題。因此我們需要將分塊問題轉化為分類問題
將標準答案的所有區間構成一個集合A,作為正類。集合A之外的所有區間構成另一個集合(A的補集),作為負類。記分詞結果所有單詞區間構成集合B,則有:
TP并FN等于A(即A為標準答案);TP并FP等于B(即B為預測結果);TP等于A和B的交集;則P值和R值即可計算,注意加上絕對值
2.9.9 OOV Recall Rate與IV Recall Rate
OOV:“未登錄詞“(Out Of Vocabulary),或者俗稱的”新詞“,也即詞典未收錄的詞匯
IV:“登錄詞“(In Vocabulary), IV Recall Rate指的是詞典中的詞匯被正確召回的概率
第3章 二元語法與中文分詞
3.1語言模型
3.1.1什么是語言模型
1、語言模型(Language Model,LM):對語言現象的數學抽象。給定一個句子w,語言模型就能計算出句子的出現概率p(w)
2、語料庫:一個小型的樣本空間
3、數據稀疏:實際遇到的句子大部分都在語料庫之外——意味著它們的概率都被當作0
4、語言模型模擬人說話的順序:給定已經說出口的詞語序列,預測下一個詞語的后驗概率,一個單詞一個單詞地乘上后驗概率,我們就能估計任意一句話的概率
7、然而隨著句子長度的增大,語言模型會遇到兩個問題:
(1)數據稀疏:語料庫中極有可能統計不到長句子的頻次,導致后驗概率為零
(2)計算代價大
3.1.2馬爾可夫鏈與二元語法
馬爾可夫鏈:給定時間線上有一串事件順序發生,假設每個事件的發生概率只取決于前一個事件,那么這串事件構成的因果鏈被稱作馬爾可夫鏈(Markov Chain)
由于語料庫中二元接續的重復程度要高于整個句子的重要程度,所以緩解了數據稀疏的問題。另外,二元接續的總數量遠遠小于句子的數量,長度也更短,存儲和查詢也得到了解決
3.1.3 n元語法
每個單詞的概率僅取決于該單詞之前的n-1個單詞
當n=1時的n元語法稱為一元語法(unigram);當n=3時的n元語法稱為三元語法(trigram);n>=4時數據稀疏和計算代價又變得顯著起來;深度學習帶了一種遞歸神經網絡語言模型(RNN Language Model),理論上可以記憶無限個單詞,可看作“無窮元語法”
3.1.4數據稀疏與平滑策略
對于n元語法模型,n越大,數據稀疏問題越嚴峻。解決方案是用低階n元語法去平滑高階n元語法
3.2中文分詞語料庫
3.2.1 1998年《人民日報》語料庫PKU
(1)前后標注不一致
(2)切分顆粒度太小
(3)存在明顯標注錯誤
(4)所有姓名都被拆分為姓氏和名字,不符合習慣
無論何種算法,PKU語料庫上的準確率普遍低于其他語料庫
3.2.2微軟亞洲研究院語料庫MSR
(1)標注一致性上MSR要優于PKU
(2)切分顆粒度上MSR要大于PKU
(3)MSR中姓名作為一個整體,更符合習慣
(4)MSR量級是PKU的兩倍
(5)但PKU比MSR更流行
3.2.3繁體中文分詞語料庫
SIGHAN05中剩下的兩份都是繁體中文語料庫,分別是香港大學提供的CITYU和臺灣中央研究院提供的AS。短平快的解決方案則是將繁體字符轉換為簡體字符,追求精致的話則需要本地語料庫
3.2.4語料庫統計
統計語料庫字數、詞語種數和總詞頻等。
1、詞語種數:語料庫中有多少個不重復的詞語,用來衡量語料庫用語的豐富程度
2、總詞頻:所有詞語的詞頻之和,用來衡量語料庫用語的規模大小
(1)語料庫規模:AS>MSR>CITYU>PKU
(2)從OOV的角度講,語料庫的難度:CITYU>PKU>AS>MSR
(3)由齊夫定律得出,長詞都是低頻詞,對平均詞長的影響很小
(4)漢語常用詞匯約在10萬這個量級
3.3訓練
訓練(train)指的是,給定樣本集(dataset,訓練所用的樣本集稱為訓練集)估計模型參數的過程。訓練也稱為編碼(encoding),因為學習算法將知識以參數的形式編碼(encode)到模型中
3.3.2統計一元語法
一元語法其實就是單詞
3.3.3統計二元語法
3.4預測
預測(predict)指的是利用模型對樣本(句子)進行推斷的過程,在中文分詞任務中也就是利用模型推斷分詞序列。有時候預測也稱為解碼(decode)
3.4.2構建詞網
1、詞網:句子中所有一元語法構成的網狀結構。
2、詞網必須保證從起點出發的所有路徑都會連通到終點。
3、從起點到終點的每條路徑代表句子的一種分詞方式,二元語法語言模型的解碼任務就是找出其中最合理的那條路徑
3.4.3節點間的距離計算
3.4.4詞圖上的維特比算法
由馬爾可夫鏈構成的網狀圖,該特例上的最短路徑算法稱為維特比算法(Viterbi Algorithm)。維特比算法分為前向(forward)和后向(backward)兩個步驟。
(1)前向:由起點出發從前往后遍歷節點,更新從起點到該節點的最小花費以及前驅指針
(2)后向:由終點出發從后往前回溯前驅指針,取得最短路徑
3.5評測
3.5.1標準化評測
評測分為訓練、預測、計算準確率3步
3.5.2誤差分析
二元語法消歧能力尚可,OOV召回能力太低。這是因為詞網中幾乎所有的中文詞語都來自于訓練集詞典,自然無法召回新詞
第4章 隱馬爾可夫模型與序列標注
由字構詞是“序列標注”模型的一種應用。在所有序列標注模型中,隱馬爾可夫模型是最基礎的一種
4.1序列標注問題
4.1.1序列標注與中文分詞
中文分詞標注集并非只有一種。其中最流行的標注集為{B,M,E,S}
其中B:詞首(Begin);M:詞中(Middle);E:詞尾(End);S:單字(Single)
4.1.2序列標注與詞性標注
X是單詞序列,y是相應的詞性序列
詞性標注集也不是唯一的,其中最著名的是863標注集和北大標注集,前者的詞性數量要少一些,顆粒度要大一些
4.1.3序列標注與命名實體識別
命名實體:現實存在的實體,是OOV的主要組成部分
命名實體識別可以復用BMES標注集,并沿用中文分詞的邏輯,只不過標注的對象由字符變為單詞,同時還需要確定實體所屬的類別
4.2隱馬爾可夫模型
隱馬爾可夫模型(Hidden Markov Model,HMM):描述兩個時序序列聯合分布p(x,y)的概率模型。X序列外界可見,稱為觀測序列(obserbation sequence);y序列外界不可見,稱為狀態序列(state sequence)
隱馬爾可夫模型之所以“隱”,是因為狀態序列不可見,是待求得因變量。因此也稱狀態為隱狀態(hidden state),稱觀測為顯狀態(visible state)。隱馬爾可夫模型之所以稱為“馬爾可夫模型”,是因為它滿足馬爾可夫假設
4.2.1從馬爾可夫假設到隱馬爾可夫模型
4.2.2初始狀態概率向量
4.2.3狀態轉移概率矩陣
4.2.4發射概率矩陣
4.2.5隱馬爾可夫模型的三個基本用法
(1)樣本生成問題
(2)模型訓練問題
(3)序列預測問題
4.4隱馬爾可夫模型的訓練
4.4.1初始狀態概率向量的估計
4.4.2轉移概率矩陣的估計
4.4.3發射概率矩陣的估計
4.5隱馬爾可夫模型的預測
求解序列標注問題:給定觀測序列,求解最可能的狀態序列及其概率
4.5.1概率計算的前向算法
4.5.2搜索狀態序列的維特比算法
由聯合概率可知,尋找最大概率所對應的狀態序列是一個搜索問題。則將每個狀態作為有向圖中的一個節點,節點間的距離由轉移概率決定,節點本身的花費由發射概率決定。那么所有備選狀態構成一幅有向無環圖,待求的概率最大的狀態序列就說圖中最長的路徑,此時的搜索算法稱為維特比算法
維特比算法步驟:
(1)初始化,t=1時初始最優路徑的備選由N個狀態組成,它們的前驅為空
(2)遞推,t>=2時每條備選路徑吃入一個新狀態,長度增加1個單位,根據轉移概率和發射概率計算花費。找出新的局部最優路徑,更新兩個數組
(3)終止,找出最終時刻備選狀態數組的最大概率,以及相應的結尾狀態下標
(4)回溯,根據前驅數組回溯到前驅狀態,取得最優路徑下標
4.6隱馬爾可夫模型應用于中文分詞
4.6.1標注集
標注集(tagset):也稱為詞表(vocabulary),將標注集{B,M,E,S}映射到連續的整型id,將字符映射為另一套連續id
4.6.2字符映射
字符作為觀測變量,必須是整型才可被隱馬爾可夫模型接受
4.6.3語料轉換
必須轉換為(x,y)二元組才能訓練隱馬爾可夫模型
4.6.4訓練
4.6.5預測
訓練完隱馬爾可夫模型后,模型的預測結果是{B,M,E,S}標簽序列。分詞器必須根據標簽序列的指示,將字符序列轉換為單詞序列。由于任何模型的輸出都不可能完全合法(即存在分詞錯誤情況),所以一個健壯的分詞器必須兼容這些非法的序列
4.6.6評測
4.6.7誤差分析
隱馬爾可夫模型的OOV召回率提升了,但IV卻記不住,存在欠擬合現象,可以考慮提升模型復雜度。但單靠提升轉移概率矩陣的復雜度并不能提高模型的擬合能力
第5章 感知機分類與序列標注
隱馬爾可夫模型假設人們說的話僅僅取決于一個隱藏的{B,M,E,S}序列,能捕捉到的特征僅限于兩種:前一個標簽和當前標簽
線性模型(linear model):用一條線性的直線或平面將數據一分為二。它由兩部分構成:一系列用來提取特征的特征函數,以及相應的權重向量
5.1分類問題
5.1.1定義:
分類(classification)指的是預測樣本所屬類別的一類問題。分類問題的目標就說給定輸入樣本x,將其分配給k種類別中的一種,其中k=1, … , k。如果k=2,則稱為二分類(binary classification),否則稱為多分類(multiclass classification)
二進制可以解決任意類別數的多分類問題,具體方法:
(1)one-vs-one:進行多輪二分類,每次區分兩種類別
(2)one-vs-rest(one-vs-all):進行多輪二分類,每次區分當前類別和非當前類別。計算成本低,但當正負樣本數量不均勻時會降低分類準確率
5.1.2應用
在NLP領域,絕大部分任務可以用分類解決
5.2線性模型和感知機算法
5.2.1特征向量與樣本空間
特征向量:描述樣本特征的向量
特征提取:構造特征向量的過程
5.2.2決策邊界與分離超平面
線性可分:數據集中所有樣本都可以被分離超平面分割。相應的存在線性不可分的數據集,此時的決策邊界為曲線(曲面)
對于線性不可分的數據,依然可以利用線性模型分類。要么定義更多特征,要么使用支持向量機(SVM)中的基函數(basis function)將數據映射到高維空間。兩種方法都增加了樣本空間的維度,一般而言,維度越高,數據越容易呈現線性可分性
5.2.3感知機算法
感知機算法(Perceptron Algorithm)是一種迭代式算法:在訓練集上運行多個迭代,每次讀入一個樣本,執行預測,將預測結果與正確答案進行對比,計算誤差,根據誤差更新模型參數
5.2.5投票感知機和平均感知機
產生原因:感知機每次迭代都會產生一個新模型,不知道哪個更好
投票感知機:在感知機算法的基礎上,每次迭代的模型都保留,準確率也保留。預測時每個模型都給出自己的結果,乘以它的準確率加權平均值作為最終結果。因為每正確預測一個樣本,該模型就得一票,票數最多的模型對結果的影響最大。因為要存儲多個模型及加權,計算開銷較大
平均感知機:取多個模型權重的平均。其優勢在于預測時不再需要保存多個模型,而是在訓練結束后將所有模型平均,只保留平均后的模型。在實現上,也不保留多個模型,而是記錄模型中每個參數在所有迭代時刻的總和,將總和除以迭代次數,就能得到該參數的平均值。
5.4結構化預測
自然語言處理問題大致可分為兩類:分類問題、結構化預測問題(例如序列標注)
對感知機作拓展,分類器也能支持結構化預測
5.4.1定義
1、結構化:信息的層次結構特點
2、結構化預測(structured prediction):預測對象結構的一類監督學習問題
3、結構化學習(structured learning):相應的模型訓練過程
分類問題的預測結果是一個決策邊界;回歸問題的預測結果是一個實際標量;結構化預測的結果是一個完整的結構。因此,結構化預測難度更高
5.4.2結構化預測與學習的流程
5.5線性模型的結構化感知機算法
5.5.1結構化感知機算法
5.5.2結構化感知機與序列標注
5.5.3結構化感知機的維特比解碼算法
在解空間中搜索分數最高的結構。具體到序列標注中,結構特化為序列。對序列的搜索算法,就說維特比算法
5.6基于結構化感知機的中文分詞
感知機序列標注框架的基礎是線性模型,根據訓練算法派生了兩個子類:結構化感知機和平均感知機
5.6.1特征提取
無論是訓練還是預測,第一道工序都是特征提取
5.6.4創建感知機分詞器
5.6.5準確率與性能
任何NLP任務的最后一步都是標準化評測。任何準確率都與語料庫規模、算法模型相關
結構化感知機準確率稍高于平均感知機,并且訓練速度更快,但結構化感知機的成績波動很大,不如平均感知機穩定
5.6.7中文分詞特征工程
如果反復在線學習依然無法正確分詞,可以重載感知機分詞器的特征提取部分,進行特征工程。
學院派的分詞器使用的特征:疊字、四元詞語、詞典特征和偏旁部首
第6章 條件隨機場與序列標注
條件隨機場與感知機同屬結構化學習大家族,但性能比感知機還要強大
6.1機器學習的模型譜系
6.1.1生成式模型與判別式模型
6.1.2 有向與無向概率圖模型
概率圖模型(Probabilistic Graphical Model,PGM)是用來表示與推斷多維隨機變量聯合分布p(x,y)的強大框架,它利用節點V來表示隨機變量,用邊E連接有關聯的隨機變量,將多維隨機變量分布表示為圖G=(V,E)。這樣可以使整個圖分解為子圖再進行分析。子圖中的隨機變量更少,建模更加簡單。而有向圖模型和無向圖模型就是分解圖的方法
有向圖模型(Directed Graphical Model,DGM)按事件的先后因果順序將節點連接為有向圖。如果事件A導致事件B,則用箭頭連接兩個事件A→B
無向圖模型則不探究每個事件的因果關系,不涉及條件概率分解。無向圖模型的邊沒有方向,僅僅代表兩個事件有關聯。
6.2條件隨機場
條件隨機場(conditional Random Field,CRF)是一種給定輸入隨機變量x,求解條件概率p(y | x)的概率無向圖模型。用于序列標注時,特例化為線性鏈(linear-chain)條件隨機場。此時,輸入輸出隨機變量為等長的兩個序列
6.2.1線性鏈條件隨機場
(1)條件隨機場和結構化感知機的特征函數完全一致
(2)結構化感知機對某預測打分越高,條件隨機場給予該預測的概率也越大
(3)條件隨機場和結構化感知機的預測算法一致,都是維特比算法
6.2.3條件隨機場與結構化感知機的對比
相同點:特征函數多;權重向量相同;打分函數相同;預測算法相同;同屬結構化學習
不同點:訓練算法不同,這是兩者準確率差異的唯一原因
感知機算法屬于在線學習,每次參數更新只使用一個訓練實例。而沒有考慮整個數據集,所以在線學習會顧此失彼。
條件隨機場對數似然函數及其梯度則定義在整個數據集之上,每次參數更新都是全盤考慮
第7章 詞性標注
7.1詞性標注概述
7.1.1什么是詞性
詞性(Part-Of-Speech,POS):單詞的語法分類,也稱為詞類。提供詞語的抽象表示
詞性標注集:所有詞性的集合
7.1.2詞性的用處
可以通過OOV的詞性猜測用法,而不至于將所有OOV混為一談(當成同一特殊標記UNK)
7.1.3詞性標注
詞性標注:為句子中每個單詞預測一個詞性標簽
7.1.4詞性標注模型
1、序列標注模型可用來做詞性標注
2、詞性標注既可以看作中文分詞的后續任務,也可以與中文分詞集成為同一任務
3、聯合模型(joint model):同時進行多個任務的模型
由于綜合了多種監督信號,聯合模型在幾乎所有問題上都優于獨立模型,但實際應用中并不理想。原因:中文分詞語料庫遠遠多于詞性標注語料庫;聯合模型特征數量一般是獨立模型的數十倍
7.2詞性標注語料庫與標注集
7.2.1《人民日報》語料庫與PKU標注集
7.2.2國家語委語料庫與863標注集
7.2.3《誅仙》語料庫與CTB標注集
7.3序列標注模型應用于詞性標注
7.3.1基于隱馬爾可夫模型的詞性標注
隱馬爾可夫模型可以應對詞性標注中的兼類詞問題,但無法應對OOV詞性標注問題
7.3.2基于感知機的詞性標注
具備識別OOV詞性的能力
7.3.3基于條件隨機場的詞性標注
7.3.4詞性標注評測
第8章 命名實體識別
8.1概述
8.1.1命名實體
命名實體(named entity):文本中描述實體的詞匯。
特點:數量無窮;構詞靈活;類別模糊
8.1.2命名實體識別
命名實體識別(Named Entity Recognition,NER):識別出句子中命名實體的邊界與類別。是一個統計為主,規則為輔的任務
8.3命名實體識別語料庫
8.3.1 1998年《人民日報》語料庫
因為1998年《人民日報》語料庫顆粒度小,適合作為命名實體識別語料庫。
并非所有復合詞都是命名實體
8.3.2微軟命名實體識別語料庫(MSRA Named Entity Corpus,MSRA-NE)
8.5基于序列標注的命名實體識別
命名實體識別可以看作分詞與詞性標注任務的集合
8.5.1特征提取
特征模板確定后,就可以訓練序列標注模型了
8.5.2基于隱馬爾可夫模型序列標注的命名實體識別
隱馬爾可夫模型無法利用詞性特征
8.5.3基于感知機序列標注的命名實體識別
8.5.4基于條件隨機場序列標注的命名實體識別
8.5.5命名實體識別標準化評測
準確率與評測策略、特征模板、語料庫規模相關
第9章 信息抽取
9.1新詞提取
9.1.1概述
新詞:OOV
9.1.2基本原理
新詞提取:首先提取出大量文本(生語料)中的詞語,無論新舊。然后用詞典過濾掉已有的詞語,于是得到新詞
9.1.3信息熵
信息熵(entropy):某條消息所含的信息量。反映的是聽說某個消息后該事件的不確定性的減少量
對于離散型隨機變量X,信息熵的公式為:(對數函數的底為2是單位為比特)
具體到新詞提取中,給定字符串S作為詞語備選,X定義為該字符串左邊可能出現的字符(簡稱左鄰字),則稱H(x)為S的左信息熵,類似的,定義右信息熵H(Y)
左右信息熵越大,說明字符串可能的搭配就越豐富,該字符串就是一個詞的可能性就越大。但還要考慮詞語內部片段的凝聚程度,這種凝聚程度由互信息衡量
9.1.4互信息
總詞頻并不影響互信息大小的排名
有了左右信息熵和互信息之后,將兩個指標低于一定閾值的片段過濾掉,剩下的片段按頻次降序排列,截取最高頻次的N個片段
9.1.5實現
9.2關鍵詞提取
提取文章中重要的單詞,而不限于詞語的新鮮程度
1、無監督關鍵詞提取算法:詞頻、TF-IDF和TextRank
2、單文檔算法:詞頻、TextRank
3、多文檔算法:TF-IDF。利用了其他文檔中的信息輔助決定當前文檔的關鍵詞,同時容易受到噪聲干擾
9.2.1詞頻統計
文章中反復出現的詞語并不一定是關鍵詞,在進行詞頻統計之前要進行停用詞過濾
詞頻統計流程:分詞、停用詞過濾、按詞頻取前n個
9.2.2 TF-IDF
TF-IDF適用于大型語料庫中,當我們沒有大型的語料庫或者存儲IDF的內存,同時又想改善詞頻統計的效果,則可以使用TextRank算法
9.2.3TextRank
TextRank是PageRank在文本上的應用
9.3短語提取
利用互信息和左右信息熵,可以將新詞提取算法拓展到短語提取。將新詞提取中的字符替換為單詞,字符串替換為單詞列表
(即新詞提取考慮的是提取單詞,而短語提取考慮的是提取單詞組合)
9.4關鍵句提取
9.4.1 BM25
BM25是TF-IDF的一種改進變種。TF-IDF衡量的是單個詞語在文檔中的重要程度。而BM25衡量的是多個詞語與文檔的關聯程度
9.4.2 TextRank
第10章 文本聚類
10.1概述
10.1.1聚類
聚類(cluster analysis):將給定對象的集合劃分為不同子集的過程。目標是使得每個子集內部的元素盡量相似,不同子集間的元素盡量不相似。這些子集被稱為簇(cluster),一般沒有交集
1、硬聚類(hard clustering):每個元素被確定地歸入一個簇(使用更頻繁)
2、軟聚類(soft clustering):每個元素與每個簇都存在一定地從屬程度(隸屬度),只不過該程度有大有小
硬聚類中從屬關系是離散地,非常強硬。而軟聚類中的從屬關系則用一個連續值來衡量,比較靈活
3、劃分(partitional)聚類:聚類結果是一系列不相交的子集
4、層次(hierarchical)聚類:聚類結果是一棵樹,葉子節點是元素,父節點是簇
10.1.2聚類的應用
聚類通常用于數據的預處理,或歸檔相似的數據
數據量很大、標注成本過高時,聚類常常是唯一可行的方案
10.1.3文本聚類
1、文本聚類或文檔聚類(text clustering或document clustering):對文檔進行聚類分析
2、基本流程:特征提取、向量聚類
3、聚類的對象:抽象的向量(一維數據點)。
4、特征提取:將文檔表示為向量
10.2文檔的特征提取
10.2.1詞袋模型
詞袋(bag-of-words):將文檔想象為一個裝有詞語的袋子,通過袋子中每種詞語的計數等統計量將文檔表示為向量
由于詞袋模型不考慮詞序,損失了詞序中蘊含的語義。但在實際工程中,詞袋模型依然是一個和很難打敗的基線模型
10.2.2詞袋的統計指標
詞袋模型除了選取詞頻作為統計指標外,常見的統計量還包括:
(1)布爾詞頻:詞頻非零則取值為1,否則為0
(2)TF-IDF
(3)詞向量:如果詞語本身也是某種向量的話,則將所有詞語的詞向量求和作為文檔向量
詞頻向量適合主題較多的數據集;布爾詞頻適用于長度較短的數據集;TF-IDF適用于主題較少的數據集;詞向量適用于處理OOV問題嚴重的數據集
神經網絡模型也能無監督地生成文檔向量,比如自動編碼器和受限玻爾茲曼機等。且得到地文檔向量一般優于詞袋向量,但代價是計算開銷大
10.3 k均值算法
10.5標準化評測
10.5.1 P、R和F1值
J:簇;i:類別;:簇j中類別i文檔的數目;:簇j中的文檔總數;:類別i中的文檔總數
第12章 依存句法分析
語法分析(syntactic parsing):發生在詞法分析之后,目標是分析句子的語法結構并將其表示為容易理解的結構(通常是樹形結構)
12.2依存句法樹
依存句法樹關注的是句子中詞語的語法聯系,并將其約束為樹形結構
12.2.1依存句法理論
1、從屬詞(dependent):如果一個詞修飾另一個詞,稱修飾詞為從屬詞
2、支配詞(head):如果一個詞修飾另一個詞,稱被修飾詞為支配詞
3、依存關系:(dependency relation):從屬詞和支配詞之間的語法關系
4、依存句法樹(dependency parse tree):將一個句子中所有詞語的依存關系以有向邊的形式表示出來,就會得到一棵樹
5、依存句法樹的特點:
(1)根節點唯一性:有且只有一個詞語(ROOT,虛擬根節點,簡稱虛根)不依存于其他詞語
(2)連通:除虛根外的所有單詞必須依存于其他單詞
(3)無環:每個單詞不能依存多個單詞
(4)投射性(projective):如果A依存于B,那么位置處于A和B之間的單詞C只能依存于A、B或AB之間的單詞
12.2.2中文依存句法樹庫
依存句法樹庫:由大量人工標注的依存句法樹組成的語料庫。最有名的是UD(Universal Dependencies)。另一份著名的語料庫為CTB,不過需要額外利用一些工具將短語結構樹轉換為依存句法樹
12.2.3依存句法樹庫的可視化
1、南京大學湯光超的Dependency Viewer,適用于windows用戶
2、基于web的跨平臺工具:brat標注工具
12.3依存句法分析
依存句法樹(dependency parsing):輸入詞語和詞性,輸出一棵依存句法樹
12.4基于轉移的依存句法分析
12.4.1 Arc-Eager轉移系統
轉移系統(transition system):負責制定所有可執行的動作以及相應的條件
12.4.2特征提取
12.4.3 Static和Dynamic Oracle
對基于轉移的依存句法分析器而言,它學習和預測的對象是一系列轉移動作。然而依存句法樹庫是一棵樹,并不是現成的轉移動作序列。這時候就需要一個算法將語料庫中的依存句法樹轉換為正確的(gold)轉移動作序列,以供機器學習模塊學習。這種正確的轉移動作序列稱為規范(oracle),其質量好壞直接影響到機器學習模塊的學習效果
1、靜態規范(static oracle):人工編寫一些規則為每棵樹生成一個規范
2、動態規范(dynamic oracle):不顯式地輸出唯一規范,而是讓機器學習模型自由試錯,一旦無法拼裝出正確語法樹,則懲罰模型
至于如何判斷一個狀態c執行某個動作后是否抵達正確句法樹,只需根據該動作以及該狀態的棧與隊列進行判斷即可
實現了動態規劃的結構化感知機訓練算法的流程如下:
(1)讀入一個訓練樣本,提取特征。創建ArcEager的初始狀態,記做c
通過在訓練時故意讓模型試錯,可以提高模型的穩健性
雖然動態規劃使得模型能夠自由搜索一條可達正確句法樹的轉移路徑,然而每次轉移動作都是貪心地選取分數最高的備選動作,而沒有考慮到全局轉移動作構成序列的分數之和。
12.5依存句法樹分析API
12.5.2標準化評測
12.6案例:基于依存句法樹的意見抽取
即提取商品評論中的屬性和買家評價
參考文獻:《自然語言處理入門》 by 何晗(@hankcs)
總結
以上是生活随笔為你收集整理的《自然语言处理入门》笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 被动语态1
- 下一篇: 百度云网盘链接用aria2下载