驴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.

     

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *