Pitón

Tutorial de NLTK en Python

Tutorial de NLTK en Python
La era de los datos ya está aquí. La velocidad a la que se generan los datos hoy es más alta que nunca y siempre está creciendo. La mayoría de las veces, las personas que se ocupan de los datos todos los días trabajan principalmente con datos textuales no estructurados. Algunos de estos datos tienen elementos asociados como imágenes, videos, audios, etc. Algunas de las fuentes de estos datos son sitios web, blogs diarios, sitios web de noticias y muchos más. Analizar todos estos datos a un ritmo más rápido es necesario y, muchas veces, también crucial.

Por ejemplo, una empresa puede ejecutar un motor de análisis de texto que procesa los tweets sobre su empresa mencionando el nombre de la empresa, la ubicación, procesa y analiza la emoción relacionada con ese tweet. Las acciones correctas se pueden tomar más rápido si esa empresa se entera de la creciente cantidad de tweets negativos para ella en una ubicación en particular para evitar un error o cualquier otra cosa. Otro ejemplo común será para YouTube. Los administradores y moderadores de Youtube se familiarizan con el efecto de un video según el tipo de comentarios realizados en un video o en los mensajes de chat de video. Esto les ayudará a encontrar contenido inapropiado en el sitio web mucho más rápido porque ahora, han erradicado el trabajo manual y han empleado robots de análisis de texto inteligentes automatizados.

En esta lección, estudiaremos algunos de los conceptos relacionados con el análisis de texto con la ayuda de la biblioteca NLTK en Python. Algunos de estos conceptos incluirán:

La PNL será el área principal de enfoque en esta lección, ya que es aplicable a enormes escenarios de la vida real en los que puede resolver problemas grandes y cruciales. Si cree que esto suena complejo, bueno, lo es, pero los conceptos son igualmente fáciles de entender si prueba los ejemplos uno al lado del otro. Pasemos a la instalación de NLTK en su máquina para comenzar con él.

Instalación de NLTK

Solo una nota antes de comenzar, puede usar un entorno virtual para esta lección que podemos realizar con el siguiente comando:

python -m virtualenv nltk
fuente nltk / bin / enable

Una vez que el entorno virtual está activo, puede instalar la biblioteca NLTK dentro del entorno virtual para que los ejemplos que creamos a continuación se puedan ejecutar:

pip instalar nltk

Usaremos Anaconda y Jupyter en esta lección. Si desea instalarlo en su máquina, consulte la lección que describe “Cómo instalar Anaconda Python en Ubuntu 18.04 LTS ”y comparta sus comentarios si tiene algún problema. Para instalar NLTK con Anaconda, use el siguiente comando en la terminal de Anaconda:

conda install -c anaconda nltk

Vemos algo como esto cuando ejecutamos el comando anterior:

Una vez que todos los paquetes necesarios están instalados y listos, podemos comenzar a usar la biblioteca NLTK con la siguiente declaración de importación:

importar nltk

Comencemos con ejemplos básicos de NLTK ahora que tenemos los paquetes de requisitos previos instalados.

Tokenización

Comenzaremos con la tokenización, que es el primer paso para realizar un análisis de texto. Una ficha puede ser una parte más pequeña de un texto que se puede analizar. Hay dos tipos de tokenización que se pueden realizar con NLTK:

Puede adivinar lo que sucede en cada una de las tokenizaciones, así que profundicemos en ejemplos de código.

Tokenización de sentencias

Como su nombre refleja, Sentence Tokenizers divide un fragmento de texto en oraciones. Probemos un fragmento de código simple para el mismo donde hacemos uso de un texto que elegimos del tutorial de Apache Kafka. Realizaremos las importaciones necesarias

importar nltk
de nltk.tokenizar importar sent_tokenize

Tenga en cuenta que puede enfrentar un error debido a una dependencia faltante para nltk llamada punkt. Agregue la siguiente línea justo después de las importaciones en el programa para evitar advertencias:

nltk.descargar ('punkt')

Para mí, dio el siguiente resultado:

A continuación, hacemos uso del tokenizador de oraciones que importamos:

text = "" "Un tema en Kafka es algo donde se envía un mensaje. El consumidor
aplicaciones que están interesadas en ese tema extraen el mensaje dentro de ese
tema y puedo hacer cualquier cosa con esos datos. Hasta un momento específico, cualquier número de
Las aplicaciones de consumo pueden extraer este mensaje tantas veces como desee."" "
oraciones = sent_tokenize (texto)
imprimir (oraciones)

Vemos algo como esto cuando ejecutamos el script anterior:

Como era de esperar, el texto se organizó correctamente en oraciones.

Tokenización de palabras

Como refleja el nombre, Word Tokenizers divide un fragmento de texto en palabras. Probemos un fragmento de código simple para el mismo con el mismo texto que en el ejemplo anterior:

de nltk.tokenizar importar word_tokenize
palabras = word_tokenize (texto)
imprimir (palabras)

Vemos algo como esto cuando ejecutamos el script anterior:

Como era de esperar, el texto se organizó correctamente en palabras.

Distribución de frecuencias

Ahora que hemos dividido el texto, también podemos calcular la frecuencia de cada palabra en el texto que usamos. Es muy simple de hacer con NLTK, aquí está el fragmento de código que usamos:

de nltk.probabilidad de importación FreqDist
distribución = FreqDist (palabras)
imprimir (distribución)

Vemos algo como esto cuando ejecutamos el script anterior:

A continuación, podemos encontrar las palabras más comunes en el texto con una función simple que acepta el número de palabras a mostrar:

# Palabras más comunes
distribución.más_común (2)

Vemos algo como esto cuando ejecutamos el script anterior:

Finalmente, podemos hacer una gráfica de distribución de frecuencia para aclarar las palabras y su recuento en el texto dado y entender claramente la distribución de palabras:

Para las palabras

Al igual que cuando hablamos con otra persona a través de una llamada, suele haber algo de ruido durante la llamada, que es información no deseada. De la misma manera, el texto del mundo real también contiene ruido que se denomina como Para las palabras. Las palabras vacías pueden variar de un idioma a otro, pero se pueden identificar fácilmente. Algunas de las palabras vacías en inglés pueden ser: es, son, a, el, un, etc.

Podemos ver las palabras que NLTK considera como palabras vacías para el idioma inglés con el siguiente fragmento de código:

de nltk.palabras vacías de importación de corpus
nltk.descargar ('palabras vacías')
idioma = "ingles"
stop_words = set (palabras vacías.palabras (idioma))
imprimir (stop_words)

Como, por supuesto, el conjunto de palabras vacías puede ser grande, se almacena como un conjunto de datos separado que se puede descargar con NLTK como se muestra arriba. Vemos algo como esto cuando ejecutamos el script anterior:

Estas palabras vacías deben eliminarse del texto si desea realizar un análisis de texto preciso para el fragmento de texto proporcionado. Eliminemos las palabras vacías de nuestros tokens textuales:

filtradas_palabras = []
por palabra en palabras:
si la palabra no está en stop_words:
filtradas_palabras.añadir (palabra)
filtradas_palabras

Vemos algo como esto cuando ejecutamos el script anterior:

Derivación de palabras

La raíz de una palabra es la base de esa palabra. Por ejemplo:

Realizaremos la derivación de las palabras filtradas de las que eliminamos las palabras vacías en la última sección. Escribamos un fragmento de código simple donde usamos el lematizador de NLTK para realizar la operación:

de nltk.importación de tallo PorterStemmer
ps = PorterStemmer ()
stemmed_words = []
por palabra en filtradas_palabras:
stemmed_words.añadir (ps.tallo (palabra))
print ("Oración derivada:", palabras_ derivadas)

Vemos algo como esto cuando ejecutamos el script anterior:

Etiquetado POS

El siguiente paso en el análisis textual es después de derivar es identificar y agrupar cada palabra en términos de su valor, i.mi. si cada una de las palabras es un sustantivo o un verbo o algo más. Esto se denomina etiquetado como parte del habla. Realicemos el etiquetado de POS ahora:

tokens = nltk.word_tokenize (oraciones [0])
imprimir (fichas)

Vemos algo como esto cuando ejecutamos el script anterior:

Ahora, podemos realizar el etiquetado, para lo cual tendremos que descargar otro conjunto de datos para identificar las etiquetas correctas:

nltk.descargar ('averaged_perceptron_tagger')
nltk.pos_tag (tokens)


Aquí está el resultado del etiquetado:

Ahora que finalmente hemos identificado las palabras etiquetadas, este es el conjunto de datos en el que podemos realizar análisis de sentimientos para identificar las emociones detrás de una oración.

Conclusión

En esta lección, analizamos un excelente paquete de lenguaje natural, NLTK, que nos permite trabajar con datos textuales no estructurados para identificar las palabras vacías y realizar un análisis más profundo al preparar un conjunto de datos nítidos para el análisis de texto con bibliotecas como sklearn.

Encuentre todo el código fuente utilizado en esta lección en Github. Comparta sus comentarios sobre la lección en Twitter con @sbmaggarwal y @LinuxHint.

Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...
Revisión del mouse inalámbrico Microsoft Sculpt Touch
Recientemente leí sobre el Microsoft Sculpt Touch mouse inalámbrico y decidí comprarlo. Después de usarlo por un tiempo, decidí compartir mi experienc...
Trackpad en pantalla y puntero del mouse AppyMouse para tabletas Windows
Los usuarios de tabletas a menudo pierden el puntero del mouse, especialmente cuando son habituales para usar las computadoras portátiles. Los teléfon...