diff --git a/dev-0/out.tsv b/dev-0/out.tsv new file mode 100644 index 0000000..a2df3d8 --- /dev/null +++ b/dev-0/out.tsv @@ -0,0 +1,87 @@ +6 +5 +7 +8 +13 +10 +15 +14 +10 +7 +14 +10 +5 +19 +0 +0 +0 +13 +3 +19 +2 +12 +16 +2 +14 +12 +1 +16 +11 +5 +15 +15 +9 +18 +0 +4 +5 +6 +1 +8 +10 +17 +4 +8 +6 +3 +4 +5 +9 +9 +14 +7 +15 +12 +17 +2 +5 +5 +15 +18 +4 +5 +15 +13 +10 +18 +15 +6 +7 +4 +13 +3 +6 +15 +5 +14 +14 +17 +8 +19 +7 +14 +7 +19 +15 +18 +19 diff --git a/geval b/geval new file mode 100755 index 0000000..b68b316 Binary files /dev/null and b/geval differ diff --git a/solution.py b/solution.py new file mode 100644 index 0000000..206d997 --- /dev/null +++ b/solution.py @@ -0,0 +1,41 @@ +from sklearn.feature_extraction.text import TfidfVectorizer +import numpy as np +import sklearn.metrics +from sklearn.cluster import KMeans + +# Lista z https://github.com/bieli/stopwords/blob/master/polish.stopwords.txt +def remove_stop_words(document, stopwords): + return " ".join([word for word in document.split() if word not in stopwords]) + +def write_predictions_to_file(predictions, file): + with open(file, "w") as out_file: + for prediction in predictions: + out_file.write(str(prediction) + '\n') + +def load_stop_words(): + with open('stopwords.txt') as stopwords_file: + stopwords = [] + for stopword in stopwords_file.readlines(): + # Remove whitespaces from words, to remove all stop words + stopwords.append(stopword.strip()) + return stopwords + +def load_tsv_file(file): + stopwords = load_stop_words() + with open(file) as in_file: + documents = [] + for document in in_file.readlines(): + documents.append(remove_stop_words(document, stopwords)) + return documents + +def prepare_prediction(catalog): + documents = load_tsv_file(catalog + "/in.tsv") + document_vectors = TfidfVectorizer().fit_transform(documents) + + # Z n_clusters w okolicy 20 uzyskiwałem wyniki pokroju 0.85 (według Geval). Jednakże, z n_clusters 50 wyniki było + # przy każdym uruchomieniu zbliżone do siebie. Przy n = 20 wachają się od 0.7 do 0.85 + predictions = KMeans(n_clusters=20, max_iter=1000).fit_predict(document_vectors) + write_predictions_to_file(predictions, catalog + "/out.tsv") + +prepare_prediction("dev-0") +prepare_prediction("test-A") diff --git a/stopwords.txt b/stopwords.txt new file mode 100644 index 0000000..eee0b22 --- /dev/null +++ b/stopwords.txt @@ -0,0 +1,350 @@ +a +aby +ach +acz +aczkolwiek +aj +albo +ale +alez +ależ +ani +az +aż +bardziej +bardzo +beda +bedzie +bez +deda +będą +bede +będę +będzie +bo +bowiem +by +byc +być +byl +byla +byli +bylo +byly +był +była +było +były +bynajmniej +cala +cali +caly +cała +cały +ci +cie +ciebie +cię +co +cokolwiek +cos +coś +czasami +czasem +czemu +czy +czyli +daleko +dla +dlaczego +dlatego +do +dobrze +dokad +dokąd +dosc +dość +duzo +dużo +dwa +dwaj +dwie +dwoje +dzis +dzisiaj +dziś +gdy +gdyby +gdyz +gdyż +gdzie +gdziekolwiek +gdzies +gdzieś +go +i +ich +ile +im +inna +inne +inny +innych +iz +iż +ja +jak +jakas +jakaś +jakby +jaki +jakichs +jakichś +jakie +jakis +jakiś +jakiz +jakiż +jakkolwiek +jako +jakos +jakoś +ją +je +jeden +jedna +jednak +jednakze +jednakże +jedno +jego +jej +jemu +jesli +jest +jestem +jeszcze +jeśli +jezeli +jeżeli +juz +już +kazdy +każdy +kiedy +kilka +kims +kimś +kto +ktokolwiek +ktora +ktore +ktorego +ktorej +ktory +ktorych +ktorym +ktorzy +ktos +ktoś +która +które +którego +której +który +których +którym +którzy +ku +lat +lecz +lub +ma +mają +mało +mam +mi +miedzy +między +mimo +mna +mną +mnie +moga +mogą +moi +moim +moj +moja +moje +moze +mozliwe +mozna +może +możliwe +można +mój +mu +musi +my +na +nad +nam +nami +nas +nasi +nasz +nasza +nasze +naszego +naszych +natomiast +natychmiast +nawet +nia +nią +nic +nich +nie +niech +niego +niej +niemu +nigdy +nim +nimi +niz +niż +no +o +obok +od +około +on +ona +one +oni +ono +oraz +oto +owszem +pan +pana +pani +po +pod +podczas +pomimo +ponad +poniewaz +ponieważ +powinien +powinna +powinni +powinno +poza +prawie +przeciez +przecież +przed +przede +przedtem +przez +przy +roku +rowniez +również +sam +sama +są +sie +się +skad +skąd +soba +sobą +sobie +sposob +sposób +swoje +ta +tak +taka +taki +takie +takze +także +tam +te +tego +tej +ten +teraz +też +to +toba +tobą +tobie +totez +toteż +totobą +trzeba +tu +tutaj +twoi +twoim +twoj +twoja +twoje +twój +twym +ty +tych +tylko +tym +u +w +wam +wami +was +wasz +wasza +wasze +we +według +wiele +wielu +więc +więcej +wlasnie +właśnie +wszyscy +wszystkich +wszystkie +wszystkim +wszystko +wtedy +wy +z +za +zaden +zadna +zadne +zadnych +zapewne +zawsze +ze +zeby +zeznowu +zł +znow +znowu +znów +zostal +został +żaden +żadna +żadne +żadnych +że +żeby \ No newline at end of file diff --git a/test-A/out.tsv b/test-A/out.tsv new file mode 100644 index 0000000..0bced99 --- /dev/null +++ b/test-A/out.tsv @@ -0,0 +1,691 @@ +7 +10 +5 +15 +4 +12 +7 +4 +3 +18 +2 +18 +1 +2 +2 +4 +8 +15 +8 +4 +7 +4 +12 +4 +19 +3 +15 +8 +4 +10 +4 +1 +12 +5 +14 +4 +18 +15 +5 +1 +18 +10 +8 +1 +18 +2 +6 +0 +5 +4 +5 +13 +15 +16 +10 +17 +3 +5 +19 +4 +4 +8 +18 +2 +11 +5 +16 +12 +6 +10 +10 +14 +8 +4 +9 +17 +11 +13 +16 +3 +3 +14 +13 +15 +15 +18 +6 +15 +3 +6 +16 +10 +14 +2 +8 +8 +7 +16 +10 +2 +16 +1 +8 +13 +16 +6 +3 +15 +13 +3 +1 +5 +11 +5 +9 +2 +8 +3 +3 +15 +0 +4 +4 +6 +3 +5 +8 +17 +1 +13 +15 +14 +17 +17 +17 +14 +1 +3 +13 +19 +7 +15 +0 +1 +12 +15 +10 +1 +15 +17 +8 +8 +13 +11 +16 +18 +8 +4 +4 +4 +16 +6 +6 +0 +10 +6 +2 +16 +14 +14 +3 +6 +9 +15 +8 +13 +3 +2 +6 +2 +14 +0 +15 +10 +3 +4 +4 +2 +4 +10 +7 +3 +18 +6 +8 +3 +6 +5 +15 +7 +3 +9 +7 +2 +8 +8 +5 +0 +18 +7 +4 +4 +2 +17 +4 +18 +10 +12 +2 +11 +16 +17 +10 +2 +4 +14 +16 +13 +13 +18 +6 +4 +17 +10 +12 +19 +14 +16 +9 +15 +7 +11 +5 +18 +7 +10 +10 +10 +2 +0 +15 +2 +14 +1 +9 +4 +1 +3 +16 +0 +17 +1 +8 +3 +1 +4 +15 +13 +9 +18 +18 +15 +10 +17 +12 +8 +2 +1 +0 +4 +10 +10 +17 +3 +1 +19 +3 +5 +8 +12 +13 +6 +13 +3 +18 +10 +8 +19 +8 +18 +2 +13 +2 +10 +17 +2 +15 +10 +3 +18 +3 +10 +4 +4 +4 +3 +10 +4 +19 +2 +18 +13 +4 +3 +16 +6 +6 +9 +0 +2 +4 +13 +17 +17 +6 +5 +6 +4 +2 +15 +4 +15 +1 +2 +16 +0 +3 +18 +6 +0 +3 +13 +10 +4 +8 +13 +10 +3 +7 +8 +16 +2 +3 +3 +10 +3 +5 +1 +0 +16 +8 +18 +18 +8 +4 +4 +17 +8 +16 +10 +3 +2 +18 +2 +7 +1 +19 +18 +7 +12 +2 +5 +13 +5 +8 +3 +7 +4 +8 +6 +2 +15 +17 +4 +16 +4 +7 +18 +6 +1 +6 +19 +10 +6 +17 +10 +0 +10 +15 +10 +3 +3 +4 +12 +16 +9 +5 +4 +18 +10 +19 +16 +0 +10 +14 +2 +6 +4 +16 +12 +15 +5 +6 +4 +8 +3 +4 +14 +4 +2 +9 +3 +10 +18 +0 +17 +18 +0 +6 +10 +9 +6 +6 +2 +1 +8 +5 +6 +4 +18 +16 +16 +18 +7 +3 +2 +9 +13 +4 +2 +16 +4 +18 +3 +4 +18 +2 +3 +9 +10 +4 +5 +0 +6 +1 +13 +1 +1 +4 +0 +16 +5 +3 +17 +15 +4 +3 +3 +1 +8 +12 +16 +12 +3 +9 +18 +2 +8 +10 +0 +1 +3 +16 +7 +2 +4 +10 +4 +15 +1 +14 +13 +6 +5 +12 +1 +10 +6 +10 +6 +5 +19 +4 +7 +4 +12 +2 +1 +4 +1 +4 +16 +9 +9 +14 +14 +7 +7 +14 +5 +12 +5 +4 +4 +3 +3 +17 +9 +13 +14 +5 +5 +10 +3 +6 +18 +1 +4 +18 +13 +17 +2 +13 +12 +9 +13 +14 +17 +15 +10 +3 +4 +11 +12 +1 +3 +7 +17 +10 +4 +5 +11 +10 +12 +17 +9 +3 +9 +0 +2 +18 +1 +7 +13 +18 +17 +0 +0 +3 +3 +18 +4 +10 +5 +2 +13 +2 +3 +8 +2 +18 +0 +8 +4 +18 +7 +4 +16 +2 +10 +11 +7 +4 +17 +18 +16 +13 +16 +9 +4 +10 +2 +14 +18 +11 +17 +8 +9 +18 +4 +4 +12 +13 +3 +15 +1 +4 +4 +3 +13 +1 +8 +4 +16 +7 +4 +15 +13 +3 +12 +13 +14 +12 +16 +1 +5 +13 +4 +7 +6 +16