Ich habe eine Menge Dokumente, die eine Menge Schlüsselwertpaare enthalten. Der Schlüssel ist möglicherweise nicht eindeutig, sodass möglicherweise mehrere Schlüssel desselben Typs mit unterschiedlichen Werten vorhanden sind.
Ich möchte die Ähnlichkeit der Schlüssel zwischen 2 Dokumenten vergleichen. Insbesondere die String-Ähnlichkeit dieser Werte. Ich denke darüber nach, so etwas wie den Smith-Waterman-Algorithmus zu verwenden, um die Ähnlichkeit zu vergleichen.
Also habe ich ein Bild davon gezeichnet, wie ich über die Darstellung der Daten nachdenke -
Die Werte in den Zellen sind das Ergebnis des Smith-Waterman-Algorithmus (oder einer anderen String-Ähnlichkeitsmetrik).
Bild, dass diese Matrix einen Schlüsseltyp von "Dingen" darstellt Ich muss dann die Ähnlichkeitsbewertung "Dinge" zu einem Vektor von 0 oder 1 hinzufügen. Das ist in Ordnung.
Was ich nicht herausfinden kann, ist, wie ich feststelle, ob die Matrix ähnlich oder nicht ähnlich ist - idealerweise möchte ich die Matrix in eine Zahl zwischen 0 und 1 konvertieren und dann einfach einen Schwellenwert festlegen, um sie entweder als 0 oder als zu bewerten 1.
Irgendwelche Ideen, wie ich eine Partitur der Matrix erstellen kann? Kennt jemand irgendwelche Algorithmen, die diese Art von Dingen machen (offensichtlich sind Dinge wie die Funktionsweise von Smith Waterman anwendbar).
quelle
Antworten:
Wie ich verstanden habe, können Dokument 1 und Dokument 2 unterschiedliche Anzahlen von Schlüsseln haben. Und Sie erhalten eine endgültige Ähnlichkeitsbewertung zwischen 0 und 1. Wenn ja, würde ich folgenden Algorithmus vorschlagen:
Die endgültige Schätzung wäre gleich 1, wenn beide Dokumente die gleiche Länge haben und jedes Wort aus Dokument 1 in Dokument 2 gleichwertig ist.
Sie haben keine Software erwähnt, die Sie verwenden, aber hier ist R Beispiel für Funktion, wie ähnlichkeitsberechnende (es dauert Objekt der Klasse Matrix als Eingabe):
In Python -
quelle
Wenn Sie Ihre Matrix in eine Zahl umwandeln möchten (Ihr Ähnlichkeitsmaß), möchten Sie möglicherweise eine Matrixnorm verwenden .
Wenn Sie beispielsweise die Frobenius-Norm in Ihrem Beispiel verwenden, wird 1.488086 zurückgegeben.
quelle
Ich denke, Ihr Ziel ist es, herauszufinden, wie ähnlich zwei Dokumente sind. Wenn dies der Fall ist, schlage ich vor, folgenden Algorithmus anzuwenden:
Dieser Ansatz gibt an, wie ähnlich Doc1 Doc2 ist. (Die Ähnlichkeitswerte für Doc2 und Doc1 sind unterschiedlich, wenn es sich nicht um eine quadratische Matrix handelt.)
Dies bedeutet, dass Doc2 zu 82,67% Doc1 ähnlich ist . Die Ähnlichkeit kann diesen Wert nicht überschreiten, da wir in jeder Zeile maximal ähnliche Elemente ausgewählt haben.
quelle