2010-01-08 65 views

回答

2

我不知道Google AJAX語言API是否支持轉換爲拼音,但如果他們不這樣做,實際上並不難做一個可通過的轉換。 (反向轉換,從拼音到漢字(文字)是更加棘手,因爲拼音是非常有損的。)

自己做轉換,搶Unihan.zip,在Unihan database的downloaable優化版本。您實際關心的文件是Unihan_Readings.txt。它還包含一堆你不關心的東西,而且它也以非常低效的方式存儲,所以不要太擔心大文件的大小。你應該提取你關心的東西並以更有效的方式存儲它。

在它,你會發現製表符分隔行是這樣的:

U+597D kCantonese  hou2 hou3 
U+597D kDefinition  good, excellent, fine; well 
U+597D kHangul   호 
U+597D kHanyuPinlu  hao3(6060) hao1(142) hao4(115) 
U+597D kHanyuPinyin 21028.010:hǎo,hào 
U+597D kJapaneseKun KONOMU SUKU YOI 
U+597D kJapaneseOn  KOU 
U+597D kKorean   HO 
U+597D kMandarin  HAO3 HAO4 
U+597D kTang   *xɑ̀u *xɑ̌u 
U+597D kVietnamese  háo 
U+597D kXHC1983  0445.030:hǎo 0448.030:hào 

左邊一欄(「U + 597D」)是Unicode碼點,中間一列是屬性名稱,右側列是屬性值。您可以提取kHanyuPinyin屬性或kMandarin屬性。他們基本上編碼了相同的信息 - 只要選擇一種更容易處理的格式即可。 (hǎo== HAO3,hào== HAO4,如果不是很明顯)

你會注意到對於一些字符(例如我在這裏選擇的例子)有多個發音。這是一個棘手的問題。根據您想要的精度,您可能只能使用列出的第一個羅馬化,因爲它們按照頻率遞減的順序排列。 (實際上,這是k漢語拼音與kMandarin有點不同的地方之一 - 它實際上有多個發音列表,每個發音列表都按頻率排序。)

+0

是的,我也在想這個,但從Unihan獲取數據是對db的另一個查詢,它不是長單詞的最佳解決方案。我很確定Google AJAX Language API使用與Google Translate相同的詞典,但問題是如何檢索拼音以及翻譯本身? – 2010-01-08 19:11:57

+0

我同意,如果已經使用了API,那麼從API獲取此信息會很好。這更像是「B計劃」。我不確定你指的是什麼類型的數據庫,但是你可以將你從Unihan提取的數據存儲在客戶端。看看http://xenomachina.com/toys/pinyin2hanzi.html,這是我的網站上做反向映射的頁面。它有一個帶有整個拼音到漢字映射的js文件(從Unihan.txt中提取),它只有50K。 – 2010-01-08 19:42:36

+0

感謝您的建議! – 2010-01-08 19:56:19

0

谷歌翻譯包括「顯示/隱藏羅馬化」,它比UNIHAN有兩個原因。首先,以正確的方式將已知單詞在邏輯上組合在一起(至少它試圖做到這一點)。其次,漢字有不止一種可能的發音。找出哪個拼音是合適的音譯並不是一個小問題。這就是翻譯引擎的功能。

1

您可以通過將中文翻譯成中文來欺騙API以提供拼音。樣本link