Comment calculer TF * IDF pour qu'un seul nouveau document soit classé?

j'utilise des vecteurs document-terme pour représenter une collection de documents. J'utilise TF*IDF pour calculer le poids du terme pour chaque vecteur de document. Je pourrais alors utiliser cette matrice pour former un modèle de classification des documents.

je suis impatient de classer le nouveau document à l'avenir. Mais pour le classer, je dois d'abord transformer le document en vecteur de termes de document, et le vecteur doit être composé de valeurs TF*IDF, aussi.

Mon la question Est, Comment pourrais-je calculer le TF*IDF avec un seul document?

pour autant que je sache, TF peut être calculé à partir d'un seul document lui-même, mais L'IDF ne peut être calculé qu'à partir d'une collection de documents. Dans mon expérience actuelle, je calcule en fait la valeur TF * IDF pour le entier recueil de documents. Puis-je utiliser documents de formation et les autres comme test set.

je viens de soudain réalisé que cela ne semble pas si applicable à la vie réelle.

ajouter 1

il y a donc en fait 2 scénarios subtilement différents pour la classification:

  1. classer certains documents dont le contenu est connu mais dont l'étiquette n'est pas connu.
  2. pour classer un document totalement invisible.

1, on peut combiner les documents, avec ou sans étiquette. Et mettez le TSF * IDF au-dessus de tous. de Cette façon, même nous n'utilisons que les documents avec des étiquettes pour la formation, l'entraînement va contenir l'influence de l'documents sans étiquettes.

Mais mon scénario est 2.

supposons que j'ai l'information suivante pour le terme T le résumé de la formation définir le corpus:

  • le nombre de documents pour T dans l'ensemble de formation est n
  • nombre total de documents de formation est N

dois-je calculer L'IDF de t pour un invisible document D comme ci-dessous?

IDF (t, d)= log (((N+1) / (n+1))

ajouter 2

Et si je rencontre un terme dans le nouveau document qui ne s'est pas présenté dans le corpus d'entraînement avant<!--8? Comment dois-je calculer le poids de dans la doc terme de vecteur?

17
demandé sur smwikipedia 2014-04-01 19:59:04

3 réponses

TF-IDF n'a pas de sens pour un seul document, indépendant d'un corpus. C'est fondamentalement à souligner relativement rares et instructif mots.

vous devez conserver des informations de résumé de corpus afin de calculer TF-IDF poids. En particulier, vous avez besoin du compte de document pour chaque terme et le nombre total de documents.

si vous voulez utiliser les informations sommaires de l'ensemble d'entraînement et d'essai pour TF-IDF, ou seulement pour l'ensemble d'entraînement est un question de votre formulation du problème. Si vous ne vous souciez que d'appliquer votre système de classification aux documents dont vous avez le contenu, mais dont vous n'avez pas les étiquettes (c'est assez courant), alors utiliser TF-IDF pour l'ensemble du corpus est acceptable. Si vous voulez appliquer votre système de classification à des documents entièrement invisibles après votre formation, vous ne voulez utiliser que les informations sommaires de L'ensemble de formation TF-IDF.

11
répondu Rob Neuhaus 2014-04-01 16:18:45

TF dépend évidemment seulement du nouveau document.

IDF, vous ne calculez que sur votre corpus d'entraînement.

vous pouvez ajouter un terme slack au calcul de Tsahal, ou l'ajuster comme vous l'avez suggéré. Mais pour un ensemble de formation raisonnable, le terme constant +1 n'aura pas beaucoup d'effet. AFAICT, dans classic document retrieval (think: search), vous ne prenez pas la peine de faire cela. Souvent, ils interrogent document will devenir une partie de votre corpus, alors pourquoi serait-il partie l'armée israélienne?

4
répondu Anony-Mousse 2014-04-01 17:57:12

pour les mots invisibles, le calcul de TF n'est pas un problème car TF est une métrique spécifique au document. Pendant le calcul de TSF, vous pouvez utiliser la technique lissée inverse de fréquence de document.

IDF = 1 + log(total documents / document frequency of a term)

ici, la limite inférieure de Tsahal est de 1. Donc si un mot n'est pas vu dans le corpus d'entraînement, son IDF est 1. Étant donné qu'il n'existe pas de formule unique universellement convenue pour calculer TF-idf ou même TF-idf, votre formule de calcul tf-idf est également raisonnable.

Notez que, dans de nombreux cas, l'invisible les termes sont ignorés s'ils n'ont pas beaucoup d'impact dans la tâche de classification. Parfois, les gens remplacent des jetons invisibles par un symbole spécial comme UNKNOWN_TOKEN et faire leur calcul.

Alternative of TF-IDF: une autre façon de calculer le poids de chaque terme d'un document est d'utiliser L'Estimation de vraisemblance maximale. En calculant MLE, vous pouvez lisser en utilisant additif lissage technique également connue sous le nom de lissage Laplace. MLE est utilisé dans le cas où vous êtes en utilisant Générative modèles comme l'algorithme naïf de Bayes pour la classification des documents.

2
répondu Wasi Ahmad 2016-12-11 19:29:44