Avoir un corpus de plus d'un million de documents
Pour un document donné, vous voulez trouver des documents similaires en utilisant le cosinus comme dans le modèle d'espace vectoriel
Tous les tf ont été normalisés en utilisant une fréquence augmentée, pour éviter un biais vers des documents plus longs comme dans ce tf-idf :
Avoir pré-calculé tout
Avoir les valeurs du dénominateur pré-calculées
Donc, pour un donné, il faut marquer plus de 1 million de
Avoir un seuil de 0,6 cosinus pour la similitude d 1 d 2
Je peux observer que pour unil existe une plage assez étroite depour cosinus 0.6
Par exemple dans une recherche similaire pour un cosinus de 0.6 et unde 7,7631 alorsplage de 7,0867 à 8,8339
En dehors du seuil de cosinus 0,6plage de 0,7223 à 89,3395
C'était avec la normalisation standard des documents tf.
Il examine BEAUCOUP dequi n'ont aucune chance d'être un match cosinus 0.6
Enfin la question:
Pour un donneret cosinus de> = 0,6 comment déterminer la plage dequi ont une chance?
Quipuis-je éliminer en toute sécurité?
Je connais également le nombre de termes en et s'il y a une plage de nombre de termes .
Via l'expérimentationet
semble être sûr, mais j'espère qu'il y a une portée qui s'est avérée sûre
| | d 2 | | < | | d 1 | | / .8
Créé des cas de test avec des termes très uniques, certains pas si uniques et certains courants. Effectivement, vous pouvez prendre le terme le plus unique et augmenter cette fréquence dans la comparaison. Le numérateur augmentera (produit scalaire) et il en sera de même pour || comparer || et obtiendra un cosinus très proche de 1.
Type de relation et PAS la question.
J'utilise également le tf-idf pour regrouper des documents en groupes. La clientèle dans laquelle je vends est habituée à se rapprocher des groupes de dup. Là, je prends une approche connexe dans je regarde comme le plus petit nombre de termes et je l'évalue par rapport au nombre de termes jusqu'à 3x. Ainsi, un nombre de termes de 10 ressemble à 10 à 30 (4-9 avait déjà son tir à 10). Ici, je peux me permettre d'en manquer un, de le récupérer dans un autre. J'ai terminé 10% et le plus grand ratio est de 1,8.
Veuillez identifier les défauts de cette analyse
Comme le souligne AN6U5 il y a un défaut dans cette analyse
Ce n'est plus un cosinus si le document est normalisé sur pondéré
Et comme le souligne Mathew ne peut pas non plus conclure d1⋅d2≤d1⋅d1
Je suis en espérant toujours quelque chose pour me donner un lien solide, mais les gens qui semblent connaître ce genre de choses me disent non,
je ne veux pas changer la question, alors ignorez cela,
je ferai une analyse et peut-être publier une question distincte sur la normalisation des documents
Pour le but de cette question suppose que le document est normalisé sur tf brut
Désolé mais je ne suis pas bon avec ce que le balisage est utilisé pour faire les équations
Donc dans ma notation
|| d1 || = sqrt (somme (w1 x w1))
d1 point d2 = somme (w1 X w2)
Supposons que d1 est le document le plus court
Le meilleur d1 point d2 qui peut être atteint est d1 point d1
Si d1 est marié 100 paul 20
Et d2 est marié 100 paul 20 peter 1
Normalisé
d1 est marié 1 paul 1/5
d2 est marié 1 paul 1/5 peter 1/100
Clairement marier et paul ont le même idf dans les deux documents
Le meilleur point d1 possible d2 est d1 point d1
La correspondance maximale possible avec d1 est d1
cos = d1 point d1 / || d1 || || d2 ||
carré des deux côtés
cos X cos = (d1 point d1) X (d1 point d1) / ((d1 point d1) X (d2 point d2)) cos X cos = (d1 point d1) / (d2 point d2)
prendre le carré racine des deux côtés
cos = || d1 || / || d2 ||
est || d2 || pas limité par le cos?
Si j'utilise juste || d2 || > = cos || d1 || et || d2 || <= || d1 || / cos j'obtiens la vitesse de calcul dont j'ai besoin
la source
Réponses:
Malheureusement, les calculs se simplifient pour montrer que vous ne pouvez pas justifier rigoureusement de restreindre la comparaison de similitude cosinus des vecteurs en fonction de leurs longueurs.
Le point clé est que la métrique de similitude cosinus se normalise en fonction de la longueur, de sorte que seuls les vecteurs unitaires sont pris en compte. Je sais que ce n'est pas nécessairement la réponse que vous vouliez, mais les calculs montrent clairement que les métriques de similitude cosinus sont agnostiques à la longueur du vecteur.
Regardons les mathématiques plus en détail:
Vous appliquez une métrique de similitude cosinus et exigez que cette métrique soit supérieure à 0,6:
Mais les longueurs scalaires sur le fond peuvent être réparties dans les produits croisés ci-dessus (propriété distributive):
Maintenant et sont des vecteurs qui pointent dans la même direction que et mais ils ont été normalisés à la longueur un. Ainsi, la définition de la métrique de similitude cosinus est la prise des vecteurs d'origine, leur normalisation à la longueur un, puis la mesure du produit scalaire des vecteurs unitaires. B ABA^ B^ A B
À cet effet:
ne dépend que de l'orientation des vecteurs et non de leur ampleur (c'est-à-dire de la longueur).
Concilier cela avec ce que vous faites:
Malgré ce que montrent les résultats de l'algèbre linéaire, vous pouvez toujours voir un résultat statistiquement significatif. En pratique, vous constaterez peut-être que les statistiques montrent que les restrictions de longueur sont valides pour vos données. Par exemple, vous pourriez constater que les tweets ne partagent jamais une similitude cosinus par rapport à "War and Peace" de Tolstoï. Si vos statistiques semblent bonnes pour l'utilisation deet alors je vous suggère de l'accompagner car ce type de restrictions de canopée est très utile pour gagner du temps de calcul.| | d 2 | | > .8 | | d 1 | | | | d 2 | | < | | d 1 | | / .8≥0.6 ||d2||>.8||d1|| ||d2||<||d1||/.8
Vous pouvez peut-être concilier ce que vous avez fait avec les métriques de distance en considérant également la distance euclidienne. Alors que la similitude en cosinus ne renvoie qu'une valeur comprise entre -1 et 1 en fonction de l'angle entre les deux vecteurs, les distances euclidiennes renvoient des valeurs qui dépendent des longueurs des deux vecteurs. Dans un certain sens, vous combinez des aspects de la distance euclidienne avec une similitude en cosinus.
Il est assez logique d'exiger que les longueurs relatives soient à moins de 25% les unes des autres dans le sens où cela combine un aspect de la distance euclidienne pour créer des auvents groupés, ce qui réduit le temps de calcul, puis la similitude cosinus agnostique de la longueur peut être utilisée comme le déterminant final.
Notez que 1 / .8 = 1,25, donc d2> =. 8d1 est une restriction plus stricte que d2 <= d1 / .8. Je suggère d'utiliser d2> =. 75d1 et d2 <= 1.25d1 car c'est symétrique.
J'espère que cela t'aides!
la source
Tout d'abord, essayons de comprendre pourquoi cela fonctionnerait. semble servir de mesure de rareté des mots, ce qui semble plausible comme quelque chose à filtrer. Si les documents utilisent un nombre différent de mots rares, il leur sera difficile de s'aligner sur la mesure de similitude cosinus. Mais il me semble peu probable que cette coupure ne dépende que de, plutôt que sur la structure des poids tf ou idf qui entrent dans.| | d i | | | | d i | |||di|| ||di|| ||di||
Pour travailler sur une algèbre, permettez-moi d'introduire quelques termes supplémentaires (et renommer certains en plus courts):
Soit un vecteur de poids tf élément multiplié par un vecteur de poids idf pour obtenir les poids finaux . Nous savons que et (en raison de la taille du corpus et en supposant que nous utilisons la base 10, peu importe si nous ne le sommes pas). Soit.d1 [t1,t2,...] [w1,w2,...] [d1,d2,...] 0.5≤ti≤1 0≤wi≤6 D1=||d1||
Connaissant , nous voulons construire un vecteur delta , tel que ait le minimal (ou maximal) soumis aux contraintes qui:d1 x d1+x X
Parce que nous n'avons pas utilisé le poids tf brut pour , est dans l'espace de la solution. également la contrainte plus compliquée d'au moins un , car nous ne pouvons pas l'exprimer de manière linéaire. Nous allons le laisser tel quel et espérons que l'optimiseur finira par mettre l'un d'entre eux à 1.x xi=0 ∀i di+xi=1
Intuitivement, il semble que l'ensemble des possibles devrait être convexe, mais même si c'est le cas, nous sommes déjà dans le domaine de la programmation quadratique contrainte . Notez que nous pouvons résoudre pour minimal au lieu de minimal , car , mais nous ne pouvons probablement pas utiliser cette méthodologie pour maximiser (c'est-à-dire minimiser ). Mais heureusement, cela sera facilement résoluble si est semi-défini positif . Alors, qu'est-ce que ? Nous devons réécrire (1) sous la forme correcte, ce qui commence par la quadrature des deux côtés:x X2 X X>0 X −X P P
Nous pouvons réécrire ceci comme où si et sinon.0≥xTPx+qTx+r Pi,j=0.36D21−w2ititj i=j −w2ititj
Il n'est pas évident pour moi que doit être semi-défini positif, mais ce sera facile à vérifier pour tout individu . Si oui, pop cela dans un solveur QP et vous obtiendrez une borne inférieure sur . Sinon, nous avons des ennuis.P d1 X
Pouvons-nous également obtenir une limite supérieure pratique? Je ne suis pas sûr. Évidemment, il existe une limite supérieure finie, car nous pouvons facilement calculer le maximum possible à partir du vecteur idf . Mais le fait que le poids minimum de tf soit de 0,5 au lieu de 0 jette mes intuitions sur la façon de créer un contradictoire avec un maximum de , et donc la meilleure approche que je propose est la descente en gradient, qui peut ou non trouver le maximum global réel mais sera probablement proche.X w x X
la source
Je poste une réponse mais je vais clairement attribuer le bonus à quelqu'un d'autre
Je pense qu'il y a un numérateur maximum si le document tf est normalisé
d1⋅d2 / (|| d1 |||| d2 ||)
Supposons que d1 a les mêmes termes ou moins (ou prenez simplement le d avec moins de termes)
Le maximum possible normalisé tf est 1
Donc la somme maximale possible du numérateur (tf1, i * idf, i * 1 * idf, i)
|| d2 || = somme (tf1, i * idf, i * 1 * idf, i) / || d1 || / .6
En ce qui concerne un minimum, je travaille là-dessus, mais il y a clairement un minimum.
Si vous allez correspondre, vous allez avoir || d ||
la source