¿Qué es el procesamiento del lenguaje natural?

¿

Introducción

El lenguaje natural se refiere al lenguaje utilizado por los humanos para comunicarse entre sí. Esta comunicación puede ser verbal o textual. Por ejemplo, las conversaciones cara a cara, los tweets, los blogs, los correos electrónicos, los sitios web, los mensajes SMS, todos contienen lenguaje natural.

El lenguaje natural es algo increíblemente importante que las computadoras comprendan por algunas razones (entre otras):

  • Puede verse como una fuente de gran cantidad de datos y, si se procesa de manera inteligente, puede producir información útil.
  • Se puede utilizar para permitir que las computadoras se comuniquen mejor con los humanos.

Sin embargo, a diferencia de los humanos, las computadoras no pueden comprender fácilmente el lenguaje natural. Se requieren técnicas y métodos sofisticados para traducir el lenguaje natural a un formato comprensible para las computadoras. El procesamiento del lenguaje natural (PNL) es el área de aplicación que nos ayuda a lograr este objetivo. La PNL se refiere a técnicas y métodos involucrados en la manipulación automática del lenguaje natural. El procesamiento del lenguaje natural se usa ampliamente para el Machine Learning, el resumen de información, la interacción entre humanos y computadoras y mucho más.

Este artículo contiene una breve descripción general de las áreas de aplicación de PNL, importantes tareas y conceptos de PNL y algunas herramientas de PNL muy útiles. El resto del artículo se organiza de la siguiente manera:

Áreas de aplicación de PNL

  • Machine Learning
  • La interacción persona-ordenador
  • Extracción de información
  • Resumen

Procesos y conceptos de PNL

  • Lematización
  • Derivado
  • Etiquetado POS
  • Reconocimiento de entidad nombrada
  • Enfoque de la bolsa de palabras
  • TF-IDF
  • N gramos

Herramientas de PNL

  • Python NLTK
  • Python Scikit Learn
  • TextBlob
  • espacio
  • Stanford PNL

Áreas de aplicación de PNL

Actualmente, la PNL se utiliza en una variedad de áreas para resolver problemas difíciles.

Machine Learning

La PNL se utiliza junto con técnicas de Machine Learning para realizar tareas como detección de emociones, análisis de sentimientos, reconocimiento de actos de diálogo , clasificación de correo electrónico no deseado, etc. Las técnicas de Machine Learning requieren datos para entrenar algoritmos.

El lenguaje natural en forma de tweets, blogs, sitios web, chats, etc. es una gran fuente de datos. La PNL juega un papel muy importante en la recopilación de datos al convertir el lenguaje natural en un formato que puede ser utilizado por técnicas de Machine Learning para entrenar algoritmos.

La clasificación de spam es un ejemplo clásico del uso de la PNL en el Machine Learning. La clasificación de spam se refiere al proceso de clasificar los correos electrónicos como “spam o ham” según el contenido del correo electrónico. Por ejemplo, un correo electrónico “Hola, felicitaciones por haber ganado $ 100000000” puede clasificarse como “spam” y otro correo electrónico “Según nuestra discusión, encontrará el acta adjunta de la reunión” se puede clasificar como “jamón”.

Las herramientas y técnicas de PNL ayudan a convertir el texto de estos correos electrónicos en vectores de características que las aplicaciones de Machine Learning pueden utilizar para entrenar el algoritmo y luego predecir una nueva instancia de correo electrónico como spam o ham.

La interacción persona-ordenador

La interacción entre humanos y computadoras ha evolucionado desde una simple interacción basada en el escritorio del mouse y el teclado hasta una interacción más natural que involucra el habla y los gestos. Por ejemplo, Alexa de Amazon y Siri de Apple son dos de los principales ejemplos de dicha interacción en la que los humanos usan el habla para interactuar con el sistema y realizar diferentes tareas. Otro ejemplo de interacción natural es la página de inicio de Google, donde puede realizar operaciones de búsqueda a través del habla. El procesamiento del lenguaje natural es la base de dicha interacción.

Extracción de información

Otra tarea importante de la PNL es extraer información útil de documentos que se pueden utilizar para diferentes propósitos. Por ejemplo, las empresas que cotizan en bolsa deben publicar información financiera y ponerla a disposición de sus accionistas. La PNL se puede utilizar para extraer información financiera de este tipo de documentos para recopilar automáticamente información sobre cómo le va a una empresa (o industria).

Si se extrae con cuidado, la información extraída de estas fuentes puede ayudar a las empresas a tomar decisiones adecuadas. Por ejemplo, si una empresa no se desempeñó muy bien el último trimestre, entonces podría usar NLP para determinar esto y luego vender automáticamente sus acciones.

Resumen

No toda la información en un documento de texto es útil, por lo que es posible que deseemos eliminar cualquier “pelusa” y leer solo lo que es importante. El resumen se refiere a condensar un documento de manera que solo contenga información clave, dejando atrás todo el desperdicio.

Por ejemplo, en lugar de tener que leer una noticia de varias páginas, puede utilizar el resumen para extraer solo la información importante sobre cualquier evento de noticias sobre el que se trate el artículo. O se podría hacer un resumen como una vista previa del artículo para ayudarlo a decidir si desea leer el texto completo o no.

Conceptos importantes de PNL

En esta sección estudiaremos algunos de los conceptos de PNL más comunes.

Tokenización

La tokenización se refiere a dividir una oración en trozos de palabras. Por lo general, la tokenización es la primera tarea que se realiza en el proceso de procesamiento del lenguaje natural. La tokenización se puede realizar en dos niveles: nivel de palabra y nivel de oración.

A nivel de palabra, la tokenización devuelve un conjunto de palabras en una oración.

Por ejemplo, tokenizar una oración “Tengo hambre” devuelve el siguiente conjunto de palabras:

Words = ['I', 'am', 'feeling', 'hungry']

A nivel de oración, la tokenización devuelve una gran cantidad de oraciones en un documento. Por ejemplo, considere un documento con el siguiente texto.

“París es la capital de Francia. Está ubicada en el norte de Francia. Es una ciudad hermosa”

La tokenización a nivel de oración del documento anterior devolverá el conjunto de las siguientes oraciones:

  • S1 = “París es la capital de Francia”
  • S2 = “Se encuentra en el norte de Francia”
  • S3 = “Es una ciudad hermosa”

Detener la eliminación de palabras

Las palabras vacías en lenguaje natural son palabras que no brindan ninguna información útil en un contexto dado. Por ejemplo, si está desarrollando un motor de detección de emociones, palabras como “es”, “soy” y “el” no transmiten ninguna información relacionada con las emociones.

Por ejemplo, en la oración “Me siento feliz hoy”, las dos primeras palabras “yo” y “soy” pueden eliminarse ya que no proporcionan ninguna información relacionada con las emociones. Sin embargo, la palabra “yo” puede ser importante por otras razones, como identificar quién se siente feliz. No existe una lista universal de palabras vacías para eliminar, ya que algunas pueden proporcionar valor, solo depende de su aplicación.

En PNL, todas y cada una de las palabras requieren procesamiento. Por tanto, es conveniente que en nuestro texto solo tengamos aquellas palabras que son importantes en un contexto determinado. Esto ahorra tiempo de procesamiento y da como resultado un motor de PNL más robusto.

Derivado y lematización

La derivación se refiere al proceso de quitar los sufijos de las palabras en un intento de normalizarlos y reducirlos a su porción invariable. Por ejemplo, derivar las palabras “computacional”, “calculado”, “computación” daría como resultado “comput” ya que esta es la parte que no cambia de la palabra. La derivación funciona con palabras sueltas y no tiene en cuenta el contexto de la palabra. Sin embargo, “comput” no tiene información semántica.

La lematización, por otro lado, realiza una tarea similar, pero tiene en cuenta el contexto al derivar las palabras. La lematización es más compleja, ya que realiza una búsqueda en el diccionario para obtener la palabra exacta que contiene información semántica.

La palabra “hablar” se despojará de “hablar” tanto por derivación como por lematización. Por otro lado, para la palabra “peor”, la lematización devolverá “malo” ya que lematizador toma en cuenta el contexto de la palabra. Aquí la lematización sabrá que “peor” es un adjetivo y es la segunda forma de la palabra “malo”, por lo que devolverá la última. Por otro lado, la derivación devolverá la palabra “peor” tal como está.

La derivación y la lematización son muy útiles para encontrar la similitud semántica entre diferentes piezas de texto.

Partes del discurso (POS)

Otra tarea importante de PNL es asignar etiquetas de partes del habla a las palabras. Para construir una oración significativa y gramaticalmente correcta, las partes del discurso juegan un papel importante. La disposición y co-ocurrencia de diferentes partes del discurso en una palabra la hacen comprensible gramatical y semánticamente. Además, las partes del discurso también son parte integral de la identificación del contexto. El etiquetado POS ayuda a lograr estas tareas.

Un etiquetador de POS etiqueta las palabras con sus correspondientes partes del discurso. Por ejemplo, “laptop, mouse, keyboard” se etiquetan como sustantivos. De manera similar, “comer, jugar” son verbos, mientras que “bueno” y “malo” se etiquetan como adjetivos.

Si bien esto puede parecer una tarea simple, no lo es. Para muchas palabras, puede usar una búsqueda en el diccionario para ver qué POS es una palabra, pero muchas palabras tienen varios significados y, por lo tanto, podrían ser un POS diferente. Por ejemplo, si encontrara la palabra “viento”, ¿sería un sustantivo o un verbo? Eso realmente depende del contexto, por lo que su etiquetador de POS necesitaría comprender el contexto, hasta cierto punto.

Diferentes bibliotecas de PNL utilizan un conjunto diferente de etiquetas POS. La lista de etiquetas de POS de Stanford es una de esas listas.

Reconocimiento de entidad nombrada

El reconocimiento de entidades nombradas se refiere al proceso de clasificar entidades en categorías predefinidas como persona, ubicación, organización, vehículo, etc.

Por ejemplo, en la frase “Sundar Pichai, CEO de Google está teniendo una charla en Washington”. Un reconocedor de entidad con nombre típico devolverá la siguiente información sobre esta oración:

  • Sundar Pichai -> Persona
  • CEO -> Posición
  • Google -> Organización

Una aplicación importante del reconocimiento de entidades nombradas es la del modelado de temas, donde al usar la información sobre las entidades en el texto, el tema del documento puede detectarse automáticamente.

Enfoque de bolsa de palabras

La bolsa de palabras se refiere a una metodología utilizada para extraer características de documentos de texto. Estas funciones se pueden usar para varias tareas, como entrenar algoritmos de Machine Learning.

El enfoque de la bolsa de palabras es sencillo. Comienza construyendo un vocabulario de todas las palabras únicas que aparecen en todos los documentos del conjunto de formación. Este vocabulario sirve como vector de características para el conjunto de entrenamiento. Por ejemplo, considere los siguientes cuatro documentos.

  • D1 = “Estoy feliz por su éxito”
  • D2 = “Lamento su pérdida”
  • D3 = “Siento no haber venido”

El vocabulario o la construcción del vector de características utilizando los documentos anteriores se verá así:

yoa.mfelizparatuéxitolo sientopérdidaÉlno puedoven

En el conjunto de formación, se inserta una fila para cada documento. Para cada atributo (palabra) en una fila se inserta la frecuencia de la palabra en el documento correspondiente. Si una palabra no existe en el documento, se agrega 0 para eso. Los datos de entrenamiento para los documentos anteriores se ven así:

Documento Soy feliz por su éxito lo siento perdida No puedo venir

D111111100000
D2111111000
D300010010211

Tabla 1: Funciones de entrenamiento que contienen frecuencias de términos de cada palabra en el documento

Esto se denomina enfoque de bolsa de palabras, ya que no se tiene en cuenta la secuencia de palabras en un documento. Por ejemplo, el ejemplo de entrenamiento construido con la oración “Lo siento, estoy por la pérdida” será exactamente similar a “Lamento su pérdida”. La aparición de la palabra es todo lo que importa en este enfoque.

TF-IDF

TF-IDF significa “frecuencia de término multiplicada por frecuencia de documento”. La intuición detrás del cálculo de los valores de TF-IDF es que las palabras que aparecen con más frecuencia en un documento y, en general, son menos frecuentes en todos los documentos deben tener más peso, ya que son más cruciales para la clasificación. Para entender TF-IDF, consideremos el mismo ejemplo que estudiamos en la última sección. Supongamos que tenemos estos tres documentos D1, D2 y D3:

  • D1 = “Estoy feliz por su éxito”
  • D2 = “Lamento su pérdida”
  • D3 = “Lo siente, no puede venir”

TF-IDF es una combinación de dos valores: TF (frecuencia de término) e IDF (frecuencia de documento inverso).

La frecuencia del término se refiere al número de veces que aparece una palabra en un documento. En el documento D1, el término “feliz” aparece una vez. Del mismo modo, el término “éxito” también aparece una vez. En D2, “él” aparece dos veces, por lo que el término frecuencia para “él” es 2 para D2. Es importante mencionar aquí que la frecuencia de términos de una palabra se calcula por documento.

En algunos escenarios donde la extensión de los documentos varía, la frecuencia de términos para una palabra en particular se calcula como:

Term frequence = (Number of Occurences of a word)/(Total words in the document)

Sin embargo, en aras de la simplicidad, solo usaremos el número de apariciones de una palabra en el documento. La Tabla 1 contiene la frecuencia de términos para todas las palabras en los documentos D1, D2 y D3.

La frecuencia inversa de documentos para una palabra en particular se refiere al número total de documentos en un conjunto de datos dividido por el número de documentos en los que existe la palabra. En los documentos D1, D2 y D3, la palabra “su” aparece en D1 y D2. Entonces IDF para “tu” será 3/2.

Para reducir el impacto de la unicidad, es una práctica común tomar el registro del valor IDF. La fórmula final para IDF de una palabra en particular se ve así:

IDF(word) = Log((Total number of documents)/(Number of documents containing the word))

Intentemos encontrar el valor IDF para la palabra “feliz”. Tenemos tres documentos, es decir, D1, D2 y D3 y la palabra “feliz” aparece sólo en un documento. Entonces, el valor IDF para “feliz” será:

IDF(happy) = log⁡(3/1) = log⁡(3) = 0.477

Finalmente, el término TF-IDF es un producto de los valores de TF e IDF para un término particular en el documento.

Para “feliz”, el valor de TF-IDF será 1 x 0,477 = 0,477

Por el mismo proceso, el valor IDF para la palabra “su” será 0,17. Tenga en cuenta que “su” aparece en dos documentos, por lo tanto, es menos único, de ahí el valor IDF más bajo en comparación con “feliz” que aparece en un solo documento.

Este tipo de análisis puede ser útil para cosas como la búsqueda o la categorización de documentos (piense en el etiquetado automático).

N-gramos como características

N-gramas se refiere al conjunto de palabras concurrentes. La intuición detrás del enfoque N-gram es que las palabras que ocurren juntas brindan más información en lugar de las que ocurren individualmente. Considere, por ejemplo, la siguiente oración:

S1 = "Manchester united is the most successful English football club"

Aquí, si creamos un conjunto de características para esta oración con palabras individuales, se verá así:

Features = {Manchester, United, is, the, most, successful, English, Football, Club}

Pero si miramos esta oración, podemos ver que “Manchester United” en conjunto proporciona más información sobre lo que se dice en la oración en lugar de si examina las palabras “Manchester” y “United” por separado.

Los N-gramas nos permiten tener en cuenta la ocurrencia de las palabras mientras procesamos el contenido del documento.

En N-gramas, la N se refiere al número de palabras concurrentes. Por ejemplo, reconsideremos la frase “El Manchester United es el club de fútbol inglés más exitoso”. Si intentamos construir 2 gramos a partir de esta oración, se verían así:

2-Grams(S1) =  ('Manchester United', 'United is', 'is the', 'the most', 'most successful', 'successful English', 'English Football', 'Football club')

Ahora, si miras estos N-gramas, puedes ver que al menos tres N-gramas transmiten un poco de información significativa sobre la oración, por ejemplo, “Manchester United”, “Fútbol inglés”, “Club de fútbol”. A partir de estos N-gramas podemos entender que la frase trata sobre el Manchester United que es club de fútbol en el fútbol inglés.

Puede tener cualquier número de N-gramos. El número de N-gramos para una oración que Stiene un Xnúmero de palabras es:

N-gram(S) = X - (N-1)

Un conjunto de N-gramas puede ser útil para pensamientos como autocompletar / autocorrección y modelos de lenguaje. La creación de un N-grama a partir de un gran corpus de texto proporciona mucha información sobre qué palabras suelen aparecer juntas y, por lo tanto, le permite predecir qué palabra vendrá después en una oración.

En esta sección, cubrimos algunos de los conceptos y procesos básicos del procesamiento del lenguaje natural. Implementar estos procesos manualmente es engorroso y requiere mucho tiempo. Afortunadamente, hay muchas bibliotecas de software disponibles que automatizan estos procesos. En la siguiente sección se proporciona una breve descripción de algunas de estas bibliotecas.

Algunas herramientas útiles de PNL

A continuación se muestran algunas de las herramientas de PNL más utilizadas. Todas estas herramientas proporcionan la mayoría de las funcionalidades básicas de PNL; sin embargo, difieren en su implementación y licencia.

Python NLTK

Python Natural Language Toolkit (NLTK) es, con mucho, la herramienta de procesamiento de lenguaje natural más popular y completa. Implementado en Python, NTLK tiene todas las capacidades básicas de procesamiento del lenguaje natural, como lematización, reconocimiento de entidades con nombre, etiquetado POS, etc. Si Python es su lenguaje de elección, no busque más que Python NLTK.

Aprender Scikit

Scikit-learn es otra biblioteca de Python extremadamente útil para el procesamiento del lenguaje natural. Aunque Scikit Learn se centra principalmente en las tareas de Machine Learning, también contiene la mayoría de las capacidades básicas de procesamiento del lenguaje natural y no debe pasarse por alto.

Recurso: Learn to use Scikit Learn from Python for Data Science and Machine Learning Bootcamp

Textblob

Aunque puede realizar casi todas las tareas de PNL con Python NLTK, familiarizarse con la sintaxis y las funcionalidades complejas de NLTK puede llevar mucho tiempo. Textblob es una biblioteca de PNL fácil de usar construida sobre NLTK y un patrón con una curva de aprendizaje menos empinada. Textblob es muy recomendable para principiantes absolutos en el procesamiento del lenguaje natural en Python, o para alguien que se preocupa más por llegar al resultado final que por cómo funcionan las partes internas.

espacio

Textblob y NLTK son extremadamente buenos para fines educativos y para explorar cómo funciona la PNL. Contienen muchas opciones para realizar una tarea. Por ejemplo, si está tratando de entrenar a un etiquetador de POS con sus propios datos, las bibliotecas como NLTK y Textblob deberían ser su elección. Por otro lado, si está buscando construir algo a partir de la mejor combinación posible de funcionalidades, spaCy es una mejor opción. spaCy es más rápido y más preciso que tanto NLTK como Textblob. Una desventaja de spaCy es que actualmente solo admite el idioma inglés, mientras que NLTK admite varios idiomas.

Stanford PNL

Si le gustan las herramientas de procesamiento de lenguaje natural basadas en Java, Stanford NLP debería ser su primera opción. Stanford NLP es una biblioteca de NPL con licencia GPL capaz de realizar todas las tareas fundamentales de NLP, por ejemplo, tokenización, co-referenciación, derivación, etc. También es de tan alta calidad que se utiliza en muchos trabajos de investigación, por lo que probablemente escuche sobre muy a menudo en el mundo académico. Lo bueno de Stanford NLP es que admite varios idiomas, como chino, inglés, español y francés, etc.

Aprende más

Este artículo proporciona una breve descripción general de muchas de las tareas y conceptos básicos de la PNL. Si bien cubrimos algunas de las áreas principales de la PNL, todavía hay mucho que aprender.

Hay una buena cantidad de recursos disponibles si desea familiarizarse rápidamente con un campo en crecimiento como la PNL. Personalmente, recomendaría un curso en línea como Data Science: Natural Language Processing en Python para principiantes en PNL, o Natural Language Processing con Deep Learning en Python si eres un poco más avanzado.

En los próximos artículos, profundizaremos en estos conceptos y veremos cómo se pueden usar e implementar en Python.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad