Torkan Ingawaar jednakże niedawno podczas rozmowy na wandejskim Placu Żenady przestawił dwie poszlaki na to wskazujące. Jedną było to, że Angus Kaufman w jednej ze swoich historii włączył szczegóły na temat prywatnych rozmów i realowych kontaktów seksualnych Edwarda Ebruza z Karoliną Aleksandrą, które dotychczas mogły znać tylko te dwie osoby. Drugą, że rzekomo, Edward oraz Angus „piszą identycznie”.
To drugie postanowiłam sprawdzić za pomocą niniejszej analizy stylometrycznej.
Użyłam do tego oprogramowania o nazwie Stylometry with R, znanego zwykle w skrócie jako „stylo”. Z korpus posłużyła mi treść wszystkich postów Angusa Kaufman oraz Edwarda Ebruza z forum dreamlandzkiego z usuniętymi jakimikolwiek cytatami z innych osób. Do porównania, jako korpus kontrolny, wzięłam także historie postów pięciu innych Dreamlandczyków: Artura Piotra, Pavla Svobody, Marcina Mikołaja, Alfreda oraz Steda Asketila. Wszyscy z nich byli aktywni w Dreamlandzie jeszcze wtedy, kiedy był on powagistyczną mikronacją, więc ich styl powinien być najbardziej podobny do stylu Edwarda. Z kolei styl Angusa powinien być o wiele bardziej odmienny.
Pierwszą zastosowaną przeze mnie metodą była analiza skupień na podstawie 4-gramów z zastosowaniem delty Edera. Wynik, tutaj wykreślony w postaci dendrogramu, był niejednoznaczny: o ile posty Kaufmana były faktycznie bliskie stylistycznie głównemu skupieniu postów Edwarda, bliższym dopasowaniem okazał się jednak Sted Asketil, który raczej Kaufmanem nie był.
Spowodowało to, że musiałam zmienić metodę z takiej, która jedynie ukazywała podobieństwo stylistyczne, na metodę weryfikacji autorstwa. Z mojego researchu wynikało, że najbardziej wiarygodną z takich jest medota General Impostors, wymyślona w 2014 roku przez M. Koppela oraz J. Wintera.
Ponieważ daje ona dobre rezultaty, postanowiłam ją zastosować do sprawdzenia, czy posty Angusa Kaufmana mogły zostać przekonująco napisane przez Edwarda Ebruza. Korpusy postów zostały podzielone na fragmenty po 3000 słów. Jako metrykę podobieństwa tekstów przyjęto miarę „Min–Max” M. Ružički — co prawda wymagającą obliczeniowo (weryfikacja za pomocą programu „stylo” trwała jakieś pół godziny), ale także dającą najlepsze rezultaty. Poniżej wklejam kod, jakiego użyłam w R:
Kod: Zaznacz cały
# load all text files from corpus/
tokenized.texts <- load.corpus.and.parse(files = "all", corpus.dir = "corpus2")
# build a frequency table
features <- make.frequency.list(tokenized.texts, head = 2000)
data <- make.table.of.frequencies(tokenized.texts, features, relative = TRUE)
# find rows by file name
brojler_rows <- grep("^brojler", rownames(data), ignore.case = TRUE)
kaufland_rows <- grep("^kaufland", rownames(data), ignore.case = TRUE)
other_rows <- setdiff(seq_len(nrow(data)), c(brojler_rows, kaufland_rows))
# verify each Kaufland chunk against Brojler
for (i in kaufland_rows) {
cat("\n=== Testing", rownames(data)[i], "===\n")
imposters(
reference.set = data[other_rows, 1:1000],
test = data[i, 1:1000],
candidate.set = data[brojler_rows, 1:1000],
distance = "minmax",
iterations = 100,
features = 0.5,
imposters = 0.5
)
}Wynik przeszedł moje najśmielsze oczekiwania:
Kod: Zaznacz cały
slicing input text into tokens...
turning words into features, e.g. char n-grams (if applicable)...
processing 311 text samples
...............................
combining frequencies into a table...
=== Testing kaufland_001 ===
Testing a given candidate against imposters...
brojler 0.97
=== Testing kaufland_002 ===
Testing a given candidate against imposters...
brojler 0.83
=== Testing kaufland_003 ===
Testing a given candidate against imposters...
brojler 0.64
=== Testing kaufland_004 ===
Testing a given candidate against imposters...
brojler 0.83
=== Testing kaufland_005 ===
Testing a given candidate against imposters...
brojler 1
=== Testing kaufland_006 ===
Testing a given candidate against imposters...
brojler 0.83
=== Testing kaufland_007 ===
Testing a given candidate against imposters...
brojler 0.93
=== Testing kaufland_008 ===
Testing a given candidate against imposters...
brojler 0.98
=== Testing kaufland_009 ===
Testing a given candidate against imposters...
brojler 1
=== Testing kaufland_010 ===
Testing a given candidate against imposters...
brojler 0.99
=== Testing kaufland_011 ===
Testing a given candidate against imposters...
brojler 0.99Jedyny wynik odstający dotyczy fragmentu „kaufland_003”, ale nie dość, że jest nadal >0,5, to nie jest on ani atypowy, ani nie jest żadnym obaleniem teorii — ot, mogło się zdarzyć, że w tym fragmencie, wypowiedzi były atypowe jak na Kaufmana.
Do weryfikacji, czy podobieństwo nie wynika po prostu z mikronacyjnej specyfiki tekstów w korpusach, porównałam także, za pomocą uproszczonej metody bez podziału korpusów na fragmenty, wynik porównania postów Angusa Kaufmana z postami Marcina Mikołaja, Alfreda, oraz Steda Asketila (który początkowo wydawał się bliższym dopasowaniem, niż Edward) — wyniki wyszły, odpowiednio: 0,0; 0,6; 0,22. Oznacza to, że Angusem Kaufmanem nie mógł być żaden z nich (wynik < 0,5), ani wynik dopasowania z Edwardem nie był spowodowany jedynie spefyciką tekstów.
Przepraszam, że zburzyłam wam wizerunek Edwarda Ebruza jako kogoś poważnego. W końcu, udowodnienie faktu, że miał on klona piszącego o „rozrywaniu odbytów” może być szokujące.
Deklaruję brak konfliktów interesów w powyższym badaniu.