INTRODUCTION TO NATURAL LANGUAGE PROCESSING
FICHA
Foto Título:            INTRODUCTION TO NATURAL LANGUAGE PROCESSING
Autor:            Jacob Eisenstein.
Editorial:       MIT Press Ltd
Idioma:         Inglés
Páginas:        536
Publicación:  2019
Lectura:         2020
COMENTARIO EDITORIAL
(Fuente: Traducción y ligera elaboración propia de la descripción de producto en Amazon)

Una revisión de los métodos computacionales para entender, generar y manipular el lenguaje humano, que ofrece una síntesis de las representaciones y algoritmos clásicos junto con las técnicas modernas de machine learning.

Este libro de texto proporciona una perspectiva técnica de los métodos de procesamiento de lenguaje natural para la construcción de software que entiende, genera y manipula el lenguaje humano. Pone énfasis en las aproximaciones data-driven, enfocándose en las técnicas del machine learning supervisado y no supervisado.

La primera parte establece las bases del machine learning construyendo un conjunto de herramientas que se usarán a lo largo de todo el libro y aplicándolas para el análisis de texto basado en palabras.

La segunda parte introduce las representaciones estructuradas del lenguaje, incluyendo secuencias, árboles y grafos.

La tercera parte explora diferentes aproximaciones a la representación y análisis del significado, cubriendo desde la lógica formal a los 'embeddings' de palabras neuronales.

La última parte ofrece, en sendos capítulos, tres aplicaciones transformacionales del procesamiento del lenguaje natural: extracción de información, traducción automática y generación de texto.

Los ejercicios al final de cada capítulo incluyen tanto análisis de lápiz y papel como implementación de software. Este texto sintetiza y destila una amplia y diversa literatura de investigación, enlazando las técnicas contemporáneas de machine learning con los fundamentos de las materias computacionales y linguísticas, Es adecuado para su uso en un nivel de grado y posgrado avanzados y como referencia para ingenieros de software y científicos de datos. Los lectores deberían poseer una cierta base en programación y un nivel de bachillerato en matemáticas. Tras dominar el material que se ofrece, los estudiantes tendrán las capacidades técnicas para construir y analizar sistemas de procesamiento de lenguaje natural novedosos y para entender la último en investigación en este campo.

COMENTARIO PERSONAL

'Introduction to Natural Language Processing' es un extenso tratamiento de las técnicas usadas en el campo del procesamiento del lenguaje natural, con un enfoque muy algorítmico y matemático, aunque no elude los aspectos lingüísticos o un acercamiento a su empleo en la vida real.

Un libro de texto de rango universitario y quizá menos introductorio de lo que el título anticipa. Precisa, desde luego, de una importante base matemática y del hábito de leer expresiones algebráicas no necesariamente simples, así como de una lectura muy pausada (en realidad un estudio profundo con algunos repasos) si se quiere realmente asimilar el contenido.

