Je suis en retard à cette fête, mais je jouais avec les concepts de tc-idf (je veux souligner le mot `` concept '' parce que je n'ai suivi aucun livre pour les calculs réels; ils peuvent donc être quelque peu décalés, et certainement plus facile à réaliser avec des packages tels que {tm: Text Mining Package}
, comme mentionné), et je pense que ce que j'ai obtenu peut être lié à cette question, ou, en tout cas, cela peut être un bon endroit pour le poster.
SET-UP: J'ai un corpus de 5
longs paragraphes tirés de la presse écrite, à text 1
travers 5
tels que le New York Times . Apparemment, c'est un très petit "corps", une petite bibliothèque, pour ainsi dire, mais les entrées de cette bibliothèque "numérique" ne sont pas aléatoires: les première et cinquième entrées traitent du football (ou "soccer" pour "club social" (?) ici), et plus précisément sur la plus grande équipe d'aujourd'hui. Ainsi, par exemple, text 1
commence comme ...
"Au cours des neuf dernières années, Messi a mené le FC Barcelone à des titres nationaux et internationaux tout en battant des records individuels d'une manière qui semble étrange ..."
Très agréable! D'un autre côté, vous voudrez certainement ignorer le contenu des trois entrées intermédiaires. Voici un exemple ( text 2
):
"En l'espace de quelques heures à travers le Texas, M. Rubio a suggéré que M. Trump avait uriné dans son pantalon et utilisé des immigrants illégaux pour exploiter ses messages Twitter incessants ..."
Alors, que faire pour éviter à tout prix de "surfer" du text 1
au text 2
, tout en continuant à se réjouir de la littérature sur le tout puissant FC Barcelone en text 5
?
TC-IDF: J'ai isolé les mots dans chacun text
en longs vecteurs. Puis compté la fréquence de chaque mot, créant cinq vecteurs (un pour chacun text
) dans lesquels seuls les mots rencontrés dans le correspondant text
ont été comptés - tous les autres mots, appartenant à d'autres text
s, ont été évalués à zéro. Dans le premier extrait de text 1
, par exemple, son vecteur aurait un compte de 1 pour le mot "Messi", tandis que "Trump" aurait 0. C'était la partie tc .
La partie idf a également été calculée séparément pour chacun text
, et a abouti à 5 "vecteurs" (je pense que je les ai traités comme des trames de données), contenant les transformations logarithmiques des décomptes de documents (malheureusement, juste de zéro à cinq, étant donné notre petite bibliothèque ) contenant un mot donné comme dans:
Journal( Nombre de documents1+Nombre de documents contenant un mot) . Le nombre de documents est de 5. Voici la partie qui peut répondre au PO: pour chaque calcul idf, le text
sous-considéré a été exclu du décompte . Mais si un mot apparaît dans tous les documents, son idf est toujours égal à grâce au du dénominateur - par exemple, le mot «le» a une importance de 0, car il est présent dans tous les al.01text
La multiplication en entrée de pour chaque était l'importance de chaque mot pour chacun des éléments de la bibliothèque - des mots répandus localement et rares à l'échelle mondiale .tc × idftext
COMPARAISONS: Maintenant, il s'agissait simplement de réaliser des produits scalaires parmi ces "vecteurs d'importance des mots".
On pouvait s'y attendre, le produit scalaire de text 1
with text 5
était 13.42645
, alors que text 1
v. text2
Était seulement 2.511799
.
Le code R maladroit (rien à imiter) est ici .
Encore une fois, c'est une simulation très rudimentaire, mais je pense que c'est très graphique.