2011-02-04 17 views
14

Recientemente descubrí, para mi asombro (nunca habiéndolo pensado antes), que los nombres propios japoneses de clasificación de máquinas aparentemente no son posibles.¿Se pueden clasificar las palabras en kanji japonés por programación?

Trabajo en una aplicación que debe permitir al usuario seleccionar un hospital desde una interfaz de 3 menús. El primer menú es Prefectura, el segundo es Nombre de la ciudad y el tercero es Hospital. Cada menú debe ordenarse, como es de esperar, para que el usuario pueda encontrar lo que quiere en el menú.

Permítanme exponer lo que he encontrado, como preámbulo a mi pregunta:

  1. El orden esperado para palabras japonesas se basa en su pronunciación. Los kanji no tienen un orden inherente (hay decenas de miles de kanji en uso), pero los silabarios fonéticos japoneses sí tienen un orden: あ, い, え, お, か, き, き, け, お, か, く, こ, お, か, き, く, え, お, か, く, え, おy para los cincuenta sonidos distintivos tradicionales (algunos de los cuales son obsoletos en el japonés moderno). Este orden de clasificación se llama 五十 音 順 (gojuu on jun, o '50-orden de sonido ').

  2. Por lo tanto, las palabras kanji deben ordenarse en el mismo orden que si estuvieran escritas en hiragana. (Puede representar cualquier palabra kanji en hiragana fonética en japonés.)

  3. El pateador: no hay una forma canónica de determinar la pronunciación de una palabra dada escrita en kanji. Nunca sabes. Algunos kanji tienen diez o más pronunciaciones diferentes, dependiendo de la palabra. Muchas palabras comunes están en el diccionario, y probablemente podría crear una forma de buscarlas desde una de las bases de datos gratuitas del diccionario, pero los nombres propios (por ejemplo, nombres de hospitales) no están en el diccionario.

Entonces, en mi aplicación, tengo una lista de cada prefectura, ciudad y hospital de Japón. Para ordenar estas listas, que es un requisito, necesito una lista coincidente de cada uno de estos nombres en forma fonética (kana).

No puedo pensar en otra cosa que no sea pagarle a alguien con fluidez en japonés (solo soy regular) para transcribirlos manualmente. Antes de hacerlo, aunque:

  • ¿Es posible que estoy totalmente en lo alto de fuego, y que en realidad es una manera de hacer esto de clasificación sin crear mis propias asignaciones de palabras kanji a lecturas fonéticas, que tengo alguna ¿pasado por alto?

  • ¿Hay un mapeo públicamente disponible de nombres de prefecturas/ciudades, del gobierno o algo así? Eso reduciría el mapeo manual que tendría que hacer solo para nombres de hospitales.

  • ¿Alguien tiene algún otro consejo sobre cómo abordar este problema? Cualquier lenguaje de programación está bien, estoy trabajando con Ruby on Rails, pero estaría encantado de poder escribir un programa que tome la entrada de kanji (digamos 40,000 nombres propios) y luego generar las representaciones fonéticas como datos que podría importar en mi aplicación Rails.

宜 し く お 願 い し ま す.

Respuesta

6

Para datos, busque los archivos de datos IME (Mozc) japoneses de Google aquí.

Hay un montón de datos interesantes allí, incluyendo diccionarios IPA.

Editar:

Y también puede probar Mecab, se puede utilizar el diccionario de IPA y puede convertir kanjis a Katakana para la mayoría de las palabras

y hay también hay enlaces de rubí para eso.

y aquí se pone a prueba a alguien, rubí con Mecab con etiquetador -Oyomi

4

agradable de escuchar la gente está trabajando con el japonés.

Creo que es perfecto con su evaluación de la dificultad del problema.Me acabo de preguntar a uno de los chicos japoneses en mi laboratorio, y la manera de hacerlo parece ser que usted describe:

  1. tomar una lista de kanji
  2. Deducir (conjetura) el yomigana
  3. Ordenar yomigana por gojuon.

La parte difícil es, obviamente, el paso dos. Tengo dos tipos en mi laboratorio: 高橋 y 高 谷. Naturalmente, al ordenar informes, etc., por su nombre, no aparecen en ninguna parte cerca uno del otro.

EDITAR

Si usted es fluido en japonés, echar un vistazo aquí: http://mecab.sourceforge.net/

