Add solution

This commit is contained in:
Aleksander Piotrowski 2021-04-17 14:34:31 +02:00
parent e4adfb04dc
commit ad0df0c387
5 changed files with 1169 additions and 0 deletions

87
dev-0/out.tsv Normal file
View File

@ -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
1 6
2 5
3 7
4 8
5 13
6 10
7 15
8 14
9 10
10 7
11 14
12 10
13 5
14 19
15 0
16 0
17 0
18 13
19 3
20 19
21 2
22 12
23 16
24 2
25 14
26 12
27 1
28 16
29 11
30 5
31 15
32 15
33 9
34 18
35 0
36 4
37 5
38 6
39 1
40 8
41 10
42 17
43 4
44 8
45 6
46 3
47 4
48 5
49 9
50 9
51 14
52 7
53 15
54 12
55 17
56 2
57 5
58 5
59 15
60 18
61 4
62 5
63 15
64 13
65 10
66 18
67 15
68 6
69 7
70 4
71 13
72 3
73 6
74 15
75 5
76 14
77 14
78 17
79 8
80 19
81 7
82 14
83 7
84 19
85 15
86 18
87 19

BIN
geval Executable file

Binary file not shown.

41
solution.py Normal file
View File

@ -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")

350
stopwords.txt Normal file
View File

@ -0,0 +1,350 @@
a
aby
ach
acz
aczkolwiek
aj
albo
ale
alez
ależ
ani
az
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
ja
jak
jakas
jakaś
jakby
jaki
jakichs
jakichś
jakie
jakis
jakiś
jakiz
jakiż
jakkolwiek
jako
jakos
jakoś
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
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
znow
znowu
znów
zostal
został
żaden
żadna
żadne
żadnych
że
żeby

691
test-A/out.tsv Normal file
View File

@ -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
1 7
2 10
3 5
4 15
5 4
6 12
7 7
8 4
9 3
10 18
11 2
12 18
13 1
14 2
15 2
16 4
17 8
18 15
19 8
20 4
21 7
22 4
23 12
24 4
25 19
26 3
27 15
28 8
29 4
30 10
31 4
32 1
33 12
34 5
35 14
36 4
37 18
38 15
39 5
40 1
41 18
42 10
43 8
44 1
45 18
46 2
47 6
48 0
49 5
50 4
51 5
52 13
53 15
54 16
55 10
56 17
57 3
58 5
59 19
60 4
61 4
62 8
63 18
64 2
65 11
66 5
67 16
68 12
69 6
70 10
71 10
72 14
73 8
74 4
75 9
76 17
77 11
78 13
79 16
80 3
81 3
82 14
83 13
84 15
85 15
86 18
87 6
88 15
89 3
90 6
91 16
92 10
93 14
94 2
95 8
96 8
97 7
98 16
99 10
100 2
101 16
102 1
103 8
104 13
105 16
106 6
107 3
108 15
109 13
110 3
111 1
112 5
113 11
114 5
115 9
116 2
117 8
118 3
119 3
120 15
121 0
122 4
123 4
124 6
125 3
126 5
127 8
128 17
129 1
130 13
131 15
132 14
133 17
134 17
135 17
136 14
137 1
138 3
139 13
140 19
141 7
142 15
143 0
144 1
145 12
146 15
147 10
148 1
149 15
150 17
151 8
152 8
153 13
154 11
155 16
156 18
157 8
158 4
159 4
160 4
161 16
162 6
163 6
164 0
165 10
166 6
167 2
168 16
169 14
170 14
171 3
172 6
173 9
174 15
175 8
176 13
177 3
178 2
179 6
180 2
181 14
182 0
183 15
184 10
185 3
186 4
187 4
188 2
189 4
190 10
191 7
192 3
193 18
194 6
195 8
196 3
197 6
198 5
199 15
200 7
201 3
202 9
203 7
204 2
205 8
206 8
207 5
208 0
209 18
210 7
211 4
212 4
213 2
214 17
215 4
216 18
217 10
218 12
219 2
220 11
221 16
222 17
223 10
224 2
225 4
226 14
227 16
228 13
229 13
230 18
231 6
232 4
233 17
234 10
235 12
236 19
237 14
238 16
239 9
240 15
241 7
242 11
243 5
244 18
245 7
246 10
247 10
248 10
249 2
250 0
251 15
252 2
253 14
254 1
255 9
256 4
257 1
258 3
259 16
260 0
261 17
262 1
263 8
264 3
265 1
266 4
267 15
268 13
269 9
270 18
271 18
272 15
273 10
274 17
275 12
276 8
277 2
278 1
279 0
280 4
281 10
282 10
283 17
284 3
285 1
286 19
287 3
288 5
289 8
290 12
291 13
292 6
293 13
294 3
295 18
296 10
297 8
298 19
299 8
300 18
301 2
302 13
303 2
304 10
305 17
306 2
307 15
308 10
309 3
310 18
311 3
312 10
313 4
314 4
315 4
316 3
317 10
318 4
319 19
320 2
321 18
322 13
323 4
324 3
325 16
326 6
327 6
328 9
329 0
330 2
331 4
332 13
333 17
334 17
335 6
336 5
337 6
338 4
339 2
340 15
341 4
342 15
343 1
344 2
345 16
346 0
347 3
348 18
349 6
350 0
351 3
352 13
353 10
354 4
355 8
356 13
357 10
358 3
359 7
360 8
361 16
362 2
363 3
364 3
365 10
366 3
367 5
368 1
369 0
370 16
371 8
372 18
373 18
374 8
375 4
376 4
377 17
378 8
379 16
380 10
381 3
382 2
383 18
384 2
385 7
386 1
387 19
388 18
389 7
390 12
391 2
392 5
393 13
394 5
395 8
396 3
397 7
398 4
399 8
400 6
401 2
402 15
403 17
404 4
405 16
406 4
407 7
408 18
409 6
410 1
411 6
412 19
413 10
414 6
415 17
416 10
417 0
418 10
419 15
420 10
421 3
422 3
423 4
424 12
425 16
426 9
427 5
428 4
429 18
430 10
431 19
432 16
433 0
434 10
435 14
436 2
437 6
438 4
439 16
440 12
441 15
442 5
443 6
444 4
445 8
446 3
447 4
448 14
449 4
450 2
451 9
452 3
453 10
454 18
455 0
456 17
457 18
458 0
459 6
460 10
461 9
462 6
463 6
464 2
465 1
466 8
467 5
468 6
469 4
470 18
471 16
472 16
473 18
474 7
475 3
476 2
477 9
478 13
479 4
480 2
481 16
482 4
483 18
484 3
485 4
486 18
487 2
488 3
489 9
490 10
491 4
492 5
493 0
494 6
495 1
496 13
497 1
498 1
499 4
500 0
501 16
502 5
503 3
504 17
505 15
506 4
507 3
508 3
509 1
510 8
511 12
512 16
513 12
514 3
515 9
516 18
517 2
518 8
519 10
520 0
521 1
522 3
523 16
524 7
525 2
526 4
527 10
528 4
529 15
530 1
531 14
532 13
533 6
534 5
535 12
536 1
537 10
538 6
539 10
540 6
541 5
542 19
543 4
544 7
545 4
546 12
547 2
548 1
549 4
550 1
551 4
552 16
553 9
554 9
555 14
556 14
557 7
558 7
559 14
560 5
561 12
562 5
563 4
564 4
565 3
566 3
567 17
568 9
569 13
570 14
571 5
572 5
573 10
574 3
575 6
576 18
577 1
578 4
579 18
580 13
581 17
582 2
583 13
584 12
585 9
586 13
587 14
588 17
589 15
590 10
591 3
592 4
593 11
594 12
595 1
596 3
597 7
598 17
599 10
600 4
601 5
602 11
603 10
604 12
605 17
606 9
607 3
608 9
609 0
610 2
611 18
612 1
613 7
614 13
615 18
616 17
617 0
618 0
619 3
620 3
621 18
622 4
623 10
624 5
625 2
626 13
627 2
628 3
629 8
630 2
631 18
632 0
633 8
634 4
635 18
636 7
637 4
638 16
639 2
640 10
641 11
642 7
643 4
644 17
645 18
646 16
647 13
648 16
649 9
650 4
651 10
652 2
653 14
654 18
655 11
656 17
657 8
658 9
659 18
660 4
661 4
662 12
663 13
664 3
665 15
666 1
667 4
668 4
669 3
670 13
671 1
672 8
673 4
674 16
675 7
676 4
677 15
678 13
679 3
680 12
681 13
682 14
683 12
684 16
685 1
686 5
687 13
688 4
689 7
690 6
691 16