This commit is contained in:
Jakub 2021-07-03 22:26:56 +02:00
parent 3ff980254a
commit 10c7156f46
6 changed files with 9787 additions and 9805 deletions

View File

@ -1,471 +1,471 @@
od pokoju
dawna )
;
lecz
nie
?
.
po
do
niego
i i
jeszcze jeszcze
,
czy
na
niej
;
co
on
od
.
na
co
do
głowy
na
jego
i
do
panny
do
niego
:
po
chwili
o
co
?
) )
:
nie
było
mnie
:
nie
ma
do
czasu
i
nie
można
do
głowy
do
głowy
i
ja
?
. .
na panna
drugi florentyna
mnie do
nie głowy
był
o
,
jak
by
od
niej
i
o
,
jak
nie
można
od
niej
,
nie
ma
pan
nie
było
i
ja
,
co
on
jest
na
jego
;
ale
co
do do
domu domu
? !
)
?
a a
jeżeli
ja
go
o
do
niej
;
ale
nie
mogłem
i
na
co
?
na
niego
nie
ma
.
potem potem
.
ale
co
, ,
i który
ja
go
do
mnie
na na
prawo
.
pan
,
o
jego jego
na na
nim dzień
? ;
do do
panny panny
;
ale
,
co
,
ale
co
mi
o
pani
nie
był
i
nie
można
;
bo
pan
i
od
mnie
:
potem
nie
było
do do
nich panny
: ?
od ,
mnie ażeby
; nie
o ma
nim mu
;
co
, ,
a a
potem on
od
, ,
co ażeby
mnie nie
jest
nie
.
ale
ja
.
pan
ignacy
?
po
chwili
go
?
na
jego
dzień
?
)
i
nie
.
ale
może
do
domu
, ,
nie nie
jestem jestem
na i
prawo
od
.
a
co co
ja do
? niego
)
i
nie
będzie
do
głowy
;
i i
ja ja
go ,
od na
. drugi
i
do
mnie
,
który
do
niej
nie
może
być
do
końca
?
)
,
ażeby
nie
było
do
pani
krzeszowskiej
)
?
a
może
nie
mam
na
myśl
;
ale ale
ja
,
który
?
nie
mam
nie
ma
do
niego
i
na
niego
;
nawet
i
do
mego
do
paryża
i i
nawet nawet
od i
nie
,
ale
co
,
co
do
domu
;
może
być
do do
paryża paryża
: :
po po
obiedzie nie
; ?
czy i
może
.
ja ja
, .
ale panna
, .
ale a
co może
, ?
)
na
myśl
nie
było
o
?
czy
na
myśl
:
a
może
?
i i
o o
co co
do
niego
i
jeszcze
.
nie
jestem
na
niego
nie
do
nas
od
niego
nie
ma
;
ale
co
,
który
,
który
mi
, ,
a a
jeżeli
ja
?
o
mnie
.
pan pan
?
nie nie
chce będzie
na
mnie mnie
:
na
drugim
od
powietrza
do
głowy
;
potem
,
nie
mogłem
nie
był
od
niego
nie
,
ani
nie
mam
na
nich
i
nie
jest
o o
nim
;
ale
po
,
który
?
do
paryża
?
a
potem
!
po
.
co
nie
jestem
.
i
jeszcze
do
mnie
?
i
na
myśl
do
końca
?
i
na
myśl
:
po
, ,
jak jak
nie nie
było jestem
i
nie nie
można można
?
a
nie
ma
na
mnie
na
nich
?
i i
o o
ile .
panna
na
co
,
nie nie
było ma
; być
a )
on
na
nich
.
na
co
.
po
francusku
:
ale
co
on
? ?
nie nie
był może
, do
czasu
:
nie nie
jest jest
i bardzo
po
obiedzie
o
, ,
co ani
na
niej
od
czasu
,
i
ja
o
nim
, ,
a a
on
na
kilka
nie nie
będzie ma
do być
niej
i i
ja
?
nie
było
na
nich
,
który
o o
mnie niej
na ;
mnie
,
na
co
od
do do
panny panny
do ;
nich na
. mnie
a
nie nie
ma mam
od na
mnie mnie
, ,
i
nie
na
nią
.
panna
na
kilka
dni
na
myśl
i
o o
ile :
do
nich
nie nie
o
do do
niego głowy
; :
a a
nie może
było na
i nią
nie :
będzie na
i mnie
pan .
od
dawna
?
po po
chwili chwili
!
nawet
mnie
.
i
jeszcze
mi
nie
na
nim
,
który
o
co
do
niej
i
jeszcze
od
do
nich
.
i
o
nim
:
i
po
do
domu
do
niej
od
.
ale
i
ja
mu mu
,
jak
on
nie
może
być
)
do do
niego niego
na
nim
od
.
ja
i i
na
mnie
:
potem
,
ażeby
o o
jego
, ,
a ale
nawet może
o ?
nim
i
nie nie
ma ma
od ?
. ale
pan ja
do
nich
i
na
jego
jego
nie
było
do
nas
, ,
co co
i
co
nie
będzie
,
co
on
,
bo
jest
nie
,
co
jest
o
,
i
nawet
?
nie
,
i
co
,
nie
mógł
o
nich
nie
,
nie
ma
i
nie
mam
,
ale
o
nim
nie
będzie
.
a
co
nie
będzie
do
niej
.
ale
nie
może
do
nas
:
po
angielsku
?
po
.
po
nie
mam
.
po
nie
mam
nic
:
co
.
po
co
.
na
co
nie
? ?
) )
nie
,
który
?
do
domu
na
co
dzień
nie
było
o o
co
dzień
,
który
na
nich
.
do
niego
)
?
do
domu
na
kilka
lat
na
niego
)
;
nie
może
być
od
innych
.
pan
jest
.
panna
na
chwilę
na
co
na
niego
;
na
co
,
ażeby
i
na
chwilę
;
ale
może
być
?

1 od pokoju
2 dawna )
3 ;
4 lecz
5 nie
6 ?
7 .
8 po
9 do
10 niego
11 i i
12 jeszcze jeszcze
,
czy
na
niej
;
co
on
od
.
na
co
do
głowy
na
jego
i
do
panny
do
niego
:
po
chwili
o
co
?
13 ) )
:
nie
było
mnie
:
nie
ma
do
czasu
i
nie
można
do
głowy
do
głowy
i
ja
?
14 . .
15 na panna
16 drugi florentyna
17 mnie do
18 nie głowy
był
o
,
jak
by
od
niej
i
o
,
jak
nie
można
od
niej
,
nie
ma
pan
nie
było
i
ja
,
co
on
jest
na
jego
;
ale
co
19 do do
20 domu domu
21 ? !
)
?
22 a a
jeżeli
ja
go
o
do
niej
;
ale
nie
mogłem
i
na
co
?
na
niego
nie
ma
.
23 potem potem
.
ale
co
24 , ,
25 i który
ja
go
do
mnie
26 na na
prawo
.
pan
,
o
27 jego jego
28 na na
29 nim dzień
30 ? ;
31 do do
32 panny panny
;
ale
,
co
,
ale
co
mi
o
pani
nie
był
i
nie
można
;
bo
pan
i
od
mnie
:
potem
nie
było
33 do do
34 nich panny
35 : ?
36 od ,
37 mnie ażeby
38 ; nie
39 o ma
40 nim mu
;
co
41 , ,
42 a a
43 potem on
od
44 , ,
45 co ażeby
46 mnie nie
47 jest
48 nie
49 .
50 ale
51 ja
52 .
53 pan
54 ignacy
55 ?
56 po
57 chwili
58 go
59 ?
60 na
61 jego
62 dzień
63 ?
64 )
65 i
66 nie
67 .
68 ale
69 może
70 do
71 domu
72 , ,
73 nie nie
74 jestem jestem
75 na i
prawo
od
.
a
76 co co
77 ja do
78 ? niego
79 )
80 i
81 nie
82 będzie
83 do
84 głowy
85 ;
86 i i
87 ja ja
88 go ,
89 od na
90 . drugi
91 i
92 do
93 mnie
94 ,
95 który
96 do
97 niej
98 nie
99 może
100 być
101 do
102 końca
103 ?
104 )
105 ,
106 ażeby
107 nie
108 było
109 do
110 pani
111 krzeszowskiej
112 )
113 ?
114 a
115 może
116 nie
117 mam
118 na
119 myśl
120 ;
121 ale ale
122 ja
123 ,
124 który
125 ?
126 nie
127 mam
128 nie
129 ma
130 do
131 niego
132 i
133 na
134 niego
135 ;
136 nawet
137 i
138 do
139 mego
140 do
141 paryża
142 i i
143 nawet nawet
144 od i
145 nie
146 ,
147 ale
148 co
149 ,
150 co
151 do
152 domu
153 ;
154 może
155 być
156 do do
157 paryża paryża
158 : :
159 po po
160 obiedzie nie
161 ; ?
162 czy i
może
.
163 ja ja
164 , .
165 ale panna
166 , .
167 ale a
168 co może
169 , ?
170 )
171 na
172 myśl
173 nie
174 było
175 o
176 ?
177 czy
178 na
179 myśl
180 :
181 a
182 może
183 ?
184 i i
185 o o
186 co co
do
niego
i
jeszcze
.
nie
jestem
na
niego
nie
do
nas
od
niego
nie
ma
;
ale
co
,
który
,
który
mi
187 , ,
188 a a
jeżeli
ja
?
o
mnie
.
189 pan pan
?
190 nie nie
191 chce będzie
na
192 mnie mnie
:
na
drugim
od
powietrza
do
głowy
;
potem
,
nie
mogłem
nie
był
od
niego
nie
,
ani
nie
mam
na
nich
i
nie
jest
193 o o
194 nim
195 ;
196 ale
197 po
198 ,
199 który
200 ?
201 do
202 paryża
203 ?
204 a
205 potem
206 !
207 po
208 .
209 co
210 nie
211 jestem
212 .
213 i
214 jeszcze
215 do
216 mnie
217 ?
218 i
219 na
220 myśl
221 do
222 końca
223 ?
224 i
225 na
226 myśl
227 :
228 po
229 , ,
230 jak jak
231 nie nie
232 było jestem
i
233 nie nie
234 można można
?
a
nie
ma
na
mnie
na
nich
?
235 i i
236 o o
237 ile .
238 panna
239 na
240 co
241 ,
242 nie nie
243 było ma
244 ; być
245 a )
on
na
nich
.
na
co
.
po
francusku
:
ale
co
on
246 ? ?
247 nie nie
248 był może
249 , do
250 czasu
251 :
252 nie nie
253 jest jest
254 i bardzo
po
obiedzie
o
255 , ,
256 co ani
na
niej
od
czasu
,
i
ja
o
nim
257 , ,
258 a a
259 on
260 na
261 kilka
262 nie nie
263 będzie ma
264 do być
niej
265 i i
ja
?
nie
było
na
nich
,
który
266 o o
267 mnie niej
268 na ;
mnie
,
na
co
od
269 do do
270 panny panny
271 do ;
272 nich na
273 . mnie
a
274 nie nie
275 ma mam
276 od na
277 mnie mnie
278 , ,
279 i
280 nie
281 na
282 nią
283 .
284 panna
285 na
286 kilka
287 dni
288 na
289 myśl
290 i
291 o o
292 ile :
do
nich
293 nie nie
294 o
295 do do
296 niego głowy
297 ; :
298 a a
299 nie może
300 było na
301 i nią
302 nie :
303 będzie na
304 i mnie
305 pan .
od
dawna
?
306 po po
307 chwili chwili
!
nawet
mnie
.
i
jeszcze
mi
nie
na
nim
,
który
o
co
do
niej
i
jeszcze
od
do
nich
.
i
o
nim
:
i
po
do
domu
do
niej
od
.
ale
i
ja
308 mu mu
309 ,
310 jak
311 on
312 nie
313 może
314 być
315 )
316 do do
317 niego niego
na
nim
od
.
ja
318 i i
na
mnie
:
potem
,
ażeby
319 o o
320 jego
321 , ,
322 a ale
323 nawet może
324 o ?
nim
i
325 nie nie
326 ma ma
327 od ?
328 . ale
329 pan ja
do
nich
i
na
jego
jego
nie
było
do
nas
330 , ,
331 co co
332 i
333 co
334 nie
335 będzie
336 ,
337 co
338 on
339 ,
340 bo
341 jest
342 nie
343 ,
344 co
345 jest
346 o
347 ,
348 i
349 nawet
350 ?
351 nie
352 ,
353 i
354 co
355 ,
356 nie
357 mógł
358 o
359 nich
360 nie
361 ,
362 nie
363 ma
364 i
365 nie
366 mam
367 ,
368 ale
369 o
370 nim
371 nie
372 będzie
373 .
374 a
375 co
376 nie
377 będzie
378 do
379 niej
380 .
381 ale
382 nie
383 może
384 do
385 nas
386 :
387 po
388 angielsku
389 ?
390 po
391 .
392 po
393 nie
394 mam
395 .
396 po
397 nie
398 mam
399 nic
400 :
401 co
402 .
403 po
404 co
405 .
406 na
407 co
408 nie
409 ? ?
410 ) )
411 nie
412 ,
413 który
414 ?
415 do
416 domu
417 na
418 co
419 dzień
420 nie
421 było
422 o o
423 co
424 dzień
425 ,
426 który
427 na
428 nich
429 .
430 do
431 niego
432 )
433 ?
434 do
435 domu
436 na
437 kilka
438 lat
439 na
440 niego
441 )
442 ;
443 nie
444 może
445 być
446 od
447 innych
448 .
449 pan
450 jest
451 .
452 panna
453 na
454 chwilę
455 na
456 co
457 na
458 niego
459 ;
460 na
461 co
462 ,
463 ażeby
464 i
465 na
466 chwilę
467 ;
468 ale
469 może
470 być
471 ?

BIN
geval Normal file

Binary file not shown.

172
main.py
View File

@ -1,38 +1,41 @@
import numpy as np
import torch
from tqdm.notebook import tqdm
from sklearn.model_selection import train_test_split
import nltk import nltk
import torch
import numpy as np
from tqdm.notebook import tqdm
from nltk.tokenize import word_tokenize from nltk.tokenize import word_tokenize
from sklearn.model_selection import train_test_split
nltk.download('punkt') nltk.download('punkt')
NGRAMS = 5
BATCH_SIZE = 128
EPOCHS = 15
device = torch.device("cuda" if torch.cuda.is_available() else "cpu") device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
with open("train/train.tsv", "r") as lalka_path: with open("train/train.tsv", "r", encoding="utf8") as lalka_path:
lines = lalka_path.readlines() lines = lalka_path.readlines()
train, test = train_test_split(lines, test_size = 0.2)
with open("train/train_train.tsv", "w") as out_train_file: train, test = train_test_split(lines, test_size=0.2)
with open("train/train_train.tsv", "w", encoding="utf8") as out_train_file:
for i in train: for i in train:
out_train_file.write(i) out_train_file.write(i)
with open("train/train_test.tsv", "w") as out_test_file: with open("train/train_test.tsv", "w", encoding="utf8") as out_test_file:
for i in test: for i in test:
out_test_file.write(i) out_test_file.write(i)
lalka_path_train= 'train/train_train.tsv' lalka_path_train = 'train/train_train.tsv'
lalka_path_valid= 'train/train_test.tsv' lalka_path_valid = 'train/train_test.tsv'
corpora_train = open(lalka_path_train).read()
corpora_train = open(lalka_path_train, encoding="utf8").read()
corpora_train_tokenized = list(word_tokenize(corpora_train)) corpora_train_tokenized = list(word_tokenize(corpora_train))
corpora_train_tokenized = [token.lower() for token in corpora_train_tokenized] corpora_train_tokenized = [token.lower() for token in corpora_train_tokenized]
vocab_itos = sorted(set(corpora_train_tokenized)) vocab_itos = sorted(set(corpora_train_tokenized))
vocab_itos = vocab_itos[:15005] vocab_itos = vocab_itos[:15005]
vocab_itos[15001] = "<UNK>" vocab_itos[15001] = "<UNK>"
vocab_itos[15002] = "<BOS>" vocab_itos[15002] = "<BOS>"
vocab_itos[15003] = "<EOS>" vocab_itos[15003] = "<EOS>"
@ -43,118 +46,106 @@ vocab_stoi = dict()
for i, token in enumerate(vocab_itos): for i, token in enumerate(vocab_itos):
vocab_stoi[token] = i vocab_stoi[token] = i
NGRAMS = 5
def get_token_id(dataset): def get_token_id(dataset):
token_ids = [vocab_stoi['<PAD>']] * (NGRAMS-1) + [vocab_stoi['<BOS>']] token_ids = [vocab_stoi['<PAD>']] * (NGRAMS - 1) + [vocab_stoi['<BOS>']]
for token in dataset: for token in dataset:
try: try:
token_ids.append(vocab_stoi[token]) token_ids.append(vocab_stoi[token])
except KeyError: except KeyError:
token_ids.append(vocab_stoi['<UNK>']) token_ids.append(vocab_stoi['<UNK>'])
token_ids.append(vocab_stoi['<EOS>']) token_ids.append(vocab_stoi['<EOS>'])
return token_ids return token_ids
train_ids = get_token_id(corpora_train_tokenized)
def get_samples(dataset): def get_samples(dataset):
samples = [] samples = []
for i in range(len(dataset)-NGRAMS): for i in range(len(dataset) - NGRAMS):
samples.append(dataset[i:i+NGRAMS]) samples.append(dataset[i:i + NGRAMS])
return samples return samples
train_ids = get_token_id(corpora_train_tokenized)
train_ids = get_samples(train_ids) train_ids = get_samples(train_ids)
train_ids = torch.tensor(train_ids, device = device) train_ids = torch.tensor(train_ids, device=device)
corpora_valid = open(lalka_path_valid).read() corpora_valid = open(lalka_path_valid, encoding="utf8").read()
corpora_valid_tokenized = list(word_tokenize(corpora_valid)) corpora_valid_tokenized = list(word_tokenize(corpora_valid))
corpora_valid_tokenized = [token.lower() for token in corpora_valid_tokenized] corpora_valid_tokenized = [token.lower() for token in corpora_valid_tokenized]
valid_ids = get_token_id(corpora_valid_tokenized) valid_ids = get_token_id(corpora_valid_tokenized)
valid_ids = torch.tensor(get_samples(valid_ids), dtype = torch.long, device = device) valid_ids = torch.tensor(get_samples(valid_ids), dtype=torch.long, device=device)
class GRU(torch.nn.Module): class GRU(torch.nn.Module):
def __init__(self): def __init__(self):
super(GRU, self).__init__() super(GRU, self).__init__()
self.emb = torch.nn.Embedding(len(vocab_itos),100) self.emb = torch.nn.Embedding(len(vocab_itos), 100)
self.rec = torch.nn.GRU(100, 256, 1, batch_first = True) self.rec = torch.nn.GRU(100, 256, 1, batch_first=True)
self.fc1 = torch.nn.Linear( 256 ,len(vocab_itos)) self.fc1 = torch.nn.Linear(256, len(vocab_itos))
#self.dropout = torch.nn.Dropout(0.5)
def forward(self, x): def forward(self, x):
emb = self.emb(x) emb = self.emb(x)
#emb = self.dropout(emb)
output, h_n = self.rec(emb) output, h_n = self.rec(emb)
hidden = h_n.squeeze(0) hidden = h_n.squeeze(0)
out = self.fc1(hidden) out = self.fc1(hidden)
#out = self.dropout(out)
return out return out
lm = GRU().to(device) lm = GRU().to(device)
criterion = torch.nn.CrossEntropyLoss() criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(lm.parameters(), lr=0.0001)
optimizer = torch.optim.Adam(lm.parameters(),lr=0.0001)
BATCH_SIZE = 128
EPOCHS = 15
def get_ppl(dataset_ids): def get_ppl(dataset_ids):
lm.eval() lm.eval()
batches = 0 batches = 0
loss_sum = 0 loss_sum = 0
acc_score = 0
for i in range(0, len(dataset_ids) - BATCH_SIZE + 1, BATCH_SIZE): for i in range(0, len(dataset_ids) - BATCH_SIZE + 1, BATCH_SIZE):
X = dataset_ids[i : i + BATCH_SIZE, :NGRAMS - 1] X = dataset_ids[i:i + BATCH_SIZE, :NGRAMS - 1]
Y = dataset_ids[i : i + BATCH_SIZE, NGRAMS - 1] Y = dataset_ids[i:i + BATCH_SIZE, NGRAMS - 1]
predictions = lm(X) predictions = lm(X)
loss = criterion(predictions, Y)
loss = criterion(predictions,Y)
loss_sum += loss.item() loss_sum += loss.item()
batches += 1 batches += 1
return np.exp(loss_sum / batches) return np.exp(loss_sum / batches)
history_ppl_train = [] history_ppl_train = []
history_ppl_valid = [] history_ppl_valid = []
for epoch in range(EPOCHS): for epoch in range(EPOCHS):
batches = 0 batches = 0
loss_sum = 0 loss_sum = 0
acc_score = 0
lm.train() lm.train()
total = len(train_ids) - BATCH_SIZE + 1
for i in range(0, total, BATCH_SIZE):
print('batches: ' + str(batches))
X = train_ids[i: i + BATCH_SIZE, :NGRAMS - 1]
Y = train_ids[i: i + BATCH_SIZE, NGRAMS - 1]
for i in tqdm(range(0, len(train_ids)-BATCH_SIZE + 1, BATCH_SIZE)):
X = train_ids[i : i + BATCH_SIZE, :NGRAMS - 1]
Y = train_ids[i : i + BATCH_SIZE, NGRAMS - 1]
predictions = lm(X) predictions = lm(X)
loss = criterion(predictions,Y) loss = criterion(predictions, Y)
optimizer.zero_grad() optimizer.zero_grad()
loss.backward() loss.backward()
optimizer.step() optimizer.step()
loss_sum += loss.item() loss_sum += loss.item()
batches += 1 batches += 1
ppl_train = get_ppl(train_ids) ppl_train = get_ppl(train_ids)
ppl_valid = get_ppl(valid_ids) ppl_valid = get_ppl(valid_ids)
history_ppl_train.append(ppl_train) history_ppl_train.append(ppl_train)
history_ppl_valid.append(ppl_valid) history_ppl_valid.append(ppl_valid)
print('epoch: ', epoch) print('epoch: ', epoch)
print('train ppl: ', ppl_train) print('train ppl: ', ppl_train)
print('valid ppl: ', ppl_valid) print('valid ppl: ', ppl_valid)
@ -164,7 +155,6 @@ tokenized = list(word_tokenize('Gości innych nie widział oprócz spółleśnik
tokenized = [token.lower() for token in tokenized] tokenized = [token.lower() for token in tokenized]
ids = [] ids = []
for word in tokenized: for word in tokenized:
if word in vocab_stoi: if word in vocab_stoi:
ids.append(vocab_stoi[word]) ids.append(vocab_stoi[word])
@ -173,10 +163,8 @@ for word in tokenized:
lm.eval() lm.eval()
ids = torch.tensor(ids, dtype = torch.long, device = device) ids = torch.tensor(ids, dtype=torch.long, device=device)
preds = lm(ids.unsqueeze(0))
preds= lm(ids.unsqueeze(0))
vocab_itos[torch.argmax(torch.softmax(preds, 1), 1).item()] vocab_itos[torch.argmax(torch.softmax(preds, 1), 1).item()]
tokenized = list(word_tokenize('Lalka')) tokenized = list(word_tokenize('Lalka'))
@ -189,54 +177,48 @@ for word in tokenized:
ids.append(vocab_stoi[word]) ids.append(vocab_stoi[word])
else: else:
ids.append(vocab_stoi['<UNK>']) ids.append(vocab_stoi['<UNK>'])
ids = torch.tensor([ids], dtype = torch.long, device = device)
ids = torch.tensor([ids], dtype=torch.long, device=device)
candidates_number = 10 candidates_number = 10
for i in range(30): for i in range(30):
preds= lm(ids) preds = lm(ids)
candidates = torch.topk(torch.softmax(preds, 1), candidates_number)[1][0].cpu().numpy()
candidates = torch.topk(torch.softmax(preds,1),candidates_number)[1][0].cpu().numpy()
candidate = 15001 candidate = 15001
while candidate > 15000: while candidate > 15000:
candidate = candidates[np.random.randint(candidates_number)] candidate = candidates[np.random.randint(candidates_number)]
print(vocab_itos[candidate])
ids = torch.cat((ids, torch.tensor([[candidate]], device = device)), 1)
with open("dev-0/in.tsv", "r") as dev_path: print(vocab_itos[candidate])
ids = torch.cat((ids, torch.tensor([[candidate]], device=device)), 1)
print('starting outs...')
with open("dev-0/in.tsv", "r", encoding="UTF-8") as dev_path:
nr_of_dev_lines = len(dev_path.readlines()) nr_of_dev_lines = len(dev_path.readlines())
with open("test-A/in.tsv", "r") as test_a_path: with open("test-A/in.tsv", "r", encoding="UTF-8") as test_a_path:
nr_of_test_a_lines = len(test_a_path.readlines()) nr_of_test_a_lines = len(test_a_path.readlines())
with open("dev-0/out.tsv", "w") as out_dev_file: with open("dev-0/out.tsv", "w", encoding="UTF-8") as out_dev_file:
for i in range(nr_of_dev_lines): for i in range(nr_of_dev_lines):
preds= lm(ids) preds = lm(ids)
candidates = torch.topk(torch.softmax(preds, 1), candidates_number)[1][0].cpu().numpy()
candidates = torch.topk(torch.softmax(preds,1),candidates_number)[1][0].cpu().numpy()
candidate = 15001 candidate = 15001
while candidate > 15000: while candidate > 15000:
candidate = candidates[np.random.randint(candidates_number)] candidate = candidates[np.random.randint(candidates_number)]
print(vocab_itos[candidate]) print(vocab_itos[candidate])
ids = torch.cat((ids, torch.tensor([[candidate]], device=device)), 1)
ids = torch.cat((ids, torch.tensor([[candidate]], device = device)), 1)
out_dev_file.write(vocab_itos[candidate] + '\n') out_dev_file.write(vocab_itos[candidate] + '\n')
with open("test-A/out.tsv", "w") as out_test_file: with open("test-A/out.tsv", "w", encoding="UTF-8") as out_test_file:
for i in range(nr_of_dev_lines): for i in range(nr_of_dev_lines):
preds= lm(ids) preds = lm(ids)
candidates = torch.topk(torch.softmax(preds, 1), candidates_number)[1][0].cpu().numpy()
candidates = torch.topk(torch.softmax(preds,1),candidates_number)[1][0].cpu().numpy()
candidate = 15001 candidate = 15001
while candidate > 15000: while candidate > 15000:
candidate = candidates[np.random.randint(candidates_number)] candidate = candidates[np.random.randint(candidates_number)]
print(vocab_itos[candidate]) print(vocab_itos[candidate])
ids = torch.cat((ids, torch.tensor([[candidate]], device=device)), 1)
ids = torch.cat((ids, torch.tensor([[candidate]], device = device)), 1) out_test_file.write(vocab_itos[candidate] + '\n')
out_test_file.write(vocab_itos[candidate] + '\n')

View File

@ -1,471 +1,471 @@
)
.
do
nas
po
do
domu
.
panna
felicja
?
na
nią
do
mnie
,
i
co
i
jeszcze
i
do
głowy
do
niego
?
ale
jeżeli
, ,
ale ale
nie nie
mam mam
. mnie
ale
o
on
, ,
czy
,
co
on
do
głowy
.
na
jego
.
pan
i i
od już
czasu
do
domu
od
dawna
;
ale
co
do
pani
i i
do ja
nich
nie
było
do
domu
;
potem
mu
do
głowy
?
ale
o
czym
;
potem
do do
niego niego
na
głowie
.
panna
felicja
i
ja
. .
pan pan
i ma
nawet
o
do do
domu domu
: :
od ale
niej ,
nie nie
jestem
nie
mam
i
nie
,
na
którym
na
jego
pokoju
)
i
bez
i
do
paryża
na
myśl
,
gdzie
. .
panna
nie
na
lewo
i
na
mnie
nie
,
który
i
nawet nawet
od nie
czasu będzie
od ;
nie
było
mu
do
mieszkania
do
paryża
i
o
czym
do
niego niego
na na
niego myśl
.
panna
na
kilka
i
o
mnie
na
co
i
o
co
na
jego
?
i
do do
domu końca
.
i
nie
mam
nie
mam
nie
o
,
który
do
końca
do
czasu
:
i
jeszcze
,
na
niego
,
nie
można
:
i i
jeszcze jeszcze
i i
nawet
:
ale
na na
nią chwilę
: i
czy
na na
lewo lewo
, :
a
na na
niego niego
nie ?
było do
. mnie
do
mnie
i i
nie
mógł
o o
co nich
na
nią
.
na
drugim
do
niej
;
lecz
nawet
do
mnie
;
i i
on
do do
mnie panny
i ,
nie nie
mógł
o
nim
i
do do
paryża końca
;
i
ja
go
pan
: :
od czy
,
który
?
)
nie nie
jest jestem
go
i i
na na
myśl myśl
do ;
paryża nawet
,
co
,
bo
i
jeszcze
,
ażeby
mu
do
pani
:
potem
:
na
prawo
i
nie nie
można można
na na
lewo mnie
nie
będzie
, ,
ażeby co
na
kilka
do
niego
i
o
co
najmniej
nie
może
;
i
o o
czym czym
: :
czy czy
pan co
jest nie
od
nas
od
powietrza
?
i
pan
, ,
ażeby a
na ja
nim go
. i
jeszcze
:
)
:
ale ale
o o
nim ,
nie
można
na
mnie
i
do
pani
baronowa
;
na
co
na
kilka
. .
po
chwili
do
niego
:
po
,
nie
ma
,
ale
po
do
pokoju
do
mnie
;
nie
na na
lewo lewo
od :
niego na
; głowie
,
a
po
południu
i i
nie nie
jest będę
do
niego
nie
do
czasu
na
myśl
,
o
na
mnie
?
,
nie
ma
i
nie nie
może może
o o
pani dziesiątej
.
na
jego
i
jeszcze
do
czasu
;
a
gdy
nie
będzie
?
o
jej
nie
było
?
ale
na
kilka
na
kilka
.
po
nie
może
,
nie
jest
i
o
co
na
mnie
:
czy
nie
może
nie
będzie
o
nim
;
nawet
nie
jest
o
co
,
bo
,
a
nawet
na
jego
,
ażeby
,
na
których
i
co
.
po
nie
będzie
mnie
:
ale
o
jej
nie
jest
i
o
:
co
.
)
do
paryża
.
ale
czy
co
na
nich
;
a
nie
będzie
.
a
co
nie
mam
nie
mam
nie
.
a
co
.
panna
do
nas
i
nie
będzie
i
co
nie
było
.
nie
na
nią
i
bez
panny
izabeli
i
na
nią
nie
, ,
ale ale
jeszcze jeszcze
od
nie nie
było można
do do
paryża głowy
i
o
pani
? ?
i
o o
mnie
, ,
nie a
mam
na
mnie
,
jak
pan
od
mnie
na
myśl
i
nawet nawet
: nie
ale będzie
na do
niego mnie
na
prawo
od
czasu
do do
nas nas
do do
panny końca
nie
. .
ja panna
po
odejściu
?
,
o
mnie
na na
nią niego
:
co
nie
może
być
i
ja
od
niej
?
od
nie
było
na
nich
i
jego
do
domu
nie
do
pani
.
na
mnie
,
a
on
i
nie
,
na
nim
?
a
potem
i
na
nim
.
ja
na
nią
?
a
,
który
na
mnie
; ;
potem
do
mnie
i i
od
czasu
od
niego
.
a
potem
o o
nim jej
do
niego
i
na
nim
do
mnie
.
a
jeżeli
pan
,
czy
pan
,
o o
ile dziesiątej
:
o
nie
,
nie
było
. .
a
ja
na
nią
na
prawo
od
mnie
:
i
jeszcze
nie
do
mnie
?
a
on
o
nim
do
domu
?
ale
ja
mu
nie
na
prawo
nie
było
na
jego
,
i
ja
go
i
nie
jest
,
ażeby
na
niego
do
pani
.
ale
i
cóż
?
i
pan
?
,
czy
o
mnie
:
na
prawo
i
jeszcze
,
co
do
paryża
nie
na
.
nie
jest
na
prawo
?
pan
,
i
pan
na
nią
.
ale
po
mnie
?
do
domu
nie
na
niego
do
głowy
;
ale
co
mi
o
mnie
.
na
prawo
.
a
jeżeli
go
o
nie
na
prawo
od
dawna
do
paryża
nie
.
a
nawet
mnie
?
na
prawo
?
na
nią
:
na
nim
,
co
na
jego
nie nie
ma ma
;
i i
ja
na
kilka
minut
?
ale
czy
ja
.
ale
ja
do
niej
do
końca
i
po
do
panny
,
nie
można
na
niego

