Kosinus-Ähnlichkeitsmaß im Text-ExplorerIst es möglich, im Text-Explorer eine Kosinus-Ähnlichkeitsmessung durchzuführen, um Dokumente zu identifizieren, die „nahe“ beieinander liegen?Ich sehe, dass wir Dokumente gruppieren und eine latente semantische Analyse durchführen können, aber ich sehe keine Möglichkeit, das Kosinus-Ähnlichkeitsmaß zu berechnen.Jede Hilfe wird geschätzt.
Rahul
Betreff: Kosinus-Ähnlichkeitsmaß im Text-ExplorerDas ist eine ausgezeichnete Frage! Ein Kosinus-Ähnlichkeitskoeffizient ist identisch mit einem Korrelationskoeffizienten, wenn die betrachteten Vektoren zentriert sind (dh einen Mittelwert von Null haben). Traditionell wird im Bereich des Informationsabrufs eine Datentermmatrix (DTM) erstellt und direkt darauf eine Singularwertzerlegung (SVD) durchgeführt, ohne die Vektoren zu zentrieren oder zu standardisieren (d. h. zu zentrieren und zu skalieren). Analog dazu ist die Kosinusähnlichkeit ein Maß für die Assoziation mit nicht zentrierten Vektoren.
Die Zentrierung des DTM bietet jedoch wichtige Vorteile. Insbesondere ist der erste singuläre Vektor aus der SVD (Ihre erste Dimension oder Ihr erstes Thema) nicht unbedingt der wichtigste singuläre Vektor im mehrdimensionalen Raum, wenn keine Zentrierung durchgeführt wurde. Dies ist einer der Gründe, warum JMP es Benutzern ermöglicht, den DTM für die Verwendung in der latenten semantischen Analyse oder Themenanalyse zu zentrieren und/oder zu standardisieren. In ähnlicher Weise werden Korrelationskoeffizienten aus dem zentrierten und skalierten (dh standardisierten) DTM erhalten.
Zusammenfassend lässt sich sagen, dass Sie ganz einfach ein Maß für die Vektorähnlichkeit erhalten können, indem Sie den DTM in Ihrer Datentabelle speichern, zu „Analysieren“ > „Multivariate Methoden“ > „Multivariat“ gehen, alle Ihre DTM-Spalten zur Y-Rolle hinzufügen und auf „OK“ klicken. Die resultierende Korrelationsmatrix gibt Aufschluss über den Grad der Ähnlichkeit der Vektoren. Das heißt, Werte von 1 geben zwei identische Vektoren in die gleiche Richtung an, während Werte von -1 zwei identische Vektoren anzeigen, die in entgegengesetzte Richtungen zeigen, und so weiter. Schließlich müssen Sie Ihre Daten transponieren, bevor Sie die oben genannten Schritte ausführen, wenn Sie die Ähnlichkeit zwischen Dokumenten statt zwischen Begriffen ermitteln möchten.
HTH,
~Laura
PS Wenn Sie noch kein Upgrade auf JMP 13.2 durchgeführt haben, empfehle ich Ihnen dringend, dies zu tun. Bitte schauen Sie sich meinen Beitrag an Hier So können Sie sich über die Verbesserungen am Text Explorer in 13.2 informieren.
Betreff: Kosinus-Ähnlichkeitsmaß im Text-ExplorerDanke für die Hilfe.Das ist es, woran ich gedacht habe.Holen Sie sich die Matrix und machen Sie es selbst.Ich habe mich gefragt, ob es eingebaut ist?
Rahul
Betreff: Kosinus-Ähnlichkeitsmaß im Text-ExplorerDa Sie in JMP die Dokumententermmatrix (DTM) speichern können, können Sie diese jederzeit direkt berechnen. Die beigefügte Tabelle wurde anhand der Beispieldaten „Flugzeugvorfälle“ erstellt. Der folgende Code ( dessen Ausführung auf meinem Laptop einige Sekunden dauerte) erzeugte die Ähnlichkeitsmatrix in der zweiten angehängten Tabelle.
// https://en.wikipedia.org/wiki/Cosine_similarity
NamesDefaultToHere(1);
dt = CurrentDataTable();
m = dt << getAsMatrix;
n = NRow(dt);
// Make some column headings for the final table
cols = {};
for(i=1, i<=n, i++,
InsertInto(cols, "Document in Row "||Char(i));
);
// Get the modulus of each feature vector
modulus = J(n, 1, .);
for(i=1, i<=n, i++,
modulus[i] = sqrt(ssq(m[i,0]));
);
// Get the cosine of the angle between each pair of feature vectors
cosTheta = J(n, n, .);
for(i=1, i<=n, i++,
for(j=1, j<=i, j++,
cosTheta[i,j] = Sum(m[i, 0]
m[j, 0])/(modulus[i] * modulus[j]);
);
);
dt2 = AsTable(cosTheta, << ColumnNames(cols));
dt2 << setName("Cosine between feature vectors in "||(dt << getName));