Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Personalizando Bag of Words | Modelos Básicos de Texto
Introdução ao PLN

bookPersonalizando 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.

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

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.

Note
Definição

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:

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

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?

question mark

O que o parâmetro min_df no CountVectorizer controla?

Select the correct answer

question mark

Qual é o propósito do parâmetro ngram_range no CountVectorizer?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.45

bookPersonalizando 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.

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

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.

Note
Definição

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:

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

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?

question mark

O que o parâmetro min_df no CountVectorizer controla?

Select the correct answer

question mark

Qual é o propósito do parâmetro ngram_range no CountVectorizer?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4
some-alt