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 NLP
course content

Contenu du cours

Introduction au NLP

Introduction au NLP

1. Fondamentaux du Prétraitement de Texte
2. Racine et Lemmatisation
3. Modèles de Texte de Base
4. Incorporations de Mots

book
Personnalisation du Sac de Mots

Le modèle Bag of Words, en particulier son implémentation à travers la classe CountVectorizer, offre 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 minimum de documents dans lesquels un terme doit apparaître pour être inclus dans le vocabulaire, soit comme un nombre absolu soit comme une proportion. Il aide à exclure les termes rares, qui sont 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 comme un nombre absolu ou une proportion. Il filtre les termes trop communs qui ne contribuent pas à distinguer les documents.

Voyons un exemple :

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 qui apparaissent 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 vraiment à différencier les documents. Alternativement, nous pourrions définir max_df=0.6, car 60% de 5 documents correspondent à 3 documents.

Plage de N-grammes

Le paramètre ngram_range vous permet de définir la plage de tailles de n-grammes à inclure dans le vocabulaire.

Par défaut, CountVectorizer ne considère que les unigrammes (mots simples). Cependant, inclure des bigrammes (paires de mots), des trigrammes (triplets de mots) ou des n-grammes plus grands peut enrichir le modèle en capturant plus de contexte et d'informations sémantiques, améliorant potentiellement les performances.

Cela est réalisé en passant un tuple (min_n, max_n) au paramètre ngram_range, où min_n représente la taille minimale de n-gramme à inclure, et max_n représente la taille maximale.

Concentrons-nous maintenant exclusivement sur les trigrammes qui apparaissent dans deux documents ou plus au sein 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

Ce sont les paramètres les plus couramment utilisés, cependant, si vous souhaitez en explorer davantage, vous pouvez consulter la documentation.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 4
We're sorry to hear that something went wrong. What happened?
some-alt