La Term Frequency-Inverse Document Frequency (TF-IDF) fonctionne de la même manière que la technique précédente, au détail près qu’elle divise le nombre de fois que le mot apparait dans la phrase par le nombre de fois qu’il apparait dans le texte en entier. Cette méthode permet de pondérer les mots en fonction de leur rareté et de leur pertinence.
Exemple
Reprenons la phrase « Le chat aime le poisson et le lait » et imaginons qu’elle se trouve dans un texte plus grand. Dans ce texte, le mot « le » apparait fréquemment, tandis que le mot « poisson » lui n’apparait que 2 fois. Le rapport de fréquence devient donc en faveur du mot poisson qui est reconnu comme le centre de la phrase.
La technique TF-IDF réduit l’importance des mots courants comme « le » et augmente celle des mots rares et spécifiques comme « poisson ».
Ainsi, dans une recherche ou une analyse, les mots spécifiques au sujet d’intérêt ressortent davantage.
Un petit tour du côté de chatGPT !
TF-IDF = Fréquence de Terme – Fréquence Inverse de Document
C’est une technique très utilisée en NLP pour transformer du texte en vecteurs numériques qu’un modèle peut comprendre.
1. Commençons par le TF (Term Frequency)
Il mesure combien de fois un mot apparaît dans un document.
Exemple :
Document = « le chat mange le poisson »
TF(« le ») = 2 / 5 = 0.4
TF(« chat ») = 1 / 5 = 0.2
On divise par le nombre total de mots du document pour normaliser.
2. Puis le IDF (Inverse Document Frequency)
Il mesure l’importance d’un mot dans l’ensemble des documents (le corpus).
Plus un mot est rare, plus il est important.
Formule :
IDF(t)=log(N1+DF(t))IDF(t) = \log\left(\frac{N}{1 + DF(t)}\right)IDF(t)=log(1+DF(t)N)
- N = nombre total de documents
- DF(t) = nombre de documents contenant le mot t
Exemple :
Si « le » apparaît dans tous les documents → IDF proche de 0
Si « poisson » apparaît dans très peu → IDF élevé
3. TF-IDF = TF × IDF
Du coup, le TF-IDF booste les mots :
- fréquents dans le document
- mais rares dans le corpus
Et il réduit l’importance des mots trop fréquents (comme « le », « est », « de », etc.)
Exemple complet
Supposons un corpus de 3 documents :
- D1 : « le chat mange »
- D2 : « le chien mange »
- D3 : « le poisson nage »
Calcul de TF-IDF pour le mot « chat » dans D1 :
- TF(« chat », D1) = 1 / 3 = 0.33
- DF(« chat ») = 1 (il apparaît que dans D1)
- N = 3
- IDF(« chat ») = log(3 / (1 + 1)) = log(1.5) ≈ 0.405
Donc TF-IDF(« chat », D1) = 0.33 × 0.405 ≈ 0.134
Avantages de TF-IDF :
- Simple à implémenter
- Pas besoin d’apprentissage
- Donne des résultats très décents pour :
- classification de textes
- recherche d’information
- résumé automatique
Exemple en python
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
# Exemple de corpus
documents = [
"le chat mange",
"le chien mange",
"le poisson nage"
]
# Création du vecteur TF-IDF
vectorizer = TfidfVectorizer()
# Application du TF-IDF
tfidf_matrix = vectorizer.fit_transform(documents)
# Affichage sous forme de tableau (DataFrame)
df = pd.DataFrame(tfidf_matrix.toarray(), columns=vectorizer.get_feature_names_out())
print(df)
Bibliothèques nécessaires
scikit-learn
(aussi appelésklearn
)pandas
(juste pour afficher joliment)