1. Opis problemu

Celem projektu było stworzenie aplikacji umożliwiającej rozpoznawanie autora tekstu. Zadaniem polega na przyporządkowaniu do niepodpisanego tekstu jednego z wcześniej zdefiniowanych autorów. Dla każdego z autorów jako dane uczące wykorzystywane są napisane przez niego wiadomości.

Analizie poddane zostały posty z forum studentów informatyki, a więc krótkie wypowiedzi.

2. Opis metody

Proces przyporządkowywania autora do tekstu można podzielić na trzy główne etapy.

Czyszczenie

Dane są normalizowane (wielkość liter, białe znaki) oraz usuwane są elementy mogące zakłócić klasyfikację. W przypadku rozpatrywanych danych usunięte zostały tagi formatujące BBCode oraz takie elementy jak cytowania innych postów czy wklejone kody źródłowe. Usunięte zostały również wiadomości krótsze niż 50 znaków.

Ekstrakcja cech

Dla każdej z wypowiedzi utworzono wektor cech go opisujących. Wśród możliwych do użycia cech tekstu są:

W przypadku słów i n-gramów słów możliwe jest wcześniejsze przeprowadzenie stemmingu czyli sprowadzenie słów do form bazowych (np. Ala ma kota zostanie zastąpione Ala mieć kot).

Aby nadać cechom wagi odpowiednie do ilości informacji, które niosą wykorzystano miarę TF-IDF (Term Frequency - Inverse Document Frequency).

Klasyfikacja

Do klasyfikacji użytko algorytmu k-NN (k-Nearest Neighbor). Jako miara podobieństwa tekstów została użyta odległość kosinusowa czyli kosinus kąta pomiędzy wektorami cech opisującymi dokumenty.

Implementacja

Aplikację zostałą zaimplementowana w języku Java (w wersji SE 6.0). Dane uczące oraz testowe ładowane są z bazy MySQL. Do stemmingu wyrazów wykorzystano bibliotekę morfologik-stemming.

Doświadczenia

Dane testowe

Do testów wybranych zostało losowo 20 autorów. Aby nierównomierny rozkład danych nie zaburzył wyników dla każdego autora losowo wybrano 500 napisanych przez niego postów. 490 z nich posłużyło jako dane uczące, 10 jako testowe. Łącznie dane uczące liczyły 9800 postów, dane testowe 200.

Wyniki

Aplikacja jako wynik zwracała raport ze statystykami ilości poprawnie rozpoznanych tekstów. Poniżej przykładowe wyniki.

autorpoprawneskuteczność
3220%
4220%
5440%
6990%
1000%
16330%
17220%
19220%
25550%
29330%
33110%
34220%
42220%
54330%
62770%
6700%
86660%
276220%
302880%
725770%
7035%
autorpoprawneskuteczność
2440%
3550%
4220%
5110%
6770%
10110%
16330%
17550%
19330%
25330%
29880%
33110%
34220%
42220%
54440%
62660%
67110%
86440%
302660%
725330%
7135,5%
autorpoprawneskuteczność
2110%
3440%
5330%
6660%
10220%
16330%
17220%
19330%
25330%
29440%
33110%
34330%
4200%
54440%
62550%
67110%
86330%
276330%
302660%
725440%
6130,5%

Średnia skuteczność jest w granicach 35%. Jak widać jakość klasyfikacji jest zależna od autora. Wiadomości niektórych łatwo rozpoznawać (np. użytkownicy 6, 302) w przypadku innych rezultaty były bardzo słabe (np. numery 33 i 67).

Kolejna tabelka prezentuje skuteczność w zależności od długości klasyfikowanej wiadomości.

rozmiar postu
(w znakach)
poprawnychtestowanychskuteczność
50-997429125%
100-19911534633%
200-2996314444%
300-399196330%
400-499245048%
500-599152952%
600-69992635%
700-7994944%
800-89951338%
900-9994757%
1000-10991333%
1100-11993560%

Najwięcej postów mieści się w granicy do 300 znaków czyli są to dość krótkie. Wśród dłuższych wiadomości skuteczność jest nieco lepsza od średniej. W przypadku najdłuższych wiadomości (powyżej 700 znaków) wyniki bywają różnie, głównie z powodu małej ilości długich tekstów zarówno w danych testowych jak i uczących.

Wnioski

Skuteczność algorytmu (oscylująca w granicach 35%) wydaje się na pierwszy rzut oka kiepska. W literaturze zagadnienia pojawiają się lepsze wyniki. Trzeba jednak pamiętać o tym, że zazwyczaj przypisywanie autorów jest wykonywane na długich tekstach. W pracach naukowych można znaleźć eksperymenty przeprowadzane na książkach, referatach czy esejach, głównie w języku angielskim. Są to dużo dłuższe teksty niż ok. 200 znakowe posty (czyli niewiele więcej niż zwykły SMS). Dodatkowym problemem jest różnorodność danych, baza zawiera zarówno wskazówki do zadań zapisane formalnym językiem matematycznym jak i luźne pogadanki na temat polityki. Kolejnym czynnikiem utrudniającym zadanie może być okres czasu z jakiego pochodzą dane, najstarsze posty datowane są na 2004 rok. W ciągu 4 lat edukacji na studiach użytkownikowi mógł się nieco zmienić styl czy zasób słownictwa. Zniekształcenia danych moga powodować również takie z pozoru nieistotne rzeczy jak zmiana przeglądarki użytkownika na taką ze sprawdzaniem pisowni.

Wyniki nie są oszałamiające lecz na pewno wyraźne lepsze od losowej klasyfikacji (dającej skuteczność ok. 5%). Niestety brak prac poruszających analogiczne zagadnienie uniemożliwia porównanie wyników.

Materiały

  1. Methods Of Author Identification - Niamh McCombe
  2. Reprezentacja dokumentów tekstowych w modelu przestrzeni wektorowej - Michał Kosmulski
  3. N-Gram-Based Author Profiles For Authorship Attribution - Vlado Keselj, Fuchun Peng, Nick Cercone, Calvin Thomas
  4. biblioteka morfologik-stemming

Valid XHTML 1.0 Transitional