Haben Sie Korpus von über Millionen Dokumenten
Für ein bestimmtes Dokument möchten Sie ähnliche Dokumente mit Cosinus wie im Vektorraummodell finden
Alle tf wurden mit erhöhter Frequenz normalisiert, um eine Tendenz zu längeren Dokumenten wie in diesem tf-idf zu vermeiden :
Habe alle vorberechnet
Lassen Sie die Werte für den Nenner vorberechnen.
Für ein gegebenes d 1 muss also mehr als 1 Million d 2 erzielt werden.
Haben Sie einen Schwellenwert von 0,6 Kosinus für Ähnlichkeit
Ich kann das für eine gegebene es gibt einen ziemlich engen Bereich von | | d 2 | | für Cosinus ≥ 0,6
Zum Beispiel in einer Suche nach ähnlichem für einen Cosinus von ≥ 0,6 und a | | d 1 | | von 7,7631 dann | | d 2 | | Bereich von 7,0867 bis 8,8339
Wo außerhalb der Kosinusschwelle 0,6 | | d 2 | | Bereich von bis 0,7223 bis 89,3395
Dies war mit Standard-tf-Dokumentnormalisierung.
Es wird eine Menge von das hat keine Chance, ein Cosinus 0.6 Match zu sein
Zum Schluss die Frage:
Für ein Geben und Kosinus von> = 0,6, wie kann der Bereich von | bestimmt werden | d 2 | | das hat eine Chance?
Welche | | d 2 | | kann ich sicher beseitigen?
Ich kenne auch die Anzahl der Terme in und d 2, wenn es einen Termzählbereich gibt.
Durch Experimentieren
und | | d 2 | | < | | d 1 | | / .8
scheint sicher zu sein, aber hoffentlich gibt es eine Reichweite, die sich als sicher erwiesen hat
Erstellt einige Testfälle mit sehr eindeutigen Begriffen, einige nicht so eindeutig und einige häufig. Sicher genug, Sie können den einzigartigsten Begriff verwenden und diese Häufigkeit im Vergleich erhöhen. Der Zähler steigt (Punktprodukt) und || vergleicht || und wird einen Kosinus sehr nahe an 1 bekommen.
Art verwandt und NICHT die Frage.
Ich benutze auch die tf-idf, um Dokumente in Gruppen zu gruppieren. Der Kundenstamm, an den ich verkaufe, ist es gewohnt, in der Nähe von Dup-Gruppen zu sein. Dort verfolge ich einen ähnlichen Ansatz, indem ich die kleinste Anzahl von Begriffen betrachte und sie gegen die Anzahl der Begriffe bis zu 3x bewerte. Eine Laufzeit von 10 sieht also zwischen 10 und 30 aus (4-9 hatten bereits einen Schuss auf 10). Hier kann ich es mir leisten, einen zu verpassen, der in einem anderen aufgenommen wurde. Ich bin zu 10% fertig und die größte Quote ist 1,8.
Bitte identifizieren Sie die Fehler in dieser Analyse.
Wie in AN6U5 ausgeführt, gibt es einen Fehler in dieser Analyse.
Es ist kein Kosinus mehr, wenn das Dokument auf gewichtet normalisiert ist.
Und wie von Mathew herausgestellt, kann
ich auch nicht auf d1⋅d2≤d1⋅d1 schließen Ich hoffe immer noch auf etwas, das mir eine harte Bindung gibt, aber Leute, die dieses Zeug zu kennen scheinen, sagen mir nein,
ich möchte die Frage nicht ändern, also ignoriere dies einfach.
Ich werde eine Analyse durchführen und vielleicht eine separate Frage zur Dokumentnormalisierung
für stellen Der Zweck dieser Frage ist die Annahme, dass das Dokument auf raw tf normalisiert ist.
Entschuldigung, aber ich bin einfach nicht gut mit dem Markup, das zur Erstellung der Gleichungen verwendet wird.
Also in meiner Notation
|| d1 || = sqrt (Summe (w1 x w1))
d1 Punkt d2 = Summe (w1 X w2)
Angenommen, d1 ist das kürzere Dokument.
Der beste d1 Punkt d2, der erreicht werden kann, ist d1 Punkt d1.
Wenn d1 100 paul 20
heiratet und d2 100 paul 20 peter 1
heiratet.
Normalisiert
d1 ist heiraten 1 paul 1/5
d2 ist heiraten 1 paul 1/5 peter 1/100
Heiraten und paul haben eindeutig die gleiche ID in beiden Dokumenten.
Die bestmögliche d1 Punkt d2 ist d1 Punkt d1
Die maximal mögliche Übereinstimmung mit d1 ist d1
cos = d1 Punkt d1 / || d1 || || d2 ||
Quadrat beide Seiten
cos X cos = (d1 Punkt d1) X (d1 Punkt d1) / ((d1 Punkt d1) X (d2 Punkt d2)) cos X cos = (d1 Punkt d1) / (d2 Punkt d2)
nimm das Quadrat Wurzel beider Seiten
cos = || d1 || / || d2 ||
ist || d2 || nicht durch die cos begrenzt?
Wenn ich nur || d2 || benutze > = cos || d1 || und || d2 || <= || d1 || / cos Ich bekomme die Rechengeschwindigkeit, die ich brauche