欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

mmseg算法中的问题

程序员文章站 2024-01-18 23:54:10
...
mmseg中复杂最大匹配算法没看明白,有人能用一个例子给我解释下吗?

回复内容:

mmseg中复杂最大匹配算法没看明白,有人能用一个例子给我解释下吗?

首先先定義 MMSEG 一個重要概念是 Chunk ,他是一個包含3個詞的詞塊。
MMSEG 算法是基於統計模型的,所以算法的規則也是來自於對語料庫的分析和歸納。

他有四大規則分別為:
規則 1 : 最大匹配 Maximum matching (取詞包含字數最多的chunk)
規則 2 : 最大平均詞彙長度 Largest average word length (取詞的平均字數最多的chunk)
規則 3 : 最小詞方差 Smallest variance of word lengths (取詞的方差最小的chunk)
規則 4 : 最大單字*度 Largest sum of degree of morphemic freedom of one-character words

    (取詞頻*度最大的chunk, 也就是chunk中的詞的詞頻取對數後的和,)

舉的例子比較快了解:
我們用 MMSEG 上的例子 "研究生命起源",但首先先釐清一點,切 Chunk 通常跟你自己的語料庫(詞典)有很大關係,不一定會切出跟下面一樣的 Chunk。

  1. 研 |究 |生 (length = 3)

  2. 研 |究 |生命 (length = 4)

  3. 研究 |生 |命 (length = 4)

  4. 研究 |生命|起 (length = 5)

  5. 研究 |生命|起源 (length = 6)

  6. 研究生|命 |起 (length = 5)

  7. 研究生|命 |起源 (length = 6)

之後依次使用上述四種規則匹配之-

依據規則 1,取length最大的 Chunk

  1. 研究 |生命|起源 (length = 6, average length = 2)

  2. 研究生|命 |起源 (length = 6, average length = 2)

依據規則 2,取average length最大的 Chunk

  1. 研究 |生命|起源 (length = 6, average length = 2, variance = 0 )

  2. 研究生|命 |起源 (length = 6, average length = 2, variance = 4/9)

依據規則 3,取variance最小的 Chunk

  1. 研究 |生命|起源 (length = 6, average length = 2, variance = 0 )

因為剩下一個 Chunk 所以規則 4 就不用再匹配了。
最終結果就是 "研究 | 生命 | 起源"

若需要用到規則 4 ,當中所謂的詞頻,是要你自己在你的辭典先定義辭典裡的每一個詞的在你的資料及的某個時間點知當時的詞頻。
例如 第5號 Chunk : "研究" 詞頻=3 , "生命" 詞頻=5 , "起源" 詞頻=7
取對數的和 = ln3+ln5+ln7
其他 Chunk 也用同樣的算法算出其對數和,
最後所以剩下的 Chunk 比對誰最大就取誰即可。

但是如果最後的匹配四個規則的結果得到不只一個 Chunk ,那麼 MMSEG 就失效了。

相关标签: python java php