Caroline Eppright | Estratega de contenido | 25 de marzo de 2021
El procesamiento del lenguaje natural (NLP) es una rama de la inteligencia artificial (IA) que permite a las computadoras comprender, generar y manipular el lenguaje humano. El procesamiento del lenguaje natural tiene la capacidad de interrogar los datos con el texto o la voz del lenguaje natural. También se denomina “language in”. La mayoría de los consumidores probablemente han interactuado con NLP sin darse cuenta. Por ejemplo, NLP es la tecnología principal detrás de los asistentes virtuales, como Oracle Digital Assistant (ODA), Siri, Cortana o Alexa. Cuando hacemos preguntas sobre estos asistentes virtuales, NLP es lo que les permite no solo comprender la solicitud del usuario, sino también responder con lenguaje natural. NLP se aplica tanto al texto escrito como al habla, y se puede aplicar a todos los idiomas humanos. Otros ejemplos de herramientas con tecnología NLP incluyen búsqueda web, filtrado de correo electrónico no deseado, traducción automática de texto o voz, resumen de documentos, análisis de sentimientos y comprobación de ortografía y gramática. Por ejemplo, algunos programas de correo electrónico pueden sugerir automáticamente una respuesta adecuada a un mensaje en función de su contenido. Estos programas utilizan NLP para leer, analizar y responder su mensaje.
Hay muchos otros términos que son más o menos sinónimos de NLP. Comprensión del lenguaje natural (NLU) y la generación del lenguaje natural (NLG) se refieren al uso de computadoras para comprender y producir el lenguaje humano, respectivamente. NLG tiene la capacidad de proporcionar una descripción verbal de lo que ha sucedido. También se denomina “language out", ya que resume la información significativa en texto utilizando un concepto conocido como "gramática de gráficos".
En la práctica, NLU se utiliza para hacer referencia a NLP. La comprensión por parte de las computadoras de la estructura y el significado de todos los idiomas humanos, que permite a los desarrolladores y usuarios interactuar con las computadoras usando oraciones y comunicación naturales. La lingüística computacional (CL) es el campo científico que estudia aspectos computacionales del lenguaje humano, mientras que la NLP es la disciplina de ingeniería que se ocupa de la construcción de artefactos computacionales que entienden, generan o manipulan el lenguaje humano.
La investigación sobre NLP comenzó poco después de la invención de computadoras digitales en la década de 1950, y NLP se basa tanto en la lingüística como en la IA. Sin embargo, los principales avances de los últimos años han sido impulsados por el aprendizaje automático, que es una rama de la IA que desarrolla sistemas que aprenden y generalizan a partir de los datos. El aprendizaje profundo es una especie de aprendizaje automático que puede aprender patrones muy complejos a partir de grandes conjuntos de datos, lo que significa que es ideal para aprender las complejidades del lenguaje natural a partir de conjuntos de datos procedentes de la web.
Automatizar tareas rutinarias: Los bots conversacionales con NLP pueden procesar un gran número de tareas rutinarias que desarrollan los agentes humanos hoy en día, lo que permite a los empleados centrarse en tareas más difíciles e interesantes. Por ejemplo, los bots conversacionales y los asistentes digitales pueden reconocer una amplia variedad de solicitudes de usuario, hacerlas coincidir con la entrada adecuada en una base de datos corporativa y formular una respuesta adecuada para el usuario.
Mejorar la búsqueda: NLP puede mejorar la búsqueda de coincidencia de palabras clave para la recuperación de documentos y preguntas frecuentes al desambiguar los sentidos de palabras en función del contexto (por ejemplo, "portador" significa algo diferente en contextos biomédicos e industriales), hacer coincidir sinónimos (por ejemplo, recuperar documentos que mencionan "auto" para una búsqueda de "automóvil") y tener en cuenta la variación morfológica (que es importante para consultas que no sean en inglés). Los sistemas de búsqueda académica eficaces basados en NLP pueden mejorar drásticamente el acceso a la investigación de vanguardia relevante para médicos, abogados y otros especialistas.
Optimización de motor de búsqueda: NLP es una gran herramienta para que su negocio se clasifique más alto en la búsqueda en línea mediante el análisis de búsquedas para optimizar su contenido. Los motores de búsqueda utilizan NLP para clasificar sus resultados; además, saber cómo utilizar eficazmente estas técnicas facilita su clasificación por encima de sus competidores. Esto aumentará la visibilidad de su negocio.
Análisis y organización de grandes recopilaciones de documentos: las técnicas de NLP, como la agrupación en clusters de documentos y la generación de modelos de temas, simplifican la tarea de comprender la diversidad del contenido en grandes recopilaciones de documentos, como informes corporativos, artículos de noticias o documentos científicos. Estas técnicas suelen usarse fines de investigación legal.
Análisis de redes sociales: NLP puede analizar las reseñas de los clientes y los comentarios de las redes sociales para entender mejor grandes volúmenes de información. El análisis de sentimiento identifica comentarios positivos y negativos en un flujo de comentarios en redes sociales y proporciona una medida directa de la opinión del cliente en tiempo real. Puede generar una compensación enorme, por ejemplo, un aumento de la satisfacción del cliente y de los ingresos.
Estadísticas de mercado: con NLP trabajando para analizar el idioma de los clientes de su negocio, podrá conocer mejor qué desean y sabrá cómo comunicarse con ellos. El análisis de sentimientos orientado al aspecto detecta el sentimiento asociado a aspectos o productos específicos en las redes sociales (por ejemplo, "el teclado es genial, pero la pantalla es demasiado atenuada"), lo que proporciona información muy práctica para el diseño y marketing de productos.
Moderación del contenido: si su negocio recibe muchos comentarios de usuarios o clientes, NLP le permite moderar lo que se dice para mantener la calidad y la civilidad al analizar no solo las palabras, sino también el tono y la intención de los comentarios.
NLP simplifica y automatiza una amplia gama de procesos de negocio, especialmente aquellos que implican grandes cantidades de texto no estructurado, como correos electrónicos, encuestas, conversaciones en redes sociales, etc. Con NLP, las empresas son más capaces de analizar sus datos para ayudar a tomar las decisiones correctas. Estos son solo algunos ejemplos de aplicaciones prácticas del NLP:
Modelos de aprendizaje automático para NLP: mencionamos anteriormente que el NLP moderno depende en gran medida de un enfoque de la IA denominado aprendizaje automático. El aprendizaje automático realiza predicciones al generalizar ejemplos en un conjunto de datos. Este conjunto de datos se denomina datos de entrenamiento, y los algoritmos de aprendizaje automático se entrenan con estos datos para producir un modelo de aprendizaje automático que realice una tarea objetivo.
Por ejemplo, los datos de entrenamiento para analizar sentimientos consisten en oraciones junto con su sentimiento (por ejemplo, sentimiento positivo, negativo o neutro). Un algoritmo de aprendizaje automático lee este conjunto de datos y produce un modelo que toma oraciones como valores de entrada y devuelve sus sentimientos. Este tipo de modelo, que toma oraciones o documentos como valores de entrada y devuelve una etiqueta para esa entrada, se denomina modelo de clasificación de documentos. Los clasificadores de documentos también se pueden utilizar para clasificar documentos según los temas que mencionan (por ejemplo, deportes, finanzas, política, etc.).
Otro tipo de modelo se utiliza para reconocer y clasificar entidades en los documentos. Para cada palabra de un documento, el modelo predice si esa palabra forma parte de una mención de la entidad y, en caso afirmativo, de qué tipo de entidad se trata. Por ejemplo, en "Las acciones de XYZ Corp se comercializaron ayer por $28", "XYZ Corp" es una entidad de compañía, "$28" es el importe de una moneda y "ayer" es una fecha. Los datos de entrenamiento para el reconocimiento de entidades son una recopilación de textos, donde cada palabra está etiquetada con los tipos de entidades a las que se refiere la palabra. Este tipo de modelo, que produce una etiqueta para cada palabra en la entrada, se denomina modelo de etiquetado de secuencia.
Los modelos de secuencia a secuencia son una incorporación muy reciente a la familia de modelos utilizados en NLP. Un modelo de secuencia a secuencia (o seq2seq) toma toda una oración o documento como valor de entrada (como en un clasificador de documentos), pero produce una oración o alguna otra secuencia (por ejemplo, un programa informático) como valor de salida. (Un clasificador de documentos solo produce un solo símbolo como valor de salida). Algunos ejemplos de las aplicaciones de los modelos seq2seq incluyen la traducción automática, que, por ejemplo, toma una oración en inglés como valor de entrada y la devuelve en francés como valor de salida; el resumen de documentos (donde el valor de salida es un resumen del valor de entrada) y el análisis semántico (donde el valor de entrada es una consulta o solicitud en inglés y el valor de salida es un programa informático que implementa esa solicitud).
Aprendizaje profundo, modelos preentrenados y aprendizaje de transferencias: el aprendizaje profundo es el tipo de aprendizaje automático más utilizado en NLP. En la década de 1980, los investigadores desarrollaron redes neuronales, en las que un gran número de modelos primitivos de aprendizaje automático se combinan en una sola red: por analogía con los cerebros, los modelos simples de aprendizaje automático a veces se denominan "neuronas". Estas neuronas están dispuestas en capas y una red neuronal profunda es una red que tiene muchas capas. El aprendizaje profundo es el aprendizaje automático que usa modelos de red neuronal profunda.
Por su complejidad, se suelen necesitar muchos datos para formar una red neuronal profunda, y el procesamiento requiere mucho tiempo y potencia informática. Los modelos de NLP de redes neuronales profundas modernas se entrenan desde una amplia variedad de fuentes, como toda la Wikipedia y los datos rasgados de la web. Los datos de entrenamiento pueden pesar 10 GB o más y entrenar a esa red neuronal profunda puede tardar una semana o más en un cluster de alto rendimiento. (Los investigadores creen que la formación de modelos aún más profundos a partir de conjuntos de datos aún más grandes tiene un rendimiento aún mayor, por eso, en este momento, hay una carrera por entrenar modelos más grandes a partir de conjuntos de datos más grandes).
Los insaciables requisitos de datos y recursos informáticos de las redes neuronales profundas parecen limitar seriamente su utilidad. Sin embargo, el aprendizaje de transferencia permite entrenar aún más a la red neuronal profunda para que logre una nueva tarea con mucho menos datos de entrenamiento y esfuerzo informático. El tipo más simple de aprendizaje de transferencia se denomina ajuste fino. Consiste simplemente en entrenar primero el modelo en un conjunto de datos genérico grande (por ejemplo, Wikipedia) y, luego, entrenarlo más ("ajuste fino") en un conjunto de datos específico de la tarea mucho más pequeño que está etiquetado con la tarea objetivo real. Esto puede sorprender, pero los conjuntos de datos de ajuste fino pueden ser muy pequeños, tal vez contener solo cientos o incluso decenas de ejemplos de entrenamiento, y su entrenamiento solo necesita algunos minutos en una sola CPU. El aprendizaje de transferencia facilita el despliegue de modelos de aprendizaje profundos en toda la empresa.
Ahora hay un ecosistema completo de proveedores que ofrecen modelos de aprendizaje profundo preentrenados que están capacitados en diferentes combinaciones de idiomas, conjuntos de datos y tareas previas al entrenamiento. Estos modelos preentrenados se pueden descargar y ajustar para una amplia variedad de tareas objetivo diferentes.
Descubre cómo establecer un centro de excelencia de IA (CoE) puede impulsar tu éxito con las tecnologías de NLP. Nuestro ebook ofrece consejos para crear un CoE y utilizar eficazmente modelos avanzados de aprendizaje automático.
Tokenización: la tokenización divide el texto sin formato (por ejemplo, una oración o un documento) en una secuencia de tokens, como palabras o subpalabras. La tokenización suele ser el primer paso en un pipeline de procesamiento de NLP. A menudo, los tokens son secuencias recurrentes de texto que se tratan como unidades atómicas en el procesamiento posterior. Pueden ser palabras, unidades de subpalabras denominadas morfemas (por ejemplo, prefijos como "un-" o sufijos como "-ing" en inglés) o incluso caracteres individuales.
Modelos de bolsa de palabras: los modelos de bolsa de palabras tratan los documentos como recopilaciones desordenadas de tokens o palabras (una bolsa es como un conjunto, excepto que realiza un seguimiento de la cantidad de veces que aparece cada elemento). Debido a que ignoran completamente el orden de las palabras, los modelos de bolsa de palabras confundirán una oración como "perro muerde a hombre" con "hombre muerde a perro". Sin embargo, los modelos de bolsa de palabras se suelen utilizar para lograr la eficiencia en grandes tareas de recuperación de información, como los motores de búsqueda. Pueden producir resultados cercanos a los mejores resultados con documentos más grandes.
Eliminación de palabra irrelevante: "palabra irrelevante" es un token que se ignora en el procesamiento posterior. Por lo general, son palabras cortas y frecuentes, como "a", "la/el" o "un/una". Los modelos de bolsa de palabras y los motores de búsqueda a menudo ignoran las palabras irrelevantes para reducir el tiempo de procesamiento y el almacenamiento en la base de datos. Las redes neuronales profundas suelen tener en cuenta el orden de las palabras (es decir, no son modelos de bolsa de palabras) y no eliminan palabras irrelevantes porque pueden transmitir distinciones sutiles en significado (por ejemplo, "el paquete se perdió" y "un paquete se perdió" no significan lo mismo, aunque sean iguales después de eliminar las palabras irrelevantes).
Stemming y lematización: los morfemas son los elementos de lenguaje con menor significado. Normalmente, los morfemas son más pequeños que las palabras. Por ejemplo, "revisitado" consiste en el prefijo "re-", la raíz "visit" y el sufijo de tiempo pasado "-ado". La función de stemming y la lematización asignan palabras a sus raíces (por ejemplo, "revisitar" + PASADO). La función de stemming y la lematización son pasos cruciales en los modelos de aprendizaje preprofundos, pero los modelos de aprendizaje profundos suelen aprender estas regularidades a partir de los datos de entrenamiento, por lo que no requieren pasos explícitos de stemming o lematización.
Etiquetado de categoría gramatical y análisis sintáctico: el etiquetado de la categoría gramatical (PoS) es el proceso mediante el cual se etiqueta cada palabra con su categoría gramatical (por ejemplo, sustantivo, verbo, adjetivo, etc.). Un analizador sintáctico identifica cómo se combinan las palabras para formar frases, cláusulas y oraciones completas. El etiquetado PoS es una tarea de etiquetado de secuencia, el análisis sintáctico es un tipo extendido de tarea de etiquetado de secuencia y las redes neuronales profundas son la tecnología de vanguardia para el etiquetado PoS y el análisis sintáctico. Antes del aprendizaje profundo, el etiquetado PoS y el análisis sintáctico eran pasos esenciales para la comprensión de las oraciones. Sin embargo, los modelos de NLP de aprendizaje profundo modernos suelen beneficiarse muy poco (si lo hacen) de la información de la categoría gramatical o sintáctica; por eso, ni el etiquetado de PoS ni el análisis sintáctico se utilizan ampliamente en el NLP de aprendizaje profundo.
Las bibliotecas y los kits de herramientas de NLP suelen estar disponibles en Python y, por esta razón, la gran mayoría de los proyectos de NLP se desarrollan en Python. El entorno de desarrollo interactivo de Python facilita el desarrollo y la prueba de nuevos códigos.
Para procesar grandes cantidades de datos, a menudo se prefieren C++ y Java porque pueden soportar código más eficiente.
A continuación, se muestran ejemplos de algunas bibliotecas de NLP populares.
TensorFlow y PyTorch: estos son los dos kits de herramientas de aprendizaje profundo más conocidos. Están disponibles gratis con fines de investigación y comerciales. Aunque admiten varios idiomas, su idioma principal es Python. Contienen grandes bibliotecas de componentes predefinidos; por eso, incluso los modelos de NLP de aprendizaje profundo muy sofisticados suelen requerir la conexión de estos componentes. También admiten infraestructura informática de alto rendimiento, como clústeres de máquinas con aceleradores de unidades de procesamiento gráfico (GPU). Cuentan con documentación y tutoriales excelentes.
AllenNLP: biblioteca de componentes de NLP de alto nivel (por ejemplo, bots conversacionales simples) implementados en PyTorch y Python. La documentación es excelente.
HuggingFace: esta compañía distribuye cientos de modelos de NLP de aprendizaje profundo preentrenados diferentes, así como un kit de herramientas de software Plug and Play en TensorFlow y PyTorch que permite a los desarrolladores evaluar rápidamente cuán bien ejecutan los diferentes modelos preentrenados sus tareas específicas.
Spark NLP: Spark NLP es una biblioteca de procesamiento de texto de código abierto para NLP avanzado para los lenguajes de programación de Python, Java y Scala. Su objetivo es proporcionar una interfaz de programación de aplicaciones (API) para los pipelines de procesamiento de lenguaje natural. Ofrece modelos de red neuronal preentrenada, pipelines e integraciones, así como soporte para la formación de modelos personalizados.
SpaCy NLP: SpaCy es una biblioteca de código abierto gratuita para NLP avanzado en Python, y está diseñada específicamente para ayudar a crear aplicaciones que puedan procesar y comprender grandes volúmenes de texto. Se sabe que SpaCy es muy intuitiva y puede manejar muchas de las tareas necesarias en proyectos de NLP comunes.
En resumen, el procesamiento del lenguaje natural es un área emocionante del desarrollo de la inteligencia artificial que alimenta una amplia gama de nuevos productos, como motores de búsqueda, bots conversacionales, sistemas de recomendaciones y sistemas de voz a texto. A medida que el intercambio de los seres humanos con las computadoras continúa alejándose de los botones, los formularios y los idiomas específicos del dominio, la demanda de crecimiento en el procesamiento del lenguaje natural seguirá aumentando. Por este motivo, Oracle Cloud Infrastructure se ha comprometido a proporcionar rendimiento local con nuestras unidades de computación y herramientas para NLP optimizadas para rendimiento. Oracle Cloud Infrastructure ofrece una serie de unidades de GPU que puede desplegar en minutos para empezar a experimentar con NLP.