pycorrector框架解析——基于规则的中文纠错流程

本文对pycorrector源码规则部分的框架进行解析,可以下载作者xuming624源码进行深入学习。

一、初始化数据和模型_initialize_detector()

1、数据资源:
  • word_freq通用字典(词:词频)
  • custom_confusion混淆字典(变体:本体)
  • custom_word_freq自定义字典(词:词频<可省略>)
  • person_names人物字典
  • place_names地址字典
  • stopwords停用词字典
2、数据合并:合并4,5,6到3,合并3+到1
3、加载模型:加载kenml语言模型

二、文本处理detect()

1、是否为空
2、统一编码

utf-8 to unicode

3、文本格式化

完成全角转半角,大写转小写的工作

4、长句子切分为短句子split_2_short_text()

按除中英文数字+#&之外的内容分类;返回短句子:起始索引。例子:

  • 输入:text = ‘我&们#很12+ok,哈哈哈。你呢!!啊’
  • 输出:text_split = [’’, ‘我&们#很12+ok’, ‘,’, ‘哈哈哈’, ‘。’, ‘你呢’, ‘!!’, ‘啊’, ‘’]

三、错误检查detect_short()

1、混淆字典中查找

(1)直接搜索(字典映射)(源码时直接搜索,也可以尝试采用最大向前匹配的方法,提高查找速度)

2、分词后,查看是否在通用字典word_freq(big)

(1)数字、英文、非中文字符不判断为错误词
(2)通用字典里的词不判断为错误词
(3)通用字典中没有的词/字添加到不添加到错误词列表

3、语言模型检测疑似错误字

(1)n_gram计算局部得分ngram_score()
(2)MAD(Median Absolute Deviation)—异常点检测,找出可能的错误位置

  • 过滤数字、英文、非中文字符is_filter_token()
  • 停用词

(3)maybe_errors列表按错误字出现位置排序(list[list], [error_word, begin_pos, end_pos, error_type])

四、纠错模型

1、初始化数据和模型check_corrector_initialized()
2、文本处理

(1)是否为空
(2)统一编码convert_to_unicode()
(3)长句子切分为短句子split_2_short_text()

3、错误检查detect_short()

返回句子中的疑似错误信息,包括[词、位置、错误类型]maybe_errors
(1)从混淆字典中查找
(2)分词后,查看是否在通用字典word_freq(big)
(3)语言模型检测疑似错误字

4、纠错

(1)错误类型为混淆集错误。直接返回混淆字典对于内容
(2)取所有可能的正确词generate_items()

  • 拼接相同拼音+相似字形_confusion_char_set()
  • 分别对相同拼音\字形、混淆字以及1,2,2+进行字典映射

(3)通过语言模型纠正字词错误get_lm_correct_item()。取语言模型困惑度得分,越小句子越通顺(self.lm.perplexity(’ '.join(words)))

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值