This commit is contained in:
emilekm2142 2020-01-09 21:15:47 +01:00
parent 0340c3426a
commit f14fca673c

View File

@ -2,13 +2,13 @@
Od dawna zastanawiałem się nad stworzeniem małej gry w której wcielamy się w rolę propagandzisty totalitarnego państwa (takiego jak fikcyjna Arstotzka z Papers Please). Gra miałaby polegać na pisaniu odpowiednich przemów i tekstów marszy zależenie od sytuacji. W ramach projektu postanowiłem spróbować wykonać chociaż jeden z komponentów.
Sprawdzamy czy nasz tekst nadaje się do dalszej analizy poprzed binarną klasyfikację czy jest to marsz, przemowa lub nie.
Sprawdzamy czy nasz tekst nadaje się do dalszej analizy poprzez binarną klasyfikację czy jest to marsz, przemowa lub nie.
Moje dane pochodzą głównie ze strony http://www.sovmusic.ru/english/, gdzie ktoś przez wiele lat gromadził teksty komunistycznych pieśni.
Drugim, mniejszym źródłem była strona na której umieszczone zostały przetłumaczone na angielski rozkazy i pisma Stalina podczas drugiej wojny światowej.
Drugim, mniejszym źródłem była strona na której umieszczone zostały przetłumaczone na angielski rozkazy i pisma Stalina z drugiej wojny światowej.
https://www.marxists.org/reference/archive/stalin/works/decades-index.htm. Jest tego dużo, więc zrobiłem bota do ściągania danych `stalin_war_crawler.py` i `stalin_trockizm_crawler.py`
Przykłady innych tekstów znalazłem na https://github.com/Lyrics/lyrics
Przykłady innych tekstów, normalnych piosenek znalazłem na https://github.com/Lyrics/lyrics
Największym problemem okazał się format zbioru piosenek z rosyjskiej strony - jest to ogromny, tabelkowy dokument .html, z którego było cięzko wyciągnąć teksty. Do tego, teksty są w różnych językach - trzeba było je znormalizować do jednego języka. Wybrałem angielski, bo google translate najlepiej działa na tym języku. W celu masowego tłumaczenia napisałem skrypt (`piosenki/translate.py`) wyciągający teksty i używający popularnego exploita w google translate poprzez bibliotekę `googletrans` do pythona (`pip3 install googletrans`). Przetłumaczone teksty są zapisywane do osobnych plików.
@ -73,9 +73,22 @@ Mimo wielu nazw w obu tekstach, są one klasyfikowane na dwie różne klasy. Dod
Ostatecznie wyniki
```
```sh
$python3 stats.py
Precision: 0.9636363636363636
Recall: 1.0
f1: 0.9814814814814815
```
```
Żeby samemu wszsytko włączyć:
```sh
$python3 vowpalize.py
$python3 prepareTestFiles.py
$vw --binary vowpal.txt --passes 5 -c -k -f model.model --loss_function logistic -b 24 --nn 20
$vw -t -i model.model -p pred.pred test.txt
$python3 stats.py
```
Jest zbiór test i dev. Co ciekawe, na test wychodzą lepsze wyniki niż na dev :joy: