![Page 1: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/1.jpg)
Dokument-embeddings /Markov-kjeder
Fredrik Jørgensen, Schibsted Media/UiO
![Page 2: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/2.jpg)
Oversikt1. Dokument-embeddings: Repetisjon + ord => dokumenter2. Markovkjeder: Vi bygger en robot-journalist!
![Page 3: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/3.jpg)
1. Dokument-embeddings
![Page 4: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/4.jpg)
Word2Vec: Høynivå● Trene, ikke telle
● Distribuert/kontinuerlig representasjon, ord har grad av likhet
● Til forskjell fra diskret representasjon, alle ord er bare forskjellige
![Page 5: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/5.jpg)
Word2vec: Trening
From https://towardsdatascience.com/word2vec-skip-gram-model-part-1-intuition-78614e4d6e0b
![Page 6: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/6.jpg)
Word2vec: Likhet
From https://www.slideshare.net/hen_drik/hacking-human-language-pydata-london
![Page 7: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/7.jpg)
Word2Vec: Egenskaper
From https://www.tensorflow.org/tutorials/representation/word2vec
![Page 8: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/8.jpg)
Word2Vec: Selve modellen
![Page 9: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/9.jpg)
Fra ord til dokumenter● Word embeddings gir oss en god semantisk representasjon av ord
● Vi kan finne nærmeste ord i et vektorrom
● Kan vi finne nærmeste setning eller dokument i et vektorrom?
● word embeddings => document embeddings
![Page 10: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/10.jpg)
Dokument-embeddings1 : GjennomsnittEksempel:
● Setningen “vektorer er moro!”● En word2vec-modell
![Page 11: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/11.jpg)
Dokument-embeddings 1: GjennomsnittEksempel:
● Setningen “vektorer er moro!”● En word2vec-modell
![Page 12: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/12.jpg)
Dokument-embeddings 2: Gjennomsnitt med TFIDFEksempel:
● Setningen “vektorer er moro!”● En word2vec-modell● En (TF)IDF-vektor
![Page 13: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/13.jpg)
Dokument-embeddings 2: Gjennomsnitt med TFIDFEksempel:
● Setningen “vektorer er moro!”● En word2vec-modell● En (TF)IDF-vektor● Vekte embeddingene med (TF)IDF:
![Page 14: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/14.jpg)
(Dokument-embeddings 3: TFIDF + PCA)● Kort om PCA: Matrise-faktorisering, finner de dimensjonene som har størst
varians
For spesielt interesserte: A Simple But Tough-to-beat Baseline For Sentence Embeddings
● Hypotese: Ord har mest varians i den syntaktiske dimensjonen● Fjerne første PCA komponente(ne), dvs fjerne varians, dvs “fjerne syntaks”● Vekte med TFIDF
![Page 15: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/15.jpg)
Dokument-embeddings basert på word embeddings
+● Enkelt å lage● Ingen trening utover word2vec● Relativt enkelt å forstå● Distribuert/kontinuerlig representasjon, ord har likhet (jfr. BOW, diskret
modell)○ The pizza was great○ The margherita was awesome○ The dog was sick
![Page 16: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/16.jpg)
Dokument-embeddings basert på word embeddings
-● Fungerer dårlig på lengre tekster. Best på setninger.● “Regression to the mean”
![Page 17: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/17.jpg)
Farvel til ord og embeddings
![Page 18: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/18.jpg)
Hei hei Andrey Markov
![Page 19: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/19.jpg)
2. Sekvens-modelleringog Markov-kjeder
![Page 20: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/20.jpg)
![Page 21: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/21.jpg)
SekvenserSekvens = Elementer med en ordning/rekkefølge
Språk er ofte sekvenser. Eksempler:
● Ord i rekkefølge danner fraser/setninger
● Setninger i rekkefølge danner en tekst
![Page 22: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/22.jpg)
Markov-kjeder● Vi lager en robot-journalist!● Ved hjelp av en sekvens-modell som
heter Markov-kjeder (Markov Chains)● Roboten skal få lære av tekst skrevet
av ekte journalister● Og så begynne å skrive selv…● Men først: Markov-kjeder
![Page 23: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/23.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.” 1
1https://no.wikipedia.org/wiki/Markovkjede (16/4-2018)
![Page 24: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/24.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.”
● En serie eller sekvens, akkurat som tekst
![Page 25: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/25.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.”
● En serie eller sekvens, akkurat som tekst● Vi trenger sannsynligheter
![Page 26: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/26.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.”
● En serie eller sekvens, akkurat som tekst● Vi trenger sannsynligheter● Her skal vi lage en modell
![Page 27: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/27.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.”
● En serie eller sekvens, akkurat som tekst● Vi trenger sannsynligheter● Her skal vi lage en modell● Dette kalles “Markov-egenskapen” og betyr at vi ikke trenger å huske tidligere
tilstander, kun den nåværende
![Page 28: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/28.jpg)
Markov-kjeder● Dette skal roboten lære:● Input: Masse overskrifter● Output: Overskrifter som ligner på det
roboten har sett● Overskrifter er sekvenser av ord
![Page 29: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/29.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.”
Pr( Xn+1= x | X1= x1 , X2= x2 , … , Xn= xn )
![Page 30: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/30.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.”
Pr( Xn+1= x | X1= x1 , X2= x2 , … , Xn= xn )
=
Pr( Xn+1= x | Xn= xn )
(Markov assumption)
![Page 31: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/31.jpg)
Markov-kjeder: Grafisk representasjon
![Page 32: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/32.jpg)
Markov-kjeder: Definisjon i J&MFra Jurafsky & Martin (3rd ed.), kap. A.1:
![Page 33: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/33.jpg)
Markov-kjeder“Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige tilstanden kun er avhengig av hva den er nå og ikke hva den har vært.”
Kan vi bygge det? Klart vi kan!
![Page 34: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/34.jpg)
3. Implementasjon
![Page 35: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/35.jpg)
Markov-kjeder
class MarkovChain:
def __init__(self):self.memory = defaultdict(lambda: [])
![Page 36: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/36.jpg)
Markov-kjeder
class MarkovChain:
def __init__(self):self.memory = defaultdict(lambda: [])
For å lære fra data, må vi huske litt...
![Page 37: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/37.jpg)
Markov-kjeder
class MarkovChain:
def __init__(self):self.memory = defaultdict(lambda: [])
Men hva trenger vi å huske?
![Page 38: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/38.jpg)
Markov-kjeder
class MarkovChain:
def __init__(self):self.memory = defaultdict(lambda: [])
Vi må huske forrige tilstand og nåværende tilstand
![Page 39: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/39.jpg)
Markov-kjeder
class MarkovChain:
def __init__(self):self.memory = defaultdict(lambda: [])
Tilstand = ord. Vi må huske forrige ord og nåværende ord
![Page 40: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/40.jpg)
Markov-kjeder
class MarkovChain:
def fit(self, sentences): for sentence in sentences: tokens = sentence.split(" ")
bigrams = [(tokens[i], tokens[i + 1]) for i in range(0, len(tokens) - 1)]
for (state, output) in bigrams: self.memory[state].append(output)
![Page 41: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/41.jpg)
Markov-kjeder
class MarkovChain:
def fit(self, sentences): for sentence in sentences: tokens = sentence.split(" ")
bigrams = [(tokens[i], tokens[i + 1]) for i in range(0, len(tokens) - 1)]
for (state, output) in bigrams: self.memory[state].append(output)
Ord-splittede overskrifter
![Page 42: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/42.jpg)
Markov-kjeder
class MarkovChain:
def fit(self, sentences): for sentence in sentences: tokens = sentence.split(" ")
bigrams = [(tokens[i], tokens[i + 1]) for i in range(0, len(tokens) - 1)]
for (state, output) in bigrams: self.memory[state].append(output)
Par av forrige ord og nåværende ord
![Page 43: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/43.jpg)
Markov-kjeder
class MarkovChain:
def fit(self, sentences): for sentence in sentences: tokens = sentence.split(" ")
bigrams = [(tokens[i], tokens[i + 1]) for i in range(0, len(tokens) - 1)]
for (state, output) in bigrams: self.memory[state].append(output)
Lage i ‘memory´:En dict fra forrige ord til
en liste av nåværende ord
![Page 44: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/44.jpg)
Markov-kjeder
class MarkovChain:
def generate(self, words_to_generate, state=''):if words_to_generate == 0:
return state
next_word = self._next(state)return state + ' ' +
self.generate(words_to_generate - 1, next_word)
![Page 45: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/45.jpg)
Markov-kjeder
class MarkovChain:
def generate(self, words_to_generate, state=''):if words_to_generate == 0:
return state
next_word = self._next(state)return state + ' ' +
self.generate(words_to_generate - 1, next_word)
Lengen på overskriftenVi skal lage
![Page 46: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/46.jpg)
Markov-kjeder
class MarkovChain:
def generate(self, words_to_generate, state=''):if words_to_generate == 0:
return state
next_word = self._next(state)return state + ' ' +
self.generate(words_to_generate - 1, next_word)
Overskriften så langt
![Page 47: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/47.jpg)
Markov-kjeder
class MarkovChain:
def generate(self, words_to_generate, state=''):if words_to_generate == 0:
return state
next_word = self._next(state)return state + ' ' +
self.generate(words_to_generate - 1, next_word)
Dette er en rekursiv funksjon, dvs. at den kaller seg selv
![Page 48: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/48.jpg)
Markov-kjeder
class MarkovChain:
def generate(self, words_to_generate, state=''):if words_to_generate == 0:
return state
next_word = self._next(state)return state + ' ' +
self.generate(words_to_generate - 1, next_word)
Her skal vi finne neste ord!
![Page 49: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/49.jpg)
Markov-kjeder
class MarkovChain:
def _next(self, current_state):next_possible = self.memory.get(current_state)if not next_possible:
next_possible = self.memory.keys()return random.sample(next_possible, 1)[0]
![Page 50: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/50.jpg)
Markov-kjeder
class MarkovChain:
def _next(self, current_state):next_possible = self.memory.get(current_state)if not next_possible:
next_possible = self.memory.keys()return random.sample(next_possible, 1)[0]
Generere neste ord/tilstand fra nåværende ord/tilstand
![Page 51: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/51.jpg)
Markov-kjeder
class MarkovChain:
def _next(self, current_state):next_possible = self.memory.get(current_state)if not next_possible:
next_possible = self.memory.keys()return random.sample(next_possible, 1)[0]
Quiz: Hva slags datastruktur er dette?
![Page 52: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/52.jpg)
Markov-kjeder
class MarkovChain:
def _next(self, current_state):next_possible = self.memory.get(current_state)if not next_possible:
next_possible = self.memory.keys()return random.sample(next_possible, 1)[0]
Fasit: En liste med alle ord/tilstander vi har sett som følger
‘current_state’
![Page 53: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/53.jpg)
Markov-kjeder
class MarkovChain:
def _next(self, current_state):next_possible = self.memory.get(current_state)if not next_possible:
next_possible = self.memory.keys()return random.sample(next_possible, 1)[0]
Hvis vi ikke har sett dette ordet, tar vi et tilfeldig ord...
![Page 54: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/54.jpg)
Markov-kjeder
class MarkovChain:
def _next(self, current_state):next_possible = self.memory.get(current_state)if not next_possible:
next_possible = self.memory.keys()return random.sample(next_possible, 1)[0]
Vi velger et tilfeldig neste ord
![Page 55: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/55.jpg)
Markov-kjederclass MarkovChain: def __init__(self): self.memory = defaultdict(lambda: [])
def fit(self, sentences): for sentence in sentences: tokens = sentence.split(' ') bigrams = [(tokens[i], tokens[i + 1]) for i in range(0, len(tokens) - 1)] for (key, value) in bigrams: self.memory[key].append(value)
def generate(self, sentence_length, state=''): if sentence_length == 0: return state next_word = self._next(state) return state + ' ' + self.generate(sentence_length - 1, next_word)
def _next(self, current_state): next_possible = self.memory.get(current_state) if not next_possible: next_possible = self.memory.keys() return random.sample(next_possible, 1)[0]
Mindre enn
30 linjer
Med kode!
![Page 56: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/56.jpg)
Markov-kjederDemo
![Page 57: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/57.jpg)
Markov-kjederGrafisk representasjon:
![Page 58: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/58.jpg)
Demo (v.1)
![Page 59: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/59.jpg)
4. Forbedringer
![Page 60: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/60.jpg)
ForbedringerHmm, det er en start, men funker ikke helt bra…
● Det hadde vært fint om modellen selv visste når en setning var ferdig● Modellen husker ikke så langt tilbake, bare ett ord● Det er mye redundant data i modellen
![Page 61: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/61.jpg)
ForbedringerHmm, det er en start, men funker ikke helt bra…
● Det hadde vært fint om modellen selv visste når en setning var ferdig○ Vi introduserer setningsgrenser: spesielle start- og slutt-ord○ F eks <SOS> og <EOS>○ Vi legger til disse når vi trener modellen
● Modellen husker ikke så langt tilbake, bare ett ord● Det er mye redundant data i modellen
![Page 62: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/62.jpg)
ForbedringerFra Jurafsky & Martin (3rd ed.), kap. A.1:
![Page 63: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/63.jpg)
ForbedringerFra Jurafsky & Martin (3rd ed.), kap. A.1:
![Page 64: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/64.jpg)
Demo (v.2)
![Page 65: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/65.jpg)
ForbedringerHmm, det er en start, men funker ikke helt bra…
● Det hadde vært fint om modellen selv visste når en setning var ferdig● Modellen husker ikke så langt tilbake, bare ett ord
○ Forrige tilstand kan være mer enn bare ett ord● Det er mye redundant data i modellen
![Page 66: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/66.jpg)
Demo (v.3)(Kan slutte her hvis klokka er 12)
![Page 67: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/67.jpg)
ForbedringerHmm, det er en start, men funker ikke helt bra…
● Det hadde vært fint om modellen selv visste når en setning var ferdig● Modellen husker ikke så langt tilbake, bare ett ord● Det er mye redundant data i modellen
○ I stedet for å lagre alle forekomster etter ord X i en liste, kan vi lagre sannsynlighetene for hvert ord
○ Nå: ‘i’ => [‘dag’, ‘morgen’, ‘dag’, ‘dag’, ‘dag’, ‘morgen’, ...]○ Bedre: ‘i’ => {‘dag’: 0.2, ‘morgen’: 0.1, …}
![Page 68: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/68.jpg)
ForbedringerHmm, det er en start, men funker ikke helt bra…
● Det hadde vært fint om modellen selv visste når en setning var ferdig● Modellen husker ikke så langt tilbake, bare ett ord● Det er mye redundant data i modellen
○ I stedet for å lagre alle forekomster etter ord X i en liste, kan vi lagre sannsynlighetene som en matrise
○ Nå: ‘i’ => [‘dag’, ‘morgen’, ‘dag’, ‘dag’, ‘dag’, ‘morgen’, ...]○ Bedre: ‘i’ => {‘dag’: 0.2, ‘morgen’: 0.1, …}○ Best: (Markov) matrise i dag morgen
i 0 0.2 0.1
dag 0.00003
morgen 0 0 0
![Page 69: Dokument-embeddings / Markov-kjeder · Markov-kjeder “Markovkjede er i statistikkfaget en serie med tilfeldige variabler som er egnet til å beskrive prosesser hvor den fremtidige](https://reader035.vdocuments.site/reader035/viewer/2022081407/5f262cc4eac7f6171a65bc19/html5/thumbnails/69.jpg)
Markov-kjederFra Jurafsky & Martin (3rd ed.), kap. A.1: