用python识别错别字并矫正

在今日头条编写文章的时候发现一个好用的功能,就是发文助手,当你写文章的时候,发文助手会实时监测文章中的错别字并给出修改建议,非常人性化,那么是怎么实现的呢,今天小编来讲讲怎么实现的 。

用python识别错别字并矫正

一、纠错思路


中文纠错分为两步走,第一步是错误检测,第二步是错误纠正;

错误检测部分先通过结巴中文分词器切词,由于句子中含有错别字,所以切词结果往往会有切分错误的情况,这样从字粒度和词粒度两方面检测错误, 整合这两种粒度的疑似错误结果,形成疑似错误位置候选集;

错误纠正部分,是遍历所有的疑似错误位置,并使用音似、形似词典替换错误位置的词,然后通过语言模型计算句子困惑度,对所有候选集结果比较并排序,得到最优纠正词。

这里推荐一款开源python库pycorrector,github地址:
https://github.com/shibing624/pycorrector
下面来讲解一下具体的安装使用步骤

二、安装

要求python3.6版本
▶全自动安装:
pip install pycorrector
▶半自动安装:
git clone https://github.com/shibing624/pycorrector.git
cd pycorrector
python setup.py install

通过以上两种方法的任何一种完成安装都可以。如果不想安装,可以下载github源码包,安装下面依赖再使用。

▶依赖安装
kenlm安装
pip install https://github.com/kpu/kenlm/archive/master.zip
其他库包安装
pip install -r requirements.txt
▉ 使用方法

▶文本纠错

import pycorrector
corrected_sent, detail = pycorrector.correct('少先队员因该为老人让坐')
print(corrected_sent, detail)
程序运行后输出:

少先队员应该为老人让座 [[('因该', '应该', 4, 6)], [('坐', '座', 10, 11)]]


规则方法默认会从路径~/.pycorrector/datasets/zh_giga.no_cna_cmn.prune01244.klm加载kenlm语言模型文件,如果检测没有该文件,则程序会自动联网下载。当然也可以手动下载模型文件(2.8G)并放置于该位置。下载地址:
https://deepspeech.bj.bcebos.com/zh_lm/zh_giga.no_cna_cmn.prune01244.klm

▶错误检测

import pycorrector
idx_errors = pycorrector.detect('少先队员因该为老人让坐')
print(idx_errors)


程序运行输出:

[['因该', 4, 6, 'word'], ['坐', 10, 11, 'char']]


返回类型是list, [error_word, begin_pos, end_pos, error_type],pos索引位置以0开始。

▶关闭字粒度纠错

import pycorrector
error_sentence_1 = '我的喉咙发炎了要买点阿莫细林吃'
correct_sent = pycorrector.correct(error_sentence_1)
print(correct_sent)

程序输出

'我的喉咙发炎了要买点阿莫西林吉', [['细林', '西林', 12, 14], ['吃', '吉', 14, 15]]

上例中吃发生误纠,如下代码关闭字粒度纠错:

import pycorrector
error_sentence_1 = '我的喉咙发炎了要买点阿莫细林吃'
pycorrector.enable_char_error(enable=False)
correct_sent = pycorrect...

点击查看剩余70%

{{collectdata}}

网友评论0