1 , )
1 )
2 .
3 do
4 nas
5 po
6 do
7 domu
8 .
9 panna
10 felicja
11 ?
12 na
13 nią
14 do
15 mnie
16 ,
17 i
18 co
19 i
20 jeszcze
21 i
22 do
23 głowy
24 do
25 niego
26 ?
27 ale
28 jeżeli
29 , ,
30 ale ale
31 nie nie
32 mam mam
33 . mnie
ale
o
on
34 , ,
czy
,
co
on
do
głowy
.
na
jego
.
pan
35 i i
36 od już
czasu
do
domu
od
dawna
;
ale
co
do
pani
37 i i
38 do ja
nich
nie
było
do
domu
;
potem
mu
do
głowy
?
ale
o
czym
;
potem
39 do do
40 niego niego
41 na
42 głowie
43 .
44 panna
45 felicja
46 i
47 ja
48 . .
49 pan pan
50 i ma
nawet
o
51 do do
52 domu domu
53 : :
54 od ale
55 niej ,
56 nie nie
57 jestem
58 nie
59 mam
60 i
61 nie
62 ,
63 na
64 którym
65 na
66 jego
67 pokoju
68 )
69 i
70 bez
71 i
72 do
73 paryża
74 na
75 myśl
76 ,
77 gdzie
78 . .
79 panna
80 nie
81 na
82 lewo
83 i
84 na
85 mnie
86 nie
87 ,
88 który
89 i
90 nawet nawet
91 od nie
92 czasu będzie
93 od ;
94 nie
95 było
96 mu
97 do
98 mieszkania
99 do
100 paryża
101 i
102 o
103 czym
104 do
105 niego niego
106 na na
107 niego myśl
108 .
109 panna
110 na
111 kilka
112 i
113 o
114 mnie
115 na
116 co
117 i
118 o
119 co
120 na
121 jego
122 ?
123 i
124 do do
125 domu końca
126 .
127 i
128 nie
129 mam
130 nie
131 mam
132 nie
133 o
134 ,
135 który
136 do
137 końca
138 do
139 czasu
140 :
141 i
142 jeszcze
143 ,
144 na
145 niego
146 ,
147 nie
148 można
149 :
150 i i
151 jeszcze jeszcze
152 i i
nawet
:
ale
153 na na
154 nią chwilę
155 : i
czy
156 na na
157 lewo lewo
158 , :
a
159 na na
160 niego niego
161 nie ?
162 było do
163 . mnie
164 do
165 mnie
166 i i
167 nie
168 mógł
169 o o
170 co nich
na
nią
.
na
drugim
do
niej
;
lecz
nawet
do
mnie
;
171 i i
on
172 do do
173 mnie panny
174 i ,
175 nie nie
176 mógł
177 o
178 nim
179 i
180 do do
181 paryża końca
182 ;
183 i
184 ja
185 go
186 pan
187 : :
188 od czy
189 ,
190 który
191 ?
192 )
193 nie nie
194 jest jestem
195 go
196 i i
197 na na
198 myśl myśl
199 do ;
200 paryża nawet
,
co
,
bo
i
jeszcze
,
ażeby
mu
do
pani
:
potem
:
na
prawo
i
201 nie nie
202 można można
203 na na
204 lewo mnie
205 nie
206 będzie
207 , ,
208 ażeby co
209 na
210 kilka
211 do
212 niego
213 i
214 o
215 co
216 najmniej
217 nie
218 może
219 ;
220 i
221 o o
222 czym czym
223 : :
224 czy czy
225 pan co
226 jest nie
od
nas
od
powietrza
?
i
pan
227 , ,
228 ażeby a
229 na ja
230 nim go
231 . i
232 jeszcze
233 :
234 )
235 :
236 ale ale
237 o o
238 nim ,
239 nie
240 można
241 na
242 mnie
243 i
244 do
245 pani
246 baronowa
247 ;
248 na
249 co
250 na
251 kilka
252 . .
253 po
254 chwili
255 do
256 niego
257 :
258 po
259 ,
260 nie
261 ma
262 ,
263 ale
264 po
265 do
266 pokoju
267 do
268 mnie
269 ;
270 nie
271 na na
272 lewo lewo
273 od :
274 niego na
275 ; głowie
276 ,
277 a
278 po
279 południu
280 i i
281 nie nie
282 jest będę
do
niego
nie
do
czasu
na
myśl
,
o
na
mnie
?
,
nie
ma
i
283 nie nie
284 może może
285 o o
286 pani dziesiątej
287 .
288 na
289 jego
290 i
291 jeszcze
292 do
293 czasu
294 ;
295 a
296 gdy
297 nie
298 będzie
299 ?
300 o
301 jej
302 nie
303 było
304 ?
305 ale
306 na
307 kilka
308 na
309 kilka
310 .
311 po
312 nie
313 może
314 ,
315 nie
316 jest
317 i
318 o
319 co
320 na
321 mnie
322 :
323 czy
324 nie
325 może
326 nie
327 będzie
328 o
329 nim
330 ;
331 nawet
332 nie
333 jest
334 o
335 co
336 ,
337 bo
338 ,
339 a
340 nawet
341 na
342 jego
343 ,
344 ażeby
345 ,
346 na
347 których
348 i
349 co
350 .
351 po
352 nie
353 będzie
354 mnie
355 :
356 ale
357 o
358 jej
359 nie
360 jest
361 i
362 o
363 :
364 co
365 .
366 )
367 do
368 paryża
369 .
370 ale
371 czy
372 co
373 na
374 nich
375 ;
376 a
377 nie
378 będzie
379 .
380 a
381 co
382 nie
383 mam
384 nie
385 mam
386 nie
387 .
388 a
389 co
390 .
391 panna
392 do
393 nas
394 i
395 nie
396 będzie
397 i
398 co
399 nie
400 było
401 .
402 nie
403 na
404 nią
405 i
406 bez
407 panny
408 izabeli
409 i
410 na
411 nią
412 nie
413 , ,
414 ale ale
415 jeszcze jeszcze
od
416 nie nie
417 było można
418 do do
419 paryża głowy
i
o
pani
420 ? ?
i
421 o o
mnie
422 , ,
423 nie a
mam
na
mnie
,
jak
pan
od
mnie
na
myśl
i
424 nawet nawet
425 : nie
426 ale będzie
427 na do
428 niego mnie
na
prawo
od
czasu
429 do do
430 nas nas
431 do do
432 panny końca
433 nie
434 . .
435 ja panna
po
odejściu
?
,
o
mnie
436 na na
437 nią niego
:
co
nie
może
być
i
ja
od
niej
?
od
nie
było
na
nich
i
jego
do
domu
nie
do
pani
.
na
mnie
,
a
on
i
nie
,
na
nim
?
a
potem
i
na
nim
.
ja
na
nią
?
a
,
który
na
mnie
438 ; ;
potem
do
mnie
439 i i
od
czasu
od
niego
.
a
potem
440 o o
441 nim jej
do
niego
i
na
nim
do
mnie
.
a
jeżeli
pan
,
czy
pan
,
442 o o
443 ile dziesiątej
:
o
nie
,
nie
było
444 . .
a
ja
na
nią
na
prawo
od
mnie
:
i
jeszcze
nie
do
mnie
?
a
on
o
nim
do
domu
?
ale
ja
mu
nie
na
prawo
nie
było
na
jego
,
i
ja
go
i
nie
jest
,
ażeby
na
niego
do
pani
.
ale
i
cóż
?
i
pan
?
,
czy
o
mnie
:
na
prawo
i
jeszcze
,
co
do
paryża
nie
na
.
nie
jest
na
prawo
?
pan
,
i
pan
na
nią
.
ale
po
mnie
?
do
domu
nie
na
niego
do
głowy
;
ale
co
mi
o
mnie
.
na
prawo
.
a
jeżeli
go
o
nie
na
prawo
od
dawna
do
paryża
nie
.
a
nawet
mnie
?
na
prawo
?
na
nią
:
na
nim
,
co
na
jego
445 nie nie
446 ma ma
;
447 i i
448 ja
449 na
450 kilka
451 minut
452 ?
453 ale
454 czy
455 ja
456 .
457 ale
458 ja
459 do
460 niej
461 do
462 końca
463 i
464 po
465 do
466 panny
467 ,
468 nie
469 można
470 na
471 niego

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff