程序员

错字?试试这个中文纠错小能手

2020-07-05  本文已影响0人  李雨喵

Hi!大家好呀!我是你们努力的喵哥!

大家在输入文字时,有没有经常输错文字的情况?我们中文简体字是非常复杂的。有很多形近字、读音相同字、使用场景相同的字,特别是一个字或词有多个释义。所有,我们就容易输错字。即使是手书,别字的概率也是非常高的。还别说,地名、人名和方言,更是别字的重灾区。

虽然现在的中文输入法,已经非常的智能。但是,在我们输入的时候,输入法一般是不会进行上下文分析的。特别,像是我们录入一些信息时,输入法也获取不了我们的上下文。

所以,大部分互联网产品在设计文本输入功能时,为了提升用户的体验,都会考虑中文纠错功能。今天,喵哥就给大家推荐一款中文纠错项目。方便大家在工作或设计自己的小项目,能够快速使用。同时该项目,比较简洁的,也可以作为自然语言处理和分词的学习范例。

喵哥推荐的就是 pycorrector。一款国人开发的中文纠错项目。该项目是基于 Python 3.6 实现的。技术上采用了 Kenlm(统计语言模型工具)和 RNNLM(TensorFlow有实现栈式双向LSTM的语言模型)。pycorrector依据语言模型检测错别字位置,通过拼音音似特征、笔画五笔编辑距离特征及语言模型困惑度特征纠正错别字。

pycorrector 主要解决以下的中文输入场景。

谐音字词,如 配副眼睛-配副眼镜。

混淆音字词,如 流浪织女-牛郎织女。

字词顺序颠倒,如 伍迪艾伦-艾伦伍迪。

字词补全,如 爱有天意-假如爱有天意。

形似字错误,如 高梁-高粱。

中文拼音全拼,如 xingfu-幸福。

中文拼音缩写,如 sz-深圳。

语法错误,如 想象难以-难以想象。

我们可以在项目提供的在线网站中,体验整个项目的效果。在项目提供的在线网站中,还能找到一些其它的自然语言处理项目。

在线地址https://www.borntowin.cn/product/corrector/

该项目的设计思路是,将中文纠错分为两步走。一是错误检测,二是错误纠正。

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

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

安装

可以使用 pip 安装。

pip install pycorrector

也可以下载源码后手动安装。

git clone https://github.com/shibing624/pycorrector.gitcd pycorrectorpython setup.py install

依赖库kenlm安装。

pip install https://github.com/kpu/kenlm/archive/master.zip

其他依赖库包安装。

pip install -r requirements.txt

使用例子

1.文本纠错

import pycorrectorcorrected_sent, detail = pycorrector.correct('少先队员因该为老人让坐')print(corrected_sent, detail)
output:少先队员应该为老人让座 [[('因该', '应该', 4, 6)], [('坐', '座', 10, 11)]]

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

2.错误检测

import pycorrectoridx_errors = pycorrector.detect('少先队员因该为老人让坐')print(idx_errors)
output:[['因该', 4, 6, 'word'], ['坐', 10, 11, 'char']]

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

其它更多的使用方式和实现的功能,大家可以去翻看项目的文档。

最后

惯例介绍一下项目本身。pycorrector项目的发起人是徐明,共有三位贡献者。pycorrector 已经维护了两年多,在 Github 收获了1.3k Star。在一些小产品和个人工具中,已有一定的应用。

项目地址https://github.com/shibing624/pycorrector

上一篇下一篇

猜你喜欢

热点阅读