Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Personnalisation du Sac de Mots | Modèles de Texte de Base
Introduction au TALN

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

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

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.

Note
Définition

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 :

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

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 ?

question mark

Que contrôle le paramètre min_df dans CountVectorizer ?

Select the correct answer

question mark

Quel est le but du paramètre ngram_range dans CountVectorizer ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 4

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

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

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

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.

Note
Définition

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 :

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

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 ?

question mark

Que contrôle le paramètre min_df dans CountVectorizer ?

Select the correct answer

question mark

Quel est le but du paramètre ngram_range dans CountVectorizer ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 4
some-alt