Capítulo 1. PNL: introducción
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Una lengua no son sólo palabras. Es una cultura, una tradición,
una unificación de una comunidad,
toda una historia que crea lo que es una comunidad.
Todo ello está plasmado en una lengua.Noam Chomsky
Imagina una persona hipotética, John Doe. Es el Director Técnico de una startup tecnológica de rápido crecimiento. En un día ajetreado, John se despierta y mantiene esta conversación con su asistente digital:
John: "¿Qué tiempo hace hoy?"
Asistente digital: "Afuera hace 37 grados centígrados y hoy no llueve".
John: "¿Cómo es mi horario?"
Asistente digital: "Tienes una reunión de estrategia a las 16. 00 h y una reunión de todos a las 17.30 h. Teniendo en cuenta la situación del tráfico hoy, se recomienda que salgas para la oficina a las 8.15 h".
Mientras se viste, John sondea al ayudante sobre sus elecciones de moda:
John: "¿Qué me pongo hoy?"
Asistente digital: "El blanco parece una buena opción".
Puede que hayas utilizado asistentes inteligentes como Amazon Alexa, Google Home, o Apple Siri para hacer cosas similares. Hablamos con estos asistentes no en un lenguaje de programación, sino en nuestro lenguaje natural, el lenguaje en el que todos nos comunicamos. Este lenguaje natural ha sido el principal medio de comunicación entre los humanos desde tiempos inmemoriales. Pero los ordenadores sólo pueden procesar datos en binario, es decir, 0s y 1s. Aunque podemos representar los datos del lenguaje en binario, ¿cómo hacemos que las máquinas entiendan el lenguaje? Aquí es donde entra en juego el procesamiento del lenguaje natural (PLN). Es un área de la informática que se ocupa de los métodos para analizar, modelar y comprender el lenguaje humano. Toda aplicación inteligente que tenga que ver con el lenguaje humano tiene algo de PNL detrás. En este libro explicaremos qué es la PNL y cómo utilizarla para crear y ampliar aplicaciones inteligentes. Debido a la naturaleza abierta de los problemas de la PNL, hay docenas de enfoques alternativos que se pueden adoptar para resolver un problema determinado. Este libro te ayudará a navegar por este laberinto de opciones y te sugerirá cómo elegir la mejor opción en función de tu problema.
El objetivo de este capítulo es ofrecer una rápida introducción sobre qué es la PNL, antes de que empecemos a profundizar en cómo implantar soluciones basadas en la PNL para distintos escenarios de aplicación. Empezaremos con una visión general de numerosas aplicaciones de la PNL en escenarios del mundo real, y luego cubriremos las diversas tareas que forman la base de la creación de distintas aplicaciones de PNL. A continuación, comprenderemos el lenguaje desde la perspectiva de la PNL y por qué es difícil. A continuación, daremos una visión general de la heurística, el aprendizaje automático y el aprendizaje profundo, y presentaremos algunos algoritmos de uso común en la PNL. A continuación, haremos un recorrido por una aplicación de PNL. Por último, concluiremos el capítulo con una visión general del resto de los temas del libro. La Figura 1-1 muestra un avance de la organización de los capítulos en función de las distintas tareas y aplicaciones de la PNL.
Empecemos echando un vistazo a algunas aplicaciones populares que utilizas en la vida cotidiana y que tienen alguna forma de PNL como componente principal.
La PNL en el mundo real
La PNL es un componente importante en una amplia gama de aplicaciones de software que utilizamos en nuestra vida cotidiana. En esta sección, presentaremos algunas aplicaciones clave y también echaremos un vistazo a algunas tareas comunes que verás en distintas aplicaciones de PNL. Esta sección refuerza las aplicaciones que te mostramos en la Figura 1-1, que verás con más detalle a lo largo del libro.
-
Las plataformas de correo electrónico, como Gmail, Outlook, etc., utilizan ampliamente la PNL para proporcionar una serie de funciones del producto, como la clasificación del correo no deseado, la bandeja de entrada prioritaria, la extracción de eventos del calendario, el autocompletado, etc. Trataremos algunas de ellas en detalle en los Capítulos 4 y 5.
-
Los asistentes basados en la voz, como Apple Siri, Google Assistant, Microsoft Cortana, y Amazon Alexa se basan en una serie de técnicas de PNL para interactuar con el usuario, comprender sus órdenes y responder en consecuencia. Trataremos aspectos clave de estos sistemas en el Capítulo 6, donde hablaremos de los chatbots.
-
Los motores de búsqueda modernos, como Google y Bing, que son la piedra angular de la Internet actual, utilizan mucho la PNL para diversas subtareas, como la comprensión de consultas, la ampliación de consultas, la respuesta a preguntas, la recuperación de información y la clasificación y agrupación de los resultados, por nombrar algunas. Trataremos algunas de estas subtareas en el Capítulo 7.
-
Los servicios de traducción automática, como Google Translate, Bing Microsoft Translator, y Amazon Translate se utilizan cada vez más en el mundo actual para resolver una amplia gama de escenarios y casos de uso empresarial. Estos servicios son aplicaciones directas de la PNL. Hablaremos de la traducción automática en el Capítulo 7.
-
Organizaciones de todos los sectores analizan sus flujos en las redes sociales para comprender mejor y más profundamente la voz de sus clientes. Trataremos este tema en el Capítulo 8.
-
La PNL se utiliza ampliamente para resolver diversos conjuntos de casos de uso en plataformas de comercio electrónico como Amazon. Van desde extraer información relevante de las descripciones de los productos hasta comprender las opiniones de los usuarios. El Capítulo 9 trata estos casos en detalle.
-
Los avances en PNL se están aplicando para resolver casos de uso en ámbitos como la sanidad, las finanzas y la ley . El capítulo 10 aborda estos temas.
-
Empresas como Arria [1] están trabajando para utilizar técnicas de PNL con el fin de generar automáticamente informes para diversos ámbitos, desde la previsión meteorológica hasta los servicios financieros.
-
La PNL constituye la columna vertebral de las herramientas de corrección ortográfica y gramatical, como Grammarly y el corrector ortográfico de Microsoft Word y Google Docs.
-
Jeopardy! es un popular concurso de televisión. En el programa, a los concursantes se les presentan pistas en forma de respuestas, y los concursantes deben formular sus respuestas en forma de preguntas. IBM creó la IA Watson para competir con los mejores jugadores del programa. Watson ganó el primer premio con un millón de dólares, más que los campeones del mundo. La IA Watson se construyó utilizando técnicas de PNL y es uno de los ejemplos de robots de PNL que ganan un concurso mundial.
-
La PNL se utiliza en una serie de herramientas de aprendizaje y evaluación y tecnologías, como la puntuación automatizada en exámenes como el Graduate Record Examination (GRE), la detección de plagio (por ejemplo, Turnitin), los sistemas de tutoría inteligente, y las apps de aprendizaje de idiomas como Duolingo.
-
La PNL se utiliza para construir grandes bases de conocimiento, como el Gráfico de Conocimiento de Google , que son útiles en una serie de aplicaciones como la búsqueda y la respuesta a preguntas.
Esta lista no es en absoluto exhaustiva. La PNL se utiliza cada vez más en otras muchas aplicaciones de , y están surgiendo nuevas aplicaciones de la PNL mientras hablamos. Nuestro principal objetivo es presentarte las ideas que hay detrás de la creación de estas aplicaciones. Para ello, hablaremos de distintos tipos de problemas de PNL y de cómo resolverlos. Para tener una perspectiva de lo que vas a aprender en este libro y apreciar los matices que intervienen en la creación de estas aplicaciones de PNL, echemos un vistazo a algunas tareas clave de PNL que constituyen la base de muchas aplicaciones de PNL y casos de uso en la industria .
Tareas de PNL
Hay una serie de tareas fundamentales que aparecen con frecuencia en varios proyectos de PNL de . Debido a su naturaleza repetitiva y fundamental, estas tareas se han estudiado ampliamente. Si las dominas bien, estarás preparado para crear diversas aplicaciones de PNL en distintos sectores verticales. (También vimos antes algunas de estas tareas en la Figura 1-1.) Vamos a presentarlas brevemente:
- Modelado lingüístico
- Es la tarea de predecir cuál será la siguiente palabra de una frase basándose en el historial de palabras anteriores. El objetivo de esta tarea es aprender la probabilidad de que aparezca una secuencia de palabras en una lengua determinada. El modelado lingüístico es útil para construir soluciones para una gran variedad de problemas, como el reconocimiento de voz, el reconocimiento óptico de caracteres, el reconocimiento de escritura a mano, la traducción automática y la corrección ortográfica.
- Clasificación de textos
- Es la tarea de agrupar el texto en un conjunto conocido de categorías basadas en su contenido. La clasificación de textos es, con diferencia, la tarea más popular de la PNL y se utiliza en diversas herramientas, desde la identificación de spam de correo electrónico hasta el análisis de sentimientos.
- Extracción de información
- Como su nombre indica, se trata de extraer información relevante del texto, como los eventos del calendario de los correos electrónicos o los nombres de las personas mencionadas en una publicación de las redes sociales.
- Recuperación de información
- Es la tarea de encontrar documentos relevantes para una consulta del usuario a partir de una gran colección. Aplicaciones como Google Search son casos de uso bien conocidos de recuperación de información.
- Agente conversacional
- Se trata de la tarea de construir sistemas de diálogo que puedan conversar en lenguas humanas. Alexa, Siri, etc., son algunas aplicaciones comunes de esta tarea.
- Resumen de texto
- Esta tarea tiene como objetivo crear resúmenes breves de documentos más largos, conservando el contenido central y preservando el significado global del texto.
- Respuesta a la pregunta
- Se trata de construir un sistema que pueda responder automáticamente a preguntas formuladas en lenguaje natural.
- Traducción automática
- Es la tarea de convertir un texto de un idioma a otro. Herramientas como Google Translate son aplicaciones habituales de esta tarea.
- Modelización de temas
- Es la tarea de descubrir la estructura temática de una gran colección de documentos. El modelado de temas es una herramienta común de minería de textos y se utiliza en una amplia gama de dominios, desde la literatura a la bioinformática.
La Figura 1-2 muestra una representación de estas tareas en función de su dificultad relativa para desarrollar soluciones integrales.
En el resto de los capítulos de este libro, veremos los retos de estas tareas y aprenderemos a desarrollar soluciones que funcionen para determinados casos de uso (incluso las tareas difíciles que se muestran en la figura). Para llegar a ello, es útil comprender la naturaleza del lenguaje humano y los retos que plantea la automatización del procesamiento del lenguaje. Las dos secciones siguientes ofrecen una visión general básica.
¿Qué es la lengua?
La lengua es un sistema estructurado de comunicación que implica combinaciones complejas de sus componentes constituyentes, como caracteres, palabras, frases, etc. La lingüística es el estudio sistemático del lenguaje. Para estudiar la PNL, es importante comprender algunos conceptos de la lingüística sobre cómo se estructura el lenguaje. En esta sección, los presentaremos y veremos cómo se relacionan con algunas de las tareas de la PNL que hemos enumerado antes.
Podemos pensar que el lenguaje humano se compone de cuatro grandes bloques de construcción: fonemas, morfemas y lexemas, sintaxis y contexto. Las aplicaciones de la PNL necesitan conocer los distintos niveles de estos bloques de construcción, empezando por los sonidos básicos del lenguaje (fonemas) hasta los textos con algunas expresiones significativas (contexto). La Figura 1-3 muestra estos bloques de construcción del lenguaje, lo que abarcan y algunas aplicaciones de PNL que hemos presentado antes y que requieren este conocimiento. Algunos de los términos enumerados aquí que no se introdujeron anteriormente en este capítulo (por ejemplo, análisis sintáctico, incrustación de palabras, etc.) se presentarán más adelante en estos tres primeros capítulos.
Bloques de construcción de la lengua
Introduzcamos primero qué son estos bloques de lenguaje para contextualizar los retos que plantea la PNL.
Fonemas
Los fonemas son las unidades de sonido más pequeñas de una lengua. Pueden no tener ningún significado por sí mismos, pero pueden inducir significados cuando se pronuncian en combinación con otros fonemas. Por ejemplo, el inglés estándar tiene 44 fonemas, que son letras sueltas o una combinación de letras [2]. La Figura 1-4 muestra estos fonemas junto con palabras de ejemplo. Los fonemas son especialmente importantes en aplicaciones que implican la comprensión del habla, como el reconocimiento del habla, la transcripción de voz a texto y la conversión de texto a voz.
Morfemas y lexemas
Un morfema es la unidad más pequeña de la lengua que tiene un significado. Está formado por una combinación de fonemas. No todos los morfemas son palabras, pero todos los prefijos y sufijos son morfemas. Por ejemplo, en la palabra "multimedia", "multi-" no es una palabra, sino un prefijo que cambia el significado cuando se junta con "media". "Multi-" es un morfema. La Figura 1-5 ilustra algunas palabras y sus morfemas. En el caso de palabras como "gatos" e "irrompible", sus morfemas son meros constituyentes de la palabra completa, mientras que en el caso de palabras como "voltereta" e "irrompible", hay alguna variación al descomponer las palabras en sus morfemas.
Los lexemas son las variaciones estructurales de los morfemas relacionados entre sí por el significado. Por ejemplo, "correr" y "correr" pertenecen a la misma forma lexemática. El análisis morfológico, que analiza la estructura de las palabras estudiando sus morfemas y lexemas, es un bloque fundamental para muchas tareas de PNL, como la tokenización, el stemming, el aprendizaje de incrustaciones de palabras y el etiquetado de partes del discurso, que presentaremos en el próximo capítulo.
Sintaxis
Sintaxis es un conjunto de reglas para construir oraciones gramaticalmente correctas a partir de palabras y frases de una lengua. La estructura sintáctica en lingüística se representa de muchas formas distintas. Un enfoque común para representar frases es un árbol de análisis sintáctico. La Figura 1-6 muestra un ejemplo de árbol de análisis sintáctico de dos frases en inglés.
Tiene una estructura jerárquica del lenguaje, con palabras en el nivel más bajo, seguidas de etiquetas de parte de discurso, seguidas de frases y terminando con una frase en el nivel más alto. En la Figura 1-6, ambas frases tienen una estructura similar y, por tanto, un árbol sintáctico similar. En esta representación, N significa sustantivo, V verbo y P preposición. La frase nominal se indica con NP y la frase verbal con VP. Las dos frases sustantivas son "La chica" y "El barco", mientras que las dos frases verbales son "se rió del mono" y "remontó el río". La estructura sintáctica está guiada por un conjunto de reglas gramaticales de la lengua (por ejemplo, la frase consta de un NP y un VP), y esto a su vez guía algunas de las tareas fundamentales del procesamiento del lenguaje, como el análisis sintáctico. El análisis sintáctico es la tarea de la PNL que consiste en construir automáticamente dichos árboles. La extracción de entidades y la extracción de relaciones son algunas de las tareas de la PNL que se basan en este conocimiento del análisis sintáctico, que trataremos con más detalle en el Capítulo 5. Ten en cuenta que la estructura de análisis sintáctico descrita anteriormente es específica del inglés. La sintaxis de un idioma puede ser muy diferente de la de otro, y los enfoques de procesamiento lingüístico necesarios para ese idioma cambiarán en consecuencia.
Contexto
Contexto es el modo en que varias partes de una lengua se unen para transmitir un significado concreto. El contexto incluye referencias a largo plazo, conocimiento del mundo y sentido común, junto con el significado literal de las palabras y frases. El significado de una frase puede cambiar en función del contexto, ya que a veces las palabras y frases pueden tener varios significados. Generalmente, el contexto se compone de semántica y pragmática. La semántica es el significado directo de las palabras y frases sin contexto externo. La pragmática añade el conocimiento del mundo y el contexto externo de la conversación para permitirnos inferir el significado implícito. Las tareas complejas de la PNL, como la detección de sarcasmo, el resumen y el modelado de temas, son algunas de las tareas que utilizan mucho el contexto.
La lingüística es el estudio del lenguaje y, por tanto, es un área muy amplia en sí misma, y sólo hemos introducido algunas ideas básicas para ilustrar el papel del conocimiento lingüístico en la PNL. Las distintas tareas de la PNL requieren distintos grados de conocimiento sobre estos componentes básicos del lenguaje. El lector interesado puede consultar los libros escritos por Emily Bender [3, 4] sobre los fundamentos lingüísticos para la PNL para profundizar en el tema. Ahora que tenemos una idea de cuáles son los componentes básicos del lenguaje , veamos por qué el lenguaje puede ser difícil de entender para los ordenadores y qué hace que la PNL sea un reto.
¿Por qué es un reto la PNL?
¿Qué hace que la PNL sea un ámbito problemático desafiante? La ambigüedad y la creatividad del lenguaje humano son sólo dos de las características que hacen de la PNL un área de trabajo exigente. Esta sección explora cada característica con más detalle, empezando por la ambigüedad del lenguaje.
Ambigüedad
Ambigüedad significa incertidumbre de significado. La mayoría de las lenguas humanas son intrínsecamente ambiguas. Considera la siguiente frase "La hice pato". Esta frase tiene varios significados. El primero es Le preparé un pato. El segundo significado es: Hice que se agachara para evitar un objeto. (También hay otros significados posibles; los dejaremos para que los piense el lector). Aquí, la ambigüedad proviene del uso de la palabra "hice". Cuál de los dos significados se aplique depende del contexto en el que aparezca la frase. Si la frase aparece en una historia sobre una madre y un hijo, probablemente se aplique el primer significado. Pero si la frase aparece en un libro sobre deportes, es probable que se aplique el segundo significado. El ejemplo que hemos visto es una frase directa.
Cuando se trata de lenguaje figurado-es decir, modismos- la ambigüedad no hace más que aumentar. Por ejemplo: "Es tan bueno como Juan Pérez". Intenta responder: "¿Es tan bueno como él?". La respuesta depende de lo bueno que sea Juan Pérez. La Figura 1-7 muestra algunos ejemplos que ilustran la ambigüedad del lenguaje.
Los ejemplos proceden del Winograd Schema Challenge [5], llamado así por el profesor Terry Winograd de la Universidad de Stanford. Este esquema tiene pares de frases que sólo difieren en unas pocas palabras, pero el significado de las frases a menudo se invierte debido a este pequeño cambio. Estos ejemplos son fáciles de desambiguar por un humano, pero no se pueden resolver con la mayoría de las técnicas de PNL. Considera los pares de frases de la figura y las preguntas asociadas a ellas. Con un poco de reflexión, debería ser evidente cómo cambia la respuesta basándose en la variación de una sola palabra. Como otro experimento, considera la posibilidad de tomar un sistema de PNL estándar como Google Translate y probar varios ejemplos para ver cómo afectan (o no) tales ambigüedades al resultado del sistema .
Conocimiento común
Un aspecto clave de cualquier lenguaje humano es el "conocimiento común." Es el conjunto de todos los hechos que la mayoría de los humanos conoce. En cualquier conversación, se da por supuesto que estos hechos se conocen, de ahí que no se mencionen explícitamente, pero influyen en el significado de la frase. Por ejemplo, considera dos frases "el hombre mordió al perro" y "el perro mordió al hombre". Todos sabemos que es improbable que ocurra la primera frase, mientras que la segunda es muy posible. ¿Por qué lo decimos? Porque todos "sabemos" que es muy improbable que un humano muerda a un perro. Además, se sabe que los perros muerden a los humanos. Este conocimiento es necesario para que digamos que la primera frase es improbable que ocurra, mientras que la segunda es posible. Observa que este conocimiento común no se menciona en ninguna de las dos frases. Los humanos utilizamos el conocimiento común todo el tiempo para comprender y procesar cualquier lenguaje. En el ejemplo anterior, las dos frases son sintácticamente muy parecidas, pero a un ordenador le resultaría muy difícil diferenciarlas, ya que carece del conocimiento común que tienen los humanos. Uno de los principales retos de la PNL es cómo codificar todas las cosas que son conocimiento común para los humanos en un modelo computacional .
Creatividad
La lengua no sólo se rige por normas; también tiene un aspecto creativo. En cualquier lengua se utilizan diversos estilos, dialectos, géneros y variaciones. Los poemas son un gran ejemplo de creatividad en el lenguaje. Hacer que las máquinas entiendan la creatividad es un problema difícil, no sólo en la PNL, sino en la IA en general.
Diversidad entre lenguas
Para la mayoría de las lenguas del mundo, no existe una correspondencia directa entre los vocabularios de dos lenguas cualesquiera. Esto dificulta la portabilidad de una solución de PNL de una lengua a otra. Una solución que funciona en una lengua puede no funcionar en absoluto en otra. Esto significa que o bien se construye una solución que sea agnóstica con respecto al idioma, o bien hay que construir soluciones distintas para cada idioma. Mientras que la primera es conceptualmente muy difícil, la otra es laboriosa y requiere mucho tiempo.
Todas estas cuestiones hacen que la PNL sea un campo de trabajo desafiante, aunque gratificante. Antes de examinar cómo se abordan algunos de estos retos en la PNL, debemos conocer los enfoques habituales para resolver los problemas de la PNL. Empecemos con una visión general de cómo el aprendizaje automático y el aprendizaje profundo están relacionados con la PNL, antes de profundizar en los distintos enfoques de la PNL en .
Aprendizaje automático, aprendizaje profundo y PNL: una visión general
En términos generales, la inteligencia artificial (IA) es una rama de la informática que pretende construir sistemas que puedan realizar tareas que requieren inteligencia humana. A veces también se denomina "inteligencia de las máquinas". Las bases de la IA se sentaron en la década de 1950 en un taller organizado en el Dartmouth College [6]. La IA inicial se construyó en gran medida a partir de sistemas basados en la lógica, la heurística y las reglas. El aprendizaje automático (AM) es una rama de la IA que se ocupa del desarrollo de algoritmos que pueden aprender a realizar tareas automáticamente basándose en un gran número de ejemplos, sin necesidad de reglas elaboradas a mano. El aprendizaje profundo (DL) se refiere a la rama del aprendizaje automático que se basa en arquitecturas de redes neuronales artificiales. ML, DL y PNL son todos subcampos dentro de la IA, y la relación entre ellos se representa en la Figura 1-8.
Aunque hay cierto solapamiento entre la PNL, el ML y la AD, también son áreas de estudio bastante diferentes, como ilustra la figura. Al igual que otros trabajos iniciales en IA, las primeras aplicaciones de la PNL también se basaban en reglas y heurística. Sin embargo, en las últimas décadas, el desarrollo de las aplicaciones de la PNL se ha visto muy influido por los métodos del ML. Más recientemente, la DL también se ha utilizado con frecuencia para crear aplicaciones de PNL. Teniendo esto en cuenta, vamos a hacer un breve repaso del ML y la DL en esta sección.
El objetivo del ML es "aprender" a realizar tareas basándose en ejemplos (llamados "datos de entrenamiento") sin instrucciones explícitas. Esto se suele hacer creando una representación numérica (llamada "características") de los datos de entrenamiento y utilizando esta representación para aprender los patrones de esos ejemplos. Los algoritmos de aprendizaje automático pueden agruparse en tres paradigmas principales: aprendizaje supervisado, aprendizaje no supervisado, y aprendizaje de refuerzo. En el aprendizaje supervisado, el objetivo es aprender la función de asignación de la entrada a la salida, dado un gran número de ejemplos en forma de pares de entrada-salida. Los pares de entrada-salida se conocen como datos de entrenamiento, y las salidas se conocen específicamente como etiquetas o verdad fundamental. Un ejemplo de problema de aprendizaje supervisado relacionado con el lenguaje es aprender a clasificar los mensajes de correo electrónico como spam o no spam a partir de miles de ejemplos de ambas categorías. Se trata de un escenario habitual en PNL, y veremos ejemplos de aprendizaje supervisado a lo largo del libro, especialmente en el Capítulo 4.
El aprendizaje no supervisado se refiere a un conjunto de métodos de aprendizaje automático que pretenden encontrar patrones ocultos en unos datos de entrada dados sin ninguna salida de referencia. Es decir, a diferencia del aprendizaje supervisado, el aprendizaje no supervisado trabaja con grandes colecciones de datos sin etiquetar. En PNL, un ejemplo de este tipo de tarea es identificar temas latentes en una gran colección de datos textuales sin ningún conocimiento de dichos temas. Esto se conoce como modelado temático, y lo trataremos en el Capítulo 7.
Lo habitual en los proyectos de PNL del mundo real es un caso de aprendizaje semisupervisado, en el que tenemos un pequeño conjunto de datos etiquetados y un gran conjunto de datos sin etiquetar. Las técnicas semisupervisadas implican utilizar ambos conjuntos de datos para aprender la tarea en cuestión. Por último, pero no por ello menos importante, el aprendizaje por refuerzo se ocupa de métodos para aprender tareas mediante ensayo y error, y se caracteriza por la ausencia de datos etiquetados o no etiquetados en grandes cantidades. El aprendizaje se realiza en un entorno autónomo y mejora mediante la retroalimentación (recompensa o castigo) facilitada por el entorno. Esta forma de aprendizaje no es habitual en la PNL aplicada (todavía). Es más habitual en aplicaciones como los juegos que juegan las máquinas, como el go o el ajedrez, en el diseño de vehículos autónomos y en la robótica.
El aprendizaje profundo se refiere a la rama del aprendizaje automático que se basa en arquitecturas de redes neuronales artificiales. Las ideas que subyacen a las redes neuronales se inspiran en las neuronas del cerebro humano y en cómo interactúan entre sí. En la última década, las arquitecturas neuronales basadas en el aprendizaje profundo se han utilizado para mejorar con éxito el rendimiento de diversas aplicaciones inteligentes, como el reconocimiento de imágenes y del habla y la traducción automática. Esto ha dado lugar a una proliferación de soluciones basadas en el aprendizaje profundo en la industria, incluidas las aplicaciones de PNL.
A lo largo de este libro, hablaremos de cómo se utilizan todos estos enfoques para desarrollar diversas aplicaciones de PNL. Analicemos ahora los distintos enfoques para resolver cualquier problema de PNL .
Enfoques de la PNL
Los distintos enfoques de que se utilizan para resolver problemas de PNL se suelen clasificar en tres categorías: heurística, aprendizaje automático y aprendizaje profundo. Esta sección es simplemente una introducción a cada uno de los enfoques; no te preocupes si aún no puedes entender del todo los conceptos, ya que se tratarán en detalle a lo largo del resto del libro. Empecemos hablando de la PNL basada en la heurística .
PNL basada en heurística
Al igual que otros primeros sistemas de IA, los primeros intentos de diseñar sistemas de PLN se basaban en crear reglas para la tarea en cuestión. Esto requería que los desarrolladores tuvieran cierta experiencia en el dominio para formular reglas que pudieran incorporarse a un programa. Estos sistemas también requerían recursos como diccionarios y tesauros, normalmente compilados y digitalizados a lo largo de un período de tiempo. Un ejemplo de diseño de reglas para resolver un problema de PLN utilizando dichos recursos es el análisis de sentimientos basado en léxicos. Utiliza recuentos de palabras positivas y negativas en el texto para deducir el sentimiento del texto. Trataremos este tema brevemente en el Capítulo 4.
Además de diccionarios y tesauros, se han construido bases de conocimiento más elaboradas para ayudar a la PNL en general y a la PNL basada en reglas en particular. Un ejemplo es Wordnet [7], que es una base de datos de palabras y las relaciones semánticas entre ellas. Algunos ejemplos de estas relaciones son los sinónimos, los hipónimos y los merónimos. Los sinónimos se refieren a palabras con significados similares. Los hipónimos captan las relaciones es-tipo-de. Por ejemplo, béisbol, lucha de sumo y tenis son hipónimos de deportes. Los merónimos reflejan relaciones es-parte-de. Por ejemplo, manos y piernas son merónimos de cuerpo. Toda esta información resulta útil cuando se construyen sistemas basados en reglas en torno al lenguaje. La Figura 1-9 muestra un ejemplo de representación de estas relaciones entre palabras mediante Wordnet.
Más recientemente, el conocimiento del mundo del sentido común también se ha incorporado a bases de conocimiento como Open Mind Common Sense [9], que también ayuda a estos sistemas basados en reglas. Aunque lo que hemos visto hasta ahora son en gran medida recursos léxicos basados en información a nivel de palabra, los sistemas basados en reglas van más allá de las palabras y pueden incorporar también otras formas de información. A continuación presentamos algunas de ellas.
Las expresiones regulares (regex) son una gran herramienta para el análisis de texto y la construcción de sistemas basados en reglas. Una expresión regular es un conjunto de caracteres o un patrón que se utiliza para hacer coincidir y encontrar subcadenas en el texto. Por ejemplo, una regex como '^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$' se utiliza para encontrar todos los ID de correo electrónico de un texto. Las remezclas son una forma estupenda de incorporar conocimiento de dominio a tu sistema de PNL. Por ejemplo, dada una reclamación de un cliente que llega por chat o correo electrónico, queremos construir un sistema que identifique automáticamente el producto sobre el que versa la reclamación. Hay una serie de códigos de producto que corresponden a determinadas marcas. Podemos utilizar expresiones regulares para que coincidan fácilmente.
Las expresiones regulares son un paradigma muy popular para construir sistemas basados en reglas. El software de PNL como StanfordCoreNLP incluye TokensRegex [10], que es un marco para definir expresiones regulares. Se utiliza para identificar patrones en el texto y utilizar el texto coincidente para crear reglas. Las expresiones regulares se utilizan para coincidencias deterministas-lo que significa que coincide o no coincide. Las regexes probabilísticas son una subrama que aborda esta limitación incluyendo una probabilidad de coincidencia. Los lectores interesados pueden consultar bibliotecas de software como pregex [11]. Último acceso: 15 de junio de 2020.
La gramática libre de contexto (CFG) es un tipo de gramática formal que se utiliza para modelar lenguajes naturales. La CFG fue inventada por el profesor Noam Chomsky, lingüista y científico de renombre. Las CFG pueden utilizarse para capturar información más compleja y jerárquica que una regex no podría capturar. El analizador sintáctico Earley [12] permite analizar todo tipo de CFG. Para modelar reglas más complejas, se pueden utilizar lenguajes gramaticales como JAPE (Java Annotation Patterns Engine) [13]. JAPE tiene características tanto de regexes como de CFGs y puede utilizarse para sistemas de PNL basados en reglas como GATE (Arquitectura General para la Ingeniería de Textos) [14]. GATE se utiliza para crear sistemas de extracción de texto para dominios cerrados y bien definidos en los que la precisión y la exhaustividad de la cobertura son más importantes. Como ejemplo, se utilizaron JAPE y GATE para extraer información sobre procedimientos de implantación de marcapasos a partir de informes clínicos [15]. La Figura 1-10 muestra la interfaz de GATE junto con varios tipos de información resaltada en el texto como ejemplo de un sistema basado en reglas.
Las reglas y la heurística desempeñan un papel en todo el ciclo de vida de los proyectos de PNL, incluso ahora. En un extremo, son una forma estupenda de construir las primeras versiones de los sistemas de PNL. En pocas palabras, las reglas y la heurística de te ayudan a construir rápidamente la primera versión del modelo y a comprender mejor el problema en cuestión. Trataremos este punto en profundidad en los Capítulos 4 y 11. Las reglas y la heurística también pueden ser útiles como características para los sistemas de PNL basados en el aprendizaje automático. En el otro extremo del espectro del ciclo de vida del proyecto, las reglas y la heurística se utilizan para tapar las lagunas del sistema. Cualquier sistema de PNL construido con técnicas estadísticas, de aprendizaje automático o de aprendizaje profundo cometerá errores. Algunos errores pueden salir muy caros: por ejemplo, un sistema sanitario que examine todos los historiales médicos de un paciente y decida erróneamente no aconsejarle una prueba crítica. Este error podría incluso costar una vida. Las reglas y la heurística de son una forma estupenda de tapar esas lagunas en los sistemas de producción. Ahora vamos a centrar nuestra atención en las técnicas de aprendizaje automático utilizadas para PNL.
Aprendizaje automático para la PNL
Las técnicas de aprendizaje automático se aplican a los datos textuales del mismo modo que se utilizan en otras formas de datos, como imágenes, voz y datos estructurados. Las técnicas supervisadas de aprendizaje automático, como los métodos de clasificación y regresión, se utilizan mucho para diversas tareas de PNL. Por ejemplo, una tarea de clasificación de PNL sería clasificar artículos de noticias en un conjunto de temas de noticias como deportes o política. Por otro lado, las técnicas de regresión, que dan una predicción numérica, pueden utilizarse para estimar el precio de una acción basándose en el procesamiento de la discusión en los medios sociales sobre esa acción. Del mismo modo, se pueden utilizar algoritmos de agrupación no supervisada para agrupar documentos de texto.
Cualquier enfoque de aprendizaje automático para la PNL, supervisado o no supervisado, puede describirse como compuesto por tres pasos comunes: extraer características del texto, utilizar la representación de características para aprender un modelo, y evaluar y mejorar el modelo. Aprenderemos más sobre las representaciones de características para el texto específicamente en el Capítulo 3 y sobre la evaluación en el Capítulo 2. A continuación, describiremos brevemente algunos de los métodos de ML supervisado más utilizados en PNL para el segundo paso (utilizar la representación de características para aprender un modelo). Tener una idea básica de estos métodos te ayudará a comprender los conceptos tratados en capítulos posteriores.
Bayes ingenuos
Naive Bayes es un algoritmo clásico para tareas de clasificación [16] que se basa principalmente en el teorema de Bayes (como se desprende de su nombre). Utilizando el teorema de Bayes, calcula la probabilidad de observar una etiqueta de clase dado el conjunto de características de los datos de entrada. Una característica de este algoritmo es que supone que cada característica es independiente de todas las demás. Para el ejemplo de clasificación de noticias mencionado anteriormente en este capítulo, una forma de representar numéricamente el texto es utilizar el recuento de palabras específicas del dominio, como palabras específicas del deporte o de la política, presentes en el texto. Suponemos que estos recuentos de palabras no están correlacionados entre sí. Si la suposición se cumple, podemos utilizar Naive Bayes para clasificar los artículos de noticias. Aunque se trata de una suposición muy fuerte en muchos casos, Naive Bayes se utiliza habitualmente como algoritmo de partida para la clasificación de textos. Esto se debe principalmente a que es sencillo de entender y muy rápido de entrenar y ejecutar.
Máquina de vectores soporte
La máquina de vectores de soporte (SVM) es otro algoritmo de clasificación popular [17]. El objetivo en cualquier enfoque de clasificación es aprender un límite de decisión que actúe como separación entre diferentes categorías de texto (por ejemplo, política frente a deportes en nuestro ejemplo de clasificación de noticias). Este límite de decisión puede ser lineal o no lineal (por ejemplo, un círculo). Una SVM puede aprender tanto un límite de decisión lineal como no lineal para separar puntos de datos pertenecientes a clases diferentes. Un límite de decisión lineal aprende a representar los datos de forma que las diferencias de clase se hagan evidentes. Para representaciones de características bidimensionales, en la Figura 1-11 se da un ejemplo ilustrativo, en el que los puntos blancos y negros pertenecen a clases diferentes (por ejemplo, grupos de noticias de deportes y política). Una SVM aprende un límite de decisión óptimo para que la distancia entre los puntos de las clases sea máxima. El mayor punto fuerte de las SVM es su robustez frente a la variación y el ruido de los datos. Un punto débil importante es el tiempo que se tarda en entrenar y la incapacidad de escalar cuando hay grandes cantidades de datos de entrenamiento.
Campos aleatorios condicionales
El campo aleatorio condicional (CRF) es otro algoritmo que se utiliza para datos secuenciales. Conceptualmente, un CRF realiza esencialmente una tarea de clasificación en cada elemento de la secuencia [20]. Imagina el mismo ejemplo de etiquetado POS, en el que un CRF puede etiquetar palabra por palabra clasificándolas en una de las partes de la oración del conjunto de todas las etiquetas POS. Como tiene en cuenta la entrada secuencial y el contexto de las etiquetas, resulta más expresivo que los métodos de clasificación habituales y, en general, rinde mejor. Los CRF superan a los HMM en tareas como el etiquetado POS, que dependen de la naturaleza secuencial del lenguaje. Analizamos los CRF y sus variantes junto con sus aplicaciones en los Capítulos 5, 6 y 9.
Estos son algunos de los algoritmos populares de ML que se utilizan mucho en las tareas de PNL. Conocer un poco estos métodos de ML ayuda a comprender las distintas soluciones que se tratan en el libro. Aparte de eso, también es importante comprender cuándo utilizar cada algoritmo, lo que trataremos en los próximos capítulos. Para saber más sobre otros pasos y más detalles teóricos del proceso de aprendizaje automático, recomendamos el libro de texto Reconocimiento de Patrones y Aprendizaje Automático de Christopher Bishop [21]. Para una perspectiva más aplicada del aprendizaje automático, el libro de Aurélien Géron [22] es un gran recurso para empezar. Echemos ahora un vistazo a los enfoques de aprendizaje profundo para la PNL.
Aprendizaje profundo para la PNL
Hemos abordado brevemente un par de métodos populares de aprendizaje automático que se utilizan mucho en diversas tareas de PNL. En los últimos años, hemos asistido a un enorme auge en el uso de redes neuronales para tratar datos complejos y no estructurados. El lenguaje es intrínsecamente complejo y desestructurado. Por lo tanto, necesitamos modelos con mejor capacidad de representación y aprendizaje para comprender y resolver las tareas lingüísticas. He aquí algunas arquitecturas populares de redes neuronales profundas que se han convertido en el status quo de la PNL.
Redes neuronales recurrentes
Como hemos dicho antes, el lenguaje es inherentemente secuencial. Una frase en cualquier lengua fluye de una dirección a otra (por ejemplo, El inglés se lee de izquierda a derecha). Por tanto, un modelo que pueda leer progresivamente un texto de entrada de un extremo a otro puede ser muy útil para la comprensión del lenguaje. Las redes neuronales recurrentes (RNN) están especialmente diseñadas para tener en cuenta ese procesamiento y aprendizaje secuenciales. Las RNN tienen unidades neuronales capaces de recordar lo que han procesado hasta el momento. Esta memoria es temporal, y la información se almacena y actualiza con cada paso de tiempo, a medida que la RNN lee la siguiente palabra de la entrada. La Figura 1-13 muestra una RNN desenrollada y cómo realiza un seguimiento de la entrada en diferentes pasos temporales.
Las RNN son potentes y funcionan muy bien para resolver diversas tareas de PNL, como la clasificación de textos, el reconocimiento de entidades con nombre, la traducción automática, etc. También se pueden utilizar las RNN para generar texto cuyo objetivo sea leer el texto precedente y predecir la siguiente palabra o el siguiente carácter. Consulta "La irrazonable eficacia de las redes neuronales recurrentes" [24] para ver un análisis detallado de la versatilidad de las RNN y la gama de aplicaciones dentro y fuera de la PNL para las que son útiles.
Memoria a corto plazo
A pesar de su capacidad y versatilidad, las RNN sufren el problema de la memoria olvidadiza: no pueden recordar contextos más largos y, por tanto, no funcionan bien cuando el texto de entrada es largo, lo que suele ocurrir con las entradas de texto. Las redes de memoria a corto plazo de larga duración (LSTMs), un tipo de RNN, se inventaron para mitigar este defecto de las RNN. Las LSTM sortean este problema desprendiéndose del contexto irrelevante y recordando sólo la parte del contexto que se necesita para resolver la tarea en cuestión. Esto alivia la carga de recordar un contexto muy largo en una representación vectorial. Las LSTM han sustituido a las RNN en la mayoría de las aplicaciones gracias a esta solución. Las unidades recurrentes controladas (GRUs) son otra variante de las RNN que se utilizan sobre todo en la generación de lenguaje. (El artículo escrito por Christopher Olah [23] cubre la familia de modelos RNN con gran detalle). La Figura 1-14 ilustra la arquitectura de una sola célula LSTM. Hablaremos de usos específicos de las LSTM en diversas aplicaciones de PNL en los Capítulos 4, 5, 6 y 9.
Redes neuronales convolucionales
Las redes neuronales convolucionales (CNN) son muy populares y se utilizan mucho en tareas de visión por ordenador como la clasificación de imágenes, el reconocimiento de vídeos, etc. Las CNN también han tenido éxito en la PNL, especialmente en tareas de clasificación de textos. Se puede sustituir cada palabra de una frase por su correspondiente vector de palabras, y todos los vectores tienen el mismo tamaño(d) (consulta "Incrustación de palabras" en el Capítulo 3). Por tanto, pueden apilarse unos sobre otros para formar una matriz o matriz 2D de dimensión n ✕ d, donde n es el número de palabras de la frase y d es el tamaño de los vectores de palabras. Esta matriz puede tratarse ahora de forma similar a una imagen y puede modelarse mediante una CNN. La principal ventaja de las CNN es su capacidad para analizar un grupo de palabras juntas mediante una ventana de contexto. Por ejemplo, estamos haciendo una clasificación de sentimientos y obtenemos una frase como "¡Me gusta mucho esta película!". Para dar sentido a esta frase, es mejor fijarse en las palabras y en distintos conjuntos de palabras contiguas. Las CNN pueden hacer exactamente esto por definición de su arquitectura. Trataremos este tema con más detalle en capítulos posteriores. La Figura 1-15 muestra una CNN en acción sobre un trozo de texto para extraer frases útiles y llegar finalmente a un número binario que indica el sentimiento de la frase de un trozo de texto dado.
Como se muestra en la figura, la CNN utiliza una colección de capas de convolución y agrupación para conseguir esta representación condensada del texto, que luego se introduce como entrada en una capa totalmente conectada para aprender algunas tareas de PLN como la clasificación de textos. Puedes encontrar más detalles sobre el uso de las CNN para la PNL en [25] y [26]. También las tratamos en el Capítulo 4.
Transformers
Los Transformers [28] son la última entrada de en la liga de los modelos de aprendizaje profundo para la PNL. Los modelos transformadores han alcanzado el estado del arte en casi todas las tareas principales de la PNL en los últimos dos años. Modelan el contexto textual, pero no de forma secuencial. Dada una palabra en la entrada, prefiere mirar todas las palabras que la rodean (lo que se conoce como autoatención) y representar cada palabra con respecto a su contexto. Por ejemplo, la palabra "banco" puede tener distintos significados según el contexto en el que aparezca. Si el contexto habla de finanzas, entonces "banco" probablemente denota una institución financiera. En cambio, si el contexto menciona un río, entonces probablemente indique una orilla del río. Los transformadores pueden modelar este tipo de contextos y por eso se han utilizado mucho en tareas de PNL, debido a esta mayor capacidad de representación en comparación con otras redes profundas.
Recientemente, se han utilizado grandes transformadores para el aprendizaje por transferencia con tareas descendentes más pequeñas. El aprendizaje por transferencia es una técnica de la IA en la que los conocimientos adquiridos al resolver un problema se aplican a otro distinto pero relacionado. Con los transformadores, la idea es entrenar un modo de transformador muy grande de forma no supervisada (lo que se conoce como preentrenamiento g) para predecir una parte de una frase dado el resto del contenido, de modo que pueda codificar los matices de alto nivel del lenguaje en ella. Estos modelos se entrenan con más de 40 GB de datos textuales, extraídos de todo Internet. Un ejemplo de gran transformador es BERT (Bidirectional Encoder Representations from Transformers) [29], que se muestra en la Figura 1-16, preentrenado en datos masivos y de código abierto por Google.
El modelo preentrenado se muestra en la parte izquierda de la Figura 1-16. A continuación, este modelo se afina en tareas posteriores de PLN, como la clasificación de textos, la extracción de entidades, la respuesta a preguntas, etc., como se muestra a la derecha de la Figura 1-16. Debido a la gran cantidad de conocimientos preentrenados, BERT funciona eficazmente en la transferencia de conocimientos para tareas posteriores y alcanza el estado del arte para muchas de estas tareas. A lo largo del libro, hemos tratado varios ejemplos de utilización del BERT para diversas tareas. La Figura 1-17 ilustra el funcionamiento de un mecanismo de autoatención, que es un componente clave de un transformador. Los lectores interesados pueden consultar [30] para obtener más detalles sobre los mecanismos de autoatención y la arquitectura de los transformadores. Tratamos el BERT y sus aplicaciones en los Capítulos 4, 6 y 10.
Autocodificadores
Un autoencoder es un tipo diferente de red que se utiliza principalmente para aprender la representación vectorial comprimida de la entrada. Por ejemplo, si queremos representar un texto mediante un vector, ¿cuál es una buena forma de hacerlo? Podemos aprender una función de mapeo del texto de entrada al vector. Para que esta función de mapeo sea útil, "reconstruimos" la entrada a partir de la representación vectorial. Se trata de una forma de aprendizaje no supervisado, ya que no necesitas etiquetas anotadas por humanos para ello. Tras el entrenamiento, recogemos la representación vectorial, que sirve como codificación del texto de entrada en forma de vector denso. Los autocodificadores se suelen utilizar para crear representaciones de características necesarias para cualquier tarea posterior. La Figura 1-18 muestra la arquitectura de un autocodificador.
En este esquema, la capa oculta da una representación comprimida de los datos de entrada, captando la esencia, y la capa de salida (decodificador) reconstruye la representación de entrada a partir de la representación comprimida. Aunque la arquitectura del autocodificador que se muestra en la Figura 1-18 no puede manejar propiedades específicas de los datos secuenciales como el texto, las variaciones de los autocodificadores, como los autocodificadores LSTM, las abordan bien. Puedes encontrar más información sobre los autocodificadores en [31].
Aquí presentamos brevemente algunas de las arquitecturas populares de DL para la PNL. Para un estudio más detallado de las arquitecturas de aprendizaje profundo en general, consulta [31], y específicamente para la PNL, consulta [25]. Esperamos que esta introducción te proporcione los antecedentes suficientes para comprender el uso del DL en el resto de este libro.
Teniendo en cuenta todos los logros recientes de los modelos de DL, se podría pensar que la DL debería ser la forma de construir sistemas de PNL. Sin embargo, eso está muy lejos de la realidad para la mayoría de los casos de uso de la industria. Veamos por qué éste es el caso .
Por qué el aprendizaje profundo aún no es la bala de plata para la PNL
En los últimos años, la DL ha logrado avances asombrosos en PNL. Por ejemplo, en la clasificación de textos, los modelos basados en LSTM y CNN han superado el rendimiento de las técnicas estándar de aprendizaje automático, como Naive Bayes y SVM, en muchas tareas de clasificación. Del mismo modo, los LSTM han obtenido mejores resultados en tareas de etiquetado de secuencias, como la extracción de entidades, en comparación con los modelos CRF. Recientemente, los potentes modelos transformadores se han convertido en el estado del arte en la mayoría de estas tareas de PLN, que van desde la clasificación al etiquetado de secuencias. Una gran tendencia actual es aprovechar modelos transformadores grandes (en cuanto a número de parámetros), entrenarlos en conjuntos de datos enormes para tareas genéricas de PNL como los modelos lingüísticos, y luego adaptarlos a tareas posteriores más pequeñas. Este enfoque (conocido como aprendizaje por transferencia) también ha tenido éxito en otros ámbitos, como la visión por ordenador y el habla.
A pesar de este tremendo éxito, la DL sigue sin ser la bala de plata para todas las tareas de PNL cuando se trata de aplicaciones industriales. Algunas de las principales razones son las siguientes:
- Sobreajuste en conjuntos de datos pequeños
- Los modelos DL suelen tener más parámetros que los modelos ML tradicionales, lo que significa que poseen más expresividad. Esto también conlleva una maldición. La navaja de Occam [32] sugiere que siempre es preferible una solución más sencilla si todas las demás condiciones son iguales. Muchas veces, en la fase de desarrollo, no se dispone de suficientes datos de entrenamiento para entrenar una red compleja. En tales casos, debe preferirse un modelo más sencillo a un modelo DL. Los modelos DL se ajustan en exceso a conjuntos de datos pequeños y, en consecuencia, tienen una capacidad de generalización deficiente, lo que a su vez conduce a un rendimiento deficiente en la producción.
- Aprendizaje de pocos disparos y generación de datos sintéticos
- En disciplinas como la visión por ordenador, la DL ha logrado avances significativos en aprendizaje de pocos datos (es decir, aprendizaje a partir de muy pocos ejemplos de entrenamiento) [33] y en modelos que pueden generar imágenes de calidad superior [34]. Ambos avances han hecho factible el entrenamiento de modelos de visión basados en DL con pequeñas cantidades de datos. Por tanto, la DL ha logrado una adopción mucho más amplia para resolver problemas en entornos industriales. Aún no hemos visto que se desarrollen con éxito técnicas de DL similares para la PNL.
- Adaptación del dominio
- Si utilizamos un gran modelo DL entrenado en conjuntos de datos procedentes de algunos dominios comunes (p. ej., artículos de noticias) y aplicamos el modelo entrenado a un dominio más nuevo que es diferente de los dominios comunes (p. ej., publicaciones en redes sociales), puede que el rendimiento sea deficiente. Esta pérdida de rendimiento en la generalización indica que los modelos DL no siempre son útiles. Por ejemplo, los modelos entrenados en textos de Internet y reseñas de productos no funcionarán bien cuando se apliquen a dominios como el derecho, los medios sociales o la sanidad, en los que tanto la estructura sintáctica como semántica del lenguaje son específicas del dominio. Necesitamos modelos especializados para codificar el conocimiento del dominio, que podrían ser tan simples como modelos basados en reglas específicas del dominio.
- Modelos interpretables
- Aparte de la adaptación eficiente al dominio, la controlabilidad e interpretabilidad es difícil para los modelos DL porque, la mayoría de las veces, funcionan como una caja negra. Las empresas suelen exigir resultados más interpretables que puedan explicarse al cliente o usuario final. En esos casos, las técnicas tradicionales pueden ser más útiles. Por ejemplo, un modelo Naive Bayes para la clasificación de sentimientos puede explicar el efecto de las palabras fuertemente positivas y negativas en la predicción final del sentimiento. A día de hoy, es difícil obtener esa información de un modelo de clasificación basado en LSTM. Esto contrasta con la visión por ordenador, donde los modelos DL no son cajas negras. Hay muchas técnicas [35] en visión por ordenador que se utilizan para comprender por qué un modelo hace una predicción determinada. Tales enfoques para la PNL no son tan comunes.
- Sentido común y conocimiento del mundo
- Aunque hemos conseguido un buen rendimiento en tareas de PNL de referencia utilizando modelos de ML y DL, el lenguaje sigue siendo un gran enigma para los científicos. Más allá de la sintaxis y la semántica, el lenguaje abarca el conocimiento del mundo que nos rodea. El lenguaje para la comunicación se basa en el razonamiento lógico y el sentido común respecto a los acontecimientos del mundo. Por ejemplo, "me gusta la pizza" implica "me siento feliz cuando como pizza". Un ejemplo de razonamiento más complejo sería: "Si Juan sale del dormitorio y va al jardín, entonces Juan ya no está en el dormitorio y su ubicación actual es el jardín". Esto puede parecernos trivial a los humanos, pero requiere un razonamiento de varios pasos para que una máquina identifique los acontecimientos y comprenda sus consecuencias. Dado que este conocimiento del mundo y el sentido común son inherentes al lenguaje, comprenderlos es crucial para que cualquier modelo de DL funcione bien en diversas tareas lingüísticas. Los modelos actuales de DL pueden tener un buen rendimiento en los puntos de referencia estándar, pero aún no son capaces de comprender el sentido común ni de razonar lógicamente. Hay algunos esfuerzos por recoger los eventos de sentido común y las reglas lógicas (como el razonamiento si-ellos), pero aún no están bien integrados con los modelos de LD o DL.
- Coste
- Construir soluciones basadas en DL para tareas de PNL puede ser bastante caro. El coste, tanto en dinero como en tiempo, procede de múltiples fuentes. Se sabe que los modelos DL son devoradores de datos. Recopilar un gran conjunto de datos y etiquetarlo puede ser muy caro. Debido al tamaño de los modelos DL, entrenarlos para conseguir el rendimiento deseado no sólo puede aumentar tus ciclos de desarrollo, sino también suponer una factura elevada para el hardware especializado (GPU). Además, la implementación y el mantenimiento de los modelos DL pueden ser caros, tanto en términos de requisitos de hardware como de esfuerzo. Por último, pero no por ello menos importante, al ser voluminosos, estos modelos pueden causar problemas de latencia durante el tiempo de inferencia y no ser útiles en casos en los que la baja latencia es imprescindible. A esta lista, también se puede añadir la deuda técnica derivada de construir y mantener un modelo pesado. En términos generales, la deuda técnica es el coste de la reelaboración que surge de dar prioridad a la entrega rápida sobre las buenas elecciones de diseño e implementación.
- Implementación en el dispositivo
- Para muchos casos de uso, la solución de PLN debe implementarse en un dispositivo integrado en lugar de en la nube; por ejemplo, un sistema de traducción automática que ayude a los turistas a pronunciar el texto traducido incluso sin Internet. En estos casos, debido a las limitaciones del dispositivo, la solución debe funcionar con memoria y potencia limitadas. La mayoría de las soluciones de DL no se ajustan a estas limitaciones. Hay algunos esfuerzos en este sentido [36, 37, 38] en los que se pueden implementar modelos de DL en dispositivos de perímetro, pero aún estamos bastante lejos de las soluciones genéricas.
En la mayoría de los proyectos industriales se dan uno o varios de los puntos mencionados. Esto conduce a ciclos de proyecto más largos y costes más elevados (hardware, mano de obra), y sin embargo el rendimiento es comparable o a veces incluso inferior al de los modelos ML. Esto da lugar a un escaso rendimiento de la inversión y a menudo hace fracasar el proyecto de PNL.
Basándonos en este debate, puede resultar evidente que la DL no siempre es la solución idónea para todas las aplicaciones industriales de la PNL. Así pues, este libro comienza con los aspectos fundamentales de diversas tareas de PNL y cómo podemos resolverlas utilizando técnicas que van desde los sistemas basados en reglas hasta los modelos de DL. Hacemos hincapié en los requisitos de los datos y en el proceso de creación de modelos, no sólo en los detalles técnicos de los modelos individuales. Dados los rápidos avances en este campo, prevemos que en el futuro aparecerán nuevos modelos de DL que harán avanzar el estado de la técnica, pero que los fundamentos de las tareas de PNL no cambiarán sustancialmente. Por eso hablaremos de los fundamentos de la PNL y nos basaremos en ellos para desarrollar modelos de complejidad creciente siempre que sea posible, en lugar de saltar directamente a la vanguardia.
Haciéndonos eco del profesor Zachary Lipton de la Universidad Carnegie Mellon y del profesor Jacob Steinhardt de la UC Berkeley [39], también queremos hacer una advertencia sobre el consumo de muchos artículos científicos, trabajos de investigación y blogs sobre ML y PNL sin el contexto y la formación adecuados. Seguir un gran volumen de trabajos de perímetro puede causar confusión y una comprensión no tan precisa. Muchos modelos recientes de DL no son suficientemente interpretables para indicar las fuentes de las ganancias empíricas. Lipton y Steinhardt también reconocen la posible confusión de términos técnicos y el mal uso del lenguaje en los artículos científicos relacionados con el ML, que a menudo no proporcionan ningún camino claro para resolver el problema en cuestión. Por ello, en este libro describimos cuidadosamente varios conceptos técnicos de la aplicación del ML en tareas de PNL mediante ejemplos, código y consejos a lo largo de los capítulos.
Hasta ahora, hemos tratado algunos conceptos fundamentales relacionados con el lenguaje, la PNL, el ML y la DL. Antes de terminar el Capítulo 1, veamos un caso práctico para comprender mejor los distintos componentes de una aplicación PNL .
Un paseo por la PNL: Agentes conversacionales
Agentes conversacionales basados en la voz como Amazon Alexa y Apple Siri son algunas de las aplicaciones más ubicuas de la PNL, y son con las que la mayoría de la gente ya está familiarizada. La Figura 1-19 muestra el modelo de interacción típico de un agente conversacional.
Aquí recorreremos los principales componentes de la PNL utilizados en este flujo:
Reconocimiento y síntesis de voz: Son los componentes principales de cualquier agente conversacional basado en la voz. El reconocimiento del habla consiste en convertir las señales del habla en sus fonemas, que luego se transcriben como palabras. La síntesis del habla consigue el proceso inverso, transformando los resultados textuales en lenguaje hablado para el usuario. Ambas técnicas han avanzado considerablemente en la última década, y recomendamos utilizar las API de la nube para la mayoría de los casos estándar.
Comprensión del lenguaje natural: Éste es el siguiente componente en el pipeline del agente conversacional, donde la respuesta recibida del usuario (transcrita como texto) se analiza utilizando un sistema de comprensión del lenguaje natural. Esto puede dividirse en muchas pequeñas subtareas de PLN, como:
Análisis de sentimiento: Aquí analizamos el sentimiento de la respuesta del usuario. Esto se tratará en el Capítulo 4.
Reconocimiento de entidades con nombre: Aquí identificamos todas las entidades importantes que el usuario mencionó en su respuesta. Esto se tratará en el Capítulo 5.
Resolución de coreferencias: Aquí averiguamos las referencias de las entidades extraídas del historial de la conversación. Por ejemplo, un usuario puede decir "Avengers Endgame fue impresionante" y más tarde referirse a la película, diciendo "Los efectos especiales de la película fueron geniales". En este caso, querríamos vincular que "película" se refiere a Avengers Endgame. Esto se trata brevemente en el Capítulo 5.
Gestión del diálogo: Una vez que hemos extraído la información útil de la respuesta del usuario, puede que queramos entender su intención, es decir, si está haciendo una pregunta objetiva como "¿Qué tiempo hace hoy?" o dando una orden como "Reproducir canciones de Mozart". Podemos utilizar un sistema de clasificación de texto para clasificar la respuesta del usuario como una de las intenciones predefinidas. Esto ayuda al agente conversacional a saber qué se le está preguntando. La clasificación de intenciones se tratará en los Capítulos 4 y 6. Durante este proceso, el sistema puede hacer algunas preguntas aclaratorias para obtener más información del usuario. Una vez que hemos averiguado la intención del usuario, queremos averiguar qué acción adecuada debe realizar el agente conversacional para satisfacer la petición del usuario. Esto se hace basándose en la información y la intención extraídas de la respuesta del usuario. Ejemplos de acciones adecuadas podrían ser generar una respuesta desde Internet, poner música, atenuar las luces o hacer una pregunta aclaratoria. Trataremos este tema en el Capítulo 6.
Generación de respuesta: Por último, el agente conversacional genera una acción adecuada a realizar basándose en una interpretación semántica de la intención del usuario y en entradas adicionales del diálogo con el usuario. Como ya se ha dicho, el agente puede recuperar información de la base de conocimientos y generar respuestas utilizando una plantilla predefinida. Por ejemplo, puede responder diciendo: "Ahora suena la Sinfonía nº 25" o "Se han atenuado las luces". En determinados escenarios, también puede generar una respuesta completamente nueva.
Esperamos que este breve estudio de caso te haya proporcionado una visión general de cómo los distintos componentes de la PNL que iremos tratando a lo largo de este libro se unen para construir una aplicación: un agente conversacional. Veremos más detalles sobre estos componentes a medida que avancemos en el libro, y hablaremos de los agentes conversacionales específicamente en el Capítulo 6.
Conclusión
Desde los contornos más amplios de lo que es un lenguaje hasta un estudio de caso concreto de una aplicación de la PNL en el mundo real, hemos tratado una serie de temas de PNL en este capítulo. También hemos hablado de cómo se aplica la PNL en el mundo real, de algunos de sus retos y diferentes tareas, y del papel del ML y la DL en la PNL. Este capítulo pretendía darte una base de conocimientos que iremos ampliando a lo largo del libro. Los dos capítulos siguientes (Capítulos 2 y3) te presentarán algunos de los pasos fundamentales necesarios para crear aplicaciones de PNL. Los Capítulos 4-7 se centran en las tareas básicas de la PNL junto con casos de uso industrial que pueden resolverse con ellas. En los Capítulos 8-10, analizamos cómo se utiliza la PNL en distintos sectores verticales de la industria, como el comercio electrónico, la sanidad, las finanzas, etc. El Capítulo 11 lo reúne todo y analiza lo que se necesita para crear aplicaciones de PNL de extremo a extremo en términos de diseño, desarrollo, pruebas e implementación. Con esta amplia visión de conjunto, empecemos a profundizar en el mundo de la PNL.
Notas a pie de página
Referencias
[1] Arria.com. "NLG para tu industria". Último acceso: 15 de junio de 2020.
[2] UCL. Símbolos fonéticos del inglés. Último acceso: 15 de junio de 2020.
[3] Bender, Emily M. "Fundamentos lingüísticos para el procesamiento del lenguaje natural: 100 Esenciales de Morfología y Sintaxis". Conferencias de Síntesis sobre Tecnologías del Lenguaje Humano 6.3 (2013): 1-184.
[4] Bender, Emily M. y Alex Lascarides. "Fundamentos lingüísticos para el Procesamiento del Lenguaje Natural II: 100 fundamentos de semántica y pragmática". Conferencias de Síntesis sobre Tecnologías del Lenguaje Humano 12.3 (2019): 1-268.
[5] Levesque, Hector, Ernest Davis y Leora Morgenstern. "El reto del esquema de Winograd". Decimotercera Conferencia Internacional sobre los Principios de la Representación del Conocimiento y el Razonamiento (2012).
[6] Wikipedia. "Taller de Dartmouth". Última modificación: 30 de marzo de 2020.
[7] Miller, George A. "WordNet: Una base de datos léxica para el inglés". Comunicaciones de la ACM 38.11 (1995): 39-41.
[8] Tesauro visual de colocaciones en inglés. "Red de palabras visual con D3.js". Último acceso: 15 de junio de 2020.
[9] Singh, Push, Thomas Lin, Erik T. Mueller, Grace Lim, Travell Perkins y Wan Li Zhu. "Sentido común de mente abierta: Knowledge Acquisition from the General Public", Meersman R. y Tari Z. (eds.), On the Move to Meaningful Internet Systems 2002: CoopIS, DOA y ODBASE. OTM 2002. Lecture Notes in Computer Science, vol. 2519. Berlín, Heidelberg: Springer.
[10] Grupo de Procesamiento del Lenguaje Natural de Stanford. Stanford TokensRegex, (software). Último acceso: 15 de junio de 2020.
[11] Hewitt, Luke. Expresiones regulares probabilísticas, (repositorio de GitHub).
[12] Earley, Jay. "Un algoritmo eficiente de análisis sintáctico libre de contexto". Comunicaciones de la ACM 13.2 (1970): 94-102.
[13] "Motor de Patrones de Anotaciones Java: Expresiones regulares sobre anotaciones". Desarrollo de Componentes de Procesamiento del Lenguaje con GATE Versión 9 (Guía del Usuario), Capítulo 8. Último acceso: 15 de junio de 2020.
[14] Arquitectura General para la Ingeniería de Textos (GATE). Último acceso: 15 de junio de 2020.
[15] Rosier, Arnaud, Anita Burgun y Philippe Mabo. "Uso de expresiones regulares para extraer información sobre procedimientos de implantación de marcapasos de informes clínicos". Actas del Simposio Anual de la AMIA v.2008 (2008): 81-85.
[16] Zhang, Haiyi y Di Li. "Clasificador de texto Naïve Bayes". Conferencia Internacional 2007 del IEEE sobre Computación Granular (GRC 2007): 708.
[17] Joachims, Thorsten. Aprender a clasificar texto utilizando máquinas de vectores de apoyo, Vol. 668. Nueva York: Springer Science & Business Media, 2002. ISBN: 978-1-4615-0907-3
[18] Baum, Leonard E. y Ted Petrie. "Inferencia estadística para funciones probabilísticas de cadenas de Markov de estado finito". Anales de Estadística Matemática 37.6 (1966): 1554-1563.
[19] Jurafsky, Dan y James H. Martin. Procesamiento del Habla y del Lenguaje, Tercera Edición (Borrador), 2018.
[20] Settles, Burr. "Reconocimiento biomédico de entidades con nombre mediante campos aleatorios condicionales y conjuntos ricos de características". Actas del Taller Conjunto Internacional sobre Procesamiento del Lenguaje Natural en Biomedicina y sus Aplicaciones (NLPBA/BioNLP) (2004): 107-110.
[21] Bishop, Christopher M. Reconocimiento de patrones y aprendizaje automático. Nueva York: Springer, 2006. ISBN: 978-0-3873-1073-2
[22] Géron, Aurélien. Aprendizaje automático práctico con Scikit-Learn, Keras y TensorFlow: Conceptos, herramientas y técnicas para construir sistemas inteligentes. Boston: O'Reilly, 2019. ISBN: 978-1-492-03264-9
[23] Olah, Christopher. "Entender las redes LSTM". 27 de agosto de 2015.
[24] Karpathy, Andrej. "La irracional eficacia de las redes neuronales recurrentes". 21 de mayo de 2015.
[25] Goldberg, Yoav. "Métodos de redes neuronales para el procesamiento del lenguaje natural". Conferencias de Síntesis sobre Tecnologías del Lenguaje Humano 10.1 (2017): 1-309.
[26] Britz, Denny. "Entender las redes neuronales convolucionales para la PNL". 7 de noviembre de 2015.
[27] Le, Hoa T., Christophe Cerisara y Alexandre Denis. "¿Necesitan ser profundas las redes convolucionales para la clasificación de textos?". Talleres de la Trigésimo Segunda Conferencia AAAI sobre Inteligencia Artificial, 2018.
[28] Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser e Illia Polosukhin. "La atención es todo lo que necesitas". Avances en Sistemas de Procesamiento Neuronal de la Información, 2017: 5998-6008.
[29] Devlin, Jacob, Ming-Wei Chang, Kenton Lee y Kristina Toutanova. "BERT: Preentrenamiento de Transformadores Bidireccionales Profundos para la Comprensión del Lenguaje". 11 de octubre de 2018.
[30] Alammar, Jay. "El transformador ilustrado". 27 de junio de 2018.
[31] Goodfellow, Ian, Yoshua Bengio y Aaron Courville. Aprendizaje profundo. Cambridge: MIT Press, 2016. ISBN: 978-0-262-03561-3
[32] Varma, Nakul. COMS 4771: Introducción al Aprendizaje Automático, Clase 6, Diapositiva 7. Visitado el 15 de junio de 2020.
[33] Wang, Yaqing, Quanming Yao, James Kwok y Lionel M. Ni. "Generalizar a partir de unos pocos ejemplos: A Survey on Few-Shot Learning",(2019).
[34] Wang, Zhengwei, Qi She y Tomas E. Ward. "Redes generativas adversariales en visión por ordenador: A Survey and Taxonomy",(2019).
[35] Olah, Chris, Arvind Satyanarayan, Ian Johnson, Shan Carter, Ludwig Schubert, Katherine Ye y Alexander Mordvintsev. "Los bloques de construcción de la interpretabilidad". Distill 3.3 (marzo de 2018): e10.
[36] Nan, Kaiming, Sicong Liu, Junzhao Du y Hui Liu. "Compresión profunda de modelos para plataformas móviles: Un estudio". Tsinghua Ciencia y Tecnología 24.6 (2019): 677-693.
[37] TensorFlow. "Empieza con TensorFlow Lite". Modificado por última vez el 21 de marzo de 2020.
[38] Ganesh, Prakhar, Yao Chen, Xin Lou, Mohammad Ali Khan, Yin Yang, Deming Chen, Marianne Winslett, Hassan Sajjad y Preslav Nakov. "Compresión de modelos a gran escala basados en transformadores: A Case Study on BERT",(2020).
[39] Lipton, Zachary C. y Jacob Steinhardt. "Troubling Trends in Machine Learning Scholarship",(2018).
Get Procesamiento práctico del lenguaje natural now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.