Michael der Zweite: (PROGRAMMIERTECHNIK) Zitate vergleichen

Hallo Leute

Ich habe auf einer Webseite eine Zitate-DB, wo man Sprüche und Zitate einfügen kann. Gedacht war das ganz ursprünglich, um die manchmal filmreifen Zitate und Dialoge in meinem Schulalltag etwas festzuhalten. Da aber zahlreiche Leute Zitate einfügen können, kommt es schnell zu Doppelnennungen, oder man muss vor dem Einfügen des Zitats die ganze Zitateliste durchsuchen, ob das neue Zitat nicht schon drin ist... Ich möchte eine Möglichkeit entwickeln, den Benutzer bei einer Doppelnennung darauf aufmerksam zu machen, dass sich sein eingetipptes Zitat schon in der DB befindet.

Wie könnte man so etwas machen? Ein simples "if($zitat[i] == $neues_zitat)" fällt natürlich weg. Ich dachte daran, z.B. daran, zu zählen wie oft jeder Buchstabe vorkommt und ab einer gewissen Übereinstimmung dieser Anzahl in zwei Zitaten diese als ähnlich/gleich deklarieren. Dies könnte man auch mit Wörtern machen. Problematisch ist, dass die unterschiedlichen Personen die Zitate ganz verschieden eintippen, zB:

  • Person: "Blablablabla" (07.01.05)
  • "blablablabla", Person
  • Person1 sagt blablablabl, darauf person2 blablabla
  • Person1: "blablabla"
      Person2: "blablablab"
  • unterschiedliche Dialekte

Hoffentlich hat mir jemand einen Tipp ;-)

Gruss

Michael

  1. Hi,

    Wie könnte man so etwas machen? Ein simples "if($zitat[i] == $neues_zitat)" fällt natürlich weg. Ich dachte daran, z.B. daran, zu zählen wie oft jeder Buchstabe vorkommt und ab einer gewissen Übereinstimmung dieser Anzahl in zwei Zitaten diese als ähnlich/gleich deklarieren. Dies könnte man auch mit Wörtern machen. Problematisch ist, dass die unterschiedlichen Personen die Zitate ganz verschieden eintippen, zB:

    • Person: "Blablablabla" (07.01.05)
    • "blablablabla", Person
    • Person1 sagt blablablabl, darauf person2 blablabla
    • Person1: "blablabla"
        Person2: "blablablab"

    Bis hierhin und bei ausreichender Menge könntest Du einen Spamfilter zu einem Kategorisierer umbauen. Oder es mit Fuzzy-Checksums versuchen:
    Reihe alle Leerzeichen (Leerzeichen, Tabulatoren, Zeilensprünge usw) aneinander und ziehe darüber einen Hash (meinetwegen crc32). Mache genau das gleiche mit der Zeichensetzung (Punkt, Komma, Semikolon, Ausrufezeichen usw).
    Kannst Du z.B. Satz- oder auch Absatzweise machen.

    Das hat dann nämlich noch halbwegs Erfolgsaussichten bei ...

    • unterschiedliche Dialekte

    ... bei welchen sonst wahrscheinlich gar nix mehr hilfreich sein kann. Außer Handarbeit.

    Hoffentlich hat mir jemand einen Tipp ;-)

    Einen Tip? Laß es und versäubere einmal täglich selber. Aber schütze Dich dann mit entsprechenden Maßnahmen vor (D)DoS.

    so short

    Christoph Zurnieden

  2. Hallo,

    • Person: "Blablablabla" (07.01.05)
    • "blablablabla", Person
    • Person1 sagt blablablabl, darauf person2 blablabla
    • Person1: "blablabla"
        Person2: "blablablab"
    • unterschiedliche Dialekte

    wenn du deine Zitate-Eintrager dazu bewegen kannst die eigentlichen Zitate immer in Anführungsstriche einzuschließen, kannst du diese ausschneiden, und es entsteht kein Problem mit den Kommentaren und Hinweisen. Wenn du dann noch Groß- und Kleinschreibung sowie Sonderzeichen ignorierst kannst du dein Buchstaben-Zählen ausführen, bei einer Übereinstimmung > 90% kannst du dann ja einen Hinweis ausspucken wie "Das Zitat ist wahrscheinlich schon eingetragen: blablabla; Bist du sicher dass du deines trotzdem hinzufügen möchtest?"

    Schöne Grüße
    Julian

    --
    "Hex is for sissies. Real men use binary. And the most hardcore types use only z
    eros - uppercase zeros and lowercase zeros." - Tomasz Sowinski