11
votes

Détecter si le caractère est simplifié ou chinois traditionnel

J'ai trouvé ce Question qui Donne-moi la possibilité de vérifier si une chaîne contient un caractère chinois. Je ne sais pas si les gammes Unicode sont correctes mais ils semblent retourner faux pour le japonais et le coréen et le vrai pour le chinois.

Ce qu'il ne fait pas, c'est dire si le personnage est chinois traditionnel ou simplifié. Comment allez-vous trouver ceci?

Mise à jour

Q: Comment puis-je reconnaître de la valeur 32 bits d'un caractère unicode s'il s'agit d'un caractère chinois, coréen ou japonais?

http://unicode.org/faq/han_cjk.html

Leur argument selon lequel les personnages indépendamment de leur forme ont la même signification et doivent donc être représentés par le même code. Eh bien, ce n'est pas sans signification pour moi, car j'analyse des caractères individuels qui ne fonctionnent pas avec leur solution:

Une meilleure solution consiste à regarder le texte dans son ensemble: s'il y a une bonne quantité de Kana, c'est probablement le japonais, et s'il y a une bonne quantité de Hangul, c'est probablement coréen.


6 commentaires

Le codépage aiderait-il à distinguer? On dirait que le chinois simplifié est CP 936 et traditionnel est CP 950, du moins dans le monde Microsoft. Peut-être commencer à i18nguy.com/unicode/codespages.html pour les codes de code MS et IBM .


J'ai fait une recherche rapide de Google et a trouvé ce Unicode.org/faq/han_cjk.html j'ai trouvé Certaines des questions intéressantes et discutent également des personnages traditionnels. J'espère que ça aide!


La FAQ liée de l'ombrage semble répondre à votre question exactement. Comme l'exemple dans les notes de lien, comment détermineriez-vous si "chat" est l'anglais ou le français? Si vous ne pensez pas que votre réponse est là, vous voudrez peut-être élargir un peu votre question.


C'est un bon lien, celui que je suis arrivé avant. Ah assez compliqué. L'orthographe de chat / chat en / fn le rend sûrement indiscernable; Cependant, si nous utilisions l'IPA pour écrire une chat / chat [ʃæ / tʃæt], il serait possible par la construction de la syllabe, car il serait basé sur le son et non une orthographe archaïque.


Mais le chinois est beaucoup moins compliqué car 說 / 说 [T / s Shuo1 '' '' '' "] sont des personnages complètement différents, l'un étant l'équivalent traditionnel de parler et d'être l'équivalent simplifié de parler. Ils ont différentes valeurs unicode opposées à A / A FR / FN qui partagent le même code de caractère.


Cependant, il existe également de nombreux personnages comme 口 qui sont utilisés dans les deux chinois simplifiés et traditionnels, et qui tentent de décider "Lequel il est" est la même chose que d'essayer de décider si "chat" est l'anglais. ou français.


3 Réponses :


1
votes

Comme je pense que vous avez découvert, vous ne pouvez pas. Simplifiés et traditionnels ne sont que deux styles d'écriture des mêmes personnages - c'est comme la différence entre script romain et gothique pour les langues européennes.


3 commentaires

Oui, je suppose que oui. Fonction sur le type de forme. C'est une prise 22. Vous devez déjà savoir si le personnage est S / T afin de vérifier sa valeur. Donc, je vais d'abord construire des dictionnaires, puis vérifier ceux-ci :)


BTW - Il y a en fait un moyen de vérifier par les octets, mais le site Unicode a déclaré qu'il était impraticable car il y avait une tonne d'exceptions. Allez comprendre! :)


Ceci est faux et l'analogie à Roman / Gothic est également fausse. Comme DDA explique ci-dessous, simplifié et traditionnel sont se chevauchant des ensembles de caractères . Les caractères sont soit: 1) ne sont trouvés que dans traditionnel, 2) ne sont trouvés que dans simplifiés, ou 3) trouvés dans les deux. Parce que chaque personnage a son propre point de code unicode unique, vous pouvez au minimum détecter automatiquement lequel de ces trois catégories à laquelle ils appartiennent. Re: romain / gothique, vous semblez signifier le script typographique (police) et pas l'alphabet, Mais Trad / SimP ne sont définitivement pas seulement des polices différentes pour des bytestreams identiques.



5
votes

Comme déjà indiqué, vous ne pouvez pas détecter de manière fiable le style de script à partir d'un seul caractère, mais il est possible pour un échantillon suffisamment long de texte. Voir https://github.com/jpatokal/script_detector pour un gemme rubis qui fait le travail, et Table unicode chinois simplifié pour une discussion générale.


0 commentaires

5
votes

Il est possible pour certains caractères . Les ensembles de caractères traditionnels et simplifiés se chevauchent, vous disposez donc de trois ensembles de caractères:

  1. caractères traditionnels seulement.
  2. caractères simplifiés uniquement.
  3. les caractères laissés intacts et sont disponibles dans les deux.

    Prenez le personnage 面 par exemple. Il appartient à la fois à # 2 et n ° 3 ... comme un caractère simplifié, il représente et , visage et nouilles.麵 麵 est un personnage traditionnel seulement. Donc, dans la base de données UNIHAN, 麵 a un ksimplifiarvariant , qui pointe vers 面 . Donc, vous pouvez déduire que c'est un personnage traditionnel seulement.

    mais a aussi un KTraDITIONAlvariant , qui pointe vers . C'est là que le système se casse: si vous utilisez ces données pour déduire que 面 est un personnage simplifié uniquement, vous auriez tort ...

    D'autre part, a un < Code> KTRADITIONAlvariant , pointant vers , et ces deux sont une "vraie" paire simplifiée / traditionnelle. Mais rien dans la base de données unihan différencie des cas comme 韓 / 韩 dans des cas comme 麵 / 面.


1 commentaires

Cela devrait être la réponse acceptée.