Проблема преобразования ханзи в пиньинь довольно сложна. Есть много символов ханзи, которые имеют несколько представлений пиньинь, в зависимости от контекста. Сравните 长大 (пиньинь: чжан да) с 长城 (пиньинь: чан чэн). По этой причине односимвольное преобразование часто фактически бесполезно, если у вас нет системы, которая выводит несколько возможностей. Существует также проблема сегментации слова, которая также может влиять на представление пиньинь. Хотя, возможно, вы уже знали это, я подумал, что важно это сказать.
Тем не менее, Adso Package содержит как сегментатор, так и вероятностный аннотатор пиньинь, основанный на превосходной библиотеке Adso. Однако, чтобы привыкнуть, требуется некоторое время, и оно может быть намного больше, чем вы ищете (в прошлом я обнаружил, что он был слишком громоздким для моих нужд). Кроме того, нигде не существует публичного API, и его C ++ ...
Для недавнего проекта, поскольку я работал с географическими названиями, я просто использовал API Google Translate (в частности, неофициальный порт Java, который, по крайней мере, для обычных существительных, обычно делает хорошую работу по переводу в пиньинь. Проблема часто используемых альтернативных систем транслитерации, таких как "Гонконг" для того, что должно быть "XiangGang". Учитывая все это, Google Translate довольно ограничен, но он предлагает начало. Я не слышал о pinyin4j раньше, но после Играя с ним только сейчас, я обнаружил, что он менее чем оптимален - хотя он выводит список потенциальных кандидатов на пиньинь, он не пытается статистически определить их вероятность. Есть метод, который возвращает одно представление, но он будет скоро будет прекращено, так как в настоящее время он возвращает только первую латинизацию, что не является наиболее вероятным. Там, где программа, кажется, преуспевает, это преобразование между латинизацией и общая конфигурируемость.
Короче говоря, ответ может быть любым из них, в зависимости от того, что вам нужно. Своеобразные существительные? Переводчик Google. Нужна статистика? Adso. Готовы принять списки кандидатов без контекстной информации? Pinyin4j.