關於漢語拼音分隔符規則

漢語拼音小學語文教學的一個重要組成部分,是幫助學生識字、閱讀、學好普通話的工具。要進一步提高漢語拼音教學效率,讓學生在輕鬆、快樂的環境中學好拼音,就要激發學生學習興趣,教給學習方法,活躍思維、靈活運用。以下是小編整理的漢語拼音分隔符規則,歡迎閱讀。

遠久時代,拼音分割是靠人手動輸入分隔符實現的,比如輸入最常用的單引號來分割,但實際使用時要求輸入分隔符非常不人性化,現在基本上都是連續輸入拼音字母,由程序自動判斷分割。如輸入dandingpinyin將被自動分割成dandingpinyin,單引號是不用輸入的

●拼音分割初版

爲了正確分割,首先得知道什麼是正確的拼音,有了正確的拼音組合之後就能做最最基本的分割了。爲此搜尋了幾番,雖然網上有教師羅列教學用的拼音組合,但最終這個事情還是自己做了,網絡就是這麼回事,拿東西易,要好東西難。實際上有了足夠的拼音詞庫的話,把全部單字拼音都拿出來再去除重複就行了,當然爲了簡拼,單個字母也是要的。

map("pin") = True

map("qin") = True

map("cou") = True

map("dou") = True

map("zhui") = True

map("nou") = True

map("b") = True

……

…… 查看這個組合,最長的單字拼音是6個字母,如zhuang,因此,簡單的初級算法也就有了:從6到1,依次截取左邊字母判斷,如果在拼音組合集裏有,那就作爲一個單字拼音分割,注意到也可能手動輸入了分隔符,自然是要先按存在的分隔符分割了。這樣,初版分割也就完成。

●拼音分割自動除錯版

初版使用下來,不足之處還是不少,最不該的是正確的拼音輸入被誤分割成錯誤的拼音。比如:輸入yinguquexi本想得到yinguquexi(因故缺席),卻被魯莽的分割成yinguquexi導致錯誤。

這是無法忍受的使用體驗,淡定的解決辦法是打硬仗,yingu就應該分割成yingu,cangu就應該分割成cangu,zhani應該是zhani,zhanv應該是zhanv,如此等等,全部手工組合判斷後硬編碼爲必須如此分割,終於,錯誤分割的情況不再有了。 mapCustBreakPy("ani") = "a"

mapCustBreakPy("anu") = "a"

mapCustBreakPy("anv") = "a"

mapCustBreakPy("angu") = "an"

mapCustBreakPy("eni") = "e"

mapCustBreakPy("enu") = "e"

mapCustBreakPy("env") = "e"

mapCustBreakPy("engu") = "en"

……

……

……

●拼音分割智能版

在拼音輸入的過程中,還有種模棱兩可的情況,比如:輸入qinang想得到qinang(氣囊),不料卻被分割成qinang,屢屢發生這種情況需要手動輸入分隔符修正,這也是種非常爛的輸入體驗。

兩個都是正確的單字拼音,程序怎麼知道哪個是是你要的.呢?只能是告訴它了。也許有已實現的很好的算法存在,但我不知道,有了除錯版經歷,自然是做法沿用,愚公移山,以簡馭繁,約1千多種類似組合,全部用輸入法試算後人工判斷應該如何分割更好,然後硬編碼告訴程序按我說的做。完成後相比之下智能版效果確實不同凡響。 mapCustBreakPy("yingai") = "yin"

mapCustBreakPy("yingao") = "yin"

mapCustBreakPy("yingei") = "yin"

mapCustBreakPy("jingao") = "jin"

mapCustBreakPy("jingan") = "jin"

……

……

……

●拼音分割增強版

智能版所達到的智能效果是建立在人工判斷的基礎上,在人工判斷的過程中,會出現一種“兩全其美”的情況,就是這麼分是好的那麼分也很不錯,人都爲難更何況程序呢。比如:nana到底是nana(娜娜)還是nana(難啊),yingan應該是yingan(陰暗)還是yingan(陰乾),更有xian是單字(先)好還是xian(西安)好呢,拿捏不定,只能按正常處理不去分割了。

但爲了有更好的輸入體驗,兩全其美的事情還是要做一下,思來想去選了一個折中之計,比如輸入xian,雖然不做分割,但又非要顯示“西安”,這時就把“西安”兩個字當一個漢字用,定義“西安”的拼音爲xian,如此應付一翻,結果還不賴。當然這終究不是完美之策,還是可以有辦法自動的更智能的增強的,閒時再議了。