好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Python中文糾錯的簡單實現

Python中文糾錯的簡單實現

熱門標簽:預覽式外呼系統 銀川電話機器人電話 電銷機器人錄音要學習什么 外賣地址有什么地圖標注 企業彩鈴地圖標注 上海正規的外呼系統最新報價 如何地圖標注公司 煙臺電話外呼營銷系統 長春極信防封電銷卡批發

介紹

這篇文章主要是用 Python 實現了簡單的中文分詞的同音字糾錯,目前的案例中只允許錯一個字,自己如果有興趣可以繼續優化下去。具體步驟如下所示:

  • 先準備一個文件,里面每一行中放一個中文分詞,我這里的文件是下面代碼中的 /Users/wys/Desktop/token.txt ,你們可以改成自己,再運行代碼
  • 將構建一個前綴樹類,實現插入功能,將所有的標準分詞都插入到前綴樹中,另外實現一個搜索功能,用來搜索分詞
  • 將輸入的錯誤分詞中的每個字都找出 10 個同音字,將每個字都用 10 個同音字替換,結果可以最多得到 n*10 個分詞,n 為分詞的長度,因為有的音可能沒有 10 個同音字。
  • 將這些分詞都經過前綴樹的查找,如果能搜到,將其作為正確糾正就過返回

代碼

import re,pinyin
from Pinyin2Hanzi import DefaultDagParams
from Pinyin2Hanzi import dag

class corrector():
    def __init__(self):
        self.re_compile = re.compile(r'[\u4e00-\u9fff]')
        self.DAG = DefaultDagParams()

    # 將文件中的詞讀取
    def getData(self):
        words = []
        with open("/Users/wys/Desktop/token.txt") as f:
            for line in f.readlines():
                word = line.split(" ")[0]
                if word and len(word) > 2:
                    res = self.re_compile.findall(word)
                    if len(res) == len(word): ## 保證都是漢字組成的分詞
                        words.append(word)
        return words

    # 將每個拼音轉換成同音的 10 個候選漢字,
    def pinyin_2_hanzi(self, pinyinList):
        result = []
        words = dag(self.DAG, pinyinList, path_num=10)
        for item in words:
            res = item.path  # 轉換結果
            result.append(res[0])
        return result

    # 獲得詞經過轉換的候選結結果
    def getCandidates(self, phrase):
        chars = {}
        for c in phrase:
            chars[c] = self.pinyin_2_hanzi(pinyin.get(c, format='strip', delimiter=',').split(','))
        replaces = []
        for c in phrase:
            for x in chars[c]:
                replaces.append(phrase.replace(c, x))
        return set(replaces)

    # 獲得糾錯之后的正確結果
    def getCorrection(self, words):
        result = []
        for word in words:
            for word in self.getCandidates(word):
                if Tree.search(word):
                    result.append(word)
                    break
        return result

class Node:
    def __init__(self):
        self.word = False
        self.child = {}


class Trie(object):
    def __init__(self):
        self.root = Node()

    def insert(self, words):
        for word in words:
            cur = self.root
            for w in word:
                if w not in cur.child:
                    cur.child[w] = Node()
                cur = cur.child[w]

            cur.word = True

    def search(self, word):
        cur = self.root
        for w in word:
            if w not in cur.child:
                return False
            cur = cur.child[w]

        if cur.word == False:
            return False
        return True

if __name__ == '__main__':
    # 初始化糾正器
    c = corrector()
    # 獲得單詞
    words = c.getData()
    # 初始化前綴樹
    Tree = Trie()
    # 將所有的單詞都插入到前綴樹中
    Tree.insert(words)
    # 測試
    print(c.getCorrection(['專塘街道','轉塘姐道','轉塘街到']))

結果

打印結果為:
['轉塘街道', '轉塘街道', '轉塘街道']

可以看出都糾正成功了,有一定的效果 ,之后會繼續優化。

到此這篇關于Python中文糾錯的簡單實現的文章就介紹到這了,更多相關Python中文糾錯內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python容錯的前綴樹實現中文糾錯

標簽:盤錦 珠海 西寧 湖北 上饒 宜昌 潮州 佳木斯

巨人網絡通訊聲明:本文標題《Python中文糾錯的簡單實現》,本文關鍵詞  Python,中文,糾,錯的,簡單,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python中文糾錯的簡單實現》相關的同類信息!
  • 本頁收集關于Python中文糾錯的簡單實現的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 男女人下面视频| 女仆扒开腿秘?让人桶的app| 日本福利小视频| 成人精品综合免费视频| 女生和男生差差| 好湿?好紧?好多水还| 乱码AAA一区二区| 张丽大战3黑人40cm| 久久国产精品佐山爱| 古装一级无遮挡毛片免费观看| 国产呦小泬泬99精品| 婷婷丁香人妻天天爽久久| 午夜成私人影院在线观看| 少爷被调教室跪趴sm男男| 天天拍夜夜爽| 国内精品久久久久影院蜜芽| 国产性一乱一性一伧一色| 亚洲美女黄视频| 北朝鲜高级卖春女| 亚洲AV无码精品一区二区久久| 日本三级中国三级99人妇网站| 国产精品无码视频一级毛片视频| 伊人222成人综合网| 日本边添边摸边做边爱喷水| 啊啊啊用力啊| 美女扒开腿秘?让男人桶爽91 | 淫欲的代价电影| 久久精品美女| 69影院少妇在线观看| 中文幕无线码一二三四区 | 国产欧美綜合一区| 偷窥女厕视频在线播放| 午夜激情福利网| 娇妻当面被健身教练h| 国产一级又黄又爽又色大片QQ号| 女生肌肌放在男生肌肌里视频app| 免费www视频| 国产激情综合五月久久| 女女高潮抽搐喷潮18禁网站| z0000性欧美| 完整版色戒|