Ich versuche festzustellen, ob ein Artikel oder ein Forumsbeitrag ein doppelter Eintrag in der Datenbank ist. Ich habe darüber nachgedacht und bin zu dem Schluss gekommen, dass jemand, der Inhalte dupliziert, dies mithilfe einer der drei folgenden Methoden tun wird (in absteigender Reihenfolge schwer zu erkennen):
- Kopieren Sie einfach den gesamten Text
- Kopieren Sie Textteile, und fügen Sie sie in ihre eigenen Teile ein
- Kopiere einen Artikel von einer externen Seite und maskiere ihn als ihren eigenen
Text zur Analyse vorbereiten
Grundsätzlich keine Anomalien; Ziel ist es, den Text so "rein" wie möglich zu gestalten. Für genauere Ergebnisse ist der Text "standardisiert" durch:
- Entfernen doppelter Leerzeichen und Trimmen von führenden und nachfolgenden Leerzeichen.
- Zeilenumbrüche sind standardisiert auf \ n.
- HTML-Tags werden entfernt.
- Mit einem RegEx namens Daring Fireball werden URLs entfernt.
- Ich benutze BB-Code in meiner Bewerbung, damit geht.
- (ä) Cented und Foreign (außer Enlgish) werden in ihre nicht fremde Form umgewandelt.
Ich speichere Informationen zu jedem Artikel in (1) Statistiktabelle und in (2) Keyword-Tabelle.
(1) Statistiktabelle Die folgenden Statistiken werden über den Textinhalt gespeichert (ähnlich wie in diesem Beitrag).
- Textlänge
- Anzahl der Buchstaben
- Wortzahl
- Satzanzahl
- durchschnittliche Wörter pro Satz
- automatisierter Lesbarkeitsindex
- Sprühnebel Punktzahl
Für europäische Sprachen sollten Coleman-Liau und Automated Readability Index verwendet werden, da sie keine Silbenzählung verwenden und daher eine einigermaßen genaue Punktzahl ergeben sollten.
(2) Schlüsselworttabelle
Die Schlüsselwörter werden durch Ausschließen einer großen Liste von Stoppwörtern (gebräuchlichen Wörtern) generiert, z. B. 'the', 'a', 'of', 'to' usw. usw.
Beispieldaten
- text_length, 3963
- letter_count, 3052
- word_count, 684
- sentence_count, 33
- word_per_sentence, 21
- gunning_fog, 11.5
- auto_read_index, 9.9
- Stichwort 1, getötet
- Schlüsselwort 2, Offiziere
- Stichwort 3, Polizei
Es ist zu beachten, dass nach der Aktualisierung eines Artikels alle oben genannten Statistiken neu generiert werden und völlig andere Werte annehmen können.
Wie kann ich anhand der obigen Informationen feststellen, ob ein Artikel, der zum ersten Mal veröffentlicht wird, bereits in der Datenbank vorhanden ist?
Mir ist bewusst, dass alles, was ich entwerfen werde, nicht perfekt sein wird. Das größte Risiko besteht darin, dass (1) Inhalte, die keine Duplikate sind, als Duplikate gekennzeichnet werden. (2) Das System lässt die Duplikate durch.
Der Algorithmus sollte daher eine Risikobewertungsnummer aus 0 (kein Duplikat), 5 (mögliches Duplikat) und 10 (Duplikat) generieren. Bei mehr als 5 besteht die gute Möglichkeit, dass der Inhalt doppelt vorhanden ist. In diesem Fall könnte der Inhalt markiert und mit den Artikeln verlinkt werden, bei denen es sich möglicherweise um Duplikate handelt, und ein Mensch könnte entscheiden, ob er sie löscht oder zulässt.
Wie ich bereits sagte, speichere ich Schlüsselwörter für den gesamten Artikel. Ich frage mich jedoch, ob ich das auch auf Absatzbasis tun kann. Dies würde auch bedeuten, meine Daten in der Datenbank weiter zu trennen, würde aber auch das Erkennen von (2) in meinem ersten Beitrag erleichtern.
Ich denke gewichteter Durchschnitt zwischen den Statistiken, aber in welcher Reihenfolge und was wären die Konsequenzen ...