Document (#28032)

Author
Kramer, A.
Title
Falsche Fuffziger : Textplagiaten per Software auf der Spur
Source
c't. 2004, H.21, S.176-181
Year
2004
Abstract
Das Internet birgt zwar beinahe unerschöpfliches Wissen, trug aber gerade deshalb auch zu ganz neuen Problemen bei: Schüler klauen Hausaufgaben und Studenten mogeln sich mit kopierten Arbeiten bis zum Diplom. Buchautoren veröffentlichen Werke, die ihnen nicht gehören, und Forscher kassieren Gelder, die ihnen nicht zustehen. Eine noch junge Gattung Software soll Institutionen und Unternehmen abnehmen, was diese längst nicht mehr leisten können - Plagiate enttarnen.
Content
Wie Plagiatsuche funktioniert Algorithmen zum Aufspüren von Plagiaten gibt es seit den 70er Jahren, damals wurden sie entwickelt, um Programmcode nach geklauten Passagen zu durchsuchen. Sie waren anfangs relativ einfach gestrickt, weil sich auch die Täter nicht viel mehr Mühe machten, als lediglich white- in for-Schleifen zu ändern, Variablen auszutauschen oder Kommentare zu löschen beziehungsweise hinzuzufügen. Ansätze zum Auffinden von Plagiaten in natürlichsprachlichen Texten sind weitaus aufwendiger. Sie werten unter anderem die Schnittmenge gemeinsamer Satzbausteine (n-Gramme), die längste gemeinsame Textsequenz, ungefähr übereinstimmende Passagen oder den Anteil gemeinsamer Inhaltswörter aus. Scriptum, PI@giarism und vermutlich noch weitere Programme fahnden mit Hilfe von n-Gramm-Statistiken nach gemeinsamen Wortketten. Das Verfahren wertet Wortfolgen der Länge n aus, Satzzeichen und typografische Informationen wie Überschriften oder Fettdruck verwirft es. Die meisten Ansätze verwenden Dreiwortfolgen, so genannte Trigramme. Das auf eine Wortkette reduzierte Dokument wird in überlappende Folgen aus jeweils drei Wörtern eingeteilt {'Vor diesem Hintergrund', 'diesem Hintergrund verzichteten', 'Hintergrund verzichteten die', 'verzichteten die Grünen', ...}. Zur Berechnung der Ähnlichkeit werden die Trigramm-Sets S von Dokument A und Dokument B miteinander verglichen. Die Schnittmenge von S(A) und S(B), geteilt durch deren Vereinigungsmenge, zeigt an, inwieweit die Texte übereinstimmen. Neben diesem so genannten Jaccard-Koeffizienten existieren weitere Berechnungsmethoden und Abweichungen von diesem Modell.
Je länger die übereinstimmenden Sequenzen sind (also je größer n ist), desto eher handelt es sich um ein Plagiat. Eine komplizierte Wortfolge wie "aber das Ergebnis liegt immerhin über dem Bundestrend" kommt natürlich seltener an zwei Orten vor als die simplere Folge "deutlich größer als". Dennoch haben sich Trigramme durchgesetzt. Einerseits steigt bei n-Grammen mit acht oder mehr Wörtern die Wahrscheinlichkeit, überhaupt keine Übereinstimmung zwischen zwei Texten zu finden; es reicht schon, bei einer plagiierten Phrase von 15 Wörtern dasjenige in der Mitte auszutauschen. Andererseits benötigen Trigrammstatistiken weniger Speicherplatz und Rechenleistung. Da sich langkettige Phrasen seltener wiederholen, ist die Zahl verschiedener n-Gramme bei n = 8 notwendigerweise größer als bei n = 3. n-Gramme mit variabler Wortanzahl sind flexibler. Dabei erhalten längere Segmente ein höheres Gewicht als kurze, denn sonst würde eine übereinstimmende Folge aus fünf Wörtern genau so bewertet wie fünf einzelne Wörter. Wie viel Text mindestens übereinstimmen muss, damit das Dokument als verdächtig gilt, hängt von empirischen Werten ab, die jeder Anbieter hütet wie seinen Augapfel. Die kommerziellen Dienste verlinken längere Textpassagen auf mögliche Quellen, was durch überlappende Trigramme erreicht werden kann. Ein anderer Algorithmus, der übereinstimmende Textpassagen findet, heißt Greedy-String-Tiling (GST). Er prüft Dokumente paarweise, weshalb er sich für den Vergleich kleinerer Textsammlungen eignet. Ein Einsatz in großflächig suchenden Diensten ist aufgrund des Aufwands unwahrscheinlich. Der Algorithmus sucht die längste gemeinsame und nicht überlappende Zeichenkette zweier Dokumente (longest common substring) bei einem Minimum von drei aufeinander folgenden Wörtern. Davon können verschiedene quantitative Maße abgeleitet werden wie die minimale, maximale und durchschnittliche Länge der Textblöcke (tiles). Ein auf der Länge der Blöcke beruhendes Ähnlichkeitsmaß informiert, wie viel entlehnt wurde. Tauscht der Autor an einer Stelle ein Wort durch ein Synonym aus, ist die übereinstimmende Textpassage unterbrochen. Auch dafür gibt es einen mit GST verwandten Ansatz, den vermutlich Turnitin verwendet, um eine eingegrenzte Treffermenge näher zu untersuchen. Das Verfahren aus der Rechtschreibkorrektur (approximate string matching) erlaubt beim Vergleich der Texte einfache Editierungsoperationen wie das Löschen, Einfügen und Austauschen einzelner Wörter. Der Algorithmus entnimmt dem Text Bausteine aus sechs Wörtern und entfernt jeweils eins der Wörter. Mit den sechs Folgen aus jeweils fünf Wörtern wird der Text durchsucht. Eine Übereinstimmung zeigt an, dass ein Wort gelöscht wurde, kann aber auch, vom anderen Dokument ausgehend, ein eingefügtes Wort aufzeigen. Findet der Algorithmus keine Übereinstimmung, rutscht er ein Wort weiter im Text und führt die Suche erneut aus.
Object
Copycatch (www.copycatchgold.com)
Glatt (www.plagiarism.com)
Pl@giarism (www.rechten.unimaas.nl/edit/ICT/Plagiarism
Plagiarism-Finder (www.m4-software.de)
Turnitin.com (www.turnitin.com)
Damocles (viper.csse.monash.edu.au/~damocles)
MyDropBox (www.mydropbox.com)
Scriptum (www.scriptum.ca)
iThenticate (www.ithenticate.com)

Similar documents (author)

  1. Kramer, R.: Fachinformationen im Internet (1995) 5.74
    5.73624 = sum of:
      5.73624 = weight(author_txt:kramer in 2851) [ClassicSimilarity], result of:
        5.73624 = score(doc=2851,freq=1.0), product of:
          0.99999994 = queryWeight, product of:
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.10895638 = queryNorm
          5.7362404 = fieldWeight in 2851, product of:
            1.0 = tf(freq=1.0), with freq of:
              1.0 = termFreq=1.0
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.625 = fieldNorm(doc=2851)
    
  2. Kramer, E.H.: Why roving reference : a case study in a small academic library (1996) 5.74
    5.73624 = sum of:
      5.73624 = weight(author_txt:kramer in 6604) [ClassicSimilarity], result of:
        5.73624 = score(doc=6604,freq=1.0), product of:
          0.99999994 = queryWeight, product of:
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.10895638 = queryNorm
          5.7362404 = fieldWeight in 6604, product of:
            1.0 = tf(freq=1.0), with freq of:
              1.0 = termFreq=1.0
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.625 = fieldNorm(doc=6604)
    
  3. Kramer, A.: Datendetektive : Volltextsuchmaschinen trotzen dem Chaos auf der Festplatte (2004) 5.74
    5.73624 = sum of:
      5.73624 = weight(author_txt:kramer in 3826) [ClassicSimilarity], result of:
        5.73624 = score(doc=3826,freq=1.0), product of:
          0.99999994 = queryWeight, product of:
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.10895638 = queryNorm
          5.7362404 = fieldWeight in 3826, product of:
            1.0 = tf(freq=1.0), with freq of:
              1.0 = termFreq=1.0
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.625 = fieldNorm(doc=3826)
    
  4. Kramer, A.: Such, Programm! : Elf kostenlose Desktop-Tools schnüffeln um die Wette (2005) 5.74
    5.73624 = sum of:
      5.73624 = weight(author_txt:kramer in 561) [ClassicSimilarity], result of:
        5.73624 = score(doc=561,freq=1.0), product of:
          0.99999994 = queryWeight, product of:
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.10895638 = queryNorm
          5.7362404 = fieldWeight in 561, product of:
            1.0 = tf(freq=1.0), with freq of:
              1.0 = termFreq=1.0
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.625 = fieldNorm(doc=561)
    
  5. Kramer, A.: Herrscher über das Chaos : Strategien, um im Dokumentenwust den Überblick zu wahren (2006) 5.74
    5.73624 = sum of:
      5.73624 = weight(author_txt:kramer in 2182) [ClassicSimilarity], result of:
        5.73624 = score(doc=2182,freq=1.0), product of:
          0.99999994 = queryWeight, product of:
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.10895638 = queryNorm
          5.7362404 = fieldWeight in 2182, product of:
            1.0 = tf(freq=1.0), with freq of:
              1.0 = termFreq=1.0
            9.177984 = idf(docFreq=11, maxDocs=42740)
            0.625 = fieldNorm(doc=2182)
    

Similar documents (content)

  1. Broecheler, K.: Kopieren statt studieren : Chip Praxis: Plagiate (2005) 0.09
    0.088753276 = sum of:
      0.088753276 = product of:
        0.554708 = sum of:
          0.10257998 = weight(abstract_txt:studenten in 979) [ClassicSimilarity], result of:
            0.10257998 = score(doc=979,freq=1.0), product of:
              0.15298961 = queryWeight, product of:
                1.1560843 = boost
                7.152031 = idf(docFreq=90, maxDocs=42740)
                0.018503038 = queryNorm
              0.6705029 = fieldWeight in 979, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.152031 = idf(docFreq=90, maxDocs=42740)
                0.09375 = fieldNorm(doc=979)
          0.14216901 = weight(abstract_txt:schüler in 979) [ClassicSimilarity], result of:
            0.14216901 = score(doc=979,freq=1.0), product of:
              0.19017649 = queryWeight, product of:
                1.2889526 = boost
                7.974011 = idf(docFreq=39, maxDocs=42740)
                0.018503038 = queryNorm
              0.74756354 = fieldWeight in 979, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.974011 = idf(docFreq=39, maxDocs=42740)
                0.09375 = fieldNorm(doc=979)
          0.25725767 = weight(abstract_txt:plagiate in 979) [ClassicSimilarity], result of:
            0.25725767 = score(doc=979,freq=1.0), product of:
              0.2824007 = queryWeight, product of:
                1.5706934 = boost
                9.71698 = idf(docFreq=6, maxDocs=42740)
                0.018503038 = queryNorm
              0.9109669 = fieldWeight in 979, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                9.71698 = idf(docFreq=6, maxDocs=42740)
                0.09375 = fieldNorm(doc=979)
          0.052701365 = weight(abstract_txt:nicht in 979) [ClassicSimilarity], result of:
            0.052701365 = score(doc=979,freq=1.0), product of:
              0.1415387 = queryWeight, product of:
                1.926002 = boost
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.018503038 = queryNorm
              0.37234598 = fieldWeight in 979, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.09375 = fieldNorm(doc=979)
        0.16 = coord(4/25)
    
  2. Bolz, A.: Ob Buben oder Busen, das weiß kein Mensch : Neurowissenschaftler sind mit Hilfe der Computertechnik und neuen Meßverfahren den Gedanken auf der Spur (1997) 0.08
    0.082896605 = sum of:
      0.082896605 = product of:
        0.6908051 = sum of:
          0.1694123 = weight(abstract_txt:forscher in 953) [ClassicSimilarity], result of:
            0.1694123 = score(doc=953,freq=1.0), product of:
              0.15206094 = queryWeight, product of:
                1.1525701 = boost
                7.130291 = idf(docFreq=92, maxDocs=42740)
                0.018503038 = queryNorm
              1.114108 = fieldWeight in 953, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.130291 = idf(docFreq=92, maxDocs=42740)
                0.15625 = fieldNorm(doc=953)
          0.43355715 = weight(title_txt:spur in 953) [ClassicSimilarity], result of:
            0.43355715 = score(doc=953,freq=1.0), product of:
              0.25194037 = queryWeight, product of:
                1.4835678 = boost
                9.177984 = idf(docFreq=11, maxDocs=42740)
                0.018503038 = queryNorm
              1.720872 = fieldWeight in 953, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                9.177984 = idf(docFreq=11, maxDocs=42740)
                0.1875 = fieldNorm(doc=953)
          0.0878356 = weight(abstract_txt:nicht in 953) [ClassicSimilarity], result of:
            0.0878356 = score(doc=953,freq=1.0), product of:
              0.1415387 = queryWeight, product of:
                1.926002 = boost
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.018503038 = queryNorm
              0.6205766 = fieldWeight in 953, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.15625 = fieldNorm(doc=953)
        0.12 = coord(3/25)
    
  3. Neubauer, K.W.: Was haben Bibliotheken mit Red Bull gemeinsam? : Zur elektronischen Informationsversorgung an Hochschulen (2002) 0.08
    0.08062557 = sum of:
      0.08062557 = product of:
        0.5039098 = sum of:
          0.121952765 = weight(abstract_txt:gehören in 2197) [ClassicSimilarity], result of:
            0.121952765 = score(doc=2197,freq=1.0), product of:
              0.14172794 = queryWeight, product of:
                1.112721 = boost
                6.883767 = idf(docFreq=118, maxDocs=42740)
                0.018503038 = queryNorm
              0.8604709 = fieldWeight in 2197, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                6.883767 = idf(docFreq=118, maxDocs=42740)
                0.125 = fieldNorm(doc=2197)
          0.1367733 = weight(abstract_txt:studenten in 2197) [ClassicSimilarity], result of:
            0.1367733 = score(doc=2197,freq=1.0), product of:
              0.15298961 = queryWeight, product of:
                1.1560843 = boost
                7.152031 = idf(docFreq=90, maxDocs=42740)
                0.018503038 = queryNorm
              0.89400387 = fieldWeight in 2197, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.152031 = idf(docFreq=90, maxDocs=42740)
                0.125 = fieldNorm(doc=2197)
          0.1458091 = weight(abstract_txt:längst in 2197) [ClassicSimilarity], result of:
            0.1458091 = score(doc=2197,freq=1.0), product of:
              0.15965559 = queryWeight, product of:
                1.1810019 = boost
                7.306182 = idf(docFreq=77, maxDocs=42740)
                0.018503038 = queryNorm
              0.91327274 = fieldWeight in 2197, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.306182 = idf(docFreq=77, maxDocs=42740)
                0.125 = fieldNorm(doc=2197)
          0.099374644 = weight(abstract_txt:nicht in 2197) [ClassicSimilarity], result of:
            0.099374644 = score(doc=2197,freq=2.0), product of:
              0.1415387 = queryWeight, product of:
                1.926002 = boost
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.018503038 = queryNorm
              0.7021023 = fieldWeight in 2197, product of:
                1.4142135 = tf(freq=2.0), with freq of:
                  2.0 = termFreq=2.0
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.125 = fieldNorm(doc=2197)
        0.16 = coord(4/25)
    
  4. Becht, S.: ¬Das Linux des Wissens : Richard Stallmann plant eine frei zugängliche Enzyklopädie (2001) 0.07
    0.070567586 = sum of:
      0.070567586 = product of:
        0.29403162 = sum of:
          0.040899534 = weight(abstract_txt:leisten in 551) [ClassicSimilarity], result of:
            0.040899534 = score(doc=551,freq=1.0), product of:
              0.14856161 = queryWeight, product of:
                1.1392311 = boost
                7.04777 = idf(docFreq=100, maxDocs=42740)
                0.018503038 = queryNorm
              0.2753035 = fieldWeight in 551, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.04777 = idf(docFreq=100, maxDocs=42740)
                0.0390625 = fieldNorm(doc=551)
          0.042741656 = weight(abstract_txt:studenten in 551) [ClassicSimilarity], result of:
            0.042741656 = score(doc=551,freq=1.0), product of:
              0.15298961 = queryWeight, product of:
                1.1560843 = boost
                7.152031 = idf(docFreq=90, maxDocs=42740)
                0.018503038 = queryNorm
              0.2793762 = fieldWeight in 551, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.152031 = idf(docFreq=90, maxDocs=42740)
                0.0390625 = fieldNorm(doc=551)
          0.05923709 = weight(abstract_txt:schüler in 551) [ClassicSimilarity], result of:
            0.05923709 = score(doc=551,freq=1.0), product of:
              0.19017649 = queryWeight, product of:
                1.2889526 = boost
                7.974011 = idf(docFreq=39, maxDocs=42740)
                0.018503038 = queryNorm
              0.3114848 = fieldWeight in 551, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                7.974011 = idf(docFreq=39, maxDocs=42740)
                0.0390625 = fieldNorm(doc=551)
          0.0636286 = weight(abstract_txt:veröffentlichen in 551) [ClassicSimilarity], result of:
            0.0636286 = score(doc=551,freq=1.0), product of:
              0.19946311 = queryWeight, product of:
                1.3200483 = boost
                8.166383 = idf(docFreq=32, maxDocs=42740)
                0.018503038 = queryNorm
              0.31899932 = fieldWeight in 551, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                8.166383 = idf(docFreq=32, maxDocs=42740)
                0.0390625 = fieldNorm(doc=551)
          0.03842315 = weight(abstract_txt:software in 551) [ClassicSimilarity], result of:
            0.03842315 = score(doc=551,freq=4.0), product of:
              0.11310445 = queryWeight, product of:
                1.4057671 = boost
                4.3483377 = idf(docFreq=1501, maxDocs=42740)
                0.018503038 = queryNorm
              0.33971387 = fieldWeight in 551, product of:
                2.0 = tf(freq=4.0), with freq of:
                  4.0 = termFreq=4.0
                4.3483377 = idf(docFreq=1501, maxDocs=42740)
                0.0390625 = fieldNorm(doc=551)
          0.0491016 = weight(abstract_txt:nicht in 551) [ClassicSimilarity], result of:
            0.0491016 = score(doc=551,freq=5.0), product of:
              0.1415387 = queryWeight, product of:
                1.926002 = boost
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.018503038 = queryNorm
              0.3469129 = fieldWeight in 551, product of:
                2.236068 = tf(freq=5.0), with freq of:
                  5.0 = termFreq=5.0
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.0390625 = fieldNorm(doc=551)
        0.24 = coord(6/25)
    
  5. Dahlberg, I.: Wissensorganisation : Entwicklung, Aufgabe, Anwendung, Zukunft (2014) 0.07
    0.06926815 = sum of:
      0.06926815 = product of:
        0.43292594 = sum of:
          0.067210585 = weight(abstract_txt:gerade in 4199) [ClassicSimilarity], result of:
            0.067210585 = score(doc=4199,freq=1.0), product of:
              0.1154105 = queryWeight, product of:
                1.0041097 = boost
                6.211852 = idf(docFreq=232, maxDocs=42740)
                0.018503038 = queryNorm
              0.5823611 = fieldWeight in 4199, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                6.211852 = idf(docFreq=232, maxDocs=42740)
                0.09375 = fieldNorm(doc=4199)
          0.17660287 = weight(abstract_txt:junge in 4199) [ClassicSimilarity], result of:
            0.17660287 = score(doc=4199,freq=1.0), product of:
              0.21976171 = queryWeight, product of:
                1.3855894 = boost
                8.571848 = idf(docFreq=21, maxDocs=42740)
                0.018503038 = queryNorm
              0.80361074 = fieldWeight in 4199, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                8.571848 = idf(docFreq=21, maxDocs=42740)
                0.09375 = fieldNorm(doc=4199)
          0.052701365 = weight(abstract_txt:nicht in 4199) [ClassicSimilarity], result of:
            0.052701365 = score(doc=4199,freq=1.0), product of:
              0.1415387 = queryWeight, product of:
                1.926002 = boost
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.018503038 = queryNorm
              0.37234598 = fieldWeight in 4199, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                3.9716904 = idf(docFreq=2188, maxDocs=42740)
                0.09375 = fieldNorm(doc=4199)
          0.13641115 = weight(abstract_txt:ihnen in 4199) [ClassicSimilarity], result of:
            0.13641115 = score(doc=4199,freq=1.0), product of:
              0.23309347 = queryWeight, product of:
                2.018081 = boost
                6.2423553 = idf(docFreq=225, maxDocs=42740)
                0.018503038 = queryNorm
              0.5852208 = fieldWeight in 4199, product of:
                1.0 = tf(freq=1.0), with freq of:
                  1.0 = termFreq=1.0
                6.2423553 = idf(docFreq=225, maxDocs=42740)
                0.09375 = fieldNorm(doc=4199)
        0.16 = coord(4/25)