Personalizació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.
123456789101112131415from 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)
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.
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:
123456789101112131415from 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)
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?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.45
Personalizació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.
123456789101112131415from 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)
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.
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:
123456789101112131415from 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)
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?
¡Gracias por tus comentarios!