it-swarm.com.de

Messung der semantischen Ähnlichkeit zwischen zwei Sätzen

Ich möchte die semantische Ähnlichkeit zwischen zwei Sätzen/Sätzen messen. Gibt es ein Framework, das ich direkt und zuverlässig verwenden kann?

Ich habe bereits diese Frage ausgecheckt, aber es ist ziemlich alt und ich konnte dort keine wirklich hilfreiche Antwort finden. Es gab einen Link , aber ich fand das unzuverlässig.

z.B.:
Ich habe einen Satz: Ich fühlte mich niedergeschlagen
Ich habe mehrere Möglichkeiten: nach innen drängen, pulverisieren, emotional zerstören, umformen usw.
Ich möchte den Begriff/die Phrase mit der höchsten Ähnlichkeit zum ersten finden.
Die Antwort hier lautet: emotional zerstört.

Das Gesamtbild ist: Ich möchte feststellen, welcher Frame von FrameNet mit dem angegebenen Verb übereinstimmt, wie es in einem Satz verwendet wird.

Update: Ich habe diese Bibliothek gefunden, um die Ähnlichkeit zwischen zwei Wörtern zu messen. Auch der ConceptNet-Ähnlichkeitsmechanismus ist sehr gut.

und diese Bibliothek zur Messung der semantischen Ähnlichkeit zwischen Sätzen

Wenn jemand Einblicke hat, bitte teilen.

19
tejas

Dies ist ein sehr kompliziertes Problem.

Die wichtigste Technik, die ich mir vorstellen kann (bevor ich kompliziertere NLP-Prozesse durchführe), würde darin bestehen, Cosinus-Ähnlichkeit (oder eine andere Metrik) auf jedes Paar von Phrasen 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 unterschiedlichen Wörtern beziehen.

Um dieses Problem zu lösen, sollten Sie die anfängliche Darstellung jeder Phrase mit einer eher "konzeptionellen" Bedeutung umwandeln. Eine Option wäre, jedes Wort mit seinen Synonymen zu erweitern (dh mit WordNet ; eine andere Option ist die Anwendung von Metriken wie Verteilungssemantik DS ( http://liawww.epfl.ch/). Veröffentlichungen/Archiv/Besanconetal2001.pdf ), die die Darstellung jedes Begriffs um die wahrscheinlichsten Wörter erweitern, die mit dem Begriff erscheinen.

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

Offensichtlich ist diese Transformation nicht binär. Jeder Begriff hat einige Gewichte.

Ich hoffe das hilft.

8
miguelmalvarez

Möglicherweise hilft die cortical.io API bei Ihrem Problem. Der Ansatz hier ist, dass jedes Wort in einen semantischen Fingerabdruck umgewandelt wird, der die Bedeutung des Wortes mit 16K-Semantikmerkmalen kennzeichnet. Phrasen, Sätze oder längere Texte werden in Fingerabdrücke umgewandelt, indem Sie die Word-Fingerabdrücke OR zusammenfügen. Nach dieser Konvertierung in eine (numerische) binäre Vektordarstellung kann der semantische Abstand leicht berechnet werden, indem Distanzmaße wie Euklidischer Abstand oder Cosinusähnlichkeit verwendet werden. Alle erforderlichen Konvertierungs- und Vergleichsfunktionen werden von der API bereitgestellt.

0