li-aolong / li-aolong.github.io

李傲龍的博客
https://aolong.me
81 stars 16 forks source link

7.31——开源项目Cn_Speck_Checker分析 #15

Open li-aolong opened 5 years ago

li-aolong commented 5 years ago

该项目使用于中文词组的纠正

  1. 给定一待纠错词w,需要从一系列候选词中选出一最可能的。也就是:argmax(p(c|w)), c in 候选词表。根据贝叶斯原理,p(c|w) = p(w|c) p(c) / p(w)。又对任意可能的c,p(w)一样,故也就是求使argmax(p(w|c) p(c))成立的c
  2. 初始化所有潜在中文词的先验概率,使用文本集:50篇医学文章分词后,统计各个中文词的出现频率即为其先验概率
  3. 为了弥补可能出现的新词,做了平滑处理,对新词默认其出现频率为1
  4. 当给定一待纠错单词时,根据字符距离来找出可能的正确单词列表
    • 如果一个单词转变为另一个单词需要编辑n下,如删掉一个字符,替换一个字符,交换两个字符位置,增减一个字符,那么这两个单词间的字符距离为n
    • 由于中文字有5000多个,因而由字符距离1来构造出来的可能候选单词列表将会很大,因而对构造出来的单词做了一次验证后再将其加入候选集合中,即判断了下该词是否为有效单词
    • 如果只考虑单词距离为1的单词数量不够用,可以继续加入与待检查单词距离为2的单词