Personalizando Bag of Words
O modelo Bag of Words, especialmente em sua implementação pela classe CountVectorizer, oferece diversos parâmetros para personalização. Isso permite que ele seja ajustado às necessidades específicas de diferentes tarefas de análise de texto, aumentando significativamente a eficácia do modelo.
Frequência Mínima e Máxima de Documentos
O parâmetro min_df define o número mínimo de documentos em que um termo deve aparecer para ser incluído no vocabulário, podendo ser um número absoluto ou uma proporção. Ele auxilia na exclusão de termos raros, que geralmente são menos informativos.
De forma semelhante, max_df determina a frequência máxima que um termo pode ter entre os documentos para permanecer no vocabulário, também podendo ser especificado como número absoluto ou proporção. Esse parâmetro filtra termos excessivamente comuns que não contribuem para diferenciar os 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)
Definir max_df=3 exclui palavras que aparecem em mais de 3 documentos. Em nosso corpus, isso inclui palavras como "quick" e "brown". Como elas aparecem em todos ou quase todos os documentos, não ajudam realmente a diferenciar entre os documentos. Alternativamente, poderíamos definir max_df=0.6, já que 60% de 5 documentos corresponde a 3 documentos.
Intervalo de N-gramas
O parâmetro ngram_range permite definir o intervalo de tamanhos de n-gramas a serem incluídos no vocabulário.
Um n-grama é uma sequência contígua de n itens de uma determinada amostra de texto. Esses itens geralmente são palavras (no nosso caso), sílabas ou letras.
Por padrão, o CountVectorizer considera apenas unigramas (palavras únicas). No entanto, incluir bigramas (pares de palavras), trigramas (trios de palavras) ou n-gramas maiores pode enriquecer o modelo ao capturar mais contexto e informação semântica, potencialmente melhorando o desempenho.
Isso é feito passando uma tupla (min_n, max_n) para o parâmetro ngram_range, onde min_n representa o tamanho mínimo do n-grama a ser incluído e max_n representa o tamanho máximo.
Agora, vamos focar exclusivamente em trigramas que aparecem em dois ou mais documentos dentro do nosso 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)
Estes são os parâmetros mais utilizados, porém, caso deseje explorar outros, consulte a documentação.
1. O que o parâmetro min_df no CountVectorizer controla?
2. Qual é o propósito do parâmetro ngram_range no CountVectorizer?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.45
Personalizando Bag of Words
Deslize para mostrar o menu
O modelo Bag of Words, especialmente em sua implementação pela classe CountVectorizer, oferece diversos parâmetros para personalização. Isso permite que ele seja ajustado às necessidades específicas de diferentes tarefas de análise de texto, aumentando significativamente a eficácia do modelo.
Frequência Mínima e Máxima de Documentos
O parâmetro min_df define o número mínimo de documentos em que um termo deve aparecer para ser incluído no vocabulário, podendo ser um número absoluto ou uma proporção. Ele auxilia na exclusão de termos raros, que geralmente são menos informativos.
De forma semelhante, max_df determina a frequência máxima que um termo pode ter entre os documentos para permanecer no vocabulário, também podendo ser especificado como número absoluto ou proporção. Esse parâmetro filtra termos excessivamente comuns que não contribuem para diferenciar os 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)
Definir max_df=3 exclui palavras que aparecem em mais de 3 documentos. Em nosso corpus, isso inclui palavras como "quick" e "brown". Como elas aparecem em todos ou quase todos os documentos, não ajudam realmente a diferenciar entre os documentos. Alternativamente, poderíamos definir max_df=0.6, já que 60% de 5 documentos corresponde a 3 documentos.
Intervalo de N-gramas
O parâmetro ngram_range permite definir o intervalo de tamanhos de n-gramas a serem incluídos no vocabulário.
Um n-grama é uma sequência contígua de n itens de uma determinada amostra de texto. Esses itens geralmente são palavras (no nosso caso), sílabas ou letras.
Por padrão, o CountVectorizer considera apenas unigramas (palavras únicas). No entanto, incluir bigramas (pares de palavras), trigramas (trios de palavras) ou n-gramas maiores pode enriquecer o modelo ao capturar mais contexto e informação semântica, potencialmente melhorando o desempenho.
Isso é feito passando uma tupla (min_n, max_n) para o parâmetro ngram_range, onde min_n representa o tamanho mínimo do n-grama a ser incluído e max_n representa o tamanho máximo.
Agora, vamos focar exclusivamente em trigramas que aparecem em dois ou mais documentos dentro do nosso 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)
Estes são os parâmetros mais utilizados, porém, caso deseje explorar outros, consulte a documentação.
1. O que o parâmetro min_df no CountVectorizer controla?
2. Qual é o propósito do parâmetro ngram_range no CountVectorizer?
Obrigado pelo seu feedback!