Personnalisation du Sac de Mots
Le modèle Bag of Words, en particulier son implémentation via la classe CountVectorizer, propose plusieurs paramètres de personnalisation. Cela permet de l'adapter aux besoins spécifiques de diverses tâches d'analyse de texte, améliorant ainsi considérablement l'efficacité du modèle.
Fréquence minimale et maximale des documents
Le paramètre min_df définit le nombre minimal de documents dans lesquels un terme doit apparaître pour être inclus dans le vocabulaire, soit en tant que nombre absolu soit en proportion. Il permet d'exclure les termes rares, souvent moins informatifs.
De même, max_df détermine la fréquence maximale qu'un terme peut avoir à travers les documents pour rester dans le vocabulaire, également spécifiable en nombre absolu ou en proportion. Il filtre les termes trop courants qui n'aident pas à distinguer les documents.
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)
Définir max_df=3 exclut les mots apparaissant dans plus de 3 documents. Dans notre corpus, cela inclut des mots comme "quick" et "brown". Étant donné qu'ils apparaissent dans tous ou presque tous les documents, ils n'aident pas réellement à différencier les documents. Alternativement, on pourrait définir max_df=0.6, car 60 % de 5 documents correspond à 3 documents.
Plage de N-grammes
Le paramètre ngram_range permet de définir la plage de tailles de n-grammes à inclure dans le vocabulaire.
Un n-gramme est une séquence contiguë de n éléments provenant d'un échantillon de texte donné. Ces éléments sont généralement des mots (dans notre cas), des syllabes ou des lettres.
Par défaut, CountVectorizer ne prend en compte que les unigrammes (mots uniques). Cependant, inclure des bigrammes (paires de mots), trigrammes (triplets de mots) ou des n-grammes plus larges peut enrichir le modèle en capturant davantage de contexte et d'informations sémantiques, ce qui peut améliorer les performances.
Cela s'obtient en passant un tuple (min_n, max_n) au paramètre ngram_range, où min_n représente la taille minimale des n-grammes à inclure, et max_n la taille maximale.
Concentrons-nous maintenant exclusivement sur les trigrammes qui apparaissent dans deux documents ou plus de notre 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)
Voici les paramètres les plus couramment utilisés. Toutefois, si vous souhaitez en explorer davantage, veuillez consulter la documentation.
1. Que contrôle le paramètre min_df dans CountVectorizer ?
2. Quel est le but du paramètre ngram_range dans CountVectorizer ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.45
Personnalisation du Sac de Mots
Glissez pour afficher le menu
Le modèle Bag of Words, en particulier son implémentation via la classe CountVectorizer, propose plusieurs paramètres de personnalisation. Cela permet de l'adapter aux besoins spécifiques de diverses tâches d'analyse de texte, améliorant ainsi considérablement l'efficacité du modèle.
Fréquence minimale et maximale des documents
Le paramètre min_df définit le nombre minimal de documents dans lesquels un terme doit apparaître pour être inclus dans le vocabulaire, soit en tant que nombre absolu soit en proportion. Il permet d'exclure les termes rares, souvent moins informatifs.
De même, max_df détermine la fréquence maximale qu'un terme peut avoir à travers les documents pour rester dans le vocabulaire, également spécifiable en nombre absolu ou en proportion. Il filtre les termes trop courants qui n'aident pas à distinguer les documents.
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)
Définir max_df=3 exclut les mots apparaissant dans plus de 3 documents. Dans notre corpus, cela inclut des mots comme "quick" et "brown". Étant donné qu'ils apparaissent dans tous ou presque tous les documents, ils n'aident pas réellement à différencier les documents. Alternativement, on pourrait définir max_df=0.6, car 60 % de 5 documents correspond à 3 documents.
Plage de N-grammes
Le paramètre ngram_range permet de définir la plage de tailles de n-grammes à inclure dans le vocabulaire.
Un n-gramme est une séquence contiguë de n éléments provenant d'un échantillon de texte donné. Ces éléments sont généralement des mots (dans notre cas), des syllabes ou des lettres.
Par défaut, CountVectorizer ne prend en compte que les unigrammes (mots uniques). Cependant, inclure des bigrammes (paires de mots), trigrammes (triplets de mots) ou des n-grammes plus larges peut enrichir le modèle en capturant davantage de contexte et d'informations sémantiques, ce qui peut améliorer les performances.
Cela s'obtient en passant un tuple (min_n, max_n) au paramètre ngram_range, où min_n représente la taille minimale des n-grammes à inclure, et max_n la taille maximale.
Concentrons-nous maintenant exclusivement sur les trigrammes qui apparaissent dans deux documents ou plus de notre 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)
Voici les paramètres les plus couramment utilisés. Toutefois, si vous souhaitez en explorer davantage, veuillez consulter la documentation.
1. Que contrôle le paramètre min_df dans CountVectorizer ?
2. Quel est le but du paramètre ngram_range dans CountVectorizer ?
Merci pour vos commentaires !