2010-01-08 2 views

ответ

2

Я не знаю, поддерживает ли API AJAX Language API конверсию на пиньинь, но если они этого не делают, на самом деле не слишком сложно выполнить сходящееся преобразование. (Обратное преобразование из пиньиня в Hanzi (символы) является более сложным много, потому что пиньинь очень потери.)

сделать преобразование себя, возьмите Unihan.zip, а downloaable Verion в Unihan database. Файл, который вам действительно нужен, - 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») является юникода элемент кода, средний столбец является именем атрибута, а также право column - значение атрибута. Вы можете извлечь атрибуты khanyuPinyin или атрибуты kMandarin. Они кодируют в основном одну и ту же информацию - просто переходите к тому, что вам более удобно для вас. (hǎo == HAO3, hào == HAO4, если это не очевидно)

Вы заметите, что для некоторых символов (например, пример, который я выбрал здесь) есть несколько произношений. Это один сложный бит. В зависимости от того, насколько точно вы хотите, вы можете уйти, просто используя перечисленную первую руманизацию, так как они находятся в порядке уменьшения частоты. (На самом деле это одно из мест, где khanyuPinyin немного отличается от kMandarin - на самом деле он имеет несколько списков произношений, каждый из которых упорядочен по частоте.)

+0

Да, я тоже об этом думал, но получение данных из Unihan - это еще один запрос к db, и это не лучшее решение для длинных слов. Я уверен, что API Google AJAX Language API использует тот же словарь, что и Google Translate, но вопрос в том, как получить пиньинь, а также сам перевод? –

+0

Я согласен с тем, что было бы неплохо получить эту информацию из API, который вы уже используете, если он есть. Это скорее «план Б». Я не уверен, что вы имеете в виду, но вы можете хранить данные, которые вы извлекаете из Unihan на клиенте. Взгляните на http://xenomachina.com/toys/pinyin2hanzi.html, страницу на моем сайте, которая выполняет обратное сопоставление. Он имеет файл js со всем отображением pinyin-to-hanzi (извлеченный из Unihan.txt), и это всего лишь 50K. –

+0

Спасибо за предложение! –

0

Google translate включает в себя «показать/скрыть латинизацию», которая ЛУЧШЕ, чем UNIHAN по двум причинам. Во-первых, известные слова логически сгруппированы вместе надлежащим образом (по крайней мере, он пытается это сделать). Во-вторых, китайские иероглифы имеют более одного возможного произношения. Нет никакой тривиальной проблемы, чтобы выяснить, какая пиньинь транслитерация является правильной. Это то, что делает механизм перевода.

1

Вы можете обмануть API, чтобы дать вам Pinyin, переведя с китайского на китайский. Образец link.

Смежные вопросы