Cómo escribir tu propio transliterador

Una graduada del centro de CS en 2018, Daria Rodionova , habla sobre la transliteración: qué es, cuáles son los enfoques de la transliteración, cómo crear su propio transliterador y cómo mejorar el modelo.

La transliteración es una traducción gráfica de una palabra de un alfabeto a otro, siempre que tengamos una tabla de correspondencia de signos de un sistema a otro. De hecho, ¿qué no recuerda la transliteración a un traductor simplificado? Aquí los idiomas son alfabetos y la posible cantidad de reglas de traducción se simplifica a cuatro importantes:

  • Uno a uno: B → B, R → P, P → P
  • Uno a muchos: Y → PRIMERO
  • Muchos a uno: SCH → U, CH → H, YU → U
  • Muchos a muchos: depende del contexto, por ejemplo, IE -> IE

Hasta hace poco, todo Runet estaba escrito en latín. Entonces, no todos los dispositivos tenían un diseño cirílico disponible, pero ASCII estaba a la vanguardia, mientras que las codificaciones aún no podían procesar el cirílico. Como resultado, en lugar de un mensaje en ruso, el destinatario recibió abracadabra.

Hace 15 años, cuando el alfabeto cirílico estuvo disponible en los teléfonos móviles, se continuaron recibiendo mensajes SMS en latín de los operadores móviles. No ocultaré que descifré estos mensajes con placer :) Y ahora la gente a menudo se corresponde con letras latinas en foros o salas de chat, porque no hay un teclado ruso a mano.

Por qué se necesita transliteración automática


Por lo general, hablan de la transliteración directa de las palabras rusas al alfabeto latino. Cuando necesite traducir nombres geográficos o nombres de documentos extranjeros, artículos científicos.

La transliteración inversa es la conversión de una palabra en latín en una palabra en cirílico. Es necesario en muchas áreas, por lo que en cada una de ellas, con el tiempo, ha aparecido un estándar. Y ahora hay varios estándares a la vez, según los cuales las palabras se transcriben de manera ambigua.

A menudo escuchamos en las noticias sobre traducciones ridículas y transliteraciones de nombres geográficos. Por ejemplo, la combinación de las letras "sch" puede ser la secuencia "MF" o la letra "", como en la palabra Schyot. Incluso en los foros, hay diferentes puntos de vista sobre cómo escribir la letra "" en letras latinas. Allí también puede encontrar la ambigüedad de la combinación "ch". Parece que esto siempre es "H"! No, también es una "X" al final de las palabras: generalmente las letras "I / S" van antes. ¿Y cómo traducirás "YE" del latín? ¿En "E" o en "S"? Se pueden encontrar más detalles en el artículo "Translit sin reglas" .

Descripción teórica del transliterador


Este es un transductor de estado finito, que consta de nodos, cada uno de los cuales puede procesar el símbolo de entrada y producir una salida. Si damos una definición formal, entonces el transductor consta de 6 componentes (Q, Σ, Γ, I, F, δ), donde:

Q - muchos estados
Σ - alfabeto de entrada
Γ - alfabeto de salida
I es un subconjunto de los estados iniciales de Q
F es un subconjunto de estados finales de Q
δ es la transición de Q ⨉ (Σ ⋃ {e}) a Q ⨉ (Γ ⋃ {e})

En el caso general, el conjunto Q representa varios estados. Escribimos algunos en uno debido a la cantidad de letras en el alfabeto:

  • inicio, estado 1 o reemplazo de un personaje por otro,
  • estado 2 o reemplazando múltiples caracteres con uno,
  • estado 3 o reemplazando un personaje con varios,
  • estado 4 o reemplazando un grupo de caracteres con otro grupo de caracteres, finalice.

¿Recuerdas cuántas reglas de traducción definimos al principio del artículo? :) Como Σ, el alfabeto latino y una comilla simple se usan para denotar un signo suave, y el conjunto Γ contiene el alfabeto objetivo, el alfabeto cirílico. El conjunto de estados inicial y final consta de caracteres alfabéticos o combinaciones de caracteres alfabéticos, ya que esto puede ocurrir al codificar las letras H, W, U, Y, Y.

Por el momento, el transductor se utilizó en algunos problemas de PNL, incluso en el análisis morfológico de palabras:
imagen

Aquí hay otro ejemplo de un transductor simple para un traductor. El último esquema es el más adecuado para el diseño de transliteración. Una diferencia: en cada estado q, no estamos procesando una palabra, sino su símbolo.
imagen

Más sobre transductores

Bueno, intentaremos construir un transliterador tal que pueda analizar datos de entrada de diferentes GOST y convertir diferentes ortografías en un solo alfabeto cirílico. En otras palabras, diseñaremos la lógica de transición del transductor.

