# NLP 3 ![](https://i.imgur.com/0R2xQE4.png) ## Z1 - Perplexity powtórka ![](https://collab.marwit.rs/uploads/upload_bfb919225dc4fdd9eb80bf3f48c029de.png) a) Dla kazdego unigramu szansa bedzie wynosiła dokładnie $1/10$, czyli $PP(w_1...w_N) = P(w_1...w_N)^{(-1/N)} = (1/10)^{-1} = 10$ b) ![](https://collab.marwit.rs/uploads/upload_5b349d72b580d3b970125b88dcf29c96.png) $PP = 1.37$ c) Weźmy n = 12 P(ax,by | b < 10) = 1 P(ax,by | b = 11) = 9/10 * 1 + 1/10 * 1/10 = 91/100 P(ax,by | a = 1, b = 10) = 1/10 $PP(w_{12}...w_n) =$ $(((9/10)*(1^9) + (1/10)*((91/100)^9)) * ((9/10)*(91/100) + (1/10)*(1/10)))^{-1/10} = 1.02495055025$ Czy ten model daje minimalne perplexity - nie. Jaka modyfikacja zrobiłaby, że tak - gdyby w nowym bloku cyfr musiała zmienić się cyfra. I bigramowe w pythonie mi wyszło 1.6633188104758643 ## Z2 - Nawiasowanie wejście: lista par pozycji oryginalnych nawiasów, lista par pozycji ocenianych nawiasów ```python= def czy_konfliktowe(p1, p2): return ((p1[0] < p2[0] and p2[0] < p1[1] and p1[1] < p2[1]) or (p2[0] < p1[0] and p2[1] < p1[1] and p1[0] < p2[1])) def oceń(nawiasy1, nawiasy2): alpha, beta = ..., ... konfliktowe = 0 for p1 in nawiasy1: for p2 in nawiasy2: if czy_konfliktowe(p1, p2): konfliktowe +=1 brakujące = 0 for p in nawiasy1: if p not in nawiasy2: brakujące += 1 return alpha * konfliktowe + beta * brakujące ``` ## Z3 - HMM w ortografi Pomysł Stan - poprawne słowo ze słownika (można z jakimiś dodatkowymi danymi jak tagi) elementy generowane - wszystkie możliwe ciągi znaków Przejście między stanami - mogą być np ppb bigramu Prawdopodobieństwo wyemitowania słowa - np. $0.9 * \frac{1}{2}^{editdist}$ ## Z4 - HMM w dużych małych literach To samo co w trzecim. Model jest bigramowy więc nie jest w stanie zapamiętać dłuższych ciągów jak np. "Prawo i Sprawiedliwość" w środku jest mała litera więc informacja o tym że Prawo jest z dużej litery znika. Można zrobić preprocessing tokenów w tekście żeby zbitki pisane dużymi literami łączyć w jeden token który jest jednoznacznie kapitalizowany. ## Z5 - Obliczanie *b* z uwzględnieniem końcowego stanu Wersja z ostatnim $b[s][s][T+1] = 1$ a $b[s][s'][T+1] = 0$ Wersja z po skoku $b_{ijk} = P(O_t = k|X_t = s_i, X_{t+1} = s_j)$ oryginalnie $$b_{ijk} = \frac{\sum_{t=1,o_t=O[k]}^T \gamma_i(t) }{ \sum_{t=1}^T \gamma_i(t)}$$ poprawka : (?) $$b_{ijk} = \frac{\sum_{t=1,o_t=O[k]}^T \alpha_{i}(t) a_{ij} b_i(O_t)\beta_j(t+1) }{ \sum_{t=1}^T \alpha_{i}(t) a_{ij} b_i(O_t)\beta_j(t+1)}$$ $$b_{ijk} = \frac{\sum_{t=1,o_t=O[k]}^T \alpha_{i}(t) a_{ij}\beta_j(t+1) }{ \sum_{t=1}^T \alpha_{i}(t) a_{ij} \beta_j(t+1)}$$ $\gamma_i(t)$ - bycie w stanie i w czasie t ## Z6 - Klasyfikator NBB Szacujemy z tw bayesa, że dane słowo z tagiem jest bardziej prawdopodobne niż z innym tagiem. ## Z7 - Reguły dla "miał" i "jak" ![](https://i.imgur.com/svXbQ11.png) ![](https://i.imgur.com/xrXAuNY.png) miał. - wyskakuje więcej miału węglowego i opałowego miał + przymiotnik + coś innego niż rzeczownik - rzeczownik czasownik + miał - raczej rzeczownik Jak idzie do szkoły, słucha muzyki. <BOS> + jak + przymiotnik Jak azjatycki wącha trawę. Jak azjatycki jest chińczyk? ![](https://i.imgur.com/1WggnVJ.png) ## Z8 - Łączenie Brilla z innymi tagerami Można łączyć z innymi tagerami? (jak?)na przykład rozpoczynać nie od wyniku tagera unigramowego,lecz bigramowego. Jak nie mamy tagów do uczenia to można np bayesem albo bigramowo tagować, może tager Brilla być ostatnią decyzja dla tagera który daje prawdopodobieństwa ## Z9 - Dlaczego reguł w tagerze Brilla nie jest tak dużo. 3629 * 3629 * [3629 *(3629-1)/2] Ok 10e5 ma niejednoznaczne tagowanie Zapewne część tagów ma wszystkich reprezentantów jednoznacznych 6583006 [6424921, 39783, 21625, 13663, 3114, 9530, 354, 161, 598, 336, 429, 105, 979, 30, 42, 106, 38, 749, 111, 240, 239, 25, 304, 40, 68, 276, 25, 17, 10, 75, 13, 17, 37, 276, 70, 105, 60, 124, 22, 47, 11, 37, 246, 6, 17, 24, 176, 5, 3, 2, 1, 1, 62, 12, 18, 162, 10, 2, 7, 21, 1, 4, 36, 11, 102, 18, 6, 25, 38, 161, 1, 26, 1, 4, 4, 0, 1, 10, 4864, 2, 60, 12, 20, 266, 86, 1, 3, 169, 5, 1, 18, 222, 10, 22, 1, 3, 2, 38, 10, 2] Poprawnych trigramów na tagach będzie nie tak dużo, a dla nich dodajemy tylko takie dodatkowe $t_3$ które mają wspólne słowo ze środkowym tagiem Liczba tagów: 3629 Rozważamy reguły typu: Jeżeli na pozycji -1 mamy $t_1$, na pozycji +1 mamy, $t_2$, wówczas zmień na pozycji 0 $t_3$ na $t_4$. Teoretycznie jest ~6 mln par tagów, które mogłyby się znaleźć na pozycjach $t_3$ i $t_4$, ale tylko dla $10^5$ par ## Z10 - LSTM ## Z11* - LSTM++