Преобразования китайских иероглифов в пиньинь

Как преобразовать С китайские символы to Ханьюй пиньинь?

Э. Г.

你 --> бесплатный прослушивания

马 --> Mǎ


Подробнее:

либо акценты, либо числовые формы hanyu pinyin приемлемы, числовая форма является моим предпочтением.

предпочтительна библиотека Java, однако библиотека на другом языке, которая может быть помещена в оболочку, также ЛАДНО.

Я хотел бы всех, кто имеет лично такие библиотеки, прежде чем рекомендовать или комментировать, с точки зрения его качества/ reliabilitty.

4 ответов


проблема преобразования hanzi в pinyin является довольно сложной. Есть много символов hanzi, которые имеют несколько представлений pinyin, в зависимости от контекста. Сравнение 长大 (pinyin: zhang da) с 长城 (pinyin: chang cheng). По этой причине односимвольное преобразование часто фактически бесполезно, если у вас нет системы, которая выводит несколько возможностей. Существует также проблема сегментации слов, которая также может повлиять на представление pinyin. Хотя, возможно, вы уже зная это, я подумал, что это важно сказать.

об этом сказал Adso Пакет содержит как сегментатор, так и вероятностный аннотатор pinyin, основанный на отличной библиотеке Adso. Это занимает некоторое время, чтобы привыкнуть, хотя, и может быть намного больше, чем вы ищете (я нашел в прошлом, что он был слишком громоздким для моих нужд). Кроме того, нигде нет общедоступного API и его C++ ...

для недавнего проекта, потому что я работая с топонимами, я просто использовал API Google Translate (в частности, неофициальный Java-порт, который, по крайней мере для обычных существительных, обычно хорошо переводит на pinyin. Проблема заключается в широко используемых альтернативных системах транслитерации, таких как" Гонконг "для того, что должно быть"Сянган". Учитывая все это, Google Translate довольно ограничен, но он предлагает начать. Я не слышал о pinyin4j раньше, но после игры с ним только что, я обнаружил, что это меньше, чем оптимальный-хотя он выводит список потенциальных романизаций пиньинь, он не пытается статистически определить их вероятность. Существует метод возвращения одного представления, но он вскоре будет постепенно отменен, поскольку в настоящее время он возвращает только первую латинизацию, а не наиболее вероятную. Где программа, кажется, делают хорошо с преобразования между транслитерации и общую настраиваемость.

короче говоря, ответ может быть любым из них, в зависимости от Что вам нужно. Своеобразные имена собственные? Google Translate. Нужна статистика? Адсо. Готовы принять кандидатов без контекста? Pinyin4j.


в Python попробуйте

from cjklib.characterlookup import CharacterLookup
cjk = CharacterLookup('C')
cjk.getReadingForCharacter(u'北', 'Pinyin')

вы получили бы

['běi', 'bèi']

отказ от ответственности: я автор этой библиотеки.


для Java я бы попробовал библиотека pinyin4j


базовая технология продает набор лингвистических технологий, которые, среди прочего, могут производить пиньинь для китайских слов. Поскольку вы указали, что предпочитаете открытый исходный код, и поскольку, если вам нужно только преобразование pinyin, я не могу сказать вам, что наш материал имеет огромное преимущество, я оставлю вас, чтобы найти нас, если альтернатива с открытым исходным кодом от @mjv не подходит.