chinese words segmentation tutorial

30
中文斷詞 By Mark Chang

Upload: mark-chang

Post on 18-Aug-2015

19 views

Category:

Technology


2 download

TRANSCRIPT

中文斷詞

By Mark Chang

中文斷詞

● 什麼是中文斷詞?● 中文斷詞演算法● jieba斷詞● 斷詞後再作 n-gram

什麼是中文斷詞?

● 英文的單字有空格區分開來,個別的單字即可表達語意。– Ma says economic policies brought recovery.

● 中文的字未必能表達語意,由字所組成的詞才能表達語意。但詞和詞中間沒有空格區分開。– 馬英九說經濟政策造成景氣回升。

● 經這個字即可表達其語意,但經、濟這兩個字無法各別表達其語意,必須合再一起組合成「經濟」才能表達其語意。

● 經和濟這兩個詞中間沒有空格區分開來。

什麼是中文斷詞?

● 因此,若在分析時希望保留其語意,需要先將中文做斷詞。即把中文– 馬英九說經濟政策造成景氣回升。

→ 馬英九 / 說 / 經濟 / 政策 / 造成 / 景氣 /回升

中文斷詞演算法

● 詞典法 :

手動建立辭典,從辭典中尋找某幾個字可以組成一個詞。

馬英九經濟造成景氣回升

辭典

馬英九說經濟政策造成景氣回升

馬英九 /說 /經濟 /政策 /造成 /景氣 /回升

中文斷詞演算法

● 監督式學習法:

B:開頭M:中間E:結尾S:單詞

馬英九說經濟政策造成景氣回升 ...

馬 B 英M

九E

說S 經

B 濟

E

政B 策

E 造

B

…..

語言模型

手動標記

訓練

語言模型

馬英九總統距離卸任剩下不到一年 ...

馬B英

M九

E總

B

統E距

B離

E卸

B

任E 剩

B下

E...

中文斷詞演算法

● 非監督式學習法:

馬英九說經濟政策造成景氣回升 ...

語言模型訓練

語言模型

馬英九總統距離卸任剩下不到一年 ...

馬英九 /總統 /距離 /卸任 /

剩下 /

不到 /一年 /...

中文斷詞的困難● 斷詞歧義性:相同字串可以有不同的斷詞結果。

台/大便/餐車、台大/便餐/車、台大/便/餐車

http://3rd.mafengwo.cn/travels/info_weibo.php?id=2861280

中文斷詞的困難● 未知詞:詞典中或訓練資料中沒有出現過的詞。

石內卜、祭止兀

https://www.facebook.com/435562233245989/photos/a.435562556579290.1073741825.435562233245989/538635189605359/?type=1&theater

jieba斷詞

● python中文斷詞套件● 擴充功能:

– 繁體字詞典– 使用者自訂新詞

jieba斷詞

● 斷詞原理:– 列出一個句子中所有可能的斷詞組合,形成一個

DAG,並用Dynamic Programming的方式,根據詞典中的詞頻,計算出機率最大的路徑。Ex: 台大便餐車→ 台大/便餐/車、台/大便/餐車、台大/便/餐車

0 1 2 3 4 5台 大 便 餐 車

台大

大便 便餐

餐車

jieba斷詞

0 1 2 3 4 5P( 餐 )

P( 餐車 )

P( 便 )

P( 便餐 )

P( 台 )

P( 台大 )

P( 大 )

P( 大便 )

P( 車 )

jieba斷詞

0 1 2 3 4 5P( 車 )P( 餐 )

P( 餐車 )

P( 便 )

P( 便餐 )

P( 台 )

P( 台大 )

P( 大 )

P( 大便 )

P( 車 )

jieba斷詞

0 1 2 3 4 5P( 餐 )

P( 餐車 )

P( 餐車 ) > P( 餐 ) *P( 車 )

P( 便 )

P( 便餐 )

P( 台 )

P( 台大 )

P( 大 )

P( 大便 )

P( 車 )

jieba斷詞

0 1 2 3 4 5P( 便 ) P( 餐 )

P( 便餐 )

P( 餐車 )

P( 車 )

P( 便 ) * P( 餐車 ) > P( 便餐 ) *P( 車 )

P( 台 )

P( 台大 )

P( 大 )

P( 大便 )

jieba斷詞

0 1 2 3 4 5P( 台 ) P( 大 ) P( 便 ) P( 餐 )

P( 台大 )

P( 大便 ) P( 便餐 )

P( 餐車 )

P( 車 )

P( 大便 ) * P( 餐車 ) > P( 大 ) * P( 便 ) *P( 餐車 )

