2013-04-21 10 views
18

Ich möchte berechnen, wie ähnlich zwei beliebige Sätze zueinander sind. Zum Beispiel:Wie erkennt man, dass zwei Sätze ähnlich sind?

  1. Ein Mathematiker eine Lösung für das Problem gefunden.
  2. Das Problem wurde von einem jungen Mathematiker gelöst.

kann ich einen Tagger verwenden, eine stemmer und einen Parser, aber ich weiß nicht, wie zu erkennen, dass diese Sätze ähnlich sind.

+0

Haben Sie darüber nachgedacht, solche Fragen bei Linguistics.SE zu stellen? Ich finde, dass NLP-Fragen dort tendenziell besser behandelt werden. – tchrist

+0

@tchrist aber es ist eine Programmierung/algorithmische Frage! –

Antwort

23

Diese beiden Sätze sind nicht nur ähnlich, sie sind fast paraphrases, d. H. Zwei alternative Möglichkeiten, die gleiche Bedeutung auszudrücken. Es ist auch ein sehr einfacher Fall von Umschreibung, in der beide Äußerungen die gleichen Wörter benutzen mit der einzigen Ausnahme, dass ein Wesen in aktiver Form ist, während das andere passiv ist. (Die zwei Sätze sind nicht genau Paraphrasen, weil der Mathematiker im zweiten Satz "jung" ist. Diese zusätzliche Information macht die semantische Beziehung zwischen den zwei Sätzen nicht symmetrisch. In diesen Fällen würde man sagen, dass die zweite Äußerung "entails" die erste ist. oder mit anderen Worten, das erste kann aus dem zweiten abgeleitet werden).

Aus dem Beispiel ist es nicht möglich zu verstehen, ob Sie tatsächlich an Paraphrasenerkennung, textueller Enthaftung oder an Satzähnlichkeit im Allgemeinen interessiert sind, was ein noch breiteres und unschärferes Problem darstellt. Zum Beispiel ist "Menschen essen essen" ähnlicher "Menschen essen Brot" oder "Männer essen".

Sowohl die Paraphrasenerkennung als auch die Textähnlichkeit sind komplexe, offene Forschungsprobleme in der Verarbeitung natürlicher Sprache, an denen eine große und aktive Gemeinschaft von Forschern arbeitet. Es ist nicht klar, wie groß Ihr Interesse an diesem Thema ist, aber bedenken Sie, dass, obwohl viele brillante Forscher ihre ganze Karriere damit verbracht haben, sie zu knacken, wir immer noch weit davon entfernt sind, fundierte Lösungen zu finden, die einfach funktionieren.

Sofern Sie nicht an einer sehr oberflächlichen Lösung interessiert sind, die nur in bestimmten Fällen funktioniert und die syntaktische Alternation nicht erfassen würde (wie in diesem Fall), würde ich vorschlagen, dass Sie das Problem der Textähnlichkeit genauer untersuchen. Ein guter Ausgangspunkt wäre das Buch "Foundations of Statistical Natural Language Processing", das eine sehr gut organisierte Darstellung der meisten statistischen Verarbeitungsprozesse in natürlicher Sprache bietet. Sobald Sie Ihre Anforderungen geklärt haben (z. B. unter welchen Bedingungen soll Ihre Methode funktionieren? Welche Grad an Genauigkeit/Rückrufverhalten wollen Sie? Welche Art von Phänomenen können Sie sicher ignorieren und welche müssen Sie berücksichtigen?) Sie können Beginnen Sie mit der Suche nach spezifischen Ansätzen, indem Sie in die jüngsten Forschungsarbeiten eintauchen. Hier wäre ein guter Ausgangspunkt der online archives of the Association for Computational Linguistics (ACL), der die meisten Forschungsergebnisse in diesem Bereich veröffentlicht.

Nur um Ihnen etwas Praktisches zu geben, wäre eine sehr grobe Basis für Satzähnlichkeit die cosine similarity zwischen zwei binären Vektoren, die die Sätze als Taschen von Wörtern darstellen. Ein Wortstapel ist eine sehr vereinfachte Darstellung von Text, der üblicherweise für die Informationsbeschaffung verwendet wird, bei der Sie die Syntax völlig ignorieren und nur einen Satz als Vektor darstellen, dessen Größe die Größe des Vokabulars (dh die Anzahl der Wörter in der Sprache) ist) und dessen Komponente "i" mit "1" bewertet wird, wenn das Wort an der Position "i" in dem Vokabular in dem Satz erscheint, und andernfalls "0".

+0

Danke mein Freund. – SahelSoft

+1

aber Kosinusähnlichkeit zeigt diesen Satz gleich "Ich trinke Milch, aber ich trinke keine alkoholischen Getränke" und "Ich trinke keine Milch, aber ich trinke alkoholische Getränke"! –

+1

@RavinderPayal, das ist, was unter natürlichem Sprachverständnis zu lösen ist. –

1

Ich bin nicht ganz sicher, ob das Ihre Frage ist, aber Sie können die Ähnlichkeit der Reihenfolge der Symbole (in diesem Fall Wörter) mit Levenshtein Edit Distance alghoritm berechnen.

+1

Levenshtein Entfernung ist in diesem Zusammenhang weniger wichtig. –

1

In einigen Fällen ist es möglich, Sätze automatisch in discourse representation structures umzuwandeln, die ihre Bedeutungen darstellen. Wenn zwei Sätze die gleiche Diskursrepräsentationsstruktur erzeugen, ist es wahrscheinlich, dass sie ähnliche Bedeutungen haben.