logo

Comprendre TF-IDF (Term Frequency-Inverse Document Frequency)

TF-IDF signifie Term Frequency Inverse Document Frequency of records. Il peut être défini comme le calcul de la pertinence d'un mot dans une série ou un corpus par rapport à un texte. La signification augmente proportionnellement au nombre de fois qu'un mot apparaît dans le texte mais est compensée par la fréquence des mots dans le corpus (ensemble de données).

Terminologies :



    Fréquence du terme : dans le document d, la fréquence représente le nombre d'instances d'un mot donné t. Par conséquent, nous pouvons voir que cela devient plus pertinent lorsqu’un mot apparaît dans le texte, ce qui est rationnel. Puisque l’ordre des termes n’est pas significatif, nous pouvons utiliser un vecteur pour décrire le texte dans le sac de modèles de termes. Pour chaque terme spécifique dans l'article, il y a une entrée dont la valeur est la fréquence du terme.

Le poids d’un terme qui apparaît dans un document est simplement proportionnel à la fréquence du terme.

tf(t,d) = count of t in d / number of words in d>
    Fréquence du document : Ceci teste la signification du texte, qui est très similaire à TF, dans l'ensemble de la collection du corpus. La seule différence est que dans le document d, TF est le compteur de fréquence d'un terme t, tandis que df est le nombre d'occurrences dans l'ensemble de documents N du terme t. En d’autres termes, le nombre d’articles dans lesquels le mot est présent est DF.
df(t) = occurrence of t in documents>
    Fréquence inverse des documents : il teste principalement la pertinence du mot. L'objectif principal de la recherche est de localiser les enregistrements appropriés qui correspondent à la demande. Puisque tf considère tous les termes de manière égale, il n'est donc pas seulement possible d'utiliser les fréquences des termes pour mesurer le poids du terme dans l'article. Tout d’abord, trouvez la fréquence des documents d’un terme t en comptant le nombre de documents contenant le terme :
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>

La fréquence des termes correspond au nombre d'occurrences d'un terme dans un seul document uniquement ; bien que la fréquence du document soit le nombre de documents distincts dans lesquels le terme apparaît, elle dépend de l'ensemble du corpus. Regardons maintenant la définition de la fréquence du papier inverse. L'IDF du mot est le nombre de documents du corpus séparés par la fréquence du texte.

idf(t) = N/ df(t) = N/N(t)>

Le mot le plus courant est censé être considéré comme moins significatif, mais l'élément (les entiers les plus définis) semble trop dur. On prend ensuite le logarithme (en base 2) de la fréquence inverse du papier. Ainsi le si du terme t devient :



idf(t) = log(N/ df(t))>
    Calcul : Tf-idf est l'une des meilleures mesures pour déterminer l'importance d'un terme pour un texte d'une série ou d'un corpus. tf-idf est un système de pondération qui attribue un poids à chaque mot d'un document en fonction de la fréquence de son terme (tf) et de la fréquence réciproque du document (tf) (idf). Les mots avec des scores de poids plus élevés sont considérés comme plus significatifs.

Habituellement, le poids tf-idf se compose de deux termes :

    Fréquence des termes normalisés (tf) Fréquence des documents inversés (idf)
tf-idf(t, d) = tf(t, d) * idf(t)>

En python, les valeurs tf-idf peuvent être calculées en utilisant TfidfVectorizer() méthode dans apprendre module.

Syntaxe:



sklearn.feature_extraction.text.TfidfVectorizer(entrée)

Paramètres:

    saisir : Il fait référence au paramètre document passé, il peut s'agir d'un nom de fichier, d'un fichier ou du contenu lui-même.

Les attributs:

    vocabulaire _ : Il renvoie un dictionnaire de termes sous forme de clés et de valeurs sous forme de indices de caractéristiques. idf_ : Il renvoie le vecteur fréquence inverse du document passé en paramètre.

Retour:

    fit_transform() : il renvoie un tableau de termes ainsi que des valeurs tf-idf. get_feature_names() : il renvoie une liste de noms de fonctionnalités.

Approche étape par étape :

  • Importer des modules.

Python3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer>

>

>

  • Collectez les chaînes des documents et créez un corpus contenant une collection de chaînes des documents d0, d1, et d2 .

Python3




# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]>

>

>

  • Obtenez les valeurs tf-idf de fit_transform() méthode.

Python3




# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)>

>

renommer un répertoire

>

  • Afficher les valeurs idf des mots présents dans le corpus.

Python3




# get idf values> print>(>' idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)>

>

>

Sortir:

  • Affichez les valeurs tf-idf avec l'indexation.

Python3




# get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf value:'>)> print>(result)> # in matrix form> print>(>' tf-idf values in matrix form:'>)> print>(result.toarray())>

>

>

Sortir:

convention de dénomination de Java

Le résultat La variable se compose de mots uniques ainsi que des valeurs tf-if. Il peut être élaboré à l’aide de l’image ci-dessous :

À partir de l'image ci-dessus, le tableau ci-dessous peut être généré :

Document Mot Index des documents Index des mots valeur tf-idf
d0 pour 0 0 0,549
d0 les geeks 0 1 0,8355
d1 les geeks 1 1 1 000
d2 r2j 2 2 1 000

Vous trouverez ci-dessous quelques exemples illustrant comment calculer les valeurs tf-idf de mots à partir d'un corpus :

Exemple 1: Vous trouverez ci-dessous le programme complet basé sur l’approche ci-dessus :

Python3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get idf values> print>(>' idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf value:'>)> print>(result)> # in matrix form> print>(>' tf-idf values in matrix form:'>)> print>(result.toarray())>

>

>

Sortir:

Exemple 2 : Ici, les valeurs tf-idf sont calculées à partir d'un corpus ayant des valeurs uniques.

Python3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'geek1'> d1>=> 'geek2'> d2>=> 'geek3'> d3>=> 'geek4'> # merge documents into a single corpus> string>=> [d0, d1, d2, d3]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf values:'>)> print>(result)>

>

>

Sortir:

Exemple 3 : Dans ce programme, les valeurs tf-idf sont calculées à partir d'un corpus contenant des documents similaires.

Python3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks!'> d1>=> 'Geeks for geeks!'> # merge documents into a single corpus> string>=> [d0, d1]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf values:'>)> print>(result)>

>

égalité des chaînes en Java
>

Sortir:

Exemple 4 : Vous trouverez ci-dessous le programme dans lequel nous essayons de calculer la valeur tf-idf d'un seul mot les geeks est répété plusieurs fois dans plusieurs documents.

Python3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign corpus> string>=> [>'Geeks geeks'>]>*>5> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf values:'>)> print>(result)>

>

>

Sortir: