Конвертировать китайские иероглифы в Ханью пиньинь - PullRequest
6 голосов
/ 06 декабря 2010

Как конвертировать из китайских иероглифов в ханью пиньинь?

Например

你 -> Nǐ

马 -> Mǎ


Подробнее:

Допустимы либо акценты, либо числовые формы ханью пиньинь, числовая формаpreference.

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

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

Ответы [ 4 ]

5 голосов
/ 16 декабря 2010

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

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

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

Короче говоря, ответ может быть любым из них, в зависимости от того, что вам нужно. Своеобразные существительные? Переводчик Google. Нужна статистика? Adso. Готовы принять списки кандидатов без контекстной информации? Pinyin4j.

2 голосов
/ 21 мая 2012

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

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

Вы получите

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

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

1 голос
/ 08 декабря 2010

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

1 голос
/ 06 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...