moj-2024/lab/05_statystyczny_model_język...

5.1 KiB

Ekstrakcja informacji

5. Statystyczny model językowy część 2 [ćwiczenia]

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:

ZADANIE

Proszę za pomocą modelu statystycznego ($n$-gramowego) stworzyć rozwiązanie dla https://gonito.csi.wmi.amu.edu.pl/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 24.04.2024
  • 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
  • roziwązanie zadania to 70 punktów,
  • dodatkowo: za najlepsze rozwiązanie w grupie przyznaję 40 punktów, za drugie miejsce: 20 punktów, a za trzecie miejsce: 10 punktów
  • 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