Le problème de la conversion de hanzi en pinyin est assez difficile. Il y a beaucoup de caractères de hanzi qui ont plusieurs représentations de pinyin, selon le contexte. Comparez 长大 (pinyin: zhang da) à 长城 (pinyin: chang cheng). Pour cette raison, la conversion d'un seul caractère est souvent inutile, sauf si vous disposez d'un système qui génère plusieurs possibilités. Il y a aussi le problème de la segmentation des mots, qui peut aussi affecter la représentation du pinyin. Même si vous le saviez peut-être déjà, j'ai pensé qu'il était important de le dire. Cela dit, le Adso Package contient à la fois un segmenter et un annotateur probabiliste de pinyin, basé sur l'excellente bibliothèque Adso. Il faut du temps pour s'y habituer, et peut être beaucoup plus grand que ce que vous cherchez (j'ai trouvé dans le passé que c'était un peu trop volumineux pour mes besoins). En outre, il ne semble pas y avoir d'API publique nulle part, et son C++ ...
Pour un projet récent, parce que je travaillais avec des noms de lieux, j'ai simplement utilisé l'API Google Traduction (en particulier, le java non officiel port, qui, pour les noms communs au moins, fait un bon travail de traduction en pinyin.Le problème est de systèmes de translittération alternatifs couramment utilisés, tels que "Hong Kong" pour ce qui devrait être "XiangGang". est assez limité, mais il offre un début.Je n'avais pas entendu parler de pinyin4j avant, mais après avoir joué avec elle tout à l'heure, j'ai trouvé que c'est moins qu'optimal - alors qu'il sort une liste de romanisations possibles de pinyin candidat qu'il fait pas de tentative de statistiquement déterminer leur probabilité.Il existe une méthode pour retourner une seule représentation, mais il sera bientôt éliminé, car il ne renvoie actuellement que le premier romani zation, pas le plus probable. Où le programme semble bien faire est avec la conversion entre romanizations et la configurabilité générale. En bref, la réponse peut être l'une ou l'autre, selon ce dont vous avez besoin. Noms propres idiosyncratiques?Google Traduction. Besoin de statistiques? Adso. Prêt à accepter les listes de candidats sans information contextuelle? Pinyin4j.
Uniquement source ouverte ou aussi pour avoir plus d'argent? – bmargulies
@bmargulies: Je préfère l'open source à la source fermée, mais je suis OK avec les deux – bguiz