2013年8月20日 星期二

MMSEG中文分詞程式

MMSEG是一種基於最大匹配演算法的程式,詳細的資料MMSEG官網已經有詳細資料與範例,這邊不再贅述,只是把一些重點跟摘要列出供快速了解與複習使用:

這個程式包含了以下三個部分:
1. 一個詞庫
2. 兩種匹配演算法
3. 四種歧意消解規則
以及以chunk為中心思想的做法

其中,兩種演算法分別是:



1. 簡單最大匹配演算法(Simple maximum matching)

  用意是在分析單個單詞的歧意,一開始先將字串中的第一個字丟進詞庫搜尋,看是否有配對到,接著再將第一二個字連在一起丟進詞庫搜尋,持續新增單字直到字串被搜尋完,取最長的配對為結果,之後持續對後面的單字做一樣的行為,直到整個字串都被分析完畢。

2. 複雜最大匹配演算法(Complex maximum matching)

  這種演算法指出,最可能的分詞方式是三個單詞,方式為從一個字串的第一個字開始,尋找分詞的方式,只要存在有不同意義的詞,例如:C1(字串的第一個字)是一個單詞,C1C2也是一個單詞,就再繼續搜尋直到得到三個單詞組成的字串,以下為官網範例,
1. _C1_ _C2_ _C3C4_
2. _C1C2_ _C3C4_ _C5_
3. _C1C2_ _C3C4_ _C5C6_ 
最大長度的chunk是第三個。所以再第三個中的第一個單詞C1C2會被認為是正確的。之後從C3開始重複這個過程,直到字串的最後一個字為止。

以上兩種演算法皆為使用時指定要使用哪一種演算法,在跑完演算法做完拆詞動作後,會經過四種歧意消解規則(簡單最大匹配無法使用規則2,3,4),分別是:


  • 規則 1:最大匹配(Maximum matching)
簡單最大匹配:取最大長度的單詞。 
複雜最大匹配:從Chunk中以最大長度取第一個單詞,如果有多於一個chunk最大長度,應用下一個規則。
  • 規則 2:最大平均單詞長度(Largest average word length)
在每一個字串的結尾,很可能得到只有一個或者兩個單詞的chunk,例如,下面的 chunks 擁有相等的長度且單詞長度的方差也相等。 

1. _C1_ _C2_ _C3_
2. _C1C2C3_

規則2 以最大平均單詞長度從chunk中取得第一個單詞。**在上面的例子中,它從第二個chunk中選擇C1C2C3。這個規則是假設更可以遇到多字的單詞而不是單字的單詞。
這個規則在chunk中一個或多個單詞為空的條件下才有用。當chunks是一個真正的三詞chunks,這個規則並沒有用。因為擁有相同總長度的三詞 chunks 擁有同樣的平均長度,所以我們需要其他的解決方案。
  • 規則 3:單詞長度的最小方差(Smallest variance of word lengths)
 規則1和規則2不能解析的歧義條件很少,例如,這兩個chunks擁有相同的長度:  

1. _C1C2_ _C3C4_ _C5C6_
2. _C1C2C3_ _C4_ _C5C6_

規則3chunk中擁有單詞長度最小方差的作為單詞,在上面的例子中,它從第一個chunk中取C1C2。這個規則和Chen & Liu1992)提出的規則完全相同。(然而,他們在規則1之後立即應用這個規則)。這個規則假設單詞的長度通常是均勻分佈的。如果存在多於一個chunks擁有最小的單詞長度方差,則應用下一個規則。
  • 規則 4:單字單詞的語素自由度的最大和(Largest sum of degree of morphemic freedom of one-character words) 
1. _C1_ _C2_ _C3C4_
2. _C1_ _C2C3_ _C4_

兩個chunks都有一個單字單詞和一個雙字單詞。哪一個更像是正確的呢?在這裏我們會關注於單字單詞。中國漢字的語素自由度不同,一些很少使用的 漢字被用作 free morhemes,但其他則擁有較大的自由度。一個漢字的出現頻率可以作為它的語素自由度的索引。一個高頻率的漢字更可能是一個單字單詞,反之亦然。
用來計算語素自由度的和的公式是計算一個chunk中所以單字單詞的頻率。這個演算法轉換的原理是相同數量的頻率區別並不對所有的頻率範圍起到一個一致性的影響。
規則4選取chunk中擁有最大頻率的第一個詞。由於很有可能兩個漢字擁有相同的頻率值,在這個規則應用之後應當沒有歧義性。

沒有留言:

張貼留言

Google Analytics初學者入門簡介