transiciones resueltos propiedad probabilidad pasos matriz irreducible faciles estacionarias ergodica ejercicios cadenas unicode nlp ambiguity n-gram markov-models

unicode - resueltos - probabilidad de transiciones estacionarias de n pasos



Usar modelos de Markov para convertir mayúsculas a problemas mixtos y relacionados (2)

He estado pensando en utilizar las técnicas de Markov para restaurar la información faltante al texto en lenguaje natural.

  • Restaure el texto de mayúsculas a mixto.
  • Restaura los acentos / signos diacríticos a los idiomas que deberían tenerlos pero que se han convertido a ASCII simple.
  • Convierte transcripciones fonéticas duras nuevamente en alfabetos nativos.

Eso parece ser en orden de lo menos difícil a lo más difícil. Básicamente, el problema es resolver ambigüedades basadas en el contexto.

Puedo usar Wiktionary como diccionario y Wikipedia como corpus usando n-grams y Hidden Markov Models para resolver las ambigüedades.

¿Estoy en el camino correcto? ¿Ya hay algunos servicios, bibliotecas o herramientas para este tipo de cosas?

Ejemplos

  • GEORGE PERDIÓ SU TARJETA SIM EN EL BUSH ⇨ George perdió su tarjeta SIM en el monte
  • tantot il rit a gorge deployee ⇨ tantôt il rit à gorge déployée

Haré una prueba para descubrir cómo lograrías esto.

Capitalización

Esto es bastante parecido al Reconocimiento de Entidad Nombrada y es un ejemplo de un "problema de etiquetado de secuencia". Los nombres propios deben inicializarse con mayúscula inicial, los nombres de las organizaciones que son acrónimos deben estar todos en mayúscula, y luego hay otros ejemplos que quedan fuera de esas categorías. Me parece que, por lo tanto, sería más difícil que NER, por lo que un enfoque directo basado en el diccionario probablemente no sería una solución ideal.

Si usara un Modelo de Markov Oculto, esto equivaldría a permitir que el estado "oculto" de un HMM sea [lowerCase, initCaps, allCaps] y entrene en algunos datos que usted asume son correctos (por ejemplo, Wikipedia, pero hay muchas otras fuentes) también). A continuación, infiere el estado oculto de las palabras que no está seguro están correctamente en mayúscula. Hay una gran cantidad de bibliotecas HMM disponibles, estoy seguro de que puede encontrar una que se adapte a sus necesidades. Yo diría que probar una HMM es una buena opción inicial.

Caracteres no ASCII

Como habrás adivinado, un problema más difícil. Si intentaste hacer esto con un HMM a nivel de palabra, tendrías una enorme cantidad de estados ocultos, uno por cada palabra acentuada, que probablemente sería imposible entrenar. El problema es más manejable a nivel de personaje, pero se pierde una gran cantidad de contexto si solo se tiene en cuenta el personaje anterior. Si comienza a usar n-grams en lugar de caracteres, sus problemas de escala volverán. En resumen, no creo que este problema sea como el anterior porque el número de etiquetas es demasiado grande para considerarlo un problema de etiquetado de secuencia (es decir, puede, simplemente no es práctico).

No he oído hablar de investigaciones en esta área, entonces tampoco soy un experto. Mi mejor opción sería usar un modelo de lenguaje general para el idioma en el que está interesado. Podría usar esto para darle una probabilidad de una oración en el idioma. Luego podría intentar reemplazar los caracteres posiblemente acentuados para dar las probabilidades de esas oraciones y tomar las más probables, o usar algún umbral en la diferencia, o algo así. Podría entrenar un modelo de lenguaje n-gram con bastante facilidad en un gran corpus de un determinado idioma.

No tengo idea si esto realmente funcionaría, ya sea en términos de precisión o eficiencia. No tengo experiencia directa de este problema en particular.

Transcripción

Ni idea, para ser honesto. No sé dónde encontraría datos para hacer un sistema propio. Después de una breve búsqueda, encontré el servicio Google Transliteration (con API). Quizás hace lo que estás buscando. Ni siquiera tengo suficiente experiencia en idiomas con otras secuencias de comandos para saber realmente lo que está haciendo.


Creo que puede usar modelos de Markov (HMM) para las tres tareas, pero también puede ver modelos más modernos como campos aleatorios condicionales (CRF). Además, aquí hay algo de impulso para su google-fu:

  • Restaurar caso mixto a texto en mayúsculas

Esto se llama truecasing.

  • Restaura los acentos / signos diacríticos a los idiomas que deberían tenerlos pero se han convertido a ASCII simple

Sospecho que los modelos de Markov van a tener problemas en esto. OTOH, los datos de entrenamiento etiquetados son gratuitos, ya que puede tomar un montón de texto acentuado en el idioma de destino y quitar los acentos. Ver también la siguiente respuesta.

  • Convierte transcripciones fonéticas duras nuevamente en alfabetos nativos

Esto parece fuertemente relacionado con la transliteración de la máquina, que se ha intentado usando pares HMM (de bioinformática / trabajo de genoma).