Erik Tews: Ähnliche wörter finden in Perl

Hallo

Ich bin gerade dabei eine Suchmaschiene zu Programmieren. Wenn ich rausfinden will, ob ein bestimmter String in einem anderen existiert, dann mache ich das mit

if ($string =~ /abc/) { .... }

Nun würde ich aber auch eine Suche mit ähnlichen Wörtern machen. Also, wenn z. B. nach Programmieren gesucht wird, soll auch Programmierung gefunden werden. Auch wenn sich da jemand mit Computter verschreibt, soll das Programm immer noch Computer finden. Hat da jemand eine Idee?

  1. Ähnliche Wörter zu finden ist sehr kniffelig. Eine möglichkeit besteht darin die Wörter mit typischen schreibfehlern zu vergleichen, eine andere Buchstaben die phonetische nicht aufeinanderfolgen konnen zu ignorieren. Also entweder mußt du ein Wörterdatenbank schreiben oder eine halbe KI entwickeln. In jeden fall wird das Ergebnis einer Rechtschreibprüfung ähneln und daran haben sich schon große Softwarehauser mit 'M' die Zähne Ausgebissen.

    Alternativ schlage ich vor logische Operatoren anzubieten und mit vorangestellten +/- Zeichen Wörter ein/auszuschließen.
    Folgendes Feature ist ebenfalls interessant: Wenn eine suche ein Wort enthält das in der gesammten Datenbank nicht vorkommt dann wird es Ignoriert. Das sollte dann im Ergebnis aber auch sichtbar gemacht werden. Auch sollte diese Funktion nur greifen wenn mehr als ein Wort im Suchstring steht bzw. mehr als ein Wort übrigbleibt.

    Als Denkanstoß solltest du dir die Suchmaschine von Altavista mal genauer ansehen.

    Thomas

  2. Hallo Erik

    Nun würde ich aber auch eine Suche mit ähnlichen Wörtern machen. Also, wenn z. B. nach Programmieren gesucht wird, soll auch Programmierung gefunden werden. Auch wenn sich da jemand mit Computter verschreibt, soll das Programm immer noch Computer finden. Hat da jemand eine Idee?

    Wie Dir Thomas ja schon geschrieben hat, geht das in Richtung Kuenstliche Intelligenz (KI). Kannst Du ja auch sehen, wenn Du mal die Rechtschreibhilfen diverser Programme aktivierst. Die kennen dann beispielsweise das Wort 'Internet' nicht und bieten ohne mit der Titelleiste zu zucken 'Internat' an. Und das sagt ja wohl alles ueber die Probleme, die dahinterstecken.

    Am sinnvollsten ist tatsaechlich eine Datenbasis. Datensaetze koennten da z.B. so aussehen:

    "animiertes GIF";"animated GIF";"GIF-Animation";"GIF Animation";"animierte Gif-Datei";"animiertes GIF-File"

    usw. Aber die Arbeit, die hinter der Erstellung einer solchen Datenbasis steckt, geht in die Groessenordnung "Jahre", wenn es professionell und wirklich effektiv sein soll.

    viele Gruesse
      Stefan Muenz