Python中文纠错的简单实现

更新时间:2023-06-21 17:59:44 阅读: 评论:0

Python中⽂纠错的简单实现
介绍
这篇⽂章主要是⽤ Python 实现了简单的中⽂分词的同⾳字纠错,⽬前的案例中只允许错⼀个字,⾃⼰如果有兴趣可以继续优化下去。具体步骤如下所⽰:
先准备⼀个⽂件,⾥⾯每⼀⾏中放⼀个中⽂分词,我这⾥的⽂件是下⾯代码中的 /Urs/wys/ ,你们可以改成⾃⼰,再运⾏代码
将构建⼀个前缀树类,实现插⼊功能,将所有的标准分词都插⼊到前缀树中,另外实现⼀个搜索功能,⽤来搜索分词将输⼊的错误分词中的每个字都找出 10 个同⾳字,将每个字都⽤ 10 个同⾳字替换,结果可以最多得到 n*10 个分词,n 为分词的长度,因为有的⾳可能没有 10 个同⾳字。
将这些分词都经过前缀树的查找,如果能搜到,将其作为正确纠正就过返回
代码
import re,pinyin
from Pinyin2Hanzi import DefaultDagParams
from Pinyin2Hanzi import dag
class corrector():
def __init__(lf):
<_compile = re.compile(r'[\u4e00-\u9fff]')
lf.DAG = DefaultDagParams()
# 将⽂件中的词读取
def getData(lf):
words = []
龙吟虎啸的意思
with open("/Urs/wys/") as f:
for line adlines():
word = line.split(" ")[0]
if word and len(word) > 2:
res = lf.re_compile.findall(word)
if len(res) == len(word): ## 保证都是汉字组成的分词
女性经常头痛words.append(word)
return words
# 将每个拼⾳转换成同⾳的 10 个候选汉字,
def pinyin_2_hanzi(lf, pinyinList):
result = []
看透人生的句子words = dag(lf.DAG, pinyinList, path_num=10)
for item in words:
res = item.path  # 转换结果
result.append(res[0])
return result
# 获得词经过转换的候选结结果
def getCandidates(lf, phra):
chars = {}
for c in phra:
chars[c] = lf.pinyin_2_(c, format='strip', delimiter=',').split(','))
replaces = []
for c in phra:
for x in chars[c]:
replaces.place(c, x))
return t(replaces)
# 获得纠错之后的正确结果
def getCorrection(lf, words):泰狮金鱼
result = []
for word in words:
for word Candidates(word):
if Tree.arch(word):
result.append(word)
break
return result
class Node:
def __init__(lf):
lf.word = Fal
lf.child = {}
class Trie(object):
清华保安def __init__(lf):
< = Node()碳的化学性质
def inrt(lf, words):
for word in words:
cur = lf.root
for w in word:
if w not in cur.child:
cur.child[w] = Node()
cur = cur.child[w]
cur.word = True
def arch(lf, word):
cur = lf.root
for w in word:
if w not in cur.child:
return Fal
cur = cur.child[w]
if cur.word == Fal:
return Fal
return True
if __name__ == '__main__':
# 初始化纠正器
c = corrector()
# 获得单词
words = c.getData()
# 初始化前缀树
Tree = Trie()
# 将所有的单词都插⼊到前缀树中
Tree.inrt(words)
# 测试
Correction(['专塘街道','转塘姐道','转塘街到']))
结果
打印结果为:
['转塘街道', '转塘街道', '转塘街道']
酸烂肉可以看出都纠正成功了,有⼀定的效果,之后会继续优化。
黑暗系
到此这篇关于Python中⽂纠错的简单实现的⽂章就介绍到这了,更多相关Python中⽂纠错内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

本文发布于:2023-06-21 17:59:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1048678.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结果   分词   实现   纠错
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图