---
# System prepended metadata

title: NLP 3

---

# 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++