• Aucun résultat trouvé

VI.2 Developments on top of the framework

VI.2.4 Plagiarism.py

As mentioned in the introduction, plagiarism detection is fashionable and universities are gearing up to face that problem. They often chose centralized commercial tools. Such tools require much computing power and massive access to data on the web, and therefore often rely on the powerful infrastructures of web search engines. But the search engines are not precisely adapted for that use, and other more direct approaches could possibly be more efficient. In addition, even with this use of search engines, plagiarism checking with this kind of commercial tools takes time and therefore end users (professors, etc.) will use them only if a document seems really suspicious. This is not optimal.

For those reasons, the path followed in a plagiarism study on arXiv (Sorokina et al. 2006) seems most interesting: all full-text documents were directly compared with each other in one domain of knowledge. Such a plagiarism detection scheme could perhaps be developed and optimized thanks to the MarcXimiL framework. In many cases, the detection could be speeded up in studing the potential plagiarized documents only amongst groups of related document determined using the metadata associated to them. Of course, this approach is only valid in the context of specialized publications within fields that possess quite complete thematic repositories (like arXiv or the future Inspire in high energy physics), or at least well structured metadata databases (like in the biomedical domain with PubMed). This strategy would not be applicable to students exercises at a level that may allow to plagiarise websites such as Wikipedia, Ask, Google Answers, Le Guichet du Savoir, and so forth.

Our technical approach differs of the one that was successfully applied in the previously mentioned arXiv study. While they based their analysis on the document's sentences composition, we use whole paragraphs that are compared with the shingling algorithm and a global output threshold of 0.05.

In order to quickly assess this tool's potential, a knowledge base was built with 12 articles downloaded from the English Wikipedia on August 25, 2009: Voltaire, Rousseau, D'Alambert, Bastille, Charles_XII_of_Sweden, Edward_Gibbon, Geneva, Leibniz, Louis_XV, Pierre_Louis_Maupertuis, Poitou, William_Shakespeare. These articles were selected because they have all connections with the Voltaire article (they are all linked from that article). In total 1090 paragraphs were extracted and stored (very short paragraphs were automatically left aside).

The knowledge base having been set up, the Wikipedia article on Rimbaud was downloaded and tested for plagiarism against it. At this point, most paragraphs were not detected as plagiarized

candidates. A couple of them were selected (one in the knowledge base and one in the Rimbaud document). Both paragraphs number 8 met the non-detection requirement and were retained. In the Rimbaud document, paragraph 8 is made of 4 sentences, 110 words, and 724 characters. It was then duplicated and modified 16 times. Modifications 1 to 4 were performed as follows:

1. The first sentence was replaced with the first sentence of paragraph 8 from the Voltaire article.

2. The first 2 sentences were replaced with the first 2 sentences of paragraph 8 from the Voltaire article.

3. The first 3 sentences were replaced with the first 3 sentences of paragraph 8 from the Voltaire article.

4. The first 4 sentences were replaced with the first 4 sentences of paragraph 8 from the article.

Modifications 5 through 8 were applied on top of the first 4 modifications: each sentence that was added previously was fractioned in two around its middle and the parts were per mutated.

Modifications 9 to 12 were applied on top of the first 4 modifications: each sentence that was added previously was truncated of one word.

Modifications 13 to 16 were applied on top of the first 4 modifications: each sentence that was added previously was truncated of two words.

The plagiarism check of this altered Rimbaud document returned 45 suspected paragraphs. Among these 45, the 16 altered paragraphs were returned. The results were sorted and Wikipedia specific noise was removed manually: This noise was due to the following paragraphs: « Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. […] »,

« Hidden categories: All articles with unsourced statements [...] », « .Wikiquote has a collection of quotations related to:[...] ». After this specific noise removal there were 22 possible candidates left containing the 16 records to find.

Even if the knowledge base was quite small, it shows that plagiarism.py works to a certain extent and that the MarcXimiL framework can be used for plagiarism detection. However this tool remains a prototype and some obvious features are missing, like the ability not to report a possible plagiarism if a rightful citation was made.

Some of the modified paragraphs that were successfully detected as plagiarised in the previous test were also submitted in on-line plagiarism detection tools. Plagium, that looks up Wikipedia through

Yahoo, was able to detect some of the plagiarisms but not all even if the Voltaire article was scanned! The modified paragraphs 1, 5, 9, and 13 were submited and the link to the Voltaire page was not detected in the cases 5 and 13. The same paragraphs were then submitted to SeeSources, that failed only on number 13. In this paragraph, the plagiarised sentence to find was originally made of 22 words, and two of them were removed. This simple modification sufficed to fool both on-line tools. Plagiarism.py did not fail. However the comparison is quite unfair, since plagiarism.py's knowledge base was a lot smaller than the others and a scale effect might very well be involved.

Plagiarism.py supports most popular formats: PDF, DOC, ODT, PPT, ODP, XLS, ODS, HTML, among others. Documents may be loaded from the local file system or downloaded directly from the web if an URL is given. Moreover, a range of tests should be done to optimise recall and precision in that context. This tool may be used as follows:

SYNTAX: plagiarism.py [[­a] <URI>] [­c]

NB: <URI> may be an URL or local file name.

OPTIONS

-a : will add data in <URI> to the knowledge base used for plagiarism detection.

EXAMPLES

Perform plagiarism detection:

plagiarism.py Thesis.doc Add documents to plagiarism knowledge base:

plagiarism.py ­a Article.ods

plagiarism.py ­a Article.doc

plagiarism.py ­a Article.html Clear knowledge base

plagiarism.py ­c  Required:

1. The python_uno module (doc, odt, html, etc. importation through OpenOffice) On Ubuntu:

sudo apt­get install python­uno 

2. OpenOffice (soffice.bin) running in server mode on port 2002. On Ubuntu you may execute

the following command to achive this: /usr/bin/soffice   ­headless 

­invisible '­accept=socket,host=localhost,port=2002;urp;' 3. xpdf (because pdftotext comes with it). On Ubuntu: sudo apt­get install xpdf