文本预处理 |(4)文本纠错

一般有两种文本纠错的类型:

1.Non-word拼写错误

首先看一下Non-word的拼写错误,这种错误表示此词汇本身在字典中不存在,比如把“要求”误写为“药求”,把“correction”误拼写为“corrction”。寻找这种错误很简单,例如分完词以后找到哪个词在词典中不存在,那么这个词就可能是错误拼出来的的词。

操作步骤
• 找到候选词
• 接着基于特定算法找出与错拼词关联最高的一个或多个单词作为纠正选项

如何确定候选项呢?
• 英文:编辑距离
• 中文:拼写相近、字形相近

如何找出最关联项:可以根据贝叶斯定理,得到如下表达式:

P(候选项∣错误单词)∝P(候选项)∗P(错误单词∣候选项)

“此选项本身在语料中出现的可能性”和“人们意图打候选项时会错打成错误单词的可能性”的乘积。前者可视为uni-gram语言模型,需要计算词语的出现频次,当然也可以扩张至二阶或三阶,比如计算“错误单词左边单词+候选项+错误单词右边单词”在语料中的出现情况。

2.Real-word拼写错误

单词本身没有错误,但是不符合上下文语境,常常涉及语法语义层面的错误,比如把“我现在在公司里”错写成“我现在在公式里”。这种错误比上面以一种错误纠错更加困难。

操作步骤
• 首先针对每个单词根据编辑距离、同音词、近形词等方式选出候选项(也包括单词本身)
• 接下来计算基于候选项的语言模型,以及在候选项情况下出现错误单词的条件概率;如果综合计算而得单词本身出现在此语境中的概率较大,则不进行纠正,否则推荐纠正项。
• 注:在实际应用中不可能对每个词进行排查,可以应用语言模型等方式对句子进行粗粒度的初步筛查(困惑度)。

这里举个小例子,只给定少量英语语料,如何设计一个简单的英文纠错系统(Non-word)?

首先给定一个思路:

首先全部单词变成小写,并且计算他们出现的次数,再除以单词总数(字典长度)作为该词的频率,对输入的单词在词典里进行匹配,至少0次编辑,最多2次编辑。找出编辑距离最小的,当编辑距离为最小的不只一个时,找出所有单词里的概率最大的作为输出。

对于Real-Word可以先确定候选项,然后通过语言模型(一阶/二阶)进行统计。

注:编辑距离:就是指对单词中的字母进行增删改操作

下一节将对上面的问题进行一个实战案例

Reference

1.胡盼盼《自然语言处理从入门到实战》

2.文本领域的数据预处理技术、深度学习训练技巧以及Debug经验

### Python 文本纠错方法及库 #### 使用 `pycorrector` 库进行文本纠错 为了实现中文文本的自动纠错,可以使用专门设计用于此目的的 `pycorrector` 库。通过安装并导入这个库,能够方便地检测和纠正输入字符串中存在的常见错误。 ```python from pycorrector import Corrector m = Corrector() corrected_sent = m.correct("少先队员因该为老人让坐") print(corrected_sent) # 输出: ('少先队员应该为老人让座', [('该', '应该', 7, 9), ('坐', '座', 10, 11)]) ``` 上述代码展示了如何利用 `pycorrector` 来修正一段含有明显错字的文字[^5]。 #### 自然语言处理工具的应用 除了特定于某种语言的专用库外,还可以借助更广泛的自然语言处理技术来辅助完成文本纠错的任务。例如,在英文环境中,可以通过调用像 `TextBlob` 或者 `language_tool_python` 这样的第三方包来进行语法分析以及建议性的修改;而在中文环境下,则可能涉及到分词、词性标注等一系列预处理工作,这通常需要用到诸如 `jieba` 分词这样的基础组件[^3]。 需要注意的是,当尝试执行某些涉及编码转换的操作时可能会碰到类似 `'str' object has no attribute 'decode'` 的异常提示,这是因为 Python 3.x 版本已经移除了对字符串对象直接解码的支持,因此应当确保所使用的函数接口与当前环境相匹配。 对于更加复杂的场景下(比如多语种混合),则往往需要综合运用多种技术和资源共同作用才能达到较好的效果。此外,随着机器学习算法的发展,基于模型预测的方式也成为了一条可行路径之一[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值