Enfoques básicos de transliteración


Hay varios enfoques para construir un transliterador, dos de los cuales son ML y basados ​​en reglas.

ML : cualquier modelo probabilístico de secuencia a secuencia (Markov como base). Se basa en el principio de Viterbi, cuando segmentamos simultáneamente la palabra latina y buscamos la secuencia más probable de estados latentes o combinaciones cirílicas.

Los estados son un número finito de combinaciones cirílicas. Observaciones o secuencia de entrada - Combinaciones latinas, transiciones - entre combinaciones latinas y cirílicas, emisiones (probabilidades de observación después de la transición a un nuevo estado) - la probabilidad de la combinación latina en alguna combinación cirílica.

Además, el modelo ML de transliteración puede definirse como un problema de traducción automática. Entonces, por ejemplo, puede entrenar un modelo para transcribir palabras en un idioma. Primero necesita compilar una tabla de correspondencia de sonidos a letras, y luego entrenar en los ejemplos de la probabilidad de traducir letras en sonidos.

Ahora no consideraremos el modelo ML, porque no hay un conjunto de datos representativo con opciones de transliteración disponibles. La recopilación de datos es una tarea separada. Volvamos a la transliteración y centrémonos en el enfoque basado en reglas . Para hacer esto, necesitamos un diccionario (salvavidas para cualquier lingüista), una tabla de compatibilidad de letras y una tabla para transcribir fonemas.

Como funciona


El proceso de transliteración más simple consta de tres pasos:

  • Seguimos la secuencia, que debe traducirse al ruso.
  • Estamos buscando una combinación de sonidos en la tabla de transliteración de fonemas.
  • Si se encuentran fonemas, transcribimos la combinación actual y corregimos la incompatibilidad de las letras con expresiones regulares.

La subsecuencia puede tener una interpretación ambigua en los caracteres rusos. Aquí es donde comienza la ramificación a las reglas. Las principales trampas del tercer paso:

1. Traducción de sonido CH. Al principio de una palabra, puede ser Ch, X y K. Al final de una palabra, también hay dos opciones: Ch, X. La heurística más simple utilizada en la implementación actual es la presencia del fonema I / S antes del sonido CH. Puede preguntar, ¿por qué estamos seguros de que antes de la letra O es posible convertir CHR a XP, y antes de Y a KR? Se trata de encontrar palabras que comiencen con la República Checa en los diccionarios actuales del idioma ruso. Hasta la fecha, nadie ha encontrado palabras rusas con el comienzo de ChRO / CRI.

2. Aprender a reconocer el signo sólido de separación. En este caso, recopilamos los posibles prefijos en una expresión regular, verificamos el siguiente carácter, que debería ser una vocal rotada en transliteración (EYUYA). Si todo está bien, ponemos un signo sólido delante de la vocal. También hay análisis erróneos, como con la palabra "engaño", que de hecho debería desmantelarse como "engaño".

3. Donde traducimos los sonidos iotated a E / E / Y / Y, y donde - lo dejamos como un par de vocales. Sabemos que las vocales iotadas van después de prefijos después de un signo sólido divisorio, en el paso anterior reconocimos el último. Entonces, nuestra letra actual es la misma vocal. También obtenemos una vocal iotated al comienzo de una palabra. Por supuesto, aquí no puede prescindir de un análisis erróneo: IONY → JONES en lugar de JONA. Pero tal análisis puede reducirse. Nuevamente usamos el diccionario, en el que vemos que en la palabra que comienza con IO, las letras TAD generalmente siguen. Agregue esta observación a nuestras reglas.

4. ¿Dónde está y dónde OH? Aquí, también se aplica una heurística simple, donde se comprueba un sonido consonante antes de la secuencia de caracteres deseada. Si es GDZHKTSCHShSCH, obtenemos el OI final; de lo contrario, tomamos la combinación OY de la tabla de traducción.

Cómo mejorar este modelo


  • Considere cómo reconocer un signo suave en palabras.
  • Conecte un diccionario electrónico de ortografía real en el que se basan las heurísticas. Ayudaría a realizar un seguimiento de la relevancia de nuestras reglas y, posiblemente, introducir un concepto como "peso de la regla". Así que lentamente pasaríamos al modelo ML.
  • Usar en el contexto del corrector ortográfico. Por supuesto, esto ya no es tarea de transliteración, pero la ortografía ayudaría a obtener un resultado más significativo :)

Detalles de transliteración de autoestudio

Estaré encantado de responder preguntas en los comentarios y pensar en las mejoras del transliterador :)

Source: https://habr.com/ru/post/479542/


All Articles