2010-12-05 6 views
6

Comment convertir de caractères - Hanyu Pinyin?Convertir les caractères chinois à pinyin

E.g.

你 -> Nǐ

马 -> mǎ


Plus d'info:

Soit des accents ou des formes numériques de Hanyu Pinyin sont acceptables, sous forme numérique étant ma préférence.

Une bibliothèque Java est préférée, cependant, une bibliothèque dans une autre langue qui peut être placée dans un wrapper est également OK.

Je voudrais quelqu'un qui a personnellement utilisé une telle bibliothèque avant de recommander ou de commenter, en termes de qualité/reliabilitty.

+0

Uniquement source ouverte ou aussi pour avoir plus d'argent? – bmargulies

+0

@bmargulies: Je préfère l'open source à la source fermée, mais je suis OK avec les deux – bguiz

Répondre

5

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.

+0

+1 et vérifier @Nat: Merci pour la réponse très complète. Je suis conscient de la question des possibilités multiples pour chaque personnage - donc merci de signaler un paquet qui en tient effectivement compte. – bguiz

+0

@N'importe quelle mise à jour sur le paquet Adso? Le lien semble être cassé! edit: ça devrait être ça http://adsotrans.com/downloads/ – user3306356

1

Basis Technology commercialise une suite de la technologie linguistique qui, entre autres, peut produire pinyin pour les mots chinois. Depuis que vous avez indiqué que vous avez une préférence pour l'open source, et puisque si votre seul besoin est la conversion pinyin, je ne peux pas vous dire que nos trucs ont un énorme avantage, je vais vous laisser à nous regarder si le alternative open source de @mjv ne convient pas.

2

En Python essayer

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

Vous obtiendrez

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

Disclaimer: Je suis l'auteur de cette bibliothèque.

Questions connexes