开发者社区 问答 正文

mmseg算法中的问题

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

展开
收起
蛮大人123 2016-02-22 11:50:52 2063 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    首先先定义 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
    3. 研究 |生命|起源 (length = 6, average length = 2, variance = 0 )
    4. 研究生|命 |起源 (length = 6, average length = 2, variance = 4/9)
      依据规则 3,取variance最小的 Chunk
    5. 研究 |生命|起源 (length = 6, average length = 2, variance = 0 )
      因为剩下一个 Chunk 所以规则 4 就不用再匹配了。

    最终结果就是 "研究 | 生命 | 起源"
    若需要用到规则 4 ,当中所谓的词频,是要你自己在你的辞典先定义辞典里的每一个词的在你的数据及的某个时间点知当时的词频。
    例如 第5号 Chunk : "研究" 词频=3 , "生命" 词频=5 , "起源" 词频=7
    取对数的和 = ln3+ln5+ln7
    其他 Chunk 也用同样的算法算出其对数和,
    最后所以剩下的 Chunk 比对谁最大就取谁即可。
    但是如果最后的匹配四个规则的结果得到不只一个 Chunk ,那么 MMSEG 就失效了。

    2019-07-17 18:46:32
    赞同 展开评论
问答分类:
问答地址: