Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Personalización del Modelo Bolsa de Palabras | Modelos Básicos de Texto
Introducción al PLN

bookPersonalización del Modelo Bolsa de Palabras

El modelo Bolsa de Palabras (Bag of Words), especialmente en su implementación mediante la clase CountVectorizer, ofrece varios parámetros de personalización. Esto permite adaptarlo a las necesidades específicas de diversas tareas de análisis de texto, mejorando significativamente la eficacia del modelo.

Frecuencia mínima y máxima de documentos

El parámetro min_df define el número mínimo de documentos en los que un término debe aparecer para ser incluido en el vocabulario, ya sea como un número absoluto o una proporción. Ayuda a excluir términos poco frecuentes, que suelen ser menos informativos.

De manera similar, max_df determina la frecuencia máxima que un término puede tener en los documentos para permanecer en el vocabulario, también especificable como un número absoluto o proporción. Filtra los términos demasiado comunes que no contribuyen a diferenciar entre documentos.

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Exclude words which appear in more than 3 documents vectorizer = CountVectorizer(max_df=3) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Configurar max_df=3 excluye las palabras que aparecen en más de 3 documentos. En nuestro corpus, esto incluye palabras como "quick" y "brown". Dado que aparecen en todos o en casi todos los documentos, realmente no ayudan a diferenciar entre documentos. Alternativamente, podríamos establecer max_df=0.6, ya que el 60% de 5 documentos son 3 documentos.

Rango de N-gramas

El parámetro ngram_range permite definir el rango de tamaños de n-gramas que se incluirán en el vocabulario.

Note
Definición

Un n-grama es una secuencia contigua de n elementos de una muestra dada de texto. Estos elementos suelen ser palabras (en nuestro caso), sílabas o letras.

Por defecto, CountVectorizer considera únicamente unigramas (palabras individuales). Sin embargo, incluir bigramas (pares de palabras), trigramas (grupos de tres palabras) o n-gramas de mayor tamaño puede enriquecer el modelo al capturar más contexto e información semántica, lo que potencialmente mejora el rendimiento.

Esto se logra pasando una tupla (min_n, max_n) al parámetro ngram_range, donde min_n representa el tamaño mínimo de n-grama a incluir y max_n representa el tamaño máximo.

Ahora nos centraremos exclusivamente en los trigramas que aparecen en dos o más documentos dentro de nuestro corpus:

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Include trigrams which appear in 2 or more documents vectorizer = CountVectorizer(min_df=2, ngram_range=(3, 3)) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Estos son los parámetros más utilizados; sin embargo, si desea explorar más opciones, puede consultar la documentación.

1. ¿Qué controla el parámetro min_df en CountVectorizer?

2. ¿Cuál es el propósito del parámetro ngram_range en CountVectorizer?

question mark

¿Qué controla el parámetro min_df en CountVectorizer?

Select the correct answer

question mark

¿Cuál es el propósito del parámetro ngram_range en CountVectorizer?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.45

bookPersonalización del Modelo Bolsa de Palabras

Desliza para mostrar el menú

El modelo Bolsa de Palabras (Bag of Words), especialmente en su implementación mediante la clase CountVectorizer, ofrece varios parámetros de personalización. Esto permite adaptarlo a las necesidades específicas de diversas tareas de análisis de texto, mejorando significativamente la eficacia del modelo.

Frecuencia mínima y máxima de documentos

El parámetro min_df define el número mínimo de documentos en los que un término debe aparecer para ser incluido en el vocabulario, ya sea como un número absoluto o una proporción. Ayuda a excluir términos poco frecuentes, que suelen ser menos informativos.

De manera similar, max_df determina la frecuencia máxima que un término puede tener en los documentos para permanecer en el vocabulario, también especificable como un número absoluto o proporción. Filtra los términos demasiado comunes que no contribuyen a diferenciar entre documentos.

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Exclude words which appear in more than 3 documents vectorizer = CountVectorizer(max_df=3) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Configurar max_df=3 excluye las palabras que aparecen en más de 3 documentos. En nuestro corpus, esto incluye palabras como "quick" y "brown". Dado que aparecen en todos o en casi todos los documentos, realmente no ayudan a diferenciar entre documentos. Alternativamente, podríamos establecer max_df=0.6, ya que el 60% de 5 documentos son 3 documentos.

Rango de N-gramas

El parámetro ngram_range permite definir el rango de tamaños de n-gramas que se incluirán en el vocabulario.

Note
Definición

Un n-grama es una secuencia contigua de n elementos de una muestra dada de texto. Estos elementos suelen ser palabras (en nuestro caso), sílabas o letras.

Por defecto, CountVectorizer considera únicamente unigramas (palabras individuales). Sin embargo, incluir bigramas (pares de palabras), trigramas (grupos de tres palabras) o n-gramas de mayor tamaño puede enriquecer el modelo al capturar más contexto e información semántica, lo que potencialmente mejora el rendimiento.

Esto se logra pasando una tupla (min_n, max_n) al parámetro ngram_range, donde min_n representa el tamaño mínimo de n-grama a incluir y max_n representa el tamaño máximo.

Ahora nos centraremos exclusivamente en los trigramas que aparecen en dos o más documentos dentro de nuestro corpus:

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Include trigrams which appear in 2 or more documents vectorizer = CountVectorizer(min_df=2, ngram_range=(3, 3)) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Estos son los parámetros más utilizados; sin embargo, si desea explorar más opciones, puede consultar la documentación.

1. ¿Qué controla el parámetro min_df en CountVectorizer?

2. ¿Cuál es el propósito del parámetro ngram_range en CountVectorizer?

question mark

¿Qué controla el parámetro min_df en CountVectorizer?

Select the correct answer

question mark

¿Cuál es el propósito del parámetro ngram_range en CountVectorizer?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 4
some-alt