Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Implémentation de TF-IDF | 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
Implémentation de TF-IDF

Implémentation par Défaut

L'implémentation du modèle TF-IDF dans sklearn est similaire à celle du modèle Bag of Words. Pour entraîner ce modèle sur un corpus, nous utilisons la classe TfidfVectorizer en utilisant la méthode déjà familière .fit_transform().

Voyons un exemple :

123456789101112131415
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Comme vous pouvez le voir, à part l'utilisation d'une classe différente, le reste de l'implémentation est identique à celle du modèle Bag of Words. Par défaut, la matrice TF-IDF est calculée, comme décrit dans le chapitre précédent, avec une normalisation L2.

Personnalisation de TF-IDF

Encore une fois, similaire à CountVectorizer, nous pouvons spécifier les paramètres min_df et max_df pour inclure uniquement les termes qui apparaissent dans au moins min_df documents et au plus max_df documents. Ceux-ci peuvent être spécifiés soit comme des nombres absolus de documents, soit comme une proportion du nombre total de documents.

Voici un exemple où nous incluons uniquement les termes qui apparaissent dans exactement 2 documents en définissant à la fois min_df et max_df à 2 :

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Pour spécifier les n-grammes à inclure dans notre matrice, nous pouvons utiliser le paramètre ngram_range. Incluons uniquement les bigrams dans la matrice résultante :

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

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

Tâche

Swipe to start coding

Votre tâche consiste à afficher le vecteur pour le unigramme 'medical' dans un modèle TF-IDF avec des unigrams, bigrams et trigrams :

  1. Importez la classe TfidfVectorizer pour créer un modèle TF-IDF.

  2. Instanciez la classe TfidfVectorizer en tant que tfidf_vectorizer qui inclut à la fois unigrams, bigrams et trigrams.

  3. Utilisez la méthode appropriée de tfidf_vectorizer pour générer une matrice TF-IDF à partir de la colonne 'Document' dans le corpus.

  4. Convertissez tfidf_matrix en un tableau dense et créez un DataFrame à partir de celui-ci, en définissant les caractéristiques uniques (termes) comme ses colonnes. Assignez cela à la variable tfidf_matrix_df.

  5. Affichez le vecteur pour 'medical' sous forme de tableau, plutôt que comme une Series pandas.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7
toggle bottom row

book
Implémentation de TF-IDF

Implémentation par Défaut

L'implémentation du modèle TF-IDF dans sklearn est similaire à celle du modèle Bag of Words. Pour entraîner ce modèle sur un corpus, nous utilisons la classe TfidfVectorizer en utilisant la méthode déjà familière .fit_transform().

Voyons un exemple :

123456789101112131415
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a default TF-IDF model vectorizer = TfidfVectorizer() # Generate a TF-IDF matrix tfidf_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a DataFrame tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Comme vous pouvez le voir, à part l'utilisation d'une classe différente, le reste de l'implémentation est identique à celle du modèle Bag of Words. Par défaut, la matrice TF-IDF est calculée, comme décrit dans le chapitre précédent, avec une normalisation L2.

Personnalisation de TF-IDF

Encore une fois, similaire à CountVectorizer, nous pouvons spécifier les paramètres min_df et max_df pour inclure uniquement les termes qui apparaissent dans au moins min_df documents et au plus max_df documents. Ceux-ci peuvent être spécifiés soit comme des nombres absolus de documents, soit comme une proportion du nombre total de documents.

Voici un exemple où nous incluons uniquement les termes qui apparaissent dans exactement 2 documents en définissant à la fois min_df et max_df à 2 :

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include terms which appear in exactly 2 documents vectorizer = TfidfVectorizer(min_df=2, max_df=2) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

Pour spécifier les n-grammes à inclure dans notre matrice, nous pouvons utiliser le paramètre ngram_range. Incluons uniquement les bigrams dans la matrice résultante :

12345678910111213
from sklearn.feature_extraction.text import TfidfVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Include only bigrams vectorizer = TfidfVectorizer(ngram_range=(2, 2)) tfidf_matrix = vectorizer.fit_transform(corpus) tfidf_matrix_df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(tfidf_matrix_df)
copy

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

Tâche

Swipe to start coding

Votre tâche consiste à afficher le vecteur pour le unigramme 'medical' dans un modèle TF-IDF avec des unigrams, bigrams et trigrams :

  1. Importez la classe TfidfVectorizer pour créer un modèle TF-IDF.

  2. Instanciez la classe TfidfVectorizer en tant que tfidf_vectorizer qui inclut à la fois unigrams, bigrams et trigrams.

  3. Utilisez la méthode appropriée de tfidf_vectorizer pour générer une matrice TF-IDF à partir de la colonne 'Document' dans le corpus.

  4. Convertissez tfidf_matrix en un tableau dense et créez un DataFrame à partir de celui-ci, en définissant les caractéristiques uniques (termes) comme ses colonnes. Assignez cela à la variable tfidf_matrix_df.

  5. Affichez le vecteur pour 'medical' sous forme de tableau, plutôt que comme une Series pandas.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7
Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
We're sorry to hear that something went wrong. What happened?
some-alt