拼写纠错

拼写纠错步骤主要检查并改正两类文本错误,即单词的拼写错误(书写错误)和单词的语法使用错误。拼写错误纠正,首先检测词库外的单词识别为拼写错误单词,然后找出词库中与错误单词编辑距离最小的词作为改正项,替换它。而语法使用错误纠正,需借助语言模型实现。

1.1 单词拼写错误纠正实现

1.1.1 单词拼写错误纠正的原理性方法


编辑距离计算法方法:

import sys
from collections import defaultdictclass StrEditDistance():"""计算两英文字符串的编辑距离"""# 初始化def __init__(self, edit_costs={'insert':1, 'delete':1, 'replace':1}):self.str1 = ''self.str2 = ''self.c_dic = defaultdict(int)   # 这是最稳定的DP结果记录数据结构self._edit_costs = edit_costs# 动态规划核心程序def editCostFun(self, i, j):# 判断是否已计算过if self.c_dic[str(i)+','+str(j)] == -1:# 基础条件if i*j==0 and i+j==0:self.c_dic[str(i)+','+str(j)] = 0elif i*j==0 and i+j>0:self.c_dic[str(i)+','+str(j)] = sys.maxsize# 循环条件else:if self.str1[:i]==self.str2[:j]:self.c_dic[str(i)+','+str(j)] = 0else:self.c_dic[str(i)+','+str(j)] = min([self._edit_costs['insert'] + self.editCostFun(i, j-1),self._edit_costs['insert'] + self.editCostFun(i-1, j),self._edit_costs['insert'] + self.editCostFun(i-1, j-1)])return self.c_dic[str(i)+','+str(j)]# 动规结果应用外壳def transform(self, str1, str2):# 初始化self.str1 = str1self.str2 = str2m = len(self.str1)n = len(self.str2)for i in range(m+1):for j in range(n+1):self.c_dic[str(i)+','+str(j)] = -1  # 数值极小时容易出现内存溢出,导致数值出现错误#return self.editCostFun(m, n)#
sed  = StrEditDistance()
sed.transform('app', 'apple')

1.1.2 单词拼写错误纠正的工程实现方法


与给定字符串指定编辑距离的新字符串生成代码:

# 与给定字符串指定编辑距离的新字符串生成方法
def gen_editOne_str(str_: str):"""生成所有与给定字符串,编辑距离为1的字符串"""letters = 'abcdefghijklmnopqrstuvwxyz'splits = [(str_[:i], str_[i:]) for i in range(len(str_)+1)]inserts = [L+c+R for L,R in splits for c in letters]deletes = [L+R[1:] for L,R in splits]replaces = [L+c+R[1:] for L,R in splits for c in letters]return set(inserts + deletes + replaces)def gen_editTwo_str(str_: str):"""生成所有与给定字符串,编辑距离为2的字符串"""return {edTwo_str for edOne_str in gen_editOne_str(str_) for edTwo_str in gen_editOne_str(edOne_str)}