Es una herramienta muy popular, por lo que debe ser capaz de encontrar la documentación Inglés también (la página man de mecab tiene información en inglés).

3

No estoy familiarizado con MeCab, pero creo usar MeCab es una buena idea.

Luego, presentaré otro método. Si su aplicación está escrita en Microsoft VBA, puede llamar a la función "GetPhonetic". Es fácil de usar

ver: http://msdn.microsoft.com/en-us/library/aa195745(v=office.11).aspx


Ordenación de las prefecturas por su pronunciación no es común. La mayoría de los japoneses están acostumbrados a las prefecturas clasificadas por 「都 道 府 コ」 」」 」. p. 01: 北海道, 02: 青森 県, ..., 13: 東京 ..., ..., 27: 大阪 府, ..., 47: 沖 縄 県 Estos códigos se definen en "JIS X 0401" o "ISO-3166-2 JP". ver (Wikipedia en japonés): http://ja.wikipedia.org/wiki/%E5%85%A8%E5%9B%BD%E5%9C%B0%E6%96%B9%E5%85%AC%E5%85%B1%E5%9B%A3%E4%BD%93%E3%82%B3%E3%83%BC%E3%83%89

+0

Vaya, eso es cierto acerca del caso de las prefecturas en ventanas emergentes. Gracias. No estoy usando VB, pero ciertamente no me importa usarlo si ayuda a automatizar el kanji → conversión fonética. – Mason

6

solo un seguimiento rápido para explicar la posible solución real que utilizamos. Gracias a todos los que recomendaron mecab, parece haberlo hecho.

Tenemos un backend en su mayoría-carriles, pero en nuestra circunstancia que no era necesario para resolver este problema en el backend. Para datos ingresados ​​por el usuario, p. creando nuevas entidades con nombres japoneses, modificamos la interfaz de usuario para requerir que el usuario ingrese el yomigana fonético además del nombre de kanji. Los usuarios parecen estar acostumbrados a esto. El problema era el gran corpus de datos que está integrado en la aplicación: hospitales, empresas y nombres de lugares, principalmente.

Por lo tanto, lo que hicimos es:

  1. Convertimos todos los datos de origen (una lista de 4.000 hospitales con nombre, dirección, etc) en formato .csv (codificado como UTF-8, por supuesto) .
  2. Entonces, para el uso de desarrolladores, que escribió un script Ruby que:
    1. Usos Mecab a traducir el contenido de ese archivo en lecturas fonéticas japonesas (el comando exacto utilizado era mecab -Oyomi -o seed_hospitals.converted.csv seed_hospitals.csv, que da salida a un nuevo archivo con el kanji reemplazado por el equivalente fonético, expresado en katakana de ancho completo).
    2. Estandariza todas yomikata en hiragana (ya que los usuarios tienden a entrar en hiragana al entrar manualmente yomikata y hiragana y katakana especie diferente). Ruby lo hace fácil una vez que lo encuentras: NKF.nkf("-h1 -w", katakana_str) # -h1 means to hiragana, -w means output utf8
    3. Usando la increíblemente nueva versión Ruby 1.9.2 de CSV, combina el archivo de entrada con el archivo traducido a mecab, de modo que el archivo resultante ahora tenga columnas extra insertadas, a la NAME, NAME_YOMIGANA, ADDRESS, ADDRESS_YOMIGANA, etc.
  3. Usar los datos del archivo .csv resultante a las semillas de nuestra aplicación rieles con sus valores incorporados.

De vez en cuando, el cliente actualiza los datos de origen, por lo que tendremos que hacer esto siempre que eso suceda.

Por lo que puedo decir, esta salida es buena. Mi japonés no es lo suficientemente bueno como para estar 100% seguro, pero algunos de mis colegas japoneses lo rozaron y dijeron que se veía bien. Puse una muestra ligeramente ofuscada de las direcciones convertidas en this gist para que cualquiera que haya querido leer hasta aquí pueda ver por sí mismo.

ACTUALIZACIÓN: Los resultados están en ... es bastante buena, pero no perfecta. Aún así, parece que fonetizó correctamente el 95% + de las direcciones cuasialeatorias en mi lista.

¡Muchas gracias a todos los que me han ayudado!

Cuestiones relacionadas