Sat. Oct 1st, 2022

Cómo realizar un análisis exploratorio de datos en datos de texto para el procesamiento del lenguaje natural

Imagen del autor. El análisis exploratorio de datos (EDA) para datos de texto es más que contar caracteres y términos. Para llevar su EDA al siguiente nivel, puede mirar cada palabra y categorizarla o puede analizar el sentimiento general de un texto.

El análisis exploratorio de datos para datos de texto es más que contar caracteres y términos.

En este artículo, veremos algunas técnicas EDA intermedias para datos de texto:Etiquetado de parte del discurso: Veremos el etiquetado de parte del discurso (POS) y cómo usarlo para obtener los adjetivos, sustantivos, verbos, etc. más frecuentes.Análisis de los sentimientos: Veremos el análisis de sentimientos y exploraremos si el conjunto de datos tiene una tendencia positiva o negativa. Al igual que en el artículo anterior, usaremos el conjunto de datos de reseñas de ropa de comercio electrónico para mujeres de Kaggle para este artículo nuevamente. Para simplificar los ejemplos, usaremos utilice 450 críticas positivas (puntuación == 5) y 450 críticas negativas (puntuación == 1). Esto reduce la cantidad de puntos de datos a 900 filas, reduce la cantidad de clases de calificación a dos y equilibra las revisiones positivas y negativas. Además, solo usaremos dos columnas: el texto de la revisión y la calificación. conjunto de datos se ve así:Jefe del conjunto de datos simplificado de revisiones de ropa de comercio electrónico para mujeresJefe del conjunto de datos simplificado de reseñas de ropa de comercio electrónico para mujeres (Imagen del autor) En las técnicas fundamentales de EDA, cubrimos las palabras y bigramas más frecuentes y notamos que adjetivos como “genial” y “perfecto” se encontraban entre las palabras más frecuentes. en las críticas positivas. Con el etiquetado de POS, puede refinar la EDA en los términos más frecuentes. Por ejemplo, podrías explorar, qué adjetivos o verbos son más comunesEl etiquetado .POS toma cada token en un texto y lo categoriza como sustantivos, verbos, adjetivos, etc., como se muestra a continuación:parte de la oración (pos) etiquetada oraciónSi tiene curiosidad acerca de cómo visualicé esta oración, puede consultar mi tutorial aquí: Para verificar qué etiquetas POS son las más comunes, comenzaremos creando un corpus de todos los textos de revisión en DataFrame: corpus = df[“text”].valores.tolist()Corpus como Lista de textos de revisiónCorpus como lista de textos de revisión (Imagen del autor) A continuación, tokenizaremos todo el corpus como preparación para el etiquetado de POS. from nltk import word_tokenize
tokens = word_tokenize(” “.join(corpus))Lista de fichasLista de tokens (Imagen del autor) Luego, etiquetaremos POS cada token en el corpus con el conjunto de etiquetas gruesas “universal”: import nltk
etiquetas = nltk.pos_tag(fichas,
conjunto de etiquetas = “universal”)Tokens etiquetados POSTokens etiquetados de POS (Imagen del autor) Al igual que en el análisis de frecuencia de términos del artículo anterior, crearemos una lista de etiquetas eliminando todas las palabras vacías. Además, solo incluiremos palabras de una etiqueta específica, por ejemplo, adjetivos. Luego, todo lo que tenemos que hacer es usar la clase Counter como en el artículo anterior. from collections import Countertag = “ADJ”
stop = set(stopwords.words(“english”))# Obtener todos los tokens que están etiquetados como adjetivos
etiquetas = [word for word, pos in tags if ((pos == tag) & ( word not in stop))]# Cuenta los adjetivos más comunes
most_common = Counter(tags).most_common(10)# Visualiza las etiquetas más comunes como diagramas de barras
palabras, frecuencia = [], []
para word, cuente en most_common:
palabras.append(palabra)
frecuencia.append(recuento)sns.barplot(x = frecuencia, y = palabras) A continuación, puede ver los 10 adjetivos más comunes para las críticas negativas y positivas:diagrama de barras de los adjetivos más frecuentes separados por clase de Adjetivos más frecuentes separados por clase “Calificación” (Imagen del autor). A partir de esta técnica, podemos ver que palabras como “pequeño”, “encajar”, ​​“grande” y “grande” son las más comunes. Esto podría indicar que los clientes están más decepcionados con el ajuste de una prenda que, por ejemplo, con su calidad. La idea principal del análisis de sentimientos es comprender si un texto tiene un tono positivo o negativo. Por ejemplo, la oración “Me encanta este top”. tiene un sentimiento positivo y la oración “Odio el color”. tiene un sentimiento negativo. Puede usar TextBlob para un análisis de sentimiento simple como se muestra a continuación: from textblob import TextBlobblob = TextBlob (“Me encanta el corte”) blob.polarityLa polaridad es un indicador de si una declaración es positiva o negativa y es un número entre -1 (negativo) y 1 (positivo). La oración “Me encanta el corte” tiene una polaridad de 0,5, mientras que la oración “Odio el color” tiene una polaridad de -0,8. La oración combinada “Me encanta el corte pero odio el color” tiene una polaridad de -0,15 .Para varias oraciones en un texto, puede obtener la polaridad de cada oración como se muestra a continuación: texto = “Me encanta el corte. Recibo muchos elogios. Me encanta.”
[sentence.polarity for sentence in TextBlob(text).sentences]Este código devuelve una matriz de polaridades de [0.5, 0.0, 0.5]. Eso significa que la primera y la última oración tienen un sentimiento positivo, mientras que la segunda oración tiene un sentimiento neutral. Si aplicamos este análisis de sentimiento a todo el marco de datos de esta manera, df[“polarity”] = gl[“text”].mapa(lambda x: np.media([sentence.polarity for sentence in TextBlob(x).sentences]))podemos trazar una comparación de diagrama de caja con el siguiente código:sns.boxplot(data = df,
y = “polaridad”,
x = “calificación”) A continuación, puede ver los diagramas de caja de polaridad para las críticas negativas y positivas:Gráficos de caja de polaridad separados por clase de Polaridad separada por la clase “Calificación” (Imagen del autor). Como era de esperar, podemos ver que las reseñas negativas (calificación == 1) tienen una polaridad general más baja que las reseñas positivas (calificación == 5). En este artículo, analizamos algunas técnicas EDA intermedias para datos de texto:Etiquetado de parte del discurso: Analizamos el etiquetado de parte del discurso y cómo usarlo para obtener los adjetivos más frecuentes como ejemplo.Análisis de los sentimientos: Analizamos el análisis de opiniones y exploramos las polaridades de los textos de revisión. A continuación, puede encontrar todos los fragmentos de código para una copia rápida: