2013-04-25 17 views
18

Ich möchte semantische Ähnlichkeit zwischen zwei Sätze/Sätze zu messen. Gibt es einen Rahmen, den ich direkt und zuverlässig nutzen kann?Messung semantischer Ähnlichkeit zwischen zwei Phrasen

Ich habe bereits this question ausgecheckt, aber es ist ziemlich alt und ich konnte nicht wirklich hilfreiche Antwort dort finden. Es gab one link, aber ich fand das unzuverlässig.

zB:
Ich habe einen Satz: Filz zerdrückt
Ich habe mehrere Möglichkeiten: Kraft nach innen, pulverisiert, emotional zerstört, Umformen usw.
ich den Begriff/Satz mit der höchsten Ähnlichkeit mit dem ersten finden möchten .
Die Antwort hier ist: emotional zerstört.

Das größere Bild ist: welches Bild von FrameNet entspricht das gegebene Verb identifizieren, gemäß seiner Verwendung in einem Satz, den ich will.

Update: Ich fand this library sehr nützlich Ähnlichkeit zwischen zwei Wörtern zu messen. Auch der ConceptNet-Ähnlichkeitsmechanismus ist sehr gut.

und this library für

zwischen den Sätzen semantische Ähnlichkeitsmeßeinrichtung Wenn jemand irgendwelche Erkenntnisse hat bitte teilen.

+0

Werfen Sie einen Blick auf die Semantic Bibliothek Maßnahmen: [http://www.semantic-measures-library.org] (http: //www.semantic-measures-library.org /) – Seb

Antwort

8

Dies ist ein sehr kompliziertes Problem.

Die wichtigste Technik, die ich mir vorstellen kann (bevor sie in komplizierter NLP Prozesse gehen) wäre Cosinus (oder jede andere Metrik) Ähnlichkeit der Sätze zu jedem Paar anzuwenden. Offensichtlich wäre diese Lösung im Moment aufgrund des nicht übereinstimmenden Problems sehr ineffizient: Die Sätze könnten sich auf dasselbe Konzept mit anderen Wörtern beziehen.

um dieses Problem zu lösen, sollten Sie die ursprüngliche Darstellung jeder Phrase mit einem mehr „conceptual“, was bedeutet verwandeln. Eine Option wäre, jedes Wort mit seinen Synonymen zu erweitern (dh unter Verwendung von WordNet, eine andere Option ist die Anwendung von Metriken wie der Verteilungssemantik DS (http://liawww.epfl.ch/Publications/Archive/Besanconetal2001.pdf), die die Darstellung jedes Terms um so wahrscheinlicher erweitern, je mehr Wörter damit vorkommen.

Beispiel: Eine Darstellung eines Dokuments: {"Auto", "Rennen"} würde mit Synonymen in {"Auto", "Automobil", "Rasse"} umgewandelt werden. Während mit DS wäre es etwa so: { „Auto“, „Rad“, „Straße“, „Pilot“, ...}

Offensichtlich ist diese Umwandlung nicht binär sein. Jeder Begriff wird einige zugehörige Gewichte haben.

ich hoffe, das h Ellen.

+0

Danke für deine Antwort, aber mein Hauptproblem hier ist, dass ich etwas brauche, das Ähnlichkeit als einen kombinierten Begriff und nicht einzelne Wörter bewertet, wie ich im Beispiel erwähnt habe. – tejas

+0

Sie ändern die Phrasenrepräsentation basierend auf den Term-Term-Ähnlichkeiten. Beispiel, gegeben zwei Sätze: S1: {"Auto", "Rennen"} S2: {"Motorrad}," Geschwindigkeit "} Mit einer Standard-Kosinusähnlichkeit erhalten Sie 0,0 Ähnlichkeit (wie keine Begriffe sind üblich). Aber Sie können diese Darstellung mit den "verwandten Begriffen" basierend auf DS erweitern, und dann werden die Ausdrücke: S1: {"Auto", "Rennen", "Fahrzeug", "Automobil", "schnell"} S2: {"Motorrad", "Geschwindigkeit", "Fahrrad", "Fahrzeug", "schnell"} Jetzt haben Sie einige Ähnlichkeit, basierend auf "schnell" und "Fahrzeug". – miguelmalvarez

0

Vielleicht könnte die cortical.io API bei Ihrem Problem helfen. Der Ansatz hier ist, dass jedes Wort in einen semantischen Fingerabdruck umgewandelt wird, der die Bedeutung von ihm mit 16K semantischen Merkmalen charakterisiert. Sätze, Sätze oder längere Texte werden durch ODER-Verknüpfung der Wort-Fingerabdrücke in Fingerabdrücke umgewandelt. Nach dieser Umwandlung in eine (numerische) binäre Vektorrepräsentation kann die semantische Distanz leicht unter Verwendung von Abstandsmaßen wie Euklidischer Abstand oder Kosinusähnlichkeit berechnet werden. Alle notwendigen Konvertierungs- und Vergleichsfunktionen werden von der API bereitgestellt.

Verwandte Themen