2010-11-10 45 views
2

我期待將帶有重音符號(例如:Nínhǎo)的拼音轉換爲以數字/ ASCII形式(例如:Nin2 hao1)書寫的拼音。將帶有口音的漢語拼音轉換爲數字形式

有沒有人知道任何圖書館,最好是PHP?或者熟悉中文/拼音足以發表評論?

我開始自己寫一篇比較簡單的文章,但我不會說中文,也不完全理解單詞分隔時應該怎樣劃分的規則。

我能寫,其轉換譯者:

Nín hǎo. Wǒ shì zhōng guó rén ==>Nin2 hao3. Wo3 shi4 zhong1 guo2 ren2

但你如何處理的話像下面這樣 - 他們得到了空間分成多個單詞,或你插嘴的字中的音色編號(如果有,在哪裏?): huā shíjiānwèishénmeyuèláiyuèshēngbìng

回答

5

解析拼音時沒有空格分隔每個單詞的問題是會有歧義。例如,以中國古代首都的名字長安:Cháng'ān(注意消歧義撇號)。如果我們去掉撇號,但是這可以用兩種方式解釋:Chán gānCháng ān。一箇中國人會告訴你,第二個更有可能,這取決於當然的背景,但是你的計算機無法做到這一點。

假設沒有歧義,和所有的輸入都有效,我會做它的方式會是這個樣子:

  1. 創建口音摺疊功能
  2. 創建有效拼音的數組(你應該好好利用它從維基百科頁面拼音)
  3. 匹配每個單詞有效拼音
  4. 檢查名單提前到下一個字時,有關於屬於下一個單詞的最後一個字符的可能性不確定性,如:
 
shēngbìng 
    ^Does this 'g' belong to the next word? 

無論如何,音調的數值表示,並且正確的標號來表示每個口音的正確定位在上拼音Wikipeda文章的這一部分覆蓋相當好。您可能還想看看IMEs如何完成他們的工作。

+0

我希望我能+2這個關於歧義的解釋。 – erjiang 2010-11-11 03:42:19

+0

所以你會說,首先尋找最長的音節,貪婪,如在這裏找到:http://pinyin.info/rules/initials_finals.html?那麼這對我提供的示例輸入是否正確(假設沒有歧義)? 'hua1 shi2jian1','wei4shen2me5','yue4lai2yue4'和'sheng1bing4' - 基本上,在列出的每個「音節」之間注入數字,並保持原來的間距? – philfreo 2010-11-11 20:21:49

+1

長安在拼音中是專門爲解決歧義寫成的。 – cababunga 2010-11-11 21:10:42

2

間距應保持不變,但你有色調的編號不正確。 nin2 hao3。 Wo3 shi4 zhong1 guo2 ren2。

wèishénme變成wei4shen2me。

  1. 刪除由映射變音符號「āáǎà」到「一個」等
  2. 使用簡單的最大匹配算法,拆分化合物成音節(僅存在418個左右普通話音節)。
  3. 追加數字(您必須記住您刪除了什麼樣的標記)並將音節重新複合爲複合詞。
+0

+1因爲聽起來很棒。不知道它是否正確。 – JustSid 2010-11-10 22:18:10

+0

你對一些音調數字是正確的。我在我的帖子中糾正了這個問題。但你能詳細說明間距嗎?在我的例子中,間距應該如何工作?如果有些單詞在單詞中應該有數字(而不僅僅是末尾),我怎麼知道在哪裏注入它們? – philfreo 2010-11-11 20:10:17

+0

優秀的解釋 - 我從http://pinyin.info/rules/initials_finals.html中提取409,並使用貪婪算法。我對伊江的回答的評論是否正確?最後,將「複合」稱爲「單詞」是錯誤的嗎? – philfreo 2010-11-12 05:59:16