Algorithmus zum Trennen von Nonsense-Text von sinnvollem Text

7

Ich habe einige meiner Programme mit einer Feedback-Funktion versehen. Leider habe ich vergessen, eine Art von Spam-Schutz einzubauen - so konnten Benutzer alles, was sie wollten, an meinen Server senden - wo jedes Feedback in einer riesigen Datenbank gespeichert wird.

Am Anfang habe ich regelmäßig diese Rückmeldungen überprüft - ich habe herausgefiltert, was nutzbarer und gelöschter Müll war. Das Problem ist: Ich bekomme 900 Rückmeldungen pro Tag. Nur 4-5 sind wirklich nützlich, die anderen Nachrichten sind meistens 2 Arten von Kauderwelsch:

  • Nonsense: jfvgasdjkfahs kdlfjhasdf (Leute schlagen ihre Köpfe auf der Tastatur)
  • Sprache, die ich nicht verstehe

Was ich bis jetzt gemacht habe:

  1. Ich habe einen Filter installiert, um jedes Feedback zu löschen, das "asdf", "qwer" usw. enthält ... - & gt; nur 700 pro Tag

  2. Ich habe einen Wortfilter installiert, um alles, was eine schlechte Sprache enthält, zu löschen - & gt; 600 pro Tag (frag nicht - aber da sind viele seltsame Leute da draußen)

  3. Ich filtere alle Nachrichten aus, die Buchstaben enthalten, die in meiner Sprache nicht verwendet werden - & gt; 400 pro Tag

Aber 400 pro Tag ist immer noch viel zu viel. Ich frage mich, ob jemand schon einmal mit einem solchen Problem umgegangen ist und einen Algorithmus kennt, um sinnlose Nachrichten herauszufiltern.

Jede Hilfe würde wirklich geschätzt werden!

    
Chris 01.02.2009, 22:05
quelle

11 Antworten

12

Wie wäre es, wenn Sie nur eine vorhandene Implementierung eines Bayes-Spam-Filters verwenden, statt Ihre eigene zu implementieren? Ich hatte gute Ergebnisse mit DSpam

    
John Nilsson 01.02.2009, 22:10
quelle
12

Ein etwas anderer Ansatz wäre, ein System einzurichten, um die Feedback-Nachrichten an ein Konto zu senden und die Standard-Spam-Filterung zu verwenden. Sie könnten sie über Google Mail senden und ihre Filterung ausprobieren lassen. Nicht perfekt, aber nicht zu viel Aufwand, um beides zu implementieren.

    
Rob Walker 01.02.2009 22:11
quelle
6

Wenn Sie nur englische Kommentare erwarten (oder sich darum kümmern), dann zählen Sie einfach die Anzahl der gültigen Wörter (in Bezug auf ein Wörterbuch) in das hochgeladene Feedback. Überschreitet die Anzahl einen Schwellenwert, akzeptieren Sie die Rückmeldung. Wenn nicht, Müll es. Diese einfache Heuristik könnte durch Hinzufügen ihrer Wörterbücher auf andere Sprachen erweitert werden.

    
maxaposteriori 01.02.2009 22:10
quelle
6

Sie könnten den Bayes-Algorithmus versuchen, der von vielen Spamfiltern verwendet wird.

Better Bayesian Filtering

Wikipedia Erklärung

Einige Open Source

    
Greg Ogle 01.02.2009 22:18
quelle
5

Ich hatte ein Spam-Problem in einer Gästebuch-Funktion auf einer meiner Seiten (vor ziemlich langer Zeit). Meine Lösung bestand einfach darin, ein kleines Captcha-ähnliches Q & A-Feld hinzuzufügen, in dem der Benutzer gefragt wird: "Bist du ein Spamming-Roboter?" Jede Antwort, die das Wort "nein" enthält (das Durchlassen von "nein, ich bin nicht", "nein" und "überhaupt nicht", nur zum Spaß ...) erlaubte dem Benutzer zu posten ...

Der Grund, warum ich mich entschieden habe, Captcha nicht zu verwenden, war einfach, dass meine Benutzer ein "gemütlicheres" Gefühl für die Seite wollten und ein Captcha zu formell war. Das war persönlicher =)

    
Tomas Lycken 01.02.2009 22:11
quelle
3

Die einfachste Methode wäre, das Vorkommen jedes Buchstabens zu zählen. E ist der gebräuchlichste Buchstabe in Englisch, also sollte er am häufigsten verwendet werden. Sie können auch nach Wort- und Digraph-Häufigkeit suchen. Schauen Sie hier nach, um die Liste der am häufigsten verwendeten Begriffe auf Englisch zu erhalten.

    
Marius 01.02.2009 22:13
quelle
2

Schauen Sie sich Claude Shannon und Markov Modelle an. Diese führen zu einer statistischen Technik zur Bewertung von Wahrscheinlichkeiten, dass Buchstabenkombinationen aus einer bestimmten Sprachquelle stammen.

Hier finden Sie einige relevante Kursnotizen von der Princeton University.

    
joel.neely 01.02.2009 22:08
quelle
2

Fidelis Assis und ich haben den Spamfilter OSBF-Lua so angepasst, dass er leicht an andere Anwendungen angepasst werden kann Web Applikationen. Dieser Spam-Filter hat den TREC-Spam-Wettbewerb drei Jahre in Folge gewonnen. (Es macht mir nichts aus, zu prahlen, weil der Algorithmus von Fidelis ist, nicht von mir.)

Wenn Sie etwas ausprobieren möchten, haben wir den Code "fast beta" unter

%Vor%

Wir sind noch weit davon entfernt, eine saubere Version zu veröffentlichen, aber der Code sollte erstellt werden, vorausgesetzt, Sie installieren automake 1.9. Wir beraten Sie gerne, wie Sie Ihre Datenbank säubern und in Ihre Anwendung integrieren können.

    
Norman Ramsey 07.02.2009 21:40
quelle
0

Die vorhergehenden Antworten über die Aufmachung einiger Spam-Filter Bayesian-inspirierter Classfier sind eine gute Idee. Für Ihre Anwendung, da Sie eine Menge langer Nonsense-Wörter zu bekommen scheinen, ist es am besten, eine Option in Ihrem Parser einzuschalten, um auf Bigrammen und Trigrammen zu trainieren; Andernfalls werden viele der Nonsense-Wörter nur als "nie zuvor gesehen" behandelt, was in Ihrem Fall nicht die nützlichste Analyse ist.

    
Liudvikas Bukys 02.02.2009 14:10
quelle
0

Ja, wie die Leute gesagt haben, könnten Sie sich Spamfilter oder Markov-Modelle ansehen.

Etwas einfacher wäre es, einfach die verschiedenen Wörter in jeder Antwort zu zählen und nach Häufigkeit zu sortieren. Wenn Wörter wie das Folgende nicht ganz oben stehen, ist es wahrscheinlich kein gültiger Text:

das , ein , in , von , und , oder , ...

Sie sind das am häufigsten verwendete Wort in jedem üblichen englischen Text.

    
Frank 07.02.2009 21:58
quelle
0

Speichern Sie Kommentare einfach in einem ausstehenden Status, übergeben Sie sie über Akismet oder Defensio und verwenden Sie die Antwort, um sie als potenziellen Spam zu markieren oder sie als aktiv zu markieren.

Ссылка

Ссылка

Ich persönlich bevorzuge die API von Defensio, aber beide funktionieren fantastisch gut.

    
Jarin Udom 07.02.2009 22:03
quelle

Tags und Links