El idioma es muy importante cuando queremos comunicarnos entre nosotros. Cada ser humano puede hablar y decirle a los demás lo que necesitan y escuchar mediante el lenguaje. Los idiomas pueden ser cualquiera como inglés, español, francés, hindi, malayalam, etc. Podemos expresar nuestras ideas a otros por este medio. El lenguaje es uno de los componentes críticos de la inteligencia humana.
Todos los días interactuamos con humanos, pero ¿qué pasa con los no humanos? Usamos a diario nuestros teléfonos móviles, ordenadores, coches, etc… ¿Cómo entienden estas máquinas lo que queremos expresar con ellas? Aquí es donde se utiliza el «Procesamiento del Lenguaje Natural» o PLN, de las siglas NLP por «Natural Language Processing» en inglés. Las máquinas no pueden comprender nuestro lenguaje natural y, por lo tanto, es necesario procesar el lenguaje de tal manera que lo puedan comprender.
¿Qué vas a leer?
Lenguajes estructurados
Una de las principales características del lenguaje humano es el de no estar estructurado. Esto hace que la idea de procesar el lenguaje sea muy difícil y es una de las partes más difíciles de la PLN. Hablemos de un lenguaje estructurado. Por ejemplo, en el caso de las matemáticas, hay ecuaciones que dicen:
y = 3x + 2
Aquí, está transmitiendo directamente el hecho de que un punto x se multiplica por una constante 3 y cuando se suma con 2 nos da y. y, a medida que cambiamos x, la y sigue cambiando en consecuencia.
Los lenguajes de programación, consultas SQL y secuencias de comandos son otros conjuntos de lenguaje estructurado. Estos lenguajes están diseñados de tal manera que no son ambiguos por naturaleza y se pueden procesar fácilmente. Estos se expresan mediante algunas reglas o gramáticas. Estas reglas gramaticales están bien definidas y se pueden utilizar durante el procesamiento de un idioma.
Cuando hablamos, la mayoría de las veces tratamos de usar algunos lenguajes y pueden estar estructurados. Pero sobre todo, al hablar utilizamos lenguaje no estructurado. No tenemos muchas dificultades cuando utilizamos ambigüedades en nuestro idioma mientras hablamos y la naturaleza desestructurada no es difícil de procesar para nosotros. Este no es el caso de las máquinas, no pueden procesar los datos como lo hacemos nosotros.
El problema está en el contexto
La parte principal para las máquinas es comprender el contexto del discurso o del texto. Para entender esto, veamos el caso de estas dos oraciones:
- La mesa no entraba por la ventana porque era demasiado ancha.
- La mesa no entraba por la ventana porque era demasiado angosta.
En la primera oración podemos decir que se refiere a la mesa, mientras que en la segunda se refiere a la ventana. Pero, ¿cómo lo entiende un ordenador? Esto es un desafío. ¿Cómo supimos a dónde pertenece, pero la máquina no puede? Es la forma en que vemos las cosas. Puede que lo hayamos experimentado, lo conocemos por imaginación.
¿Cómo podemos construir un embudo para el PLN?
La construcción de un embudo para el Procesamiento del Lenguaje Natural incluye comenzar con textos sin procesar y analizarlos, procesarlos extrayendo palabras y significados relevantes, comprender el contexto hasta el punto que es la extracción de características y construir un modelo que pueda expresar la intención de hacer algo a partir de la oración. Al construir un embudo, es posible que el flujo de trabajo no sea lineal.
Procesamiento de texto:
Siempre pensamos por qué necesitamos procesar el texto. ¿Por qué no proporcionar directamente el texto? Entonces, veremos de dónde proviene ese texto antes de procesarlo. La mayor parte del texto puede estar disponible en páginas web como Wikipedia, o tal vez alguna frase pronunciada por alguien en una película o incluso un discurso de nuestro orador motivacional favorito. En el caso de las páginas web, tenemos el texto que está incrustado dentro de las etiquetas HTML y debemos retener solo el texto importante antes de extraer características relevantes de ellas. Puede haber URL, símbolos, etc. que pueden no tener ningún sentido para lo que hacemos y deben eliminarse.
La imagen de arriba nos dice acerca de varias fuentes de las que podemos tener el texto y por qué debemos procesarlas antes de extraer características relevantes. A veces, es posible que tengamos que hacer operaciones básicas como cambiar todas las palabras a minúsculas, ya que ayudará a reducir el uso de las mismas palabras más de una vez. Es posible que necesitemos omitir los signos de puntuación o detener trabajos como ‘el’, ‘para’, ya que puede no ser relevante para el problema y puede repetirse mucho tiempo y, por lo tanto, reducirá la complejidad de los procedimientos a seguir.
Extracción de características:
Ahora que se ha procesado el texto y que datos relevantes han sido extraídos, ¿ se puede construir directamente el modelo? No exactamente. Esto se debe a que las computadoras son máquinas que procesan datos en una codificación especial como binaria. No puede entender el español que hablamos. Las computadoras no tienen una representación estándar de palabras. Estos son internamente una secuencia de valores ASCII o Unicode, pero no capturan el significado ni el contexto. Por lo tanto, la construcción de un buen modelo puede requerir la extracción de características adecuadas de los datos procesados. Esto depende completamente de la tarea que se quiera realizar. La representación de las palabras se puede expresar en diferentes formas como quizás redes gráficas como para EsPal, o tal vez como una forma codificada para Word2Vec.
Es posible utilizar una codificación para dar probabilidad a palabras particulares de modo que estén representadas en forma de matriz. Se utilizan vectores en la generación de texto y traducción automática. Estos se pueden ver en Word2Vec.
Modelado:
En esta etapa, se construye un modelo como el aprendizaje automático o el aprendizaje profundo en función de los requisitos. Se utilizan los datos que extraen del modelo. Estos datos entrenados se utilizan de tal manera que le dan al modelo experiencia y se dice que el modelo aprende de estas experiencias. En el futuro, cuando lleguen nuevos datos invisibles, el modelo puede predecir el resultado, como predecir una palabra o predecir un sentimiento, etc.
El procesamiento del lenguaje natural trabaja con características numéricas y eso facilita el trabajo con cualquier modelo de aprendizaje automático. Estos modelos se utilizan en aplicaciones como sitios web, aplicaciones móviles como backend para ayudar a tomar decisiones en los negocio de productos. Algunos de los últimos modelos de lenguaje que utilizan el aprendizaje profundo incluyen Transformers, BERT, GPT, XLNet, etc.
A modo de conclusión
El procesamiento del lenguaje natural intenta hacer dos cosas: comprender y generar el lenguaje humano. Se podría llamar a estos los lados pasivo y activo de la PLN. La comprensión del lenguaje natural puede presentarse de muchas formas. En el nivel más simple, podría clasificar un texto: por ejemplo, puede tener un montón de correos electrónicos y desear saber si están enojados o felices, porque puede trabajar en el servicio al cliente. El procesamiento del lenguaje natural puede hacer eso y se llama análisis de sentimientos. O tal vez en un departamento de recursos humanos, donde se necesita clasificar los currículums que ingresan para los puestos vacantes; es decir, ¿la persona que solicita el puesto de diseñador de UX es alguien que tiene experiencia en UX o alguien que se lanza en paracaídas a la profesión de una carrera anterior como trapecista?
El PLN proporciona un amplio conjunto de técnicas y herramientas que se pueden aplicar en muchas áreas. Al aprender los modelos y utilizarlos en las interacciones diarias, nuestra calidad de vida mejoraría enormemente. Las técnicas de PLN ayudan a mejorar las comunicaciones, alcanzar los objetivos y mejorar los resultados recibidos de cada interacción.
En el futuro, el procesamiento del lenguaje natural irá más allá de los sistemas estadísticos y basados en reglas hacia una comprensión natural del lenguaje. Ya hay algunas mejoras realizadas por gigantes tecnológicos. Por ejemplo, Facebook intentó utilizar el aprendizaje profundo para comprender el texto sin análisis, etiquetas, reconocimiento de entidad con nombre (NER), etc., y Google está tratando de convertir el lenguaje en expresiones matemáticas. La detección de puntos finales utilizando redes de memoria a largo plazo a corto plazo y redes de memoria de un extremo a otro en la tareas bAbI realizadas por Google y Facebook, respectivamente, muestra el avance que se puede hacer en los modelos de PLN6.
Referencias:
- https://www.udacity.com/course/natural-language-processing-nanodegree–nd892
- https://aliz.ai/natural-language-processing-a-short-introduction-to-get-you-started/
- https://software.intel.com/content/www/us/en/develop/articles/deep-learning-for-natural-language-processing.html