6.6 KiB
6.6 KiB
Ekstrakcja informacji
4. Statystyczny model językowy [ćwiczenia]
Jakub Pokrywka (2022)
NR_INDEKSU = 375985
class Model():
def __init__(self, vocab_size, UNK_token= '<UNK>'):
pass
def train(corpus:list) -> None:
pass
def predict(text: list, probs: str) -> float:
pass
def get_ppl(text: list) -> float:
pass
text = 'Pani Ala ma kota oraz ładnego pieska i 3 chomiki'
text_splitted = text.split(' ')
text_splitted
['Pani', 'Ala', 'ma', 'kota', 'oraz', 'ładnego', 'pieska', 'i', '3', 'chomiki']
text_masked = text_splitted[:4] + ['<MASK>'] + text_splitted[5:]
text_masked
['Pani', 'Ala', 'ma', 'kota', '<MASK>', 'ładnego', 'pieska', 'i', '3', 'chomiki']
trigram_model działa na ['ma', 'kota', <'MASK>']
trigram_model.predict(['ma', 'kota']) → 'i:0.55 oraz:0.25 czarnego:0.1 :0.1'
ZADANIE:
g1 = [470618, 415366, 434695, 470611, 470607]
g2 = [440054, 434742, 434760, 434784, 434788]
g3 = [434804, 430705, 470609, 470619, 434704]
g4 = [434708, 470629, 434732, 434749, 426206]
g5 = [434766, 470628, 437622, 434780, 470627, 440058]
if NR_INDEKSU in g1:
print('model bigramowy standardowy')
elif NR_INDEKSU in g2:
print('model bigramowy odwrotny')
elif NR_INDEKSU in g3:
print('model trigramowy')
elif NR_INDEKSU in g4:
print('model trigramowy odwrotny')
elif NR_INDEKSU in g5:
print('model trigramowy ze zgadywaniem środka')
else:
print('proszę zgłosić się do prowadzącego')
model trigramowy odwrotny
gonito:
- zapisanie do achievmentu przez start working
- send to review
ZADANIE
Proszę stworzyć rozwiązanie modelu (komórka wyżej) dla https://gonito.net/challenge/challenging-america-word-gap-prediction i umieścić je na platformie gonito
Warunki zaliczenia:
- wynik widoczny na platformie zarówno dla dev i dla test
- wynik dla dev i test lepszy (niższy) od 1024.00
- deadline do końca dnia 04.04
- commitując rozwiązanie proszę również umieścić rozwiązanie w pliku /run.py (czyli na szczycie katalogu). Można przekonwertować jupyter do pliku python przez File → Download as → Python. Rozwiązanie nie musi być w pythonie, może być w innym języku.
- zadania wykonujemy samodzielnie
- w nazwie commita podaj nr indeksu
- w tagach podaj "n-grams" (należy zatwierdzić przecinkiem po wybraniu tagu)!
Uwagi:
- warto wymyślić jakąś metodę wygładazania, bez tego może być bardzo kiepski wynik
- nie trzeba korzystać z całego zbioru trenującego
- zadanie to 50 punktów, za najlepsze rozwiązanie w swojej grupie (g1,g2,g3,g4,g5), przyznaję dodatkowo 40 punktów
- punkty będą przyznane na gonito
- warto monitorować RAM, próbować z różnym vocab_size, można skorzystać z pythonowego Counter
- warto sobie zrobić dodatkowo model unigramowy w ramach ćwiczenia