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:
- Tokenización, cómo dividir un fragmento de texto en palabras, oraciones
- Evitar las palabras vacías basadas en el idioma inglés
- Realizar derivación y lematización en un fragmento de texto
- Identificar los tokens a analizar
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 nltkfuente 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 nltkUsaremos 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 nltkVemos 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 nltkComencemos 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:
- Tokenización de sentencias
- Tokenización de palabras
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 nltkde 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 consumidoraplicaciones 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_tokenizepalabras = 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 FreqDistdistribució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 comunesdistribució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 corpusnltk.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 PorterStemmerps = 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.