Funciones del count vectorizer: stopwords y max features

| Última modificación: 14 de noviembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

El count vectorizer es una forma de representar un texto en natural language processing que convierte una colección de documentos en una matriz de documentos–palabras. En este artículo, vamos a contarte algunas funciones del count vectorizer.

Algunas funciones del count vectorizer

En un artículo anterior, hablábamos acerca de la definición de count vectorizer. En ese post, desarrollábamos un ejercicio que consistía en trabajar con un corpus por tres oraciones:

  • ‘me gustan los perros’
  • ‘hay perros y perros’
  • ‘hay muchas razas de perros’

Estas tres oraciones las convertimos en un corpus del que obtuvimos el vocabulario por medio de diferentes funciones, entre ellas el fit.transform. Posteriormente, realizamos un algoritmo que nos permitió obtener los nombres de las features.

Con algunas líneas de código más, logramos sacar todas las palabras que no se repetían dentro de nuestro corpus. Estas palabras las trasladamos a un dataframe y lo representamos, de modo que quedó así:

 degustanhaylosmemuchasperrosrazas
001011010
100100020
210100111

Concluimos que estos modelos con todas las modificaciones hechas son mucho más óptimos a nivel computacional, ya que no requieren strings de texto, sino que todo se trabaja directamente con listas.

Con esta información perdíamos todo tipo de contexto, por tanto, no necesitamos las stopwords, así que las eliminaremos. Esta es precisamente una de las funciones del count vectorizer que podemos ejecutar.

Stopwords

El parámetro stop_words acepta:

  • ‘english’
  • Lista de stopwords.
  • None (default), no filtra stopwords.
#Algunas funciones del count vectorizer
vectorizer = CountVectorizer (stop_words = ['de', 'hay', 'los', 'me'])
X = vectorizer.fit_transform (corpus)
#Algunas funciones del count vectorizer
print (vectorizer.get_features_names ())
Algunas funciones del count vectorizer

Tendríamos este nuevo vocabulario, que simplemente serían las palabras más representativas del vocabulario del corpus.

Ahora lo que haremos será la misma representación. Obtenemos un dataframe mucho más simple a nivel representativo respecto al codificado mientras mantenemos la misma información. Recordemos que las stopwords son palabras sin ningún tipo de valor, por lo que las stopwords que teníamos antes no aportaban nada al enriquecimiento del texto.

Podríamos hacer la limpieza de stopwords de manera previa, antes de pasar solo al vectorizer, pero con count vectorizer se nos brinda la posibilidad de hacerlo directamente sobre el propio objeto. Simplemente pasamos la lista y nos hace la limpieza.

#Algunas funciones del count vectorizer
doc_term_matrix = pd.DataFrame (X.toarray (), columns = vectorizer.get_feature_names ())
doc_term_matrix
 gustanmuchasperrosrazas
01010
10020
20111

Número máximo de términos

El parámetro max_features establece el número máximo de features a extraer (vocabulario). Mantendrá solo el top indicado por dicho parámetro.

Podemos definir el número máximo de features que nos extrae a partir de la frecuencia.

Entonces, por ejemplo, si establecemos el max feature en 3, solo va a extraer como vocabulario las tres features que tengan más frecuencia:

#Algunas funciones del count vectorizer
vectorizer = CountVectorizer (max_features = 3)
X = vectorizer.fit_transform (corpus)
#Algunas funciones del count vectorizer
print (vectorizer.get_feature_names ())

Aquí vemos que cuando hacemos la transformación de las features que ha sacado, las palabras que se han obtenido son ‘de’, ‘hay’ y ‘perros’. Esto sucede porque se hace el filtrado con base en la frecuencia cuando se aplica el parámetro de max_features. Así, al final obtenemos cosas que a lo mejor no queremos:

#Algunas funciones del count vectorizer
doc_term_matrix = pd.DataFrame (X.toarray (), columns = vectorizer.get_feature_names ())
doc_term_matrix
 dehayperros
0001
1012
2111

Cuando vemos el dataframe de nuestras features, observamos que hemos obtenido una representación, una codificación de la frase en one-hot encoding, pero no tiene mucho valor.

Si quieres seguir aprendiendo sobre algunas funciones del count vectorizer, te invitamos a que sigas conectado con nuestra formación. Para poder acceder a las opciones laborales del Big Data, una de las áreas en el mundo IT mejor pagadas y con mayor demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp.

Con esta formación intensiva e íntegra adquirirás todos los conocimientos teóricos y prácticos necesarios para conseguir tu trabajo perfecto en pocos meses. Recuerda que, además, tendrás a tu disposición a los mejores profesionales para resolver tus dudas y acompañarte en todo lo que necesites. ¡No sigas esperando para impulsar tu carrera y pide ahora más información!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado