2009-04-24 11 views
6

Tengo un programa que lee un montón de texto y lo analiza. El texto puede estar en cualquier idioma, pero debo probar japonés y chino específicamente para analizarlos de otra manera.Prueba de caracteres japoneses/chinos en una cadena

He leído que puedo probar cada carácter en su número Unicode para descubrir si está en el rango de caracteres CJK. Esto es útil; sin embargo, me gustaría separarlos, si es posible, para procesar el texto con diferentes diccionarios. ¿Hay alguna forma de probar si un personaje es japonés o chino?

+1

¿Conoce el conjunto de códigos, o tiene que adivinar eso también? –

+0

Si no conoce el conjunto de códigos, lo que realmente puede hacer su vida más fácil en lugar de tener todo en unicode. – Elijah

+0

termino convertir todo a unicode todos modos para el análisis (que estoy obligado . a, en realidad) que puede detectar el conjunto de códigos antes de la conversión, y esta cuestión es más si el conjunto de códigos que ya es unicode – landyman

Respuesta

6

No podrá probar un único carácter para decir con certeza que es japonés o chino debido a la forma en que se implementan los puntos de código unihan en el estándar Unicode. Básicamente, cada personaje chino es un potencial personaje japonés. Sin embargo, lo contrario no es verdad. Además, hay una serie de convenciones que se podrían usar para probar para ver si un bloque del texto está en un idioma u otro.

  1. simplificaciones - si el personaje que está probando es una República Popular China simplification como 门 sólo está disponible en las principales chino terrestres.
  2. Kana: si el carácter es uno de los muchos caracteres Japanese kana como あ い う お お, entonces el bloque de texto con el que está trabajando es definitivamente japonés.

El problema surge con la gran cantidad de caracteres y palabras que tienen en común. Sin embargo, si necesitaba una solución rápida y sucia para este problema, verificaría mis bloques completos de texto para kana; si el texto contiene kana, entonces sé que es japonés. Si necesita distinguir también el coreano, probaría para Hangul. Además, si necesita distinguir qué tipo de chino, el mejor enfoque sería probar los tipos de simplificaciones.

+0

Gracias. Sabía que algunos de los personajes eran compartidos, pero no me di cuenta de que los símbolos de kana no eran parte del chino. Pude hacer una prueba para ellos que funciona hasta ahora. Veremos qué tan precisa es después de más pruebas. Gracias de nuevo. – landyman

+0

El chino simplificado generalmente no se encuentra en el kanji japonés. Para diferenciar entre los dos, podría analizar una cadena para la presencia de Kana (Hiragana y Katakana), que es específico de japonés. – Mikaveli

1

Probablemente no pueda hacer eso de manera confiable. El japonés usa muchos de los mismos caracteres que el chino. Creo que lo mejor que puedes hacer es mirar un bloque de texto. Si ve caracteres exclusivamente japoneses, puede suponer que todo el bloque es japonés. Si no, entonces es probablemente chino.

Sin embargo, solo estoy aprendiendo chino, así que no soy un experto.

2

El proceso de desarrollo de Unicode incluía la Unificación Han. Esto se debe a que muchos de los caracteres japoneses se derivan de, o lo mismo que, los caracteres chinos; de manera similar con Corea. Hay algunos caracteres (katakana e hiragana - ver chapter 12 del estándar Unicode v5.1.0) comúnmente utilizados en japonés que indicarían que el texto era japonés en lugar de chino, pero creo que sería una prueba estadística en lugar de definitiva.

Eche un vistazo al libro de O'Reilly en CJKV Information Processing (CJKV es la abreviatura de chino, japonés, coreano, vietnamita; tengo el predecesor CJK al acecho en algún lugar). También está el libro de O'Reilly en Unicode Explained, que puede ser de ayuda, aunque probablemente no sea para esta pregunta (no recuerdo una discusión sobre cómo identificar el texto japonés y chino).

+0

Gracias. Me aseguraré de revisar los libros. Estoy de acuerdo en que probar solo en japonés (hiragana y katakana) no es definitivo, pero funcionará por el momento. – landyman

0

las pruebas para los caracteres en los rangos katakana o hiragana deben ser un medio muy confiable para determinar si el texto es japonés o no, especialmente si se trata de texto 'normal' generado por el usuario. Si está mirando documentos legales u otra tarifa más oficial, podría ser un poco más difícil, ya que habrá una mayor preponderancia de caracteres chinos complejos, pero aún así debería ser bastante confiable.

0

Una solución consiste en verificar la codificación antes de convertirla en Unicode.

0

hay muchos personajes que son solamente (comúnmente) utilizados en japonés o usados ​​solamente en chino.

Japón y China tanto simplificados muchos personajes, pero a menudo de diferentes maneras. Puede verificar si hay caracteres Shinjitai japoneses y chinos simplificados. Hay muchos más de estos últimos que los primeros. Si no hay ninguno de ellos, entonces probablemente tenga chino tradicional.

Por supuesto, si se trata de texto Unicode, puede encontrar ocasionalmente caracteres extraños o idiomas mezclados que podrían desviarse de una heurística, por lo que es mejor que continúe contando los tipos de caracteres para emitir un juicio.

Una buena manera de averiguar qué caracteres son comunes en un idioma y no en los otros es comparar las codificaciones heredadas uno contra el otro. Puede encontrar mapeos de cada uno a Unicode fácilmente en Internet.

que solía tener un cierto código que escribí, que hizo una búsqueda binaria de punto de código y era muy rápido, incluso en JavaScript - que puede haber perdido en mis viajes, aunque (-:

Cuestiones relacionadas