¿Qué es el procesamiento del lenguaje natural?

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, cara a cara...

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, conversaciones cara a cara, tweets, blogs, correos electrónicos, sitios web, mensajes SMS, todos contienen lenguaje natural.

El lenguaje natural es algo increíblemente importante para que las computadoras lo entiendan por varias razones (entre otras):

  • Puede verse como una fuente de gran cantidad de datos y, si se procesa de manera inteligente, puede generar información útil.
  • Se puede usar 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 (NLP) es el área de aplicación que nos ayuda a lograr este objetivo. 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 aprendizaje automático, el resumen de información, la interacción humano-computadora y mucho más.

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

Áreas de aplicación de la PNL

  • Aprendizaje automático
  • La interacción persona-ordenador
  • Extracción de información
  • Resumen

Procesos y Conceptos de la PNL

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

Herramientas de PNL

-Python NLTK

  • Aprenda Python Scikit
  • TextBlob
  • espacioso
  • Stanford PNL

Áreas de aplicación de PNL

La PNL se está utilizando actualmente en una variedad de áreas para resolver problemas difíciles.

Aprendizaje automático {#aprendizaje automático}

La PNL se utiliza junto con técnicas de aprendizaje automático para realizar tareas como detección de emociones, análisis de sentimientos, reconocimiento de acto de diálogo, clasificación de correo no deseado, etc. Técnicas de aprendizaje automático 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 desempeña un papel muy importante en la recopilación de datos al convertir el lenguaje natural en un formato que las técnicas de aprendizaje automático pueden utilizar para entrenar algoritmos.

La clasificación de spam es un ejemplo clásico del uso de NLP en el aprendizaje automático. 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, ha ganado $100000000" se puede clasificar como "spam" y otro correo electrónico "Según nuestra discusión, encuentre las actas adjuntas de la reunión" se puede clasificar como " jamón".

Las herramientas y técnicas de NLP ayudan a convertir el texto de estos correos electrónicos en vectores de funciones que las aplicaciones de aprendizaje automático pueden usar para entrenar el algoritmo y luego predecir una nueva instancia de correo electrónico como spam o ham.

Interacción humano-computadora

La interacción humano-computadora ha evolucionado desde la 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 mejores 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 {#extracción de información}

Otra tarea importante de la PNL es extraer información útil de los documentos que se pueden utilizar para diferentes propósitos. Por ejemplo, las empresas que cotizan en bolsa están obligadas a 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 está yendo 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 en el último trimestre, podría usar PNL 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 contenga solo piezas clave de información, dejando atrás todo el desperdicio.

Por ejemplo, en lugar de tener que leer una noticia de varias páginas, puede usar el resumen para extraer solo la información importante sobre cualquier evento de noticias sobre el que se trate el artículo. O se puede 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 más comunes de la PNL.

Tokenización

La tokenización se refiere a dividir una oración en fragmentos de palabras. Por lo general, la tokenización es la primera tarea que se realiza en la canalización 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:

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

A nivel de oración, la tokenización devuelve fragmentos 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á un 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"

Eliminación de palabras de detención

Las palabras vacías en lenguaje natural son palabras que no proporcionan ninguna información útil en un contexto determinado. 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 brindan 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 lo tanto, es conveniente que solo tengamos en nuestro texto aquellas palabras que son importantes en un contexto dado. Esto ahorra tiempo de procesamiento y da como resultado un motor NLP más robusto.

Stemming y lematización

Stemming se refiere al proceso de eliminar los sufijos de las palabras en un intento de normalizarlos y reducirlos a su parte invariable. Por ejemplo, derivar las palabras "computational", "computed", "computing" daría como resultado "comput" ya que esta es la parte que no cambia de la palabra. Stemming opera en palabras individuales 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 búsquedas en el diccionario para obtener la palabra exacta que contiene información semántica.

La palabra "hablando" será reducida a "hablar" tanto por derivación como por lematización. Por otro lado, para la palabra "peor", la lematización devolverá "malo", ya que la lematización tiene 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á esta última. Por otro lado, la lematización devolverá la palabra "peor" tal como es.

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

Partes del habla (POS)

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

Un etiquetador POS etiqueta las palabras con sus correspondientes partes del discurso. Por ejemplo, "portátil, ratón, teclado" se etiquetan como sustantivos. Del mismo modo, "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é palabra POS es, pero muchas palabras tienen varios significados y, por lo tanto, podrían ser un POS diferente. Por ejemplo, si encuentra 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.

Las diferentes bibliotecas NLP utilizan diferentes conjuntos de etiquetas POS. La lista Etiqueta de punto de venta de Stanford es una de esas listas.

Reconocimiento de entidad nombrada

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

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

  • Sundar Pichai -> Persona
  • Director General -> Puesto
  • Google -> Organización

Una aplicación importante del reconocimiento de entidades nombradas es la del modelado de temas en el que, utilizando la información sobre las entidades en el texto, se puede detectar automáticamente el tema del documento.

Enfoque de bolsa de palabras

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 aprendizaje automático.

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 entrenamiento. Este vocabulario sirve como vector de características para el conjunto de entrenamiento. Por ejemplo, considere los siguientes cuatro documentos.

  • D1 = "Estoy feliz por tu éxito"
  • D2 = "Lamento tu pérdida"
  • D3 = "Se arrepiente de no venir"

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


Estoy feliz por tu éxito, lo siento, no puede venir.


En el conjunto de entrenamiento, 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 Me alegro por tu éxito Lamento la pérdida No puede venir


D1 1 1 1 1 1 1 0 0 0 0 0 D2 1 1 1 1 1 1 1 0 0 0 D3 0 0 0 1 0 0 1 0 2 1 1

Tabla 1: Funciones de capacitación 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 usando la oración "Lo siento, soy tu pérdida" será exactamente similar a "Lamento tu pérdida". La ocurrencia 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 aquellas palabras que ocurren con mayor frecuencia en un documento y que, 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 tu éxito"
  • D2 = "Lamento tu 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 inversa).

Frecuencia de términos se refiere al número de veces que aparece una palabra dentro de un documento. En el documento D1, el término "feliz" aparece una vez. De manera similar, el término "éxito" también aparece una vez. En D2, "he" aparece dos veces, por lo que la frecuencia del término para "he" es 2 para D2. Es importante mencionar aquí que la frecuencia del término de una palabra se calcula por documento.

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

1
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 ocurrencias 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.

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 "su" 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í:

1
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 solo en un documento. Entonces el valor IDF para "feliz" será:

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

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

Para "feliz", el valor TF-IDF será 1 x 0,477 = 0,477

Mediante 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, por lo tanto, el valor IDF es 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-Grams como características

Los N-gramas se refieren a un conjunto de palabras concurrentes. La intuición detrás del enfoque N-grama es que las palabras que aparecen juntas proporcionan más información que las que aparecen individualmente. Considere, por ejemplo, la siguiente oración:

1
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í:

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

Pero si observamos esta oración, podemos ver que "Manchester United" juntos brindan más información sobre lo que se dice en la oración en lugar de inspeccionar 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 los N-gramas, la N se refiere al número de palabras concurrentes. Por ejemplo, reconsideremos la oración "El Manchester United es el club de fútbol inglés más exitoso". Si tratamos de construir 2 gramos a partir de esta oración, se verían así:

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

Ahora, si observa estos N-gramas, puede ver que al menos tres N-gramas transmiten una cantidad significativa de información sobre la oración, p. "Manchester United", "Fútbol Inglés", "Club de Fútbol". De estos N-gramas podemos entender que la oración es sobre el Manchester United, que es un club de fútbol en el fútbol inglés.

Puede tener cualquier número de N-gramas. El número de N-gramas para una oración S que tiene X número de palabras es:

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

Un conjunto de N-gramas puede ser útil para pensar 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á a continuación en una oración.

En esta sección, cubrimos algunos de los conceptos y procesos básicos del procesamiento del lenguaje natural. La implementación manual de estos procesos es engorrosa 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 general de algunas de estas bibliotecas.

Algunas herramientas útiles de PNL

Las siguientes son 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

Kit de herramientas de lenguaje natural de Python (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 derivación, lematización, reconocimiento de entidades nombradas, etiquetado de POS, etc. Si Python es su idioma preferido, no busque más que Python NLTK.

Aprendizaje de Scikit

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

Resource: Learn to use Scikit Learn from Bootcamp de Python para ciencia de datos y aprendizaje automático

Mancha de texto

Aunque puede realizar casi todas las tareas de NLP con Python NLTK, acostumbrarse a la sintaxis compleja y las funcionalidades de NLTK puede llevar mucho tiempo. Mancha de texto es una biblioteca NLP fácil de usar construida sobre NLTK y [patrón](https://www.clips.uantwerpen.be/ pages/pattern-es) con una curva de aprendizaje menos pronunciada. 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.

espacioso

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 buscas construir algo a partir de la mejor combinación posible de funcionalidades, espacioso es una mejor opción. spaCy es más rápido y más preciso que NLTK y Textblob. Una desventaja de spaCy es que actualmente solo admite el idioma inglés, mientras que NLTK admite varios idiomas.

PNL de Stanford

Si te gustan las herramientas de procesamiento de lenguaje natural basadas en Java, PNL de Stanford debería ser tu primera opción. Stanford NLP es una biblioteca NPL con licencia GPL capaz de realizar todas las tareas fundamentales de NLP, p. tokenización, co-referenciación, derivación, etc. También es de tan alta calidad que se usa en muchos trabajos de investigación, por lo que es probable que lo escuche con bastante frecuencia 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.

Más información {#más información}

Este artículo proporciona una breve descripción general de muchas de las tareas y conceptos básicos de la PNL. Si bien cubrimos un poco de las áreas principales de la PNL, todavía queda mucho por 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 Ciencia de datos: Procesamiento del lenguaje natural en Python para principiantes en PNL, o Procesamiento de lenguaje natural con aprendizaje profundo 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. ython.