本發(fā)明涉及自然語音處理和機器學(xué)習(xí)技術(shù)領(lǐng)域,尤其涉及一種輸入糾錯方法及裝置。
背景技術(shù):
目前用戶常常會通過中文搜索引擎或智能問答系統(tǒng)進行信息查詢,其中很大一部分查詢是以詞語的形式輸入的。以百度為代表的中文搜索引擎和以小i機器人為代表的智能問答系統(tǒng)均能對用戶輸入的中文詞語進行相應(yīng)的響應(yīng)和反饋。但是,當(dāng)用戶輸入錯誤的詞語時,主要有:同音別字、近音別字、形近別字、拼音、多字漏字等情況,以上搜索引擎或智能問答系統(tǒng)就可能會無法正確或有效處理此類詞語,致使用戶無法獲取需要的信息。例如,原詞為:火中取栗,對于存在同音別字、近音別字、拼音等錯誤的“火宗去li”或存在同音別字、多字漏字等錯誤的“火中去”,以上的搜索引擎或智能問答系統(tǒng)均無法正確處理。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是,提供一種輸入糾錯方法及裝置,對輸入的同音別字、近音別字、拼音、形近別字、多字漏字等情況進行有效的糾錯處理。
本發(fā)明采用的技術(shù)方案是,所述輸入糾錯方法,包括:
判斷輸入的詞語字符串是否為全拼音;
若是,則對所述詞語字符串的全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到第一糾錯結(jié)果;否則,對所述詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,將所述詞語字符串轉(zhuǎn)成全拼音,并對轉(zhuǎn)成的所述全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到第二糾錯結(jié)果。
進一步的,根據(jù)拼音反查表將糾錯后的全拼音反查為漢字;
所述方法還包括:預(yù)先建立拼音反查表,包括:
提供訓(xùn)練語料;
對訓(xùn)練語料進行分詞以得到詞語列表;
在詞語列表的基礎(chǔ)上利用拼音反查表生成工具生成拼音反查表。
進一步的,在分詞處理的結(jié)果中分詞個數(shù)大于1時,所述將所述詞語字符串轉(zhuǎn)成全拼音,包括:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
進一步的,所述方法還包括:預(yù)先建立詞頻表,包括:
提供訓(xùn)練語料;
對訓(xùn)練語料進行分詞以得到詞語列表;
采用統(tǒng)計的方式根據(jù)詞語列表得到詞頻表;
對任一詞語字符串的全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到糾錯結(jié)果,包括:
根據(jù)拼音反查表判斷所述任一詞語字符串的全拼音的拼寫是否正確;
若是,則根據(jù)所述任一詞語字符串的全拼音獲取同音的詞語列表,基于獲取的同音的詞語列表得到糾錯結(jié)果;
若否,則根據(jù)所述任一詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果。
進一步的,所述基于獲取的同音的詞語列表得到糾錯結(jié)果,包括:
判斷獲取的同音的詞語列表是否為空,若是,則得到的糾錯結(jié)果為空,否則將獲取的同音的詞語列表中的詞語作為糾錯結(jié)果;
所述根據(jù)所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果,包括:
依次計算所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度;
對于計算出的相似度大于設(shè)定相似度閾值的情況,將拼音反查表中的拼音對應(yīng)的詞語列表中的詞語作為糾錯結(jié)果。
進一步的,所述方法,還包括:
若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果。
進一步的,所述方法還包括:
根據(jù)第一糾錯結(jié)果或者第二糾錯結(jié)果進行相應(yīng)的提示。
進一步的,根據(jù)第一糾錯結(jié)果進行相應(yīng)的提示,包括:
判斷第一糾錯結(jié)果是否為空,若是,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串有誤,否則將糾錯結(jié)果中的詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶。
進一步的,根據(jù)第二糾錯結(jié)果進行相應(yīng)的提示,包括:
若第二糾錯結(jié)果為空,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串中的拼音有誤;
若第二糾錯結(jié)果中詞語的個數(shù)為1,則將第二糾錯結(jié)果中的詞語輸出以提示給用戶;
若第二糾錯結(jié)果中詞語的個數(shù)大于1,則根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式,并進行提示。
進一步的,所述根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式,并進行提示,包括:
分別計算第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度;
若計算出的第二糾錯結(jié)果中各詞語對應(yīng)的所述相似度數(shù)值均一致,則將第二糾錯結(jié)果中的各詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶,否則將第二糾錯結(jié)果中的各詞語按照相似度從大到小輸出設(shè)定個數(shù)的詞語以提示給用戶。
進一步的,所述輸入的詞語字符串中的漢字詞語字符串的獲取過程包括:在分詞處理的結(jié)果中分詞個數(shù)大于1的情況下,依次記錄所述輸入的詞語字符串的分詞中的所有漢字分詞并組成漢字詞語字符串。
本發(fā)明還提供一種輸入糾錯裝置,包括:
判斷模塊,用于判斷輸入的詞語字符串是否為全拼音;若是,則將所述詞語字符串的全拼音發(fā)送給糾錯模塊進行處理,得到第一糾錯結(jié)果;否則,將所述詞語字符串發(fā)送給分詞模塊進行分詞處理;
分詞模塊,用于對判斷模塊發(fā)來的詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,將所述詞語字符串發(fā)送給轉(zhuǎn)換模塊;
轉(zhuǎn)換模塊,用于將分詞模塊發(fā)來的詞語字符串轉(zhuǎn)成全拼音并將轉(zhuǎn)成的全拼音發(fā)送給糾錯模塊進行處理,得到第二糾錯結(jié)果;
糾錯模塊,用于對判斷模塊或者轉(zhuǎn)換模塊發(fā)來的全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到相應(yīng)的糾錯結(jié)果。
進一步的,所述糾錯模塊,具體用于:根據(jù)拼音反查表將糾錯后的全拼音反查為漢字;
所述裝置還包括:
建立模塊,用于:提供訓(xùn)練語料;對訓(xùn)練語料進行分詞以得到詞語列表;在詞語列表的基礎(chǔ)上利用拼音反查表生成工具生成拼音反查表。
進一步的,所述轉(zhuǎn)換模塊,具體用于:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
進一步的,所述建立模塊,還用于:采用統(tǒng)計的方式根據(jù)詞語列表得到詞頻表;
所述糾錯模塊,包括:
拼寫檢查單元,用于對任一詞語字符串的全拼音進行拼音糾錯處理時,根據(jù)拼音反查表判斷所述任一詞語字符串的全拼音的拼寫是否正確;若是,則調(diào)用第一處理單元,否則調(diào)用第二處理單元;
第一處理單元,用于根據(jù)所述任一詞語字符串的全拼音獲取同音的詞語列表,基于獲取的同音的詞語列表得到糾錯結(jié)果;
第二處理單元,用于根據(jù)所述任一詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果。
進一步的,所述第一處理單元,具體用于:
判斷獲取的同音的詞語列表是否為空,若是,則得到的糾錯結(jié)果為空,否則將獲取的同音的詞語列表中的詞語作為糾錯結(jié)果;
所述第二處理單元,具體用于:
依次計算所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度;對于計算出的相似度大于設(shè)定相似度閾值的情況,將拼音反查表中的拼音對應(yīng)的詞語列表中的詞語作為糾錯結(jié)果。
進一步的,所述分詞模塊,還用于:若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果。
進一步的,所述裝置還包括:
提示模塊,用于根據(jù)第一糾錯結(jié)果或者第二糾錯結(jié)果進行相應(yīng)的提示。
進一步的,所述提示模塊,具體用于:
判斷第一糾錯結(jié)果是否為空,若是,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串有誤,否則將糾錯結(jié)果中的詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶。
進一步的,所述提示模塊,具體用于:
若第二糾錯結(jié)果為空,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串中的拼音有誤;
若第二糾錯結(jié)果中詞語的個數(shù)為1,則將第二糾錯結(jié)果中的詞語輸出以提示給用戶;
若第二糾錯結(jié)果中詞語的個數(shù)大于1,則根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式,并進行提示。
進一步的,所述提示模塊,在根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式時,具體用于:
分別計算第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度;
若計算出的第二糾錯結(jié)果中各詞語對應(yīng)的所述相似度數(shù)值均一致,則將第二糾錯結(jié)果中的各詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶,否則將第二糾錯結(jié)果中的各詞語按照相似度從大到小輸出設(shè)定個數(shù)的詞語以提示給用戶。
進一步的,所述分詞模塊,還用于:在分詞處理的結(jié)果中分詞個數(shù)大于1的情況下,依次記錄所述輸入的詞語字符串的分詞中的所有漢字分詞并組成漢字詞語字符串,發(fā)送給所述提示模塊。
采用上述技術(shù)方案,本發(fā)明所述輸入糾錯方法及裝置至少具有下列優(yōu)點:
1、本發(fā)明提供的輸入糾錯方法中,拼音糾錯處理可有效處理同音別字、近音別字、拼音、形近別字、多字漏字等詞語輸入錯誤問題,中文字符相似度計算和拼音糾錯處理相結(jié)合可以進一步提高糾錯的準(zhǔn)確性。
2、本發(fā)明實施例中在建立詞語列表、拼音反查表和詞頻表的過程中,充分有效的利用訓(xùn)練語料所提供的詞語信息,能夠快速適用于不同領(lǐng)域的自定義詞語糾錯。
3、本發(fā)明巧妙地將相似度計算方法應(yīng)用于拼音字符的相似度計算和中文字符的相似度計算中,并采用了不同的評價指標(biāo),分別是在進行拼音字符的相似度計算時使用的相似度閾值、以及在向用戶提示糾錯結(jié)果時用到相似度從大到小排列后按照設(shè)定個數(shù)進行輸出,以得到比較準(zhǔn)確的計算結(jié)果和輸出結(jié)果。
4、本發(fā)明所提供的所述輸入糾錯方法及裝置,應(yīng)用于中文搜索引擎和智能問答系統(tǒng)中,可以顯著提高中文搜索引擎和智能問答系統(tǒng)中針對詞語輸入的信息查詢和問答的準(zhǔn)確率。
附圖說明
圖1為本發(fā)明第一實施例的輸入糾錯方法流程圖;
圖2為本發(fā)明第二實施例的輸入糾錯方法流程圖;
圖3為本發(fā)明第三實施例的輸入糾錯方法流程圖;
圖4為本發(fā)明第四實施例的輸入糾錯裝置組成結(jié)構(gòu)示意圖;
圖5為本發(fā)明第五實施例的輸入糾錯裝置組成結(jié)構(gòu)示意圖;
圖6為本發(fā)明第六實施例的輸入糾錯裝置組成結(jié)構(gòu)示意圖;
圖7為本發(fā)明第七實施例的基于分詞和相似度計算的輸入糾錯方法流程圖;
圖8為本發(fā)明第七實施例的基于分詞和相似度計算的輸入糾錯系統(tǒng)示意圖。
具體實施方式
為更進一步闡述本發(fā)明為達成預(yù)定目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實施例,對本發(fā)明進行詳細說明如后。
本發(fā)明第一實施例,一種輸入糾錯方法,如圖1所示,包括以下具體步驟:
步驟S101,判斷輸入的詞語字符串是否為全拼音;若是,則執(zhí)行步驟S102,否則,執(zhí)行步驟S103。
步驟S102,對所述詞語字符串的全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到第一糾錯結(jié)果,流程結(jié)束。
步驟S103,對所述詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,執(zhí)行步驟S104;若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果,流程結(jié)束。
步驟S104,將所述詞語字符串轉(zhuǎn)成全拼音。
具體的,步驟S104包括:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
步驟S105,對轉(zhuǎn)成的所述全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到第二糾錯結(jié)果,流程結(jié)束。
本發(fā)明實施例的所述輸入糾錯方法中,通過拼音糾錯處理,可有效處理出現(xiàn)同音別字、近音別字、拼音、形近別字、多字漏字等詞語輸入錯誤問題,將本發(fā)明實施例的所述方法應(yīng)用于中文搜索引擎和智能問答系統(tǒng)中,可以顯著提高中文搜索引擎和智能問答系統(tǒng)中針對詞語輸入的信息查詢和問答的準(zhǔn)確率。
本發(fā)明第二實施例,一種輸入糾錯方法,如圖2所示,包括以下具體步驟:
步驟S201,預(yù)先建立詞語列表、拼音反查表和詞頻表。
具體的,步驟S201包括:
提供訓(xùn)練語料;
對訓(xùn)練語料進行分詞以得到詞語列表;
在詞語列表的基礎(chǔ)上利用拼音反查表生成工具生成拼音反查表,采用統(tǒng)計的方式根據(jù)詞語列表得到詞頻表。
本發(fā)明實施例中在建立詞語列表、拼音反查表和詞頻表的過程中,充分有效的利用訓(xùn)練語料所提供的詞語信息,能夠快速適用于不同領(lǐng)域的自定義詞語糾錯。
步驟S202,判斷輸入的詞語字符串是否為全拼音;若是,則執(zhí)行步驟S203,否則,執(zhí)行步驟S204。
步驟S203,根據(jù)詞語列表、拼音反查表和詞頻表對所述詞語字符串的全拼音進行拼音糾錯處理,根據(jù)拼音反查表將糾錯后的全拼音反查為漢字,得到第一糾錯結(jié)果,流程結(jié)束。
步驟S204,對所述詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,執(zhí)行步驟S205;若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果,流程結(jié)束。
步驟S205,將所述詞語字符串轉(zhuǎn)成全拼音。
具體的,步驟S205包括:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
步驟S206,根據(jù)詞語列表、拼音反查表和詞頻表對轉(zhuǎn)成的所述全拼音進行拼音糾錯處理,根據(jù)拼音反查表將糾錯后的全拼音反查為漢字,得到第二糾錯結(jié)果,流程結(jié)束。
具體的,在步驟S203和步驟S206中,進行拼音糾錯處理、反查漢字以得到糾錯結(jié)果的方式均相同,這里統(tǒng)一進行詳細描述如下:
對任一詞語字符串的全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到糾錯結(jié)果,包括:
根據(jù)拼音反查表判斷所述任一詞語字符串的全拼音的拼寫是否正確;具體是用所述任一詞語字符串的全拼音在拼音反查表中進行比對查找,若有一致的,則表明拼寫正確,否則拼寫錯誤。
若是,則根據(jù)所述任一詞語字符串的全拼音獲取同音的詞語列表,基于獲取的同音的詞語列表得到糾錯結(jié)果;
若否,則根據(jù)所述任一詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果。
進一步的,所述基于獲取的同音的詞語列表得到糾錯結(jié)果,包括:
判斷獲取的同音的詞語列表是否為空,若是,則得到的糾錯結(jié)果為空,否則將獲取的同音的詞語列表中的詞語作為糾錯結(jié)果;
所述根據(jù)所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果,包括:
依次計算所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度;對于計算出的相似度大于設(shè)定相似度閾值的情況,將拼音反查表中的拼音對應(yīng)的詞語列表中的詞語作為糾錯結(jié)果。
下面以正確的原詞為“火中取栗”為例,介紹一下本發(fā)明實施例的所述方法的應(yīng)用過程:若用戶輸入存在近音別字且混有拼音的詞語字符串“火宗去li”,因為該詞語字符串中同時包含漢字和拼音,所以判定輸入的詞語字符串不是全拼音,然后對“火宗去li”進行分詞處理,得到的分詞為“火”“宗”“去”“l(fā)i”,由于分詞的個數(shù)大于1,將“火宗去li”轉(zhuǎn)成全拼音為“huozongquli”,再對“huozongquli”進行拼音糾錯處理,具體是首選判斷該全拼音拼寫是否正確,由于在拼音反查表中包含的都是正確的拼音,在拼音反查表中沒有找到“huozongquli”,故該全拼音拼寫錯誤,則根據(jù)“huozongquli”與拼音反查表中的每個拼音之間的相似度中最高者“huozhongquli”,得到與“huozhongquli”對應(yīng)的詞語“火中取栗”,以詢問用戶。
若用戶輸入全拼音的詞語字符串“huozhongquli”,因為該詞語字符串是全拼音,所以直接對該全拼音進行拼音糾錯處理,具體是在確定“huozhongquli”的拼音拼寫正確的情況下,根據(jù)該全拼音獲取同音的詞語列表,基于獲取的同音的詞語列表可以得到至少包含“火中取栗”的提示內(nèi)容,以詢問用戶。
若用戶輸入存在多字和近音別字的詞語字符串“火中去栗了”,由于該詞語字符串不是全拼音,對“火中取栗了”進行分詞處理,得到的分詞為“火”“中”“去”“栗”“了”,由于分詞的個數(shù)大于1,將“火中去栗了”轉(zhuǎn)成全拼音為“huozhongqulile”,再對“huozhongqulile”進行拼音糾錯處理,具體是首選判斷該全拼音拼寫是否正確,由于在拼音反查表中包含的都是正確的拼音,在拼音反查表中沒有找到“huozhongqulile”,故該全拼音拼寫錯誤,則根據(jù)“huozhongqulile”與拼音反查表中的每個拼音之間的相似度中最高者“huozhongquli”,得到與“huozhongquli”對應(yīng)的詞語“火中取栗”,以詢問用戶。
若用戶輸入存在漏字和近音別字的詞語字符串“火中去”,由于該詞語字符串不是全拼音,對“火中去”進行分詞處理,得到的分詞為“火”“中”“去”,由于分詞的個數(shù)大于1,將“火中去”轉(zhuǎn)成全拼音為“huozhongqu”,再對“huozhongqu”進行拼音糾錯處理,具體是首選判斷該全拼音拼寫是否正確,由于在拼音反查表中包含的都是正確的拼音,在拼音反查表中沒有找到“huozhongqu”,故該全拼音拼寫錯誤,則根據(jù)“huozhongqu”與拼音反查表中的每個拼音之間的相似度中最高者“huozhongquli”,得到與“huozhongquli”對應(yīng)的詞語“火中取栗”,以詢問用戶。
下面以正確的原詞為“十二生肖”為例,介紹一下本發(fā)明實施例的所述方法的應(yīng)用過程:若用戶輸入存在同音別字的詞語字符串“使二生效”,因為該詞語字符串不是全拼音,對“使二生效”進行分詞處理,得到的分詞為“使”“二”“生效”,由于分詞的個數(shù)大于1,將“使二生效”轉(zhuǎn)成全拼音為“shiershengxiao”,再對“shiershengxiao”進行拼音糾錯處理,具體是確定拼音正確時,找同音詞語列表,其中必然包含“十二生肖”,從而得到至少包含“十二生肖”的提示內(nèi)容,以詢問用戶。
若用戶輸入存在近音別字的詞語字符串“十而僧小”,因為該詞語字符串不是全拼音,對“十而僧小”進行分詞處理,得到的分詞為“十”“而”“僧”“小”,由于分詞的個數(shù)大于1,將“十而僧小”轉(zhuǎn)成全拼音為“shiersengxiao”,再對“shiersengxiao”進行拼音糾錯處理,具體是首選判斷該全拼音拼寫是否正確,由于在拼音反查表中包含的都是正確的拼音,在拼音反查表中沒有找到“shiersengxiao”,故該全拼音拼寫錯誤,則根據(jù)“shiersengxiao”與拼音反查表中的每個拼音之間的相似度中最高者“shiershengxiao”,得到與“shiershengxiao”對應(yīng)的詞語“十二生肖”,以詢問用戶。
本發(fā)明實施例的所述輸入糾錯方法中,通過拼音糾錯處理,可有效處理出現(xiàn)同音別字、近音別字、拼音、形近別字、多字漏字等詞語輸入錯誤問題,將本發(fā)明實施例的所述方法應(yīng)用于中文搜索引擎和智能問答系統(tǒng)中,可以顯著提高中文搜索引擎和智能問答系統(tǒng)中針對詞語輸入的信息查詢和問答的準(zhǔn)確率。
本發(fā)明第三實施例,一種輸入糾錯方法,如圖3所示,包括以下具體步驟:
步驟S201,預(yù)先建立詞語列表、拼音反查表和詞頻表。
具體的,步驟S201包括:
提供訓(xùn)練語料;
對訓(xùn)練語料進行分詞以得到詞語列表;
在詞語列表的基礎(chǔ)上利用拼音反查表生成工具生成拼音反查表,采用統(tǒng)計的方式根據(jù)詞語列表得到詞頻表。
步驟S202,判斷輸入的詞語字符串是否為全拼音;若是,則執(zhí)行步驟S203,否則,執(zhí)行步驟S204。
步驟S203,根據(jù)詞語列表、拼音反查表和詞頻表對所述詞語字符串的全拼音進行拼音糾錯處理,根據(jù)拼音反查表將糾錯后的全拼音反查為漢字,得到第一糾錯結(jié)果,執(zhí)行步驟S207。
步驟S204,對所述詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,執(zhí)行步驟S205;若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果,執(zhí)行步驟S207。
步驟S205,將所述詞語字符串轉(zhuǎn)成全拼音。
具體的,步驟S205包括:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
步驟S206,根據(jù)詞語列表、拼音反查表和詞頻表對轉(zhuǎn)成的所述全拼音進行拼音糾錯處理,根據(jù)拼音反查表將糾錯后的全拼音反查為漢字,得到第二糾錯結(jié)果,執(zhí)行步驟S207。
具體的,在步驟S203和步驟S206中,進行拼音糾錯處理、反查漢字以得到糾錯結(jié)果的方式均相同,這里統(tǒng)一進行詳細描述如下:
對任一詞語字符串的全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到糾錯結(jié)果,包括:
根據(jù)拼音反查表判斷所述任一詞語字符串的全拼音的拼寫是否正確;實際上就是,用所述任一詞語字符串的全拼音在拼音反查表中進行比對查找,若有一致的,則表明拼寫正確,否則拼寫錯誤。
若是,則根據(jù)所述任一詞語字符串的全拼音獲取同音的詞語列表,基于獲取的同音的詞語列表得到糾錯結(jié)果;
若否,則根據(jù)所述任一詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果。
進一步的,所述基于獲取的同音的詞語列表得到糾錯結(jié)果,包括:
判斷獲取的同音的詞語列表是否為空,若是,則得到的糾錯結(jié)果為空,否則將獲取的同音的詞語列表中的詞語作為糾錯結(jié)果;
所述根據(jù)所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果,包括:
依次計算所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度;對于計算出的相似度大于設(shè)定相似度閾值的情況,將拼音反查表中的拼音對應(yīng)的詞語列表中的詞語作為糾錯結(jié)果。
步驟S207,根據(jù)第一糾錯結(jié)果或者第二糾錯結(jié)果進行相應(yīng)的提示。
具體的,在步驟S207中,根據(jù)第一糾錯結(jié)果進行相應(yīng)的提示,包括:
判斷第一糾錯結(jié)果是否為空,若是,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串有誤,否則將糾錯結(jié)果中的詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶。
在步驟S207中,根據(jù)第二糾錯結(jié)果進行相應(yīng)的提示,包括:
1)若第二糾錯結(jié)果為空,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串中的拼音有誤;
2)若第二糾錯結(jié)果中詞語的個數(shù)為1,則將第二糾錯結(jié)果中的詞語輸出以提示給用戶;
3)若第二糾錯結(jié)果中詞語的個數(shù)大于1,則根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式,并進行提示。
進一步的,在上述的第3)種情況中,根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式,并進行提示,包括:
分別計算第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度;
若計算出的第二糾錯結(jié)果中各詞語對應(yīng)的所述相似度數(shù)值均一致,則將第二糾錯結(jié)果中的各詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶,否則將第二糾錯結(jié)果中的各詞語按照相似度從大到小輸出設(shè)定個數(shù)的詞語以提示給用戶。
在上述的第1)種和第3)種情況中,所述輸入的詞語字符串中的漢字詞語字符串的獲取過程包括:在分詞處理的結(jié)果中分詞個數(shù)大于1的情況下,依次記錄所述輸入的詞語字符串的分詞中的所有漢字分詞并組成漢字詞語字符串。
下面以正確的原詞為“火中取栗”為例,介紹一下本發(fā)明實施例的所述方法的應(yīng)用過程:
若用戶輸入存在近音別字且混有拼音的詞語字符串“火中確li”,因為該詞語字符串中同時包含漢字和拼音,所以判定輸入的詞語字符串不是全拼音,然后對“火中確li”進行分詞處理,得到的分詞為“火”“中”“確”“l(fā)i”,由于分詞的個數(shù)大于1,將“火中確li”轉(zhuǎn)成全拼音為“huozhongqueli”,再對“huozhongqueli”進行拼音糾錯處理,具體是首選根據(jù)拼音反查表判斷該全拼音拼寫是否正確,由于在拼音反查表中包含的都是正確的拼音,在拼音反查表中沒有找到“huozhongqueli”,故該全拼音拼寫錯誤,則根據(jù)“huozhongqueli”與拼音反查表中的每個拼音之間的相似度中最高者“huozhongquli”,得到與“huozhongquli”對應(yīng)的詞語“火中取栗”作為第二糾錯結(jié)果。假設(shè)第二糾錯結(jié)果中還包括“火種取栗”,接下來,用第二糾錯結(jié)果中的“火中取栗”、“火種取栗”分別與由“火中確li”的分詞中的所有漢字分詞組成的漢字詞語字符串“火中確”計算相似度,從而確定出“火中取栗”才是最終的提示內(nèi)容,以詢問用戶。
本發(fā)明實施例巧妙地將相似度計算方法應(yīng)用于拼音字符的相似度計算和中文字符的相似度計算中,并采用了不同的評價指標(biāo),分別是在進行拼音字符的相似度計算時使用的相似度閾值、以及在向用戶提示糾錯結(jié)果時用到相似度從大到小排列后按照設(shè)定個數(shù)進行輸出,以得到比較準(zhǔn)確的計算結(jié)果和輸出結(jié)果。
本發(fā)明實施例的所述輸入糾錯方法中,通過拼音糾錯處理和中文字符的相似度計算相結(jié)合,比第一、二實施例更加準(zhǔn)確、有效的處理同音別字、近音別字、拼音形近別字、多字漏字等詞語輸入錯誤問題,將本發(fā)明實施例的所述方法應(yīng)用于中文搜索引擎和智能問答系統(tǒng)中,可以顯著提高中文搜索引擎和智能問答系統(tǒng)中針對詞語輸入的信息查詢和問答的準(zhǔn)確率。
本發(fā)明第四實施例,與第一實施例對應(yīng),本實施例介紹一種輸入糾錯裝置,如圖4所示,包括以下組成部分:
1)判斷模塊401,用于判斷輸入的詞語字符串是否為全拼音;若是,則將所述詞語字符串的全拼音發(fā)送給糾錯模塊404進行處理,得到第一糾錯結(jié)果;否則,將所述詞語字符串發(fā)送給分詞模塊402進行分詞處理;
2)分詞模塊402,用于對判斷模塊401發(fā)來的詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,將所述詞語字符串發(fā)送給轉(zhuǎn)換模塊403;若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果。
3)轉(zhuǎn)換模塊403,用于將分詞模塊402發(fā)來的詞語字符串轉(zhuǎn)成全拼音并將轉(zhuǎn)成的全拼音發(fā)送給糾錯模塊404進行處理,得到第二糾錯結(jié)果;
具體的,轉(zhuǎn)換模塊403用于:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
4)糾錯模塊404,用于對判斷模塊401或者轉(zhuǎn)換模塊403發(fā)來的全拼音進行拼音糾錯處理,并將糾錯后的全拼音反查為漢字,得到相應(yīng)的糾錯結(jié)果。
本發(fā)明實施例的所述輸入糾錯裝置,通過拼音糾錯處理,可有效處理出現(xiàn)同音別字、近音別字、拼音、形近別字、多字漏字等詞語輸入錯誤問題,將本發(fā)明實施例的所述裝置應(yīng)用于中文搜索引擎和智能問答系統(tǒng)中,可以顯著提高中文搜索引擎和智能問答系統(tǒng)中針對詞語輸入的信息查詢和問答的準(zhǔn)確率。
本發(fā)明第五實施例,與第二實施例對應(yīng),本實施例介紹一種輸入糾錯裝置,如圖5所示,包括以下組成部分:
1)建立模塊501,用于:提供訓(xùn)練語料;對訓(xùn)練語料進行分詞以得到詞語列表;在詞語列表的基礎(chǔ)上利用拼音反查表生成工具生成拼音反查表,采用統(tǒng)計的方式根據(jù)詞語列表得到詞頻表。
2)判斷模塊502,用于判斷輸入的詞語字符串是否為全拼音;若是,則將所述詞語字符串的全拼音發(fā)送給糾錯模塊505進行處理,得到第一糾錯結(jié)果;否則,將所述詞語字符串發(fā)送給分詞模塊503進行分詞處理;
3)分詞模塊503,用于對判斷模塊502發(fā)來的詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,將所述詞語字符串發(fā)送給轉(zhuǎn)換模塊504;若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果。
4)轉(zhuǎn)換模塊504,用于將分詞模塊503發(fā)來的詞語字符串轉(zhuǎn)成全拼音并將轉(zhuǎn)成的全拼音發(fā)送給糾錯模塊505進行處理,得到第二糾錯結(jié)果;
具體的,轉(zhuǎn)換模塊504用于:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
5)糾錯模塊505,用于對判斷模塊502或者轉(zhuǎn)換模塊504發(fā)來的全拼音進行拼音糾錯處理,并根據(jù)拼音反查表將糾錯后的全拼音反查為漢字,得到相應(yīng)的糾錯結(jié)果。
具體的,糾錯模塊505,包括:
拼寫檢查單元51,用于對任一詞語字符串的全拼音進行拼音糾錯處理時,根據(jù)拼音反查表判斷所述任一詞語字符串的全拼音的拼寫是否正確;若是,則調(diào)用第一處理單元51,否則調(diào)用第二處理單元52;具體是用所述任一詞語字符串的全拼音在拼音反查表中進行比對查找,若有一致的,則表明拼寫正確,否則拼寫錯誤。
第一處理單元52,用于根據(jù)所述任一詞語字符串的全拼音獲取同音的詞語列表,基于獲取的同音的詞語列表得到糾錯結(jié)果;獲取同音的詞語列表會用到建立模塊501所建立的詞語列表和拼音反查表。
第二處理單元53,用于根據(jù)所述任一詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果。
進一步的,第一處理單元52用于:
判斷獲取的同音的詞語列表是否為空,若是,則得到的糾錯結(jié)果為空,否則將獲取的同音的詞語列表中的詞語作為糾錯結(jié)果;
第二處理單元53用于:
依次計算所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度;對于計算出的相似度大于設(shè)定相似度閾值的情況,將拼音反查表中的拼音對應(yīng)的詞語列表中的詞語作為糾錯結(jié)果。
本發(fā)明實施例巧妙地將相似度計算應(yīng)用于拼音字符的相似度計算和中文字符的相似度計算中,并采用了不同的評價指標(biāo),分別是在進行拼音字符的相似度計算時使用的相似度閾值、以及在向用戶提示糾錯結(jié)果時用到基于中文相似度從大到小排列糾錯結(jié)果中的詞語進行輸出,以得到比較準(zhǔn)確的計算結(jié)果和輸出結(jié)果。
本發(fā)明實施例的所述輸入糾錯裝置,通過拼音糾錯處理,可有效處理出現(xiàn)同音別字、近音別字、拼音、形近別字、多字漏字等詞語輸入錯誤問題,將本發(fā)明實施例的所述裝置應(yīng)用于中文搜索引擎和智能問答系統(tǒng)中,可以顯著提高中文搜索引擎和智能問答系統(tǒng)中針對詞語輸入的信息查詢和問答的準(zhǔn)確率。
本發(fā)明第六實施例,與第三實施例對應(yīng),本實施例介紹一種輸入糾錯裝置,如圖6所示,包括以下組成部分:
1)建立模塊501,用于:提供訓(xùn)練語料;對訓(xùn)練語料進行分詞以得到詞語列表;在詞語列表的基礎(chǔ)上利用拼音反查表生成工具生成拼音反查表,采用統(tǒng)計的方式根據(jù)詞語列表得到詞頻表。
2)判斷模塊502,用于判斷輸入的詞語字符串是否為全拼音;若是,則將所述詞語字符串的全拼音發(fā)送給糾錯模塊505進行處理,得到第一糾錯結(jié)果;否則,將所述詞語字符串發(fā)送給分詞模塊503進行分詞處理;
3)分詞模塊503,用于對判斷模塊502發(fā)來的詞語字符串進行分詞處理,在分詞處理的結(jié)果中分詞個數(shù)大于1時,將所述詞語字符串發(fā)送給轉(zhuǎn)換模塊504;若分詞處理的結(jié)果中分詞的個數(shù)為1,則將用戶輸入的詞語字符串作為第二糾錯結(jié)果。
4)轉(zhuǎn)換模塊504,用于將分詞模塊503發(fā)來的詞語字符串轉(zhuǎn)成全拼音并將轉(zhuǎn)成的全拼音發(fā)送給糾錯模塊505進行處理,得到第二糾錯結(jié)果;
具體的,轉(zhuǎn)換模塊504用于:
在不改變所述詞語字符串中各分詞出現(xiàn)順序的情況下,將所述詞語字符串中的漢字分詞轉(zhuǎn)換成拼音,再與所述詞語字符串中已有的拼音一起,組成所述詞語字符串對應(yīng)的全拼音。
5)糾錯模塊505,用于對判斷模塊502或者轉(zhuǎn)換模塊504發(fā)來的全拼音進行拼音糾錯處理,并根據(jù)拼音反查表將糾錯后的全拼音反查為漢字,得到相應(yīng)的糾錯結(jié)果。
具體的,糾錯模塊505,包括:
拼寫檢查單元51,用于對任一詞語字符串的全拼音進行拼音糾錯處理時,根據(jù)拼音反查表判斷所述任一詞語字符串的全拼音的拼寫是否正確;若是,則調(diào)用第一處理單元51,否則調(diào)用第二處理單元52;具體是用所述任一詞語字符串的全拼音在拼音反查表中進行比對查找,若有一致的,則表明拼寫正確,否則拼寫錯誤。
第一處理單元52,用于根據(jù)所述任一詞語字符串的全拼音獲取同音的詞語列表,基于獲取的同音的詞語列表得到糾錯結(jié)果;獲取同音的詞語列表會用到建立模塊501所建立的詞語列表和拼音反查表。
第二處理單元53,用于根據(jù)所述任一詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度,確定出糾錯結(jié)果。
進一步的,第一處理單元52用于:
判斷獲取的同音的詞語列表是否為空,若是,則得到的糾錯結(jié)果為空,否則將獲取的同音的詞語列表中的詞語作為糾錯結(jié)果;
第二處理單元53用于:
依次計算所述詞語字符串的全拼音與拼音反查表中的每個拼音之間的相似度;對于計算出的相似度大于設(shè)定相似度閾值的情況,將拼音反查表中的拼音對應(yīng)的詞語列表中的詞語作為糾錯結(jié)果。
6)提示模塊506,用于根據(jù)第一糾錯結(jié)果或者第二糾錯結(jié)果進行相應(yīng)的提示。
具體的,提示模塊506一方面用于:
判斷第一糾錯結(jié)果是否為空,若是,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串有誤,否則將糾錯結(jié)果中的詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶。
提示模塊506另一方面用于:
若第二糾錯結(jié)果為空,則提示用戶所輸入的詞語字符串所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的詞語字符串中的拼音有誤;
若第二糾錯結(jié)果中詞語的個數(shù)為1,則將第二糾錯結(jié)果中的詞語輸出以提示給用戶;
若第二糾錯結(jié)果中詞語的個數(shù)大于1,則根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式,并進行提示。
進一步的,提示模塊506在根據(jù)第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度確定將第二糾錯結(jié)果中的各詞語向用戶進行提示的方式時,用于:
分別計算第二糾錯結(jié)果中各詞語與所述輸入的詞語字符串中的漢字詞語字符串之間的相似度;
若計算出的第二糾錯結(jié)果中各詞語對應(yīng)的所述相似度數(shù)值均一致,則將第二糾錯結(jié)果中的各詞語按照在詞頻表中的詞頻從大到小的排列輸出設(shè)定個數(shù)的詞語以提示給用戶,否則將第二糾錯結(jié)果中的各詞語按照相似度從大到小輸出設(shè)定個數(shù)的詞語以提示給用戶。
在本發(fā)明實施例中,分詞模塊503,還用于:在分詞處理的結(jié)果中分詞個數(shù)大于1的情況下,依次記錄所述輸入的詞語字符串的分詞中的所有漢字分詞并組成漢字詞語字符串,發(fā)送給提示模塊506。
本發(fā)明實施例巧妙地將相似度計算方法應(yīng)用于拼音字符的相似度計算和中文字符的相似度計算中,并采用了不同的評價指標(biāo),分別是在進行拼音字符的相似度計算時使用的相似度閾值、以及在向用戶提示糾錯結(jié)果時用到相似度從大到小排列后按照設(shè)定個數(shù)進行輸出,以得到比較準(zhǔn)確的計算結(jié)果和輸出結(jié)果。
本發(fā)明實施例的所述輸入糾錯裝置,通過拼音糾錯處理和中文字符的相似度計算相結(jié)合,比第四、五實施例更加準(zhǔn)確、有效的處理同音別字、近音別字、拼音形近別字、多字漏字等詞語輸入錯誤問題,將本發(fā)明實施例的所述裝置應(yīng)用于中文搜索引擎和智能問答系統(tǒng)中,可以顯著提高中文搜索引擎和智能問答系統(tǒng)中針對詞語輸入的信息查詢和問答的準(zhǔn)確率。
本發(fā)明第七實施例,本實施例是在上述實施例的基礎(chǔ)上,結(jié)合附圖7~8介紹一個本發(fā)明的應(yīng)用實例。
本發(fā)明實施例提供一種基于分詞和相似度計算的輸入糾錯方法及系統(tǒng),可以用于解決用戶在輸入詞語時可能會發(fā)生的因為同音別字、近音別字、形近別字、拼音、多字漏字等導(dǎo)致的詞語輸入錯誤問題,從而提高用戶查詢的準(zhǔn)確率,使用戶得到所需要的信息。
如圖7所示,為實現(xiàn)上述的目的,本發(fā)明實施例提供了一種基于分詞和相似度計算的輸入糾錯方法,包括:
步驟1:輸入待查的詞語字符串。
步驟2:判斷詞語糾錯模型是否已構(gòu)建,如果是則進入步驟4,否則進入步驟3。
步驟3:根據(jù)訓(xùn)練語料構(gòu)建詞語糾錯模型。
步驟4:根據(jù)詞語糾錯模型獲取詞語列表、詞頻表和拼音反查表。該拼音反查表是指根據(jù)拼音反查中文詞語的列表。
步驟5:判斷所輸入的詞語字符串是否為全拼音,如果是則進入步驟6,否則進入步驟9。
步驟6:對所輸入的詞語字符串進行拼音糾錯處理,得到詞語糾錯結(jié)果列表;
步驟7:判斷詞語糾錯結(jié)果列表是否為空,如果是,則進入步驟8,否則進入步驟18;
步驟8:提示用戶所輸入的拼音所對應(yīng)的漢字詞語數(shù)目超過一個或者用戶所輸入的拼音有誤,進入步驟20;
步驟9:對所輸入的詞語字符串進行分詞處理;
步驟10:判斷分詞處理結(jié)果中分詞的個數(shù)是否等于1,如果是則進入步驟11,否則表明分詞的個數(shù)大于1,進入步驟12;
步驟11:將分詞處理結(jié)果中的分詞輸出,并提示用戶所輸入的詞語沒有錯誤,進入步驟20;
步驟12:按順序記錄所輸入的詞語字符串中出現(xiàn)的中文字符,將所輸入的詞語字符串轉(zhuǎn)換為全拼音;
步驟13:對轉(zhuǎn)換后的全拼音字符串進行拼音糾錯處理,得到詞語糾錯結(jié)果列表;
步驟14:判斷詞語糾錯結(jié)果列表是否為空,如果是則進入步驟8,否則進入步驟15;
步驟15:判斷詞語糾錯結(jié)果列表中的詞語個數(shù)是否為1,如果是則進入步驟18,否則進入步驟16;
步驟16:計算詞語糾錯結(jié)果列表中的詞語和步驟12中所記錄的中文字符之間的相似度;
步驟17:判斷詞語糾錯結(jié)果列表中的各詞語對應(yīng)的相似度值是否一樣,如果是則進入步驟18,否則進入步驟19;
步驟18:按照所得到的詞語糾錯結(jié)果列表中的詞語在詞頻表中的詞頻從大到小進行結(jié)果輸出并提示用戶,進入步驟20;
步驟19:提示并輸出相似度值最大的詞語,輸入糾錯流程結(jié)束;
步驟20:輸入糾錯流程結(jié)束。
優(yōu)選地,所述步驟3中的詞語糾錯模型的構(gòu)建,主要包括:
步驟3.1:判斷訓(xùn)練語料的分詞結(jié)果文件是否存在,如果是則進入步驟3.3,否則進入步驟3.2;
步驟3.2:對訓(xùn)練語料進行分詞并將分詞結(jié)果保存至分詞結(jié)果文件;
步驟3.3:基于分詞結(jié)果文件統(tǒng)計詞語列表和詞頻表;
步驟3.4:判斷拼音反查文件是否存在,如果是則進入步驟3.5,否則進入步驟3.6;
步驟3.5:讀取拼音反查表,進入步驟3.7;
步驟3.6:在詞語列表的基礎(chǔ)上利用拼音反查工具獲取拼音反查表,并保存至拼音反查文件中;
步驟3.7:詞語糾錯模型構(gòu)建完成。
優(yōu)選地,所述步驟6和步驟13中的拼音糾錯處理,主要包括:
步驟6.1:接收所輸入的全拼音字符串;
步驟6.2:判斷拼音拼寫是否正確,如果是則進入步驟6.3,否則進入步驟6.10;
步驟6.3:根據(jù)拼音獲取同音詞語列表;
步驟6.4:判斷獲取的同音詞語列表是否為空,如果是則進入步驟6.8,否則進入步驟6.6;
步驟6.5:輸出空的同音詞語列表作為詞語糾錯結(jié)果列表,進入步驟6.10;
步驟6.6:根據(jù)詞頻表按詞頻從大到小重新排序所獲取的詞語列表;
步驟6.7:輸出獲取的詞語列表中設(shè)定個數(shù)的詞語作為詞語糾錯結(jié)果列表,進入步驟6.10;
步驟6.8:計算所輸入的拼音分別與拼音反查表中的拼音之間的相似度,并按相似度大小排序;
步驟6.9:獲取相似度大于設(shè)定閾值的近音詞語列表,輸出獲取的近音詞語列表中設(shè)定個數(shù)的詞語作為詞語糾錯結(jié)果列表;
步驟6.10:拼音糾錯處理結(jié)束。
為實現(xiàn)上述的目的,本發(fā)明還提供了一種基于分詞和相似度計算的中文詞語糾錯系統(tǒng),采用下述的技術(shù)方案。
如圖8所示,一種基于分詞和相似度計算的中文詞語糾錯系統(tǒng),包括:文本輸入模塊、中文分詞模塊、拼音轉(zhuǎn)化模塊、詞語糾錯模型構(gòu)建模塊、相似度計算模塊、拼音糾錯處理模塊、糾錯結(jié)果篩選模塊和用戶提示模塊;
所述的文本輸入模塊,提供一個文本輸入框,用于接收用戶輸入詞語字符串;
所述的中文分詞模塊,用于對訓(xùn)練語料進行分詞以獲取詞語列表,以及用于對文本輸入模塊中所輸入的詞語字符串進行分詞;
所述的拼音轉(zhuǎn)化模塊,用于提供拼音轉(zhuǎn)換功能,對詞語列表進行拼音轉(zhuǎn)換以得到拼音反查表,以及對文本輸入模塊中所輸入的詞語進行拼音轉(zhuǎn)換從而得到拼音字符串;
所述的詞語糾錯模型構(gòu)建模塊,用于構(gòu)建詞語糾錯模型,接收中文分詞模塊對訓(xùn)練語料處理后的詞語列表和統(tǒng)計相應(yīng)的詞頻表,并將詞語列表保存至分詞結(jié)果文件中,以及接收拼音轉(zhuǎn)化模塊所得到的拼音反查表并保存至拼音反查文件中;
本發(fā)明實施例中提供的詞語糾錯模型構(gòu)建模塊,可以有效充分利用訓(xùn)練語料所提供的詞語信息,并從中獲取到詞語列表、詞頻表和拼音反查表,可快速適應(yīng)不同領(lǐng)域的自定義詞語糾錯模型的構(gòu)建。
所述的相似度計算模塊,采用了基于編輯距離的相似度計算方法,用于對拼音字符串和詞語糾錯模型構(gòu)建模塊中所得到的拼音反查表中的拼音進行相似度計算并取其中大于設(shè)定閾值的詞語集合,以及對拼音糾錯處理模塊所得到的詞語糾錯結(jié)果列表中各詞語與所述用戶輸入詞語字符串中的漢字詞語字符串之間的相似度并取其中相似度值最大的一個或幾個詞語;
所述的拼音糾錯處理模塊,用于對拼音轉(zhuǎn)換模塊所得到的拼音字符串進行糾錯處理,包括同音詞語處理、近音詞語處理和拼音處理,從而獲得詞語糾錯結(jié)果列表;
所述的糾錯結(jié)果篩選模塊,用于對拼音糾錯處理模塊所得到的詞語糾錯結(jié)果列表進行篩選、排序等處理,可分別按照相似度大小和詞頻大小進行排序輸出供用戶提示模塊所使用的詞語糾錯結(jié)果列表;
所述的用戶提示模塊,用于對中文詞語糾錯結(jié)果進行輸出并提示用戶,包括不存在錯誤時提示用戶輸入的詞語沒有錯誤、詞語糾錯結(jié)果列表為空時提示用戶輸入拼音有誤或不是輸入的詞語不只一個,按照糾錯結(jié)果篩選模塊處理后的詞語糾錯結(jié)果列表輸出。
通過具體實施方式的說明,應(yīng)當(dāng)可對本發(fā)明為達成預(yù)定目的所采取的技術(shù)手段及功效得以更加深入且具體的了解,然而所附圖示僅是提供參考與說明之用,并非用來對本發(fā)明加以限制。