jieba斷詞

0 1 2 3 4 5P( 台 ) P( 大 ) P( 便 ) P( 餐 )

P( 台大 )

P( 大便 ) P( 便餐 )

P( 餐車 )

P( 車 )

P( 台大 ) * P( 便 ) *P( 餐車 ) > P( 台 ) * P( 大便 ) * P( 餐車 )

jieba斷詞

0 1 2 3 4 5P( 台 ) P( 大 ) P( 便 ) P( 餐 )

P( 台大 )

P( 大便 ) P( 便餐 )

P( 餐車 )

P( 車 )

斷詞結果:台大 / 便 / 餐車

jieba斷詞● 斷詞原理:

– 辭典內沒有的詞,用監督式學習法來斷詞– Ex: → 內湖石內卜 內湖 / 石內卜

P(B|<s>) * P(內 |B) * P(E| B) * P(湖 |E) * P(B|E) *

P(石 |B) *P(M|B)* P(內 |M)* P(E|M)*P(卜 |E) * P(<e>|E)

B E B M E

內 湖 石 內 卜

Start <s> End <e>

內 湖 石 內 卜

S

B

M

E

Q1(S) = P( 內 |S) * P(S|<s>)

Q1(B) = P( 內 |B) * P(B|<s>)

Q1(M) =P( 內 |M) * P(M|<s>)

Q1(E) = P( 內 |E) * P(E|<s>)

<s>

內 湖 石 內 卜

SS

B

M

E

Q2(S) = P( 湖 |S)* MAX( )

P(S|S) Q1(S)

P(S|B) Q1(B)

P(S|M) Q1(M)

P(S|E) Q1(E)

<s>

內 湖 石 內 卜

S

B

M

E

S

B

M

E

Q2(S) = P( 湖 |S) * P(S|B) * Q

1(B)

Q2(B) = P( 湖 |B) * P(B|S) * Q

1(S)

Q2(M) = P( 湖 |M) * P(M|B) * Q

1(B)

Q2(E) = P( 湖 |E) * P(E|B) * Q

1(B)

<s>

內 湖 石 內 卜

S

B

M

E

S

B

M

E

S

Q3(S) = P( 石 |S)* MAX( )

P(S|S) Q2(S)

P(S|B) Q2(B)

P(S|M) Q2(M)

P(S|E) Q2(E)

<s>

內 湖 石 內 卜

S

B

M

E

S

B

M

E

Q3(S) = P( 石 |S) * P(S|S) * Q

2(S)

Q3(B) = P( 石 |B) * P(B|E) * Q

2(E)

Q3(M) = P( 石 |M) * P(M|B) * Q

2(B)

Q3(E) = P( 石 |E) * P(E|M) * Q

2(M)

S

B

M

E

<s>

內 湖 石 內 卜

S

B

M

E

S

B

M

E

S

B

M

E

S

B

M

E

S

B

M

E

<s> <s>

MAX( )

P(<e>|S) Q5(S)

P(<e>|B) Q5(B)

P(<e>|M) Q5(M)

P(<e>|E) Q5(E)

斷詞結果:內湖 / 石內卜

實作 2-1: jieba斷詞

● 載入 jieba斷詞套件● 將「台大便餐車」和「內湖石內卜祭止兀是自己人」作斷詞

● 載入繁體字詞典● 再將「台大便餐車」和「內湖石內卜祭止兀是自己人」作斷詞

● 加入新詞「便餐車」、「石內卜」、「祭止兀」● 再將「台大便餐車」和「內湖石內卜祭止兀是自己人」作斷詞

斷詞後再作 N-gram

內湖石內卜祭止兀是自己人

內湖 / 石內卜 / 祭止兀 / 是 / 自己人

內湖 , 石內卜 , 祭止兀石內卜 , 祭止兀 , 是

祭止兀 , 是 , 自己人

斷詞

3-gram

斷詞後再作 N-gram

● 優點:– 可以分析詞和詞之間的前後關係

● 缺點:– 斷詞可能會出錯

內湖 , 石內卜 , 祭止兀

v.s

內湖 , 石 , 內卜

內湖 , 石內卜 , 祭止兀

內 , 湖 , 石

v.s

實作 2-2:斷詞後再作 N-gram

● 載入 n-gram相關套件● 載入語料庫● 對語料庫作斷詞● 產生 bi-gram● 產生 tri-gram

講者聯絡方式:

Mark Chang

Github : http://github.com/ckmarkoh

Blog : http://cpmarkchang.logdown.com

email : ckmarkoh at gmail.com