文本预处理:拼写纠错相关推荐

  1. NLP-文本处理:基本技术【命名实体识别、分词、拼写纠错、停用词、词性标注】、文本序列化、文本向量化、文本语料的数据分析、文本特征处理(Ngram特征添加、文本长度规范)、数据增强

    分词(tokenization):英文通过空格或者标点符号,就可以将词分开:而中文的分词会涉及很多问题(未登录词问题.分词歧义问题.分词不一致问题),所以会有各种不同分词的算法. 清洗:我们需要对文本 ...

  2. NLP预处理阶段----拼写纠错实战

    拼写纠错流程 仅限拼写上的纠错,暂不去进行语法层次上的纠错. I like play football. 本文暂不纠错. 数据集: spell-errors.txt 正确:错误1,错误2- 其他错误给 ...

  3. NLP-文本处理:拼写纠错【非词(编辑距离)、真词(编辑距离...)候选词 -> “噪音通道模型”计算候选词错拼成待纠错词的似然概率 -> N-gram模型评估候选词组成的语句合理性】

    一.贝叶斯公式 1.单事件 P(Ax∣B)P(A_x|B)P(Ax​∣B)=P(AxB)P(B)=P(B∣Ax)×P(Ax)P(B)=P(B∣Ax)×P(Ax)∑i=0n[P(B∣Ai)∗P(Ai)] ...

  4. python结巴分词去掉停用词、标点符号、虚词_NLP自然语言处理入门-- 文本预处理Pre-processing...

    引言 自然语言处理NLP(nature language processing),顾名思义,就是使用计算机对语言文字进行处理的相关技术以及应用.在对文本做数据分析时,我们一大半的时间都会花在文本预处理 ...

  5. 基于TF-IDF算法,来创建自己的词典库(文本预处理并结合关键词库)

    TF-IDF自定义词典库的设计以及IDF的统计 什么是TF-IDF? 哎呀,能看到这篇个人日志,估计你早已明白tf-idf了吧.下面简单啰嗦一下凑字数. tf:是指当前文本中出现这个单词的频次,在这个 ...

  6. 基于 BK 树的中文拼写纠错候选召回

    最近在研究中文拼写纠错,在查阅资料的时候看到了这篇文章<从编辑距离.BK树到文本纠错 - JadePeng - 博客园>,觉得 BK 树挺有意思的,决定深入研究一下,并在其基础上重新整理一 ...

  7. SpellBERT:预训练模型与中文拼写纠错

    作者 | 王嘉宁 整理 | NewBeeNLP 大家好,这里是NewBeeNLP.中文拼写纠错在搜索引擎.问答系统中作为入口模块,对其有着至关重要的作用.拼写纠错,即,给定一个自然语言的句子,识别出其 ...

  8. 拼写纠错(Spelling Correct)技术方案总结

    目前在做日语纠错任务,主要是为了解决公司query召回率低的问题,目前可行的方案有下面几个: 一个是科大讯飞的那个gector模型 ,他主要是利用了bert或者Robert来做特征提取,然后会在最后接 ...

  9. 中文拼写纠错_中英文拼写纠错开源框架梳理

    一.中文: 1.Pycorrector:https://github.com/shibing624/pycorrector 当前主流的中文纠错框架,支持规则和端到端模型 2.FASPell:https ...

  10. U1C2 文本预处理

    U1C2 Text pre-processing 一.正则表达式 - Regular Expressions 1.基本正则表达式模式 Basic Regular Expression Patterns ...

最新文章

  1. python数字计算公式_Python中数字以及算数运算符的相关使用
  2. centos7 安装SSH
  3. java的svn插件maver_项目版本管理工具---MAVENSVN
  4. 简单干净的C#方法设计案例:SFCUI.AjaxValue()之三
  5. Android 学习笔记【基础扫盲篇】
  6. Mysql 引优化分析
  7. windows程序设计之简单界面入门
  8. Lync部署之Lync Mobile服务器端的外网设置
  9. C语言(二十三)auto自动变量
  10. 名帖289 董其昌 行书《千字文》
  11. 漫画 | Code Review快把我逼疯了!
  12. apmserv中 php版本,APMServ5.2.6的PHP版本升级到5.3、5.4版本的方法
  13. 领芯微基于LCM32F037吹风筒方案
  14. 05-3. 六度空间 (30)
  15. boost哪些库需要编译
  16. 348个实用电路图大全
  17. 卖了43.2万美元的AI画作,其实是借鉴程序员代码的“山寨货”?
  18. 龙贝格算法求解椭球周长
  19. 人工智能学习-用apt卸载软件(7)
  20. HBuilder 学习

热门文章

  1. python随机生成一个整数n、求s=1+2+3_随机数字生成与数据杜撰—Python、Stata、R和Excel同步实现(附代码)...
  2. yourshelf是什么意思中文_yourself是什么意思
  3. 不怕汗水与晃动的运动耳机推荐,六款专业的运动耳机
  4. 快速了解电力IEC104协议规约
  5. mindspore比pytorch快?是的
  6. TrollStore 永久自签ipa软件
  7. 编译错误:invalid types ‘int[int]‘ for array subscrip-markdown编辑器
  8. elite php,Elite Chat (开源在线客服系统)
  9. diskpart给u盘分区
  10. 深度解析PHP数组函数array_merge