N-grams como features en count vectorizer

Autor: | Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

Antes de empezar, debes recordar que los n-gramas son conjuntos de elementos consecutivos que están presentes en un corpus. Estos pueden incluir palabras, números, cualquier otro carácter especial y signos de puntuación. Ahora, en este artículo, veremos cómo generar n-grams como features en el count vectorizer.

N-grams como features

El parámetro ngram : range (tupla) permite definir los valores de n para los ngrams (mínimo y máximo) que serán calculados. Por defecto: ngram_range = (1, 1) (solo palabras).

De cara a la definición de features, podemos definir los n-grams como features en count vectorizer, es decir, en vez de tener como parámetros de vocabulario simplemente tokens, podemos hacer que sean n-grams como features.

Dentro del propio count vectorizer tenemos parámetros en los que podemos definir el rango del n-grama.

A continuación lo que hacemos es decirle al algoritmo que nos genere n-gramas de un único token hasta una combinación de tres tokens y que, a partir de eso, nos genere un vocabulario y la codificación del corpus.

#N-grams como features
vectorizer = CountVectorizer (ngram_range = (1, 3)) #Jugar con los valores
X = vectorizer. fit_transform (corpus)

Si imprimimos los feature names, nos salen muchísimos:

[‘de’, ‘de perros’, ‘gustan’, ‘gustan los’, ‘gustan los perros’, ‘hay’, ‘hay muchas’, ‘hay muchas razas’, ‘hay perros’, ‘hay perros perros’, ‘los’, ‘los perros’, ‘me’, ‘me gustan’, ‘me gustan los’, ‘muchas’, ‘muchas razas’, ‘muchas razas de’, ‘perros’, ‘perros perros’, ‘razas’, ‘razas de’, ‘razas de perros’].

#N-grams como features
print (vectorizer. get_feature_names ())
N-grams como features

Luego, cuando aplicamos esto para ver la representación, vemos que aquí tenemos vectores, que son más largos que nuestro vocabulario aumentado, ya que estamos utilizando n-grams como features. Puede que de esta forma podamos recoger información del contexto en nuestra representación vectorial, dado que al utilizar n-grams como features capturamos más información del contexto:

#N-grams como features
doc_term_matrix = pd.DataFrame (X.toarray (), columns = vectorizer. get_feature_names ())
doc_term_matrix
N-grams como features en count vectorizer
dede perrosgustangustan losgustan los perroshayhay muchashay muchas razashay perroshay perros perrosloslos perrosmeme gustanme gustan losmuchasmuchas razasmuchas razas deperrosperros perrosrazasrazas derazas de perros
000111000001111100010000
100000100110000000021000
211000111000000011110111

Si utilizamos únicamente tokens, no podemos recolectar esta información; sin embargo, al utilizar como vocabulario n-grams como features, existe esa posibilidad.

En este caso podemos jugar con el rango, por ejemplo, decir que no queremos que nos recoja tokens, que únicamente queremos información del contexto. Para esta situación podríamos definir que el rango fuera de 2 a 4, es decir, que nos genere n-grams con una combinación de dos tokens hasta cuatro tokens y que, a partir de ahí, nos genere el vocabulario y obtenemos todas las features posibles. Veamos:

#N-grams como features
vectorizer = CountVectorizer (ngram_range = (2 , 4)) #Jugar con los valores
X = vectorizer. fit_transform (corpus)
#N-grams como features
print (vectorizer. get_feature_names ())

Aquí el resultado:

[‘de perros’, ‘gustan los’, ‘gustan los perros’, ‘hay muchas’, ‘hay muchas razas’, ‘hay muchas razas de’, ‘hay perros’, ‘hay perros perros’, ‘los perros’, ‘me gustan’, ‘me gustan los’, ‘me gustan los perros’, ‘muchas razas’, ‘muchas razas de’, ‘muchas razas de perros’, ‘perros perros’, ‘razas de’, ‘razas de perros’]

de perrosgustan losgustan los perroshay muchashay muchas razashay muchas razas dehay perroshay perros perroslos perrosme gustanme gustan losme gustan los perrosmuchas razasmuchas razas demuchas razas de perrosperros perrosrazas derazas de perros
0011000001111000000
1000000110000000100
2100111000000111011

¿Quieres seguir avanzando?

Para poder acceder a las opciones laborales del Big Data, uno de los mercados con mayor demanda y mejores salarios, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación adquirirás los conocimientos para abrirte paso en el mundillo tecnológico. ¡No dudes en impulsar tu futuro y entra ya para pedir más información!

Artículos ms leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

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