1. 程式人生 > >【中文分詞】條件隨機場CRF

【中文分詞】條件隨機場CRF

之前介紹的MMEM存在著label bias問題,因此Lafferty et al. [1] 提出了CRF (Conditional Random Field). BTW:比較有意思的是,這篇文章的二作與三作同時也是MEMM的作者。

1. 前言

本節將遵從tutorial [2] 的論文結構,從概率模型(Probabilistic Models)與圖表示(Graphical Representation)兩個方面引出CRF。

概率模型

Naïve Bayes(NB)是分類問題中的生成模型(generative model),以聯合概率\(P(x,y)=P(x|y)P(y)\)建模,運用貝葉斯定理求解後驗概率\(P(y|x)\)

。NB假定輸入\(x\)的特徵向量\((x^{(1)},x^{(2)},\cdots,x^{(j)},\cdots, x^{(n)})\)條件獨立(conditional independence),即

\begin{equation}
P(x|y) P(y) = P(y) \prod _{j} P(x^{(j)}|y)
\label{eq:nb}
\end{equation}

HMM是用於對序列資料\(X\)做標註\(Y\)的生成模型,用馬爾可夫鏈(Markov chain)對聯合概率\(P(X,Y)\)建模:

\begin{equation}
P(X,Y) = \prod_t P(y_t|y_{t-1}) P(x_t|y_t)
\label{eq:hmm}
\end{equation}

然後,通過Viterbi演算法求解\(P(Y|X)\)的最大值。LR (Logistic Regression)模型是分類問題中的判別模型(discriminative model),直接用logistic函式建模條件概率\(P(y|x)\)。實際上,logistic函式是softmax的特殊形式(證明參看ufldl教程),並且LR等價於最大熵模型(這裡給出了一個簡要的證明),完全可以寫成最大熵的形式:

\begin{equation}
P_w(y|x) = \frac{exp \left( \sum_i w_i f_i(x,y) \right)}{Z_w(x)}
\label{eq:me}
\end{equation}

其中,\(Z_w(x)\)為歸一化因子,\(w\)為模型的引數,\(f_i(x,y)\)為特徵函式(feature function)——描述\((x,y)\)的某一事實。

CRF便是為了解決標註問題的判別模型,於是就有了下面這幅張圖(出自 [3]):

圖表示

概率模型可以用圖表示變數的相關(依賴)關係,所以概率模型常被稱為概率圖模型(probabilistic graphical model, PGM)。PGM對應的圖有兩種表示形式:independency graph, factor graph. independency graph直接描述了變數的條件獨立,而factor graph則是通過因子分解( factorization)的方式暗含變數的條件獨立。比如,NB與HMM所對應的兩種圖表示如下(圖出自[2]):

可以看出,NB與HMM所對應的independency graph為有向圖,圖\((V, E)\)所表示的聯合概率\(P(\overrightarrow{v})\)計算如下:

\[ P(\overrightarrow{v}) = \prod_k P(v_k|v_k^p) \]

其中,\(v_k\)為圖\((V, E)\)中一個頂點,其parent節點為\(v_k^p\)。根據上述公式,則上圖中NB模型的聯合概率:

\[ P(y,x_1, x_2, x_3) = P(y)P(x_1|y)P(x_2|y)P(x_3|y) \]

有別於NB模型,最大熵則是從全域性的角度來建模的,“保留儘可能多的不確定性,在沒有更多的資訊時,不擅自做假設”;特徵函式則可看作是人為賦給模型的資訊,表示特徵\(x\)\(y\)的某種相關性。有向圖無法表示這種相關性,則採用無向圖表示最大熵模型:

最大熵模型與馬爾可夫隨機場(Markov Random Field, MRF)所對應factor graph都滿足這樣的因子分解:

\begin{equation}
P(\overrightarrow{v}) = \frac{\prod_C \Psi_C(\overrightarrow{v_C})}{Z}
\label{eq:mrf}
\end{equation}

其中,\(C\)為圖的團(即連通子圖),\(\Psi_C\)為勢函式( potential function)。在最大熵模型中,勢函式便為\(exp(w_i f_i(x,y))\)的形式了。

2. CRF

前面提到過,CRF(更準確地說是Linear-chain CRF)是最大熵模型的sequence擴充套件、HMM的conditional求解。CRF假設標註序列\(Y\)在給定觀察序列\(X\)的條件下,\(Y\)構成的圖為一個MRF,即可表示成圖:

根據式子\eqref{eq:mrf},則可推匯出條件概率:

\[ P(Y|X) = \frac{\prod_j \Psi_j(\overrightarrow{x}, \overrightarrow{y})}{Z(\overrightarrow{x})} \]

同最大熵模型一樣,因子\(\Psi_j(\overrightarrow{x}, \overrightarrow{y})\)亦可以寫成特徵函式的exp形式:

\[ \Psi_j(\overrightarrow{x}, \overrightarrow{y}) = \exp \left( \sum_i \lambda_i f_i(y_{j-1}, y_j, \overrightarrow{x}) \right) \]

特徵函式之所以定義成\(f_i(y_{j-1}, y_j, \overrightarrow{x})\)而非$ f_i(y_j, \overrightarrow{x})$,是因為Linear-chain CRF對隨機場做了Markov假設。那麼,CRF建模的式子可改寫為

\[ \begin{aligned} P(Y|X) & = \frac{\exp \left( \sum_{i,j} \lambda_i f_i(y_{j-1}, y_j, \overrightarrow{x}) \right)}{Z(\overrightarrow{x})} \\ & = \frac{1}{Z(\overrightarrow{x})} \prod_j \exp \left( \sum_{i} \lambda_i f_i(y_{j-1}, y_j, \overrightarrow{x}) \right) \end{aligned} \]

MMEM也是用最大熵模型建模\(P(Y|X)\), 不同於CRF的是其採用有向圖模型,只考慮\(x_j\)\(y_j\)的影響,而沒有把\(x\)作為整體來考慮,導致的是本地歸一化:

\[ P(Y|X) = \prod_j \frac{\exp \left( \sum_{i} \lambda_i f_i(y_{j-1}, y_j, \overrightarrow{x}) \right)}{Z(y_{j-1},\overrightarrow{x})} \]

而CRF做的則是全域性的歸一化,避免了label bias的問題。

3. 開源實現

Genius是一個基於CRF的開源中文分詞工具,採用了Wapiti做訓練與序列標註。

import genius

text = "深夜的穆赫蘭道發生一樁車禍,女子麗塔在車禍中失憶了"
seg_list = genius.seg_text(text)
print('/'.join([w.text for w in seg_list]))
# 深夜/的/穆赫蘭道/發生/一/樁/車禍/,/女子/麗塔/在/車禍/中/失憶/了  [CRF]
# 深夜/的/穆赫/蘭/道/發生/一/樁/車禍/,/女子/麗塔/在/車禍/中/失憶/了  [2-HMM]
# 深夜/的/穆赫蘭道/發生/一樁/車禍/,/女子麗塔/在/車禍/中/失憶/了  [HMM]

可以看出,CRF在處理未登入詞比HMM的效果是要好的。當然,你可以用CRF++自己擼一箇中文分詞器。正好,52nlp的有一篇教程教你如何擼,用的是bakeoff2005 的訓練語料 msr_training.utf8

Footnote: CRF原論文 [1] 與李航老師的《統計學習方法》關於CRF的推導引出,顯得比較突兀。相反,tutorial [2] 將NB、HMM、maxent (LR)與CRF串聯在一起,從Probabilistic Models、Graphical Representation的角度論述,非常容易理解——CRF是如何在考慮\(Y\)的相關性時對條件概率\(P(Y|X)\)建模的;為一篇不得不讀的經典的CRF tutorial。

4. 參考資料

[1] Lafferty, John, Andrew McCallum, and Fernando Pereira. "Conditional random fields: Probabilistic models for segmenting and labeling sequence data." Proceedings of the eighteenth international conference on machine learning, ICML. Vol. 1. 2001.
[2] Klinger, Roman, and Katrin Tomanek. Classical probabilistic models and conditional random fields. TU, Algorithm Engineering, 2007.
[3] Sutton, Charles, and Andrew McCallum. "An Introduction to Conditional Random Fields." Machine Learning 4.4 (2011): 267-373.
[4] shinchen2, 統計模型之間的比較. (為轉載連結)
[5] KevinXU, 如何理解馬爾可夫隨機場裡因子的表達?

相關推薦

中文條件機場CRF

之前介紹的MMEM存在著label bias問題,因此Lafferty et al. [1] 提出了CRF (Conditional Random Field). BTW:比較有意思的是,這篇文章的二作與三作同時也是MEMM的作者。 1. 前言 本節將遵從tutorial [2] 的論文結構,從概率模型(Pr

中文結構化感知器SP

結構化感知器(Structured Perceptron, SP)是由Collins [1]在EMNLP'02上提出來的,用於解決序列標註的問題。中文分詞工具THULAC、LTP所採用的分詞模型便是基於此。 1. 結構化感知器 模型 CRF全域性化地以最大熵準則建模概率\(P(Y|X)\);其中,\(X\)為

中文隱馬爾可夫模型HMM

Nianwen Xue在《Chinese Word Segmentation as Character Tagging》中將中文分詞視作為序列標註問題(sequence tagging problem),由此引入監督學習演算法來解決分詞問題。 1. HMM 首先,我們將簡要地介紹HMM(主要參考了李航老師的《

中文簡單高效的MMSeg

最近碰到一個分詞匹配需求——給定一個關鍵詞表,作為自定義分詞詞典,使用者query文字分詞後,是否有詞落入這個自定義詞典中?現有的大多數Java系的分詞方案基本都支援新增自定義詞典,但是卻不支援HDFS路徑的。因此,我需要尋找一種簡單高效的分詞方案,稍作包裝即可支援HDFS。MMSeg分詞演算法正是完美地契合

中文二階隱馬爾可夫模型2-HMM

在前一篇中介紹了用HMM做中文分詞,對於未登入詞(out-of-vocabulary, OOV)有良好的識別效果,但是缺點也十分明顯——對於詞典中的(in-vocabulary, IV)詞卻未能很好地識別。主要是因為,HMM本質上是一個Bigram的語法模型,未能深層次地考慮上下文(context)。對於此,

中文最大熵馬爾可夫模型MEMM

Xue & Shen '2003 [2]用兩種序列標註模型——MEMM (Maximum Entropy Markov Model)與CRF (Conditional Random Field)——用於中文分詞;看原論文感覺作者更像用的是MaxEnt (Maximum Entropy) 模型而非MEM

條件機場CRF進行字標註中文(Python實現)

        本文運用字標註法進行中文分詞,使用4-tag對語料進行字標註,觀察分詞效果。模型方面選用開源的條件隨機場工具包“CRF++: Yet Another CRF toolkit”進行分詞。         本文使用的中文語料資源是SIGHAN提供的backof

中文系列 8 更好的新詞發現演算法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Hadoop學習之自己動手做搜尋引擎網路爬蟲+倒排索引+中文

一、使用技術 Http協議 正則表示式 佇列模式 Lucenne中文分詞 MapReduce 二、網路爬蟲 專案目的 通過制定url爬取介面原始碼,通過正則表示式匹配出其中所需的資源(這裡是爬取csdn部落格url及部落格名),將爬到的資源存

中文系列 5. 基於語言模型的無監督

轉載:https://spaces.ac.cn/archives/3956/ 迄今為止,前四篇文章已經介紹了分詞的若干思路,其中有基於最大概率的查詞典方法、基於HMM或LSTM的字標註方法等。這些都是已有的研究方法了,筆者所做的就只是總結工作而已。查詞典方法和字

條件機場CRF介紹

family play 存在 分布 als 建立 geo 捕捉 times 鏈接:https://mp.weixin.qq.com/s/BEjj5zJG3QmxvQiqs8P4-w softmax CRF主要用於序列標註問題,可以簡單理解為是給序列中的

簡明條件機場CRF介紹(附帶純Keras實現)

筆者去年曾寫過博文《果殼中的條件隨機場(CRF In A Nutshell)》,以一種比較粗糙的方式介紹了一下條件隨機場(CRF)模型。然而那篇文章顯然有很多不足的地方,比如介紹不夠清晰,也不夠完整,還沒有實現,在這裡我們重提這個模型,將相關內容補充完成。 本文是對CRF基本原理的一個簡明的介紹

概率模型(四):條件機場(CRF)

條件隨機場(Conditional Random Field,CRF)是一個比較重要的概率模型,在詳細介紹CRF之前,首先簡單介紹一下概率圖(Probabilistic Graphical Model,PGM),有時候簡稱圖模型(Graphical Model,

NLP --- 條件機場CRF(預測演算法詳解)

前幾節我們大概的介紹了學習演算法,即GIS和IIS的演算法,這兩個演算法在最大熵模型中講的比較詳細,想要深入理解這兩個演算法,需要你理解動態規劃演算法。這裡的條件隨機場實際上是根據最大熵模型的思想過來的,因為通過前面我們可以看出CRF演算法的目標公式就是按照最大熵演算法構造而來的,不同的是特徵函

NLP --- 條件機場CRF(概率計算問題)

上一節詳解的闡述了條件隨機場的定義和簡單的學習演算法推倒,這裡不懂的前翻看前兩節的部落格,這裡不再贅述,本節將主要求期望的問題,為什麼要求解期望?本節主要參考的內容是一篇論文和李航的書,論文是《Conditional Random Fields: An Introduction》 Hanna M

NLP --- 條件機場CRF背景

上一節我們主要講解了最大熵模型的原理,主要是解釋了什麼是最大熵,已經最大熵的背景知識,其實還是多建議大家讀讀論文,如果讀英語有點難度,那就看李航的《統計學習方法》的最大熵模型和條件隨機場,這本書的質量很高,本節主要講一些條件隨機場的背景知識,解釋為什麼需要引入條件隨機場,廢話不多說,下面開始:

機器學習 條件機場CRF

原文:http://blog.csdn.net/u010487568/article/details/46485673 CRF由來 條件隨機場(CRF)這種用來解決序列標註問題的機器學習方法是由John Lafferty於2001年發表在國際機器學習大

NLP-初學條件機場(CRF)

說明:學習筆記,內容參考《機器學習》《數學之美》和七月線上課件 條件隨機場 定義1: 條件隨機場(conditional random field,簡稱CRF)是一種判別式無向圖模型。生成式模型是直接對聯合分佈進行建模,而判別式模型則是對條件分佈

隱馬爾可夫(HMM)/感知機/條件機場(CRF)----詞性標註

筆記轉載於GitHub專案:https://github.com/NLP-LOVE/Introduction-NLP 7. 詞性標註 7.1 詞性標註概述 什麼是詞性 在語言學上,詞性(Par-Of-Speech, Pos )指的是單詞的語法分類,也稱為詞類。同一個類別的詞語具有相似的語法性質,所有詞性的集

中文之HMM模型詳解

實現 含義 jieba 順序 清晰 bsp 中國 matrix 統計 關於HMM模型的介紹,網上的資料已經爛大街,但是大部分都是在背書背公式,本文在此針對HMM模型在中文分詞中的應用,講講實現原理。 盡可能的撇開公式,撇開推導。結合實際開源代碼作為例子,爭取做到雅俗共賞,