[文本纠错] pycorrector框架测试
pycorrector:https://github.com/shibing624/pycorrector
pycorrector
中文文本纠错工具。音似、形似错字(或变体字)纠正,可用于中文拼音、笔画输入法的错误纠正。python3.6开发。
pycorrector依据语言模型检测错别字位置,通过拼音音似特征、笔画五笔编辑距离特征及语言模型困惑度特征纠正错别字。
Question
中文文本纠错任务,常见错误类型包括:
- 谐音字词,如 配副眼睛-配副眼镜
- 混淆音字词,如 流浪织女-牛郎织女
- 字词顺序颠倒,如 伍迪艾伦-艾伦伍迪
- 字词补全,如 爱有天意-假如爱有天意
- 形似字错误,如 高梁-高粱
- 中文拼音全拼,如 xingfu-幸福
- 中文拼音缩写,如 sz-深圳
- 语法错误,如 想象难以-难以想象
当然,针对不同业务场景,这些问题并不一定全部存在,比如输入法中需要处理前四种,搜索引擎需要处理所有类型,语音识别后文本纠错只需要处理前两种,
其中’形似字错误’主要针对五笔或者笔画手写输入等。
Install
- 全自动安装: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
Usage
- 文本纠错
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)并放置于该位置。
- 错误检测
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开始。
- 关闭字粒度纠错
import pycorrectorerror_sentence_1 = '我的喉咙发炎了要买点阿莫细林吃'
correct_sent = pycorrector.correct(error_sentence_1)
print(correct_sent)
output:
'我的喉咙发炎了要买点阿莫西林吉', [['细林', '西林', 12, 14], ['吃', '吉', 14, 15]]
上例中吃
发生误纠,如下代码关闭字粒度纠错:
import pycorrectorerror_sentence_1 = '我的喉咙发炎了要买点阿莫细林吃'
pycorrector.enable_char_error(enable=False)
correct_sent = pycorrector.correct(error_sentence_1)
print(correct_sent)
output:
'我的喉咙发炎了要买点阿莫西林吃', [['细林', '西林', 12, 14]]
默认字粒度、词粒度的纠错都打开,一般情况下单字错误发生较少,而且字粒度纠错准确率较低。关闭字粒度纠错,这样可以提高纠错准确率,提高纠错速度。
默认
enable_char_error
方法的enable
参数为True
,即打开错字纠正,这种方式可以召回字粒度错误,但是整体准确率会低;
如果追求准确率而不追求召回率的话,建议将
enable
设为False
,仅使用错词纠正。
- 加载自定义混淆集
通过加载自定义混淆集,支持用户纠正已知的错误,包括两方面功能:1)错误补召回;2)误杀加白。
import pycorrectorpycorrector.set_log_level('INFO')
error_sentences = ['买iPhone差,要多少钱','共同实际控制人萧华、霍荣铨、张旗康',
]
for line in error_sentences:print(pycorrector.correct(line))print('*' * 53)
pycorrector.set_custom_confusion_dict(path='./my_custom_confusion.txt')
for line in error_sentences:print(pycorrector.correct(line))
output:
('买iPhone差,要多少钱', []) # "iPhone差"漏召,应该是"iphoneX"
('共同实际控制人萧华、霍荣铨、张启康', [['张旗康', '张启康', 14, 17]]) # "张启康"误杀,应该不用纠
*****************************************************
('买iPhoneX,要多少钱', [['iPhone差', 'iPhoneX', 1, 8]])
('共同实际控制人萧华、霍荣铨、张旗康', [])
具体demo见example/use_custom_confusion.py,其中./my_custom_confusion.txt
的内容格式如下,以空格间隔:
iPhone差 iPhoneX 100
张旗康 张旗康
set_custom_confusion_dict
方法的path
参数为用户自定义混淆集文件路径。
- 加载自定义语言模型
默认提供下载并使用的kenlm语言模型zh_giga.no_cna_cmn.prune01244.klm
文件是2.8G,内存较小的电脑使用pycorrector
程序可能会吃力些。
支持用户加载自己训练的kenlm语言模型,或使用2014版人民日报数据训练的模型,模型小(20M),准确率低些。
from pycorrector import Correctorpwd_path = os.path.abspath(os.path.dirname(__file__))
lm_path = os.path.join(pwd_path, './people_chars_lm.klm')
model = Corrector(language_model_path=lm_path)corrected_sent, detail = model.correct('少先队员因该为老人让坐')
print(corrected_sent, detail)
output:
少先队员应该为老人让座 [[('因该', '应该', 4, 6)], [('坐', '座', 10, 11)]]
具体demo见example/load_custom_language_model.py,其中./people_chars_lm.klm
是自定义语言模型文件。
[文本纠错] pycorrector框架测试相关推荐
- [文本纠错] pycorrector框架训练
深度模型使用说明 Install 全自动安装:pip install pycorrector 半自动安装: git clone https://github.com/shibing624/pycorr ...
- 文本纠错pycorrector
原文链接:https://blog.csdn.net/javastart/article/details/107428483 这一段时间再研究身份证和面单识别项目,总发现一些识别准确率问题,在想办法提 ...
- 中文文本纠错神器Pycorrector是如何收获2000 Star的?
点击左上方蓝字关注我们 计算机行业发展至今,"开源"已逐渐成为技术茁壮成长最肥沃的土壤.而在中国,企业开源热闹非常,个人开源也方兴未艾.尽管运营一个个人开源项目需要耗费大量时间精力 ...
- 中文纠错Pycorrector是如何收获2000 Star的?
(导语) 计算机行业发展至今,"开源"已逐渐成为技术茁壮成长最肥沃的土壤.而在中国,企业开源热闹非常,个人开源也方兴未艾.尽管个人开源困难重重,还是有一些开发者仍然在努力做着这样& ...
- NLP(四十八)使用kenlm进行文本纠错
本文将会介绍如何使用kenlm工具进行文本纠错. kenlm是用C++编写的语言模型工具,可以方便.快速地计算n-gram.kenlm工具的首页网址为:https://kheafield.co ...
- 【NLP】1分钟理清文本纠错框架pycorrector
目录 初步认识pycorrector: 下载安装工具包: pycorrector初步演示: 总结回顾: 一.初步认识pycorrector: 简介: 中文文本纠错工具.音似.形似错字(或变体字)纠正, ...
- lstm 文本纠错_中文文本纠错算法错别字纠正的二三事
本文首先介绍一下: 1)错别字的类型有哪些 2)错别字纠正的关键技术和关键点 3)简要介绍我们项目中采用的文本纠错框架 4)介绍错别字项目的个人体会 5)几个现成的工具包 ,百度nlp平台最近也推出了 ...
- lstm 文本纠错_中文文本纠错算法--错别字纠正的二三事
本文首先介绍一下: 1)错别字的类型有哪些 2)错别字纠正的关键技术和关键点 3)简要介绍我们项目中采用的文本纠错框架 4)介绍错别字项目的个人体会 5)几个现成的工具包 ,百度nlp平台最近也推出了 ...
- 中文拼写纠错_中英文拼写纠错开源框架梳理
一.中文: 1.Pycorrector:https://github.com/shibing624/pycorrector 当前主流的中文纠错框架,支持规则和端到端模型 2.FASPell:https ...
最新文章
- python小技巧-基于python本身
- 698. Partition to K Equal Sum Subsets
- 录像带转存电脑的方法_《波西亚时光》录像带使用方法介绍
- 正则表达式2--re方法--match()--search()
- Android进阶篇-Http协议
- 47-高级路由:BGP 镜子实验
- vim粘贴代码格式变乱
- cookie登录_使用UserAgent和Cookie安全登录Facebook账号[安全买号必读]
- IT项目建议书及可行性研究报告撰写格式
- 记账用哪个软件比较好?
- 计算机二进制转十进制怎么yun,二进制 十进制 十六进制
- 开启微信公众号定位服务器,微信公众号定位学会这几步就够了!
- ChatGPT指令大全(中文版)
- 3.7 使用吸管和颜色取样器工具 [Ps教程]
- 华为折叠x2是鸿蒙系统吗,华为mateX2发布,鸿蒙系统四月上线,matex2首批搭载。...
- 清空mysql数据库(适用虚拟主机)
- 【转】3xian之所在
- 默小伟网站开发帮助文档UI模板
- 静态代码检查工具-PMD
- Mysql关键字详解
热门文章
- 虚幻引擎图文笔记:蓝图函数库(Blueprint Function Library)和蓝图宏库(Blueprint Macro Library)
- Excel催化剂图表系列之品味IBCS瀑布图观察企业利润构成
- 如何用mysql创建股票数据库_mysql如何创建数据库
- WIN7系统PS CS5打开文件出现已停止工作的问题处理
- 技高一筹的9个让人受益终身的胜者思维,职场精英都在用!
- plc与单片机都有什么不同?
- Wetool免费版+配套vx+修复器/开卡机(底部附资源链接)
- 计算机主板复位电路的组成,主板复位电路及VRM电路原理分析.ppt
- spark面试题总结(大数据面试)
- iview样式修改Pooptip气泡框