演算法 拼音匹配演算法(支援多音字)

2022-03-10 15:15:20 字數 1660 閱讀 6908

之前講過漢字注音問題,也發過關於拼音匹配問題,但是沒法處理多音字問題

例如:漢字:不能說的秘密

拼音:bu|fou nai|neng shuo|shui|yue de|di bi|mi mi

當我們輸入:bunengshuodebimi,bunegnshuodemimi,bnsdmm,bnengyuedebimi,buneshdimmi等都可以匹配成功  

這裡很多字都有多音字,要判斷出每個字的確切的讀音比較困難。這裡我們就對每一種讀音都進行匹配

思路:這裡對每個字的拼音首字母進行匹配

每個字的首字母為:  b|f n s|y d b|m m

這裡假設模式串為:nengshuodemimi  (假設為target)

在首字母中找到 target[0],匹配後面的首字母

然後找到匹配的首字母,遍歷一遍拼音,看是否包含模式串,如果包含,則返回真

說的不是很清楚,看**把

先發乙個獲取漢字拼音的類,拼音資料檔案在後面

public

static

class

pinyinhelper}}

private

static

string getpinyin(char

ch)

public

static

string getpinyin(string

hanzis)

]));

return

builder.tostring();

}//是否是漢字

private

static

bool ischarchinese(char

c)

return

false

; }

}

接下來是匹配演算法

private

bool isfirstpinyincontains(string pinyin, char

ch)

}return

false

; }

private

bool ispinyincontaintarget(string pinyins, string target, int start, int

end)}}

}return

false

; }

private

bool pinyinmatch(string pinyins, string

target)

}end =j;

//判斷從start到end的拼音是否包含target

if(ispinyincontaintarget(pinyins, target, start, end))}}

return

false

; }

演算法有些不足,大家有什麼建議不

拼音資料檔案:

漢字 包括多音字 轉換拼音和簡碼的處理

將漢字轉換成拼音,由於漢字有多音字,所以轉換拼音是讓人很頭疼的乙個問題,我想到了乙個解決這個問題的辦法,就是將每個字的音節都讀出來,然後進行拼音重組,這樣總有一組拼音是正確的,然後在根據全文搜尋技術,就能找到想要的記錄了,本人不才自己寫了個方法,貼出了,跟大家分享一下,希望多批評指正!using s...

vue整合漢字轉拼音(附多音字解決方案)

1 結果顯示 輸出首字母 n 輸出拼音 nihaoma 2 js呼叫 import hanzitopinyin from hanzitopinyin export default class message extends vue 3 js實現 import vue from vue export ...

33 字元匹配演算法

33 實現乙個挺高階的字元匹配演算法 給一串很長字串,要求找到符合要求的字串,例如目的串 123 1 3 2 12 3 這些都要找出來 其實就是類似一些和諧系統。參考這題的真正意思就是,給你乙個目標串,如 123 只要乙個字串裡面同時包含1 2和3,那麼這個字元 串就匹配了。系統越和諧,說明錯殺的可...