Frage

Hallo alle zusammen auf der ganzen Welt,

Hintergrund

Ich bin ein Abschlussklasse Student der Informatik. Ich habe meine letzte Doppel-Modul-Projekt vorgeschlagen, das ein Plagiat Analyzer ist, mit Hilfe von Java und MySQL.

Der Plagiarism Analyzer wird:

  1. Scan alle Absätze der hochgeladenen Dokument. Analysieren Prozentsatz jeden Absatz kopiert, aus der Website.
  2. Markieren Sie nur die Worte kopiert genau, von welcher Website in jedem Absatz.

Mein Hauptziel ist es so etwas wie Turnitin, verbessert werden, wenn möglich, zu entwickeln.

Ich habe weniger als 6 Monate, um das Programm zu entwickeln. Ich habe folgende scoped:

  1. Web-Crawler Umsetzung. wird Lucene API Wahrscheinlich werden verwendet oder meine eigene Crawler entwickeln (die man besser ist, in Bezug auf die zeitliche Entwicklung und auch die Benutzerfreundlichkeit?).
  2. Hashing und Indizierung. auf der Suche und Analyse zu verbessern.

Fragen

Hier sind meine Fragen:

  1. Can MySQL Speicher so viel Informationen?
  2. Habe ich alle wichtigen Themen vermissen?
  3. Was sind Ihre Meinungen zu diesem Projekt?
  4. Irgendwelche Vorschläge oder Techniken für die Ähnlichkeitsanalyse durchführen?
  5. Kann ein Absatz gehasht werden, sowie Wörter?

Vielen Dank im Voraus für jede Hilfe und Beratung. ^^

War es hilfreich?

Lösung

Haben Sie ein anderes Projekt in Betracht gezogen, die nicht zu einem Versagen wegen Mangels an Ressourcen zur Verfügung zum Scheitern verurteilt ist?

Wenn Sie wirklich die gehen wollen „Hey, lasst uns das ganze Netz kriechen!“ Route, Sie gehen zu brechen Dinge wie HBase und Hadoop und viele Maschinen benötigen. MySQL wird grob unzureichend sein. TurnItIn Ansprüche gekrochen und 12 Milliarden Seiten indexiert haben. Google-Index ist eher wie [geschwärzt]. MySQL, oder was das betrifft, jede RDBMS, kann nicht auf dieses Niveau skaliert werden.

Der einzige realistische Weg Sie gehen, um diesen weg zu ziehen ist, wenn Sie etwas tun, erstaunlich klug und herauszufinden, wie Anfragen an Google zu konstruieren, das Plagiat von Dokumenten offenbaren wird, die bereits vorhanden sind, in der Google-Index. Ich würde empfehlen, eine Nachrichtenwarteschlange verwenden und die Suche API synchron zugreifen. Die Nachrichtenwarteschlange erlaubt es Ihnen auch Ihre Fragen bis zu einem vernünftigen Preis zu drosseln. Vermeiden Sie Stoppwörter, aber Sie suchen noch für nahezu exakte Übereinstimmungen, so Abfragen sein sollten: "* quick brown fox jumped over * lazy dog" Do Ausführen von Abfragen nicht der Mühe, die wie am Ende: "* * went * * *" Und Ergebnisse ignorieren, die wieder mit 94 Millionen Hits kommen. Diese werden nicht Plagiat sein, werden sie berühmte Zitate oder zu allgemeinen Abfragen sein. Sie suchen entweder unter 10 Treffer oder ein paar tausend Hits, die alle eine genaue Übereinstimmung auf Ihrem ursprünglichen Satz oder einem ähnlichen Metrik haben. Und selbst dann, sollte dies nur eine heuristische sein - kennzeichnen Sie ein Dokument nicht, es sei denn es gibt viele rote Fahnen sind. Umgekehrt, wenn alles als Null Treffer kommt zurück, sie ist ungewöhnlich originell. Buchsuche benötigt typischerweise genauere Abfragen. Hinreichend sollen verdächtige Sachen für die ursprünglichen Seiten HTTP-Anfragen auslösen, und endgültige Entscheidungen sollten immer die Zuständigkeit eines Menschen sein. Wenn ein Dokument seine Quellen zitiert, das ist nicht Plagiat, und Sie werden feststellen, dass erkannt werden sollen. Falsch positive Ergebnisse sind unvermeidlich, und wird wahrscheinlich gemeinsam sein, wenn nicht konstant ist.

Beachten Sie, dass der TOS dauerhaft einen Teil des Google-Index verbieten zu speichern.

Unabhängig davon, haben Sie sich entschieden, etwas zu tun außerordentlich hart, egal wie man es bauen, und wahrscheinlich sehr teuer und zeitaufwendig, wenn Sie Google betreffen.

Andere Tipps

1) Machen Sie Ihre eigenen Web-Crawler? Sieht aus wie Sie können ganz einfach alle verfügbaren Zeit nur für diese Aufgabe verwenden. Versuchen Sie es mit einer Standardlösung für das. Es ist nicht das Herz des Programms

Sie haben weiterhin die Möglichkeit haben, um Ihre eigene oder ein anderes versuchen, danach (wenn Sie Zeit haben!). Ihr Programm sollte nur auf lokale Dateien arbeiten, um nicht auf einen bestimmten Crawler / API gebunden werden.

Vielleicht werden Sie sogar verschiedene Crawler für verschiedene Websites

verwenden müssen

2) ganze Absätze Hashing ist möglich. Sie können nur eine beliebige Zeichenfolge Hash. Aber natürlich, dass Mittel können Sie nur für ganze paragrpahs exakt kopiert überprüfen. Vielleicht würde Sätze eine bessere Einheit Test. Sie sollten wahrscheinlich „normalisieren“ (TRANFORM) die Sätze / paragrpahs vor Hashing wie Groß geringfügige Unterschiede zu sortieren / Kleinschreibung.

3) MySQL kann eine Menge Daten speichern.

Der üblicher Rat ist: Stick Standard-SQL. Wenn Sie feststellen, Sie zu viele Daten haben, werden Sie immer noch die Möglichkeit haben, eine andere SQL-Implementierung zu verwenden.

Aber natürlich, wenn Sie zu viele Daten haben, beginnen Sie nach Wegen suchen, um es zu reduzieren oder zumindest zu reduzieren, was in mySQL ist. Zum Beispiel könnten Sie Hashes in MySQL speichern, aber Originalseiten in normalen Dateien (falls erforderlich).

Online-Code wird in der Regel unter Open Source Lizenzen vertrieben. Und die meisten Code ist nur Tutorials. Nach Ihrer Logik, von jeder Website etwas zu kopieren ist Plagiat. Das bedeutet, Sie können eine Antwort nicht akzeptieren und verwenden Sie hier. Wenn Sie wirklich Ihr Projekt wollen beenden, schreiben Sie einfach ein System, das Code von Studenten in der gleichen Klasse und früheren Klassen vergleichen würde. Es ist viel effizienter. Ein Beispiel für ein solches System ist MOSS (es gibt auch ein Papier darüber reden, wie es funktioniert ). Diese Sache ist wirklich effizient ohne Web-Crawler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top