¿Qué algoritmos son buenos para usar en el procesamiento del lenguaje natural?

A2A, no es mi fuerte, pero daré lo mejor de mí.

En primer lugar, en muchas tareas de procesamiento del lenguaje natural, las “cosas”, objetos o elementos que se modelan son cadenas, árboles, gráficos, una combinación de estas u otras estructuras discretas que requieren algún mecanismo o proceso para convertirlas en vectores de características .

Ahora, trabajemos con un ejemplo de “alto nivel” para reducir el problema de PNL y mostrar qué intentan abordar la mayoría de estos algoritmos:

a) Tim Cook es CEO de Apple ->
[S [NP Tim Cook ] [VP es [ CEO de NP [PP de [NP Apple ]]]]]
b) Tim Cook es CEO de Apple ->
Tim / SP Cook / CP es / N CEO / N de / N Apple / SC
c) Tim / N Cook / N is / V CEO / N of / P Apple / N

Así que aquí tenemos tres tareas típicas de PNL, de las cuales se puede aprender una función entre una cadena y una estructura oculta . En (a), la estructura oculta es un árbol de análisis . En (b), la estructura oculta representa los límites de la entidad nombrada ( SP = Persona de inicio, CP = Persona de continuación, SC = Empresa de inicio, N = Sin entidad). Y en (c), los estados ocultos representan etiquetas de parte del discurso ( N = sustantivo, V = verbo, P = preposición).

La idea fundamental en PNL es que hay un conjunto de estructuras de entrenamiento, y que la tarea es aprender el mapeo de una cadena de entrada a su estructura oculta. Las tareas que involucran árboles se denominan problemas de análisis y las tareas que involucran secuencias de estado ocultas se denominan problemas de marcado . A pesar de separar la tarea de PNL en dos problemas por “simplicidad”, el gran problema es la ambigüedad . Dado que, aunque solo un análisis es plausible para un texto o cadena dados, puede haber muchos análisis posibles.

Entonces, la forma en que un algoritmo intenta resolver uno de los subproblemas anteriores mientras trata con la ambigüedad, es esencialmente lo que hace que ese algoritmo sea único. Una forma común de lidiar con la ambigüedad es usar una gramática estocástica, por ejemplo, una Gramática libre de contexto probabilístico (PCFG) para analizar, o un Modo oculto de Markov l (HMM) para etiquetar. Las probabilidades se adjuntan a las reglas en la gramática, donde las probabilidades de las reglas generalmente se estiman usando la estimación de máxima verosimilitud, que describe el número de veces que una regla en particular se identificó con éxito en un número determinado de textos de entrenamiento.

Esos son esencialmente las “entrañas” de la mayoría de los algoritmos de PNL (de lo que entiendo de todos modos). Hasta ahora he evitado cualquier mención de algoritmos específicos, ya que creo que es mejor tener una comprensión fundamental o intuitiva del problema, lo que le permite evaluar o desarrollar sus propios algoritmos.


Ahora para los algoritmos o métodos. Sugeriría un análisis probabilístico. Desde entonces, se puede usar tanto para analizar como para etiquetar.

El enfoque central en el método es el uso de programación dinámica para analizar / etiquetar eficientemente un texto. Entonces, la idea aquí es que el algoritmo deriva los árboles de análisis para un texto agregando iterativamente bordes a un cuadro o gráfico, donde cada borde representa una hipótesis sobre la estructura de árbol para una subsecuencia del texto, y el gráfico en sí representa un sustrato para componiendo y combinando estas hipótesis.

Cuando el algoritmo comienza a analizar un texto, crea un nuevo gráfico (vacío) que abarca el texto. Luego agrega gradualmente nuevos bordes al gráfico, donde un conjunto de reglas gramaticales determinadas o descubiertas especifica las condiciones bajo las cuales se deben agregar nuevos bordes al gráfico. El análisis se completa una vez que el gráfico alcanza una etapa en la que ninguna de las reglas permite agregar nuevos bordes. Para la implementación y una explicación detallada, solo siga todo en el módulo nltk.parse.chart.

La combinación de un método estadístico y un enfoque de programación dinámica es esencialmente el mismo método general utilizado en The Stanford Parser.

El clasificador Naive Bayes se usa con mucha frecuencia en PNL, mucho más que en la mayoría de los otros campos relacionados con el aprendizaje automático. La clasificación de documentos, con aplicaciones para tareas más específicas como la detección de spam, fue una de las primeras tareas para las que se demostró que Naive Bayes trabajaba con grados extremadamente altos de éxito.

Más recientemente, el aprendizaje profundo ha ganado fuerza en el campo de la PNL. Consulte este sitio web de la clase de Stanford que se puede ver públicamente para obtener información muy detallada sobre cómo se puede aplicar el aprendizaje profundo en el campo.

Puede disfrutar este blog sobre PNL. Tiene código y tutoriales.

P.ej:

  • Un buen etiquetador de parte del discurso en aproximadamente 200 líneas de Python
  • Analizando el inglés en 500 líneas de Python

More Interesting

¿Es la verificación en el aprendizaje profundo un tema candente?

¿Qué piensa Yoshua Bengio sobre la idea de un algoritmo de aprendizaje único?

¿Pandora graba cuando en la canción presiono saltar, pulgar arriba o pulgar abajo?

¿Qué harás cuando entrenes a tu modelo?

¿Cuál es la diferencia entre el entrenamiento por lotes, en línea y mini-lote en redes neuronales? ¿Cuál debo usar para un conjunto de datos de pequeño a mediano tamaño con fines de predicción?

Cómo obtener un codificador automático de ruido para aprender una representación demasiado completa

¿Siguen siendo relevantes los enfoques simbólicos de IA después de los recientes éxitos del aprendizaje profundo?

¿Con qué biblioteca de aprendizaje automático debo experimentar entre SparkML, Microsoft Azure ML y AWS ML?

¿Qué prueba estadística usar para cuantificar la similitud entre dos distribuciones cuando no son normales?

Minería de datos: utilizando el análisis de la cesta de la compra para el pronóstico de ventas, ¿cuál es el mejor algoritmo?

Como principiante en el procesamiento del lenguaje natural, ¿desde dónde debo comenzar?

¿Cuáles son las formas previas para el reconocimiento en visión artificial?

¿Cuáles son algunas aplicaciones de PageRank que no sean motores de búsqueda?

¿Podemos usar variador automático para aprender una representación como el autoencoder de vainilla?

¿El análisis de sentimientos basado en léxico se considera un método no supervisado?