[MySQL] "Ähnliche Texte" suchen?

kathelene

Well-known member
ID: 313775
L
28 Oktober 2007
107
15
Ave.

Kurz und knapp: Wie kann ich nach Einträgen mit "ähnlichen Inhalten" suchen? Damit meine ich jetzt die Funktion, die u. a. bei Weblogs verwendet wird. Dort sieht man desöfteren auch am Ende eines Artikels "Verwandte/Ähnliche Artikel".

Grüsse,

kath
 
neija in weblogs wird das meist über tags realisiert, du gibst einem artikel die tags "php, web2.0, social web, facebook, friend connect" und suchst dann eben nach artikeln die eine möglichst hohe übereinstimmung von tags haben
 
Und allgemein, vergessen wir mal die Sache mit den Blogs; ?

Wohl ein verdammt unoptimierter Vorschlag: Bis auf einige Unsinnswörter (der, ich, mit, weil, und etc.) jedes verwendete Wort in eine Tabelle füllen (Text A hat Wort x1, Text A hat Wort x2). Im allgemeinen haben da einige Texte sehr grosse ähnlichkeiten, aber setzten wir dann das Wort "Äther-Wasserstoffreaktion" in den Text, und ein anderer beinhaltet das Wort auch, haben sie ein Wort gemeinsam, das Text A mit anderen nicht hat.
 
Das Problem ist tief im bereich Computerlinguistik angesiedelt, das lässt sich nicht einfach mal mit 10 Zeilen Programmcode lösen. In das Thema investieren manche Firmen richtig Geld. Dein Ansatz geht zwar schon in die richtige Richtung, aber ebend nur Richtung. Da steckt noch ein wenig mehr dahinter... wie willst du erstmal die relevanten Fakten ermitteln? Bei langen Texten geht das noch relativ einfach indem du die häufigkeit der Wörter feststellt und die Wörter die nicht zuviel und auch nicht zu wenig vorkommen sind die relevanten Wörter (theoretisch ;)), bei kurzen Texten ist das so nicht möglich. Das ganze kannst du auch noch verfeinern indem du die Wörter vorher stemmst (Stemming -> haus = häuser), Synonyme auflöst (Wörterbuch) und eine Stopwortliste einsetzt (nicht unbedingt nötig, aber manchmal ganz hilfreich).

Damit hast du erstmal eine Grundlage für den Vergleich. Der Vergleich in der einfachsten Form ist eigentlich nur zu bestimmen wieviele Übereinstimmungen es gibt und das ganze ins Verhältnis zu setzen. Das ganze kannst du auch noch verfeinern indem du zusätzlich im ersten Schritt Wertigkeiten für die Wörter vergibst (z.b. anhand der Anzahl der Vorkommnisse) und diese Wertigkeiten beim Vergleich mit einbezieht.

PS: wie gesagt die Grundlage kannst du so nur mit langen Texten bilden, ab 2000-4000 Wörtern (kommt mit auf die Art des Textes an) wird es erst sinnvoll einsetzbar. Bei kürzeren Texten musst du da anders vorgehen... eine Idee wäre zum Beispiel sich an Substantiven zu orientieren, die ja in der deutschen Sprache relativ einfach für den Computer zu finden sind.
 
Ich kann Zero da nur beipflichten, die syntaktische Ähnlichkeit von Texten zu bestimmen ist sehr schwierig und enthält viele Fallstricke. Die interessantere, semantische Analyse von Texten ist quasi unmöglich. Es gibt ein paar Ansätze, die unter Laborbedingungen auch teilweise Ergebnisse liefern, für den praktischen Gebraucht aber absolut untauglich.