El libro, bastante extenso, consta de 19 capítulos y dos apéndices, estructurados de la siguiente forma:
  • '1. Introduction:' Un primer capítulo introductorio con dos partes claramente diferenciadas: primero una serie de definiciones y conceptos y luego la presentación de tres temas transversales al procesamiento de lenguaje natural, a saber, aprendizaje versus conocimiento, búsqueda y aprendizaje y perspectivas relacional, composicional y distribucional.

  • 'I LEARNING:' Primera parte dedicada a la clasificación de palabras y el aprendizaje y que incluye los siguentes cuatro capítulos:

    • '2, Linear Text Classification:' Trata del tema de asignar una etiqueta a un texto dado y muestra métodos de naturaleza lineal. Comienza describiendo el concepto de 'saco de palabras' ('bag of words'). Luego muestra cómo se puede conseguir el etiquetado mediante Näive Bayes y alguna variante así como conceptos asociados. A continuación habla del aprendizaje discriminativo usando el perceptrón y Support Vector Machines. Luego salta a la regresión logística que combina ventajas de las dos orientaciones anteriores y termina hablando de optimización y de algunos otros temas relacionados con la clasificación.

    • '3. Nonlinear Classification:' Aunque hasta no hace tanto los métodos lineales eran suficientes e incluso más adecuados, en la actualidad están funcionando bien los no lineales. El autor comienza abordando redes neuronales, cómo se diseñan y cómo aprenden y dedica un espacio específico para hablar de la redes neuronales de convolución (CNN)

    • '4. Linguistic Applications of Classification:' Un poco como remate de los dos capítulos anteriores explica la aplicación específica de las técnicas de clasificación a diversas áreas lingüísticas como el análisis de sentimiento y opinión o la desambigüación del sentido de ciertas palabras. Y también aborda otras temáticas relacionadas como la evaluación de los clasificadores o la construcción de conjuntos de datos.

    • '5. Learning without Supervision:' Para terminar el espacio dedicado al aprendizaje, se tratan otras formas de aprendizaje sin supervisión como el aprendizaje no supervisado abordando algoritmos como K-means o Expectation-Maximization. También habla, además, del aprendizaje semi-supervisado
    • .

  • 'II SEQUENCES AND TREES:' No se trata ahora de clasificar palabras sino de producir cadenas de palabras y a ello dedica seis capítulos:

    • '6. Language Models:' Menciona labores habituales en NLP en que la salida es una secuencia de palabras como es el caso de la traducción automática, reconocimiento del habla, realización de resúmenes o sistemas de diálogo. Comienza hablando de modelos de lenguaje de n-gramas para pasar luego a las redes neuronales recurrentes (RNN). También explica cómo evaluar estos modelos.

    • '7. Sequence Labeling:' En el etiquetado de secuencias se trata de asignar una etiqueta, no a una palabra, sino sobre una secuencia de ellas y se usa, por ejemplo, para asignar categorías gramaticales a palabras de una secuencia. Se presenta la forma de tratarlo como un problema de clasificación y también como de predicción de una estructura. Luego explica el algoritmo de Viterbi y también los Modelos Ocultos de Markov (HMM) o las soluciones discriminativas que usan características ('features'). Pasa luego a otros enfoques neuronales con redes recurrentes y finaliza con soluciones no supervisadas.

    • '8. Applications of Sequence Labeling:' Habla de algunos usos de etiquetado de secuencias y, en concreto, aborda temas como los atributos morfosintáctcos, el reconocimiento de entidades, la tokenización, la alternancia entre idiomas y los dialogos.

    • '9. Formal Language Theory:' Se ataca la teoría formal del lenguaje que define claes de lenguajes y sus características computacionales. En concreto, se tratan tres tipos de lenguajes: los lenguajes regulares (aquellos que se pueden definir mediante expresiones regulares), los libres de contexto (basados en gramáticas libres de contexto expresadas como tuplas) y los sensibles al contexto.

    • '10. Context-Free Parsing:' Mediante el 'parseado' se determina si una cadena puede derivarse de una gramática libre de contexto y cómo. Se explica el parseado determinista 'bottom-up', cómo tratar con la ambiguedad, las gramáticas libres de contexto ponderadas, refinamiento de gramáticas y algunas opciones más allá del parseado libre de contexto.

    • '11. Dependency Parsing:' Se trata el parseado dd dependencias, una técnica basada en grafos dirigidos para dilucidar cómo se relacionan las palabras. Se habla de la gramática de dependencia. , de cómo se parsea basándose en grafos dirigidos, el parseado de dependencia basado en transiciones y las aplicaciones del parseado de dependencias.

  • 'III MEANING:' Si en la parte anterior se buscaba reconstruir la sintaxis, en los temas que siguen se atacan aspectos de semántica, de significado. El análisis semántico busca convertir lenguaje natural en representaciones significativas.

    • '12. Logical Semantics:' Se comienza explicando los conceptos de significado y denotación para pasar luego a las representaciones lógicas del sigificado medante lógica proposicional o lógica de primer orden. Luego se explica el parseado semántico y cómo aprenden los 'parsers' semánticos.

    • '13. Predicate-Argument Semantics:' Aborda una forma más ligera de significado que es la relación predicado argumento. Se explican los roles semánticos y cómo etiquetarlos y se finaliza con la representación abstracta de significado que utiliza una estructura de grafo.

    • '14. Distributional and Distributed Semantics:' Un capítulo dedicado a una técnica para encontrar significado de palabras no etiquetadas como puede ser en el caso de palabras desconocidas. La idea es que si ciertas distribuciones estadísticas de dos palabras son similares es que su significado también lo es. Explicada esa hipótesis se comentan ciertas decisiones de diseño respecto a la representación de palabras, el análisis de semántica latente y otras técnicas como el uso de los llamados 'word embeddings' en redes neuronales.

    • '15. Reference Resolution:' Las referencias, como por ejemplo el caso de pronombres, son una fuente de ambigüedad, no sólo para sistemas computacionales sino también para los propios hablantes. Este capítulo aborda las técnicas de resolución de esas referencias. Primero se estudian algunas formas de referencias para luego mostrar algunos algoritmos de resolución de co-referencias y algunas representaciones usadas. Se finaliza explicando cómo evaluar la resolución de co-referencias.

    • '16. Discourse:' Se finaliza esta parte hablando del discurso, es decir, textos que incluyen ya múltiples frases. Se habla fundamentalmente de la segmentación y de las relaciones.

  • 'IV APPLICATIONS:' Última parte con tres capítulos para sendas áreas de aplicación:

    • '17. Information Extraction:' Se habla de la extracción de entidades, relaciones y de eventos, es decir, situaciones que involucran a más de dos entidades. Luego se habla de cómo extraer información sobre situaciones hipotéticas o con un cierto nivel de probabilidad para pasar finalmente a la respuesta a preguntas y la lectura por máquinas.

    • '18. Machine Translation:' Sobre traducción automática se explica cómo hacerla como una tarea, cómo evaluar traducciones y cómo hacerla con enfoques estadísticos. Luego se habla de la traducción con redes neuronales como las LSTM. Se finaliza con el problema de la decodificación y del entrenamiento.

    • '19. Text Generation:' Se explican algunas variantes de la generación de texto como es el caso de la conversión de dato a texto, (por ejemplo, a partir de datos sobre el tiempo atmosférico, generar un texto que lo explique), la conversión texto a texto (como en la realización de resúmenes de textos) y diálogos (como los que exhiben chatbots y asistentes virtuales)

  • 'Appendix A: Probability:' Una descripción de ciertos conceptos estadísticos, incluyendo el teorema de Bayes.

  • 'Appendix B: Numerical Optimization:' Un esbozo de algoritmos de optimización como el descenso de gradiente.

'Introduction to Natural Labguage Processing' es un buen libro, probablemente muy bueno, con amplia cobertura de la temática del procesamiento de lenguaje natural, que aporta ejercicios y recursos adicionales y que explica con bastante corrección pero que a pesar de ello es de bastante compleja lectura porque en realidad no es un libro para leer sino para estudiar y partiendo de los fundamentos adecuados especialmente en matemáticas.

Muy recomendable, pues, para especialistas o estudiantes universitarios del ramo, pero no tanto para ejecutivos o simplemente curiosos.