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:
- ¿Cuáles son algunas técnicas comunes para el aumento de datos de video en el aprendizaje profundo?
- ¿Qué es una explicación intuitiva de la convolución 1 × 1 en ConvNets?
- ¿Apache Spark es un buen marco para implementar Reinforcement Learning?
- ¿Cómo lidian las personas con visión artificial con el sobreajuste?
- ¿Qué es el entorno de base de datos en una explicación simple con ejemplos?
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.