[PHP][MySQL]Sprawdzanie plagiatów

0

Witam wszystkich.
Nurtuje mnie pytanie jak sprawdzić przy pomocy php i mysql czy dana praca nie jest plagiatem.

Mianowicie. Do bazy danych kilka osób wysyła prace ja je pobieram i akceptuje albo odrzucam i to jest banalne. Ale chodzi mi o fakt, gdy dwie osoby podeślą bardzo podobną pracę. Oczywiście nie muszą być identyczne, ale dużo rzeczy może być identycznych. Zastanawiam się jak to zrobić. Jak porównać aktualnie otwartą pracę z innymi znajdującymi się już w bazie danych. Oczywiście można zapamiętać jak mniej więcej wyglądała jakaś praca i czy się powtarza, ale ja tutaj rozważam przypadek kiedy to prace akceptuje kilka osób i potrzebny jest taki skrypt.

PS. Skrypt nie może być bardzo rygorystyczny, ani za mało :)

Pozdrawiam :)

0

To nie taka prosta sprawa powiedzieć wprost, że praca jest plagiatem. Na pewno musiałoby być sporo kryteriów do określenia potencjalnego plagiatu.

Mam kilka pomysłów:

  • Policz ilość wystąpień każdego ze słów. Dla każdego słowa sprawdzasz ilość wystąpień w innym tekście.
  • Można również sprawdzać styl pisma. Jedni ludzie piszą krótkie zdania inni długie, bardziej rozbudowane. Możesz zrobić przelicznik: ilość znaków na zdanie.
  • W pracach zdarzają się błędy ortograficzne. Wg mnie warto je policzyć.

Oczywiście plagiat może się odrobinę różnić od oryginału, stąd warto wprowadzić margines błędu.
Wg mnie może on wynosić np. 2 + [5% ilości wystąpień danego słowa] (akapitu, błędu).
Dodaję dodatkową dwójkę, aby zapewnić sobie margines błędu dla słów które występują małą ilość razy.
np. Zakładając, że słowo "x" występuje 10 razy to [5%] z 10 wynosi 0. Jednak margines wynosi 2.

Podkreślam, że to wszystko nie określi jednoznacznie, że tekst jest plagiatem. Jedynie wskaże teksty, które są podobne na kilka sposobów.

Ps. Jeśli chcesz, aby ktoś wykonał skrypt za Ciebie to nie licz na to, chyba, że mu zapłacisz ;) Ja tylko daję kilka pomysłów

0

Mi nie chodzi o wykonanie ale o pomysł :)

0

Przeciez dal Ci kilka pomyslow. Generalnie ocena czy praca jest plagiatem nie jest prosta. Mozna to zrobic tak, ze najpierw sprowadza sie slowa do slow bazowych, zeby nie wystepowala fleksja wyrazow (stemming). Nastepnie liczysz ilosc najczesciej wystepujacych slow i porownujesz prace. Pozniej za pomoca slownika wyrazow bliskoznacznych sprowadzasz te "czesto" wystepujace do jednego slowa znaczacego to samo i liczysz znowu ilosc. Dzieki temu zblizasz sie do oceny "tresci" pracy, a nie jej zawartosci. Na podstawie porownania bliskosci oceniasz prawdopodobienstwo na wystapienie plagiatu. Po przekroczeniu progu i tak wypada przeprowadzic analize reczna - znaczy przeczytac prace. Automat moze tylko sugerowac wystapienie plagiatu, a nie jednoznacznie go stwierdzic.

PS. W pierwszej kolejnosci mozna sprawdzic czy w pracy nie wystepuja identyczne bloki tekstu, w koncu czasem plagiat jest bezczelnym zerznieciem od kogos :D

0

Wiesz co kolego.

Jeżeli interesuje Cie kwestia porównywania tekstów to może warto było by zainteresować się algorytmem bayesa ?

W PHP znajdziesz gotowe klasy służące do szukania spamu.

Jeżeli wykorzystasz użyty w nich algorytm dostaniesz wynik prawdopodobieństwa w %, którym łatwo ocenisz czy tekst jest podobny do innych.

Jeżeli nie masz ochoty bawić się w taki sposób, a interesuje Cie coś prostego... to możesz spróbować MYSQL oraz fulltext. Można zrobić wyszukiwanie pełnotekstowe, i w oparciu o wynik wyliczyć "Relevance" czyli jakieś tam prawdopodobieństwo.

Jednym słowem, wyciągasz z całego tekstu wyrazy > 3,4 znaki, i sprawdzasz czy istnieją w oryginale.
Porównując ogólną liczbę trafień, otrzymasz wynik który można by przeliczyć na procenty.

0

Już jest bliżej fajna sprawa. Tylko jak przeliczyć ten wynik, żeby nie było tak, że prace nie są plagiatami a mi wyjdzie, że tak?

0

Bardzo często też w pracach zastępuje się zdania typu:

MD5 to algorytm umożliwiający na skrócenie podanego ciągu

Jednym z algorytmów skrótu jest MD5

Zazwyczaj podmienione zdanie występuje w okolicach 2-3 zdań od pierwotnego, przydaje się słownik wyrazów pochodnych... No i występowanie tych samych nazw niewystępujących w słowniku w tych samych okolicach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1