M. 23.Juli.2007
Gliederung 1 2 3
Erfinder Andrew J. Viterbi 1967 zur Dekodierung von Faltungscodes entwickelt Auf Basis von entwickelt
Erfinder Andrew J. Viterbi 1967 zur Dekodierung von Faltungscodes entwickelt Auf Basis von entwickelt
Erfinder Andrew J. Viterbi 1967 zur Dekodierung von Faltungscodes entwickelt Auf Basis von entwickelt
Funktion Findet die beste Pfadsequenz in einem HMM zu einer gegebenen Beobachtung sogenannter Viterbi-Pfad
Funktion Findet die beste Pfadsequenz in einem HMM zu einer gegebenen Beobachtung sogenannter Viterbi-Pfad
Anwendungsbereiche Vielfältige Anwendungmöglichkeiten wie zum Beispiel: Worterkennung POS-Tagging Entzerrung und Fehlerkorretur bei Datenübertragung, Beispielsweise bei Mobilfunkgeräten Kryptografie Mustererkennung
Anwendungsbereiche Vielfältige Anwendungmöglichkeiten wie zum Beispiel: Worterkennung POS-Tagging Entzerrung und Fehlerkorretur bei Datenübertragung, Beispielsweise bei Mobilfunkgeräten Kryptografie Mustererkennung
Anwendungsbereiche Vielfältige Anwendungmöglichkeiten wie zum Beispiel: Worterkennung POS-Tagging Entzerrung und Fehlerkorretur bei Datenübertragung, Beispielsweise bei Mobilfunkgeräten Kryptografie Mustererkennung
Anwendungsbereiche Vielfältige Anwendungmöglichkeiten wie zum Beispiel: Worterkennung POS-Tagging Entzerrung und Fehlerkorretur bei Datenübertragung, Beispielsweise bei Mobilfunkgeräten Kryptografie Mustererkennung
Anwendungsbereiche Vielfältige Anwendungmöglichkeiten wie zum Beispiel: Worterkennung POS-Tagging Entzerrung und Fehlerkorretur bei Datenübertragung, Beispielsweise bei Mobilfunkgeräten Kryptografie Mustererkennung
Wiederholung von HMMs I Ein HMM ist ein Fünftupel λ = (S, K, π, A, B) S = {s 1,..., s N } Menge aller Zustände K = {k 1,..., k M } Ausgabealphabet N π = {π i }, i S i=1 π i = 1 Wahrscheinlichkeiten der Startzustände N A = {a ij }, i, j S j=1 a ij = 1 Wahrscheinlichkeiten der Zustandsübergänge M B = {b ijk }, i, j S, k K k=1 b ijk = 1 Wahrscheinlichkeiten der Symbolemissionen
Wiederholung von HMMs I Ein HMM ist ein Fünftupel λ = (S, K, π, A, B) S = {s 1,..., s N } Menge aller Zustände K = {k 1,..., k M } Ausgabealphabet N π = {π i }, i S i=1 π i = 1 Wahrscheinlichkeiten der Startzustände N A = {a ij }, i, j S j=1 a ij = 1 Wahrscheinlichkeiten der Zustandsübergänge M B = {b ijk }, i, j S, k K k=1 b ijk = 1 Wahrscheinlichkeiten der Symbolemissionen
Wiederholung von HMMs I Ein HMM ist ein Fünftupel λ = (S, K, π, A, B) S = {s 1,..., s N } Menge aller Zustände K = {k 1,..., k M } Ausgabealphabet N π = {π i }, i S i=1 π i = 1 Wahrscheinlichkeiten der Startzustände N A = {a ij }, i, j S j=1 a ij = 1 Wahrscheinlichkeiten der Zustandsübergänge M B = {b ijk }, i, j S, k K k=1 b ijk = 1 Wahrscheinlichkeiten der Symbolemissionen
Wiederholung von HMMs I Ein HMM ist ein Fünftupel λ = (S, K, π, A, B) S = {s 1,..., s N } Menge aller Zustände K = {k 1,..., k M } Ausgabealphabet N π = {π i }, i S i=1 π i = 1 Wahrscheinlichkeiten der Startzustände N A = {a ij }, i, j S j=1 a ij = 1 Wahrscheinlichkeiten der Zustandsübergänge M B = {b ijk }, i, j S, k K k=1 b ijk = 1 Wahrscheinlichkeiten der Symbolemissionen
Wiederholung von HMMs I Ein HMM ist ein Fünftupel λ = (S, K, π, A, B) S = {s 1,..., s N } Menge aller Zustände K = {k 1,..., k M } Ausgabealphabet N π = {π i }, i S i=1 π i = 1 Wahrscheinlichkeiten der Startzustände N A = {a ij }, i, j S j=1 a ij = 1 Wahrscheinlichkeiten der Zustandsübergänge M B = {b ijk }, i, j S, k K k=1 b ijk = 1 Wahrscheinlichkeiten der Symbolemissionen
Wiederholung von HMMs I Ein HMM ist ein Fünftupel λ = (S, K, π, A, B) S = {s 1,..., s N } Menge aller Zustände K = {k 1,..., k M } Ausgabealphabet N π = {π i }, i S i=1 π i = 1 Wahrscheinlichkeiten der Startzustände N A = {a ij }, i, j S j=1 a ij = 1 Wahrscheinlichkeiten der Zustandsübergänge M B = {b ijk }, i, j S, k K k=1 b ijk = 1 Wahrscheinlichkeiten der Symbolemissionen
Wiederholung von HMMs II Es gibt arc-emission HMMs und state-emission HMMs: arc-emission: Das ausgegebene Symbol hängt von den Zeitpunkten t und t 1 ab. state-emission: Das ausgegebene Smbol hängt nur vom Zeitpunkt t ab. Beispiel für ein state-emission Modell aus Wikipedia x: hidden states y: Ausgabe a: Übergangswahrscheinlichkeit b: Ausgabewahrscheinlichkeit
Wiederholung von HMMs II Es gibt arc-emission HMMs und state-emission HMMs: arc-emission: Das ausgegebene Symbol hängt von den Zeitpunkten t und t 1 ab. state-emission: Das ausgegebene Smbol hängt nur vom Zeitpunkt t ab. Beispiel für ein state-emission Modell aus Wikipedia x: hidden states y: Ausgabe a: Übergangswahrscheinlichkeit b: Ausgabewahrscheinlichkeit
Wiederholung von HMMs II Es gibt arc-emission HMMs und state-emission HMMs: arc-emission: Das ausgegebene Symbol hängt von den Zeitpunkten t und t 1 ab. state-emission: Das ausgegebene Smbol hängt nur vom Zeitpunkt t ab. Beispiel für ein state-emission Modell aus Wikipedia x: hidden states y: Ausgabe a: Übergangswahrscheinlichkeit b: Ausgabewahrscheinlichkeit
Wiederholung von HMMs II Es gibt arc-emission HMMs und state-emission HMMs: arc-emission: Das ausgegebene Symbol hängt von den Zeitpunkten t und t 1 ab. state-emission: Das ausgegebene Smbol hängt nur vom Zeitpunkt t ab. Beispiel für ein state-emission Modell aus Wikipedia x: hidden states y: Ausgabe a: Übergangswahrscheinlichkeit b: Ausgabewahrscheinlichkeit
Die Problemstellung Wir wollen wissen, welches der wahrscheinlichste Pfad in einer Sequenz von verborgenen Zuständen ist, der zu unserer Eingabe führt. Das könnte man lösen, indem alle Pfade ausprobiert werden und aus dieser Menge der wahrscheinlichste herausgefiltert wird. Mittels Rekursion kann man dies verbessern.
Die Problemstellung Wir wollen wissen, welches der wahrscheinlichste Pfad in einer Sequenz von verborgenen Zuständen ist, der zu unserer Eingabe führt. Das könnte man lösen, indem alle Pfade ausprobiert werden und aus dieser Menge der wahrscheinlichste herausgefiltert wird. Mittels Rekursion kann man dies verbessern.
Die Problemstellung Wir wollen wissen, welches der wahrscheinlichste Pfad in einer Sequenz von verborgenen Zuständen ist, der zu unserer Eingabe führt. Das könnte man lösen, indem alle Pfade ausprobiert werden und aus dieser Menge der wahrscheinlichste herausgefiltert wird. Mittels Rekursion kann man dies verbessern.
Beispiel I Time flies like arrows. Die Zeit vergeht so schnell, wie Pfeile fliegen. Zeitfliegen mögen Pfeile. Miss die Zeit, die Fliegen brauchen, so schnell wie Pfeile. etc.
Beispiel I Time flies like arrows. Die Zeit vergeht so schnell, wie Pfeile fliegen. Zeitfliegen mögen Pfeile. Miss die Zeit, die Fliegen brauchen, so schnell wie Pfeile. etc.
Beispiel I Time flies like arrows. Die Zeit vergeht so schnell, wie Pfeile fliegen. Zeitfliegen mögen Pfeile. Miss die Zeit, die Fliegen brauchen, so schnell wie Pfeile. etc.
Beispiel I Time flies like arrows. Die Zeit vergeht so schnell, wie Pfeile fliegen. Zeitfliegen mögen Pfeile. Miss die Zeit, die Fliegen brauchen, so schnell wie Pfeile. etc.
Beispiel II Symbolemissionen Time flies like arrows Nom 0.4 0.25 0 0.35 NomC 0.3 0.45 0 0.25 Verb 0 0.76 0.24 0 Prep 0 0 1 0 Das Trellis-Diagramm für den Beispielsatz.
Beispiel III Zustandsübergangs- und Startwahrscheinlichkeiten Nom NomC Verb Prep π 0.35 0.2 0.25 0.2 Nom 0.1 0.3 0.45 0.15 NomC 0.01 0.29 0.5 0.2 Verb 0.2 0.1 0.25 0.45 Prep 0.5 0.05 0.25 0.2
Vorgehensweise des Algorithmus besteht aus drei Teilen Initialisierung Induktion mit den Funktionen δ und ψ Terminierung und Pfadausgabe und hat zwei wichtige Datenstrukturen, die Arrays der Größe K N sind, wobei N die Anzahl der Wörter in der Eingabe und K die Zahl der lexikalischen Kategorien repräsentieren. SEQSCORE(k,n), speichert die Wahrscheinlichkeiten für die beste Sequenz zur Position n, die mit einem Wort aus der lexikalischen Kategorie endet. BACKPTR, speichert für jede Kategorie an der Position n die Kategorie der besten Sequenz an Position n 1.
Vorgehensweise des Algorithmus besteht aus drei Teilen Initialisierung Induktion mit den Funktionen δ und ψ Terminierung und Pfadausgabe und hat zwei wichtige Datenstrukturen, die Arrays der Größe K N sind, wobei N die Anzahl der Wörter in der Eingabe und K die Zahl der lexikalischen Kategorien repräsentieren. SEQSCORE(k,n), speichert die Wahrscheinlichkeiten für die beste Sequenz zur Position n, die mit einem Wort aus der lexikalischen Kategorie endet. BACKPTR, speichert für jede Kategorie an der Position n die Kategorie der besten Sequenz an Position n 1.
Vorgehensweise des Algorithmus besteht aus drei Teilen Initialisierung Induktion mit den Funktionen δ und ψ Terminierung und Pfadausgabe und hat zwei wichtige Datenstrukturen, die Arrays der Größe K N sind, wobei N die Anzahl der Wörter in der Eingabe und K die Zahl der lexikalischen Kategorien repräsentieren. SEQSCORE(k,n), speichert die Wahrscheinlichkeiten für die beste Sequenz zur Position n, die mit einem Wort aus der lexikalischen Kategorie endet. BACKPTR, speichert für jede Kategorie an der Position n die Kategorie der besten Sequenz an Position n 1.
Vorgehensweise des Algorithmus besteht aus drei Teilen Initialisierung Induktion mit den Funktionen δ und ψ Terminierung und Pfadausgabe und hat zwei wichtige Datenstrukturen, die Arrays der Größe K N sind, wobei N die Anzahl der Wörter in der Eingabe und K die Zahl der lexikalischen Kategorien repräsentieren. SEQSCORE(k,n), speichert die Wahrscheinlichkeiten für die beste Sequenz zur Position n, die mit einem Wort aus der lexikalischen Kategorie endet. BACKPTR, speichert für jede Kategorie an der Position n die Kategorie der besten Sequenz an Position n 1.
Vorgehensweise des Algorithmus besteht aus drei Teilen Initialisierung Induktion mit den Funktionen δ und ψ Terminierung und Pfadausgabe und hat zwei wichtige Datenstrukturen, die Arrays der Größe K N sind, wobei N die Anzahl der Wörter in der Eingabe und K die Zahl der lexikalischen Kategorien repräsentieren. SEQSCORE(k,n), speichert die Wahrscheinlichkeiten für die beste Sequenz zur Position n, die mit einem Wort aus der lexikalischen Kategorie endet. BACKPTR, speichert für jede Kategorie an der Position n die Kategorie der besten Sequenz an Position n 1.
Vorgehensweise des Algorithmus besteht aus drei Teilen Initialisierung Induktion mit den Funktionen δ und ψ Terminierung und Pfadausgabe und hat zwei wichtige Datenstrukturen, die Arrays der Größe K N sind, wobei N die Anzahl der Wörter in der Eingabe und K die Zahl der lexikalischen Kategorien repräsentieren. SEQSCORE(k,n), speichert die Wahrscheinlichkeiten für die beste Sequenz zur Position n, die mit einem Wort aus der lexikalischen Kategorie endet. BACKPTR, speichert für jede Kategorie an der Position n die Kategorie der besten Sequenz an Position n 1.
Vorgehensweise des Algorithmus besteht aus drei Teilen Initialisierung Induktion mit den Funktionen δ und ψ Terminierung und Pfadausgabe und hat zwei wichtige Datenstrukturen, die Arrays der Größe K N sind, wobei N die Anzahl der Wörter in der Eingabe und K die Zahl der lexikalischen Kategorien repräsentieren. SEQSCORE(k,n), speichert die Wahrscheinlichkeiten für die beste Sequenz zur Position n, die mit einem Wort aus der lexikalischen Kategorie endet. BACKPTR, speichert für jede Kategorie an der Position n die Kategorie der besten Sequenz an Position n 1.
Initialisierung SEQSCORE(i,1) wird in unserem Beispiel mit dem Ergebnis folgender Formel gefüllt: P(Time k i ) P(k i π) Somit ergibt sich mit unserem Beispiel für SEQSCORE: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 0.14 0.06 0 0 2 0 0 0 0 3 0 0 0 0 4 0 0 0 0
Initialisierung SEQSCORE(i,1) wird in unserem Beispiel mit dem Ergebnis folgender Formel gefüllt: P(Time k i ) P(k i π) Somit ergibt sich mit unserem Beispiel für SEQSCORE: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 0.14 0.06 0 0 2 0 0 0 0 3 0 0 0 0 4 0 0 0 0
Induktion Mit δ wird die Wahrscheinlichkeit des wahrscheinlichsten Pfades berechnet Die Ergebnisse von δ werden in SEQSCORE gespeichert Mit ψ wird der Vorgänger auf dem wahrscheinlichsten Pfad ermittelt Die Ergebnisse von ψ werden in BACKPTR gespeichert
Induktion Mit δ wird die Wahrscheinlichkeit des wahrscheinlichsten Pfades berechnet Die Ergebnisse von δ werden in SEQSCORE gespeichert Mit ψ wird der Vorgänger auf dem wahrscheinlichsten Pfad ermittelt Die Ergebnisse von ψ werden in BACKPTR gespeichert
Induktion Mit δ wird die Wahrscheinlichkeit des wahrscheinlichsten Pfades berechnet Die Ergebnisse von δ werden in SEQSCORE gespeichert Mit ψ wird der Vorgänger auf dem wahrscheinlichsten Pfad ermittelt Die Ergebnisse von ψ werden in BACKPTR gespeichert
Induktion Mit δ wird die Wahrscheinlichkeit des wahrscheinlichsten Pfades berechnet Die Ergebnisse von δ werden in SEQSCORE gespeichert Mit ψ wird der Vorgänger auf dem wahrscheinlichsten Pfad ermittelt Die Ergebnisse von ψ werden in BACKPTR gespeichert
Induktion δ δ i+1 (n j ) = max 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] n j : j-tes Tag im Tagset n k : Nachfolger von n j w i+1 : Wort an Position i+1 Um die zweite Zeile in SEQSCORE zu berechnen, setzt man in die Formel also folgendes ein: 0.14 P(flies Nom) P(Nom Nom) = 0.14 0.25 0.1 = 3, 5 10 3 Damit erhält man den Wert für flies, wenn es sich dabei um ein Nomen handelt.
Induktion δ δ i+1 (n j ) = max 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] n j : j-tes Tag im Tagset n k : Nachfolger von n j w i+1 : Wort an Position i+1 Um die zweite Zeile in SEQSCORE zu berechnen, setzt man in die Formel also folgendes ein: 0.14 P(flies Nom) P(Nom Nom) = 0.14 0.25 0.1 = 3, 5 10 3 Damit erhält man den Wert für flies, wenn es sich dabei um ein Nomen handelt.
Induktion δ δ i+1 (n j ) = max 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] n j : j-tes Tag im Tagset n k : Nachfolger von n j w i+1 : Wort an Position i+1 Um die zweite Zeile in SEQSCORE zu berechnen, setzt man in die Formel also folgendes ein: 0.14 P(flies Nom) P(Nom Nom) = 0.14 0.25 0.1 = 3, 5 10 3 Damit erhält man den Wert für flies, wenn es sich dabei um ein Nomen handelt.
Induktion δ, SEQSCORE SEQSCORE sieht dann so aus: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 (Time) 0.14 0.06 0 0 2 (flies) 3, 5 10 3 18.9 10 3 47.88 10 3 0 3 0 0 0 0 4 0 0 0 0
Induktion ψ Mit dieser Funktion wird der Vorgängerknoten gespeichert ψ i+1 (n j ) = argmax 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] argmax speichert das Vorgängerelement, das das Maximum in δ lieferte BACKPTR erhält diese Werte: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 (Time) 0 0 0 0 2 (flies) 1 1 1 0 3 0 0 0 0 4 0 0 0 0
Induktion ψ Mit dieser Funktion wird der Vorgängerknoten gespeichert ψ i+1 (n j ) = argmax 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] argmax speichert das Vorgängerelement, das das Maximum in δ lieferte BACKPTR erhält diese Werte: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 (Time) 0 0 0 0 2 (flies) 1 1 1 0 3 0 0 0 0 4 0 0 0 0
Induktion ψ Mit dieser Funktion wird der Vorgängerknoten gespeichert ψ i+1 (n j ) = argmax 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] argmax speichert das Vorgängerelement, das das Maximum in δ lieferte BACKPTR erhält diese Werte: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 (Time) 0 0 0 0 2 (flies) 1 1 1 0 3 0 0 0 0 4 0 0 0 0
Induktion ψ Mit dieser Funktion wird der Vorgängerknoten gespeichert ψ i+1 (n j ) = argmax 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] argmax speichert das Vorgängerelement, das das Maximum in δ lieferte BACKPTR erhält diese Werte: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 (Time) 0 0 0 0 2 (flies) 1 1 1 0 3 0 0 0 0 4 0 0 0 0
Induktionsschleife Diese Schritte werden wiederholt, bis die gesamte Eingabe analysiert worden ist.
Ende der Induktionsschleife I SEQSCORE: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 (Time) 0.14 0.06 0 0 2 (flies) 3, 5 10 3 18.9 10 3 47.88 10 3 0 3 (like) 0 0 2.87 10 3 21.55 10 3 4 (arrows) 3.77 10 3 0.27 10 3 0 0
Ende der Induktionsschleife II BACKPTR: 1 (Nom) 2 (NomC) 3 (Verb) 4 (Prep) 1 (Time) 0 0 0 0 2 (flies) 1.1 1.1 1.1 0 3 (like) 0 0 3.2 3.2 4 (arrows) 4.3 4.3 0 0 1.1 bedeutet: Nom gibt Time aus.
Terminierung Zuletzt wird mit Hilfe von BACKPTR der beste Pfad ausgegeben. In der letzen Zeile von SEQSCORE wird das höchste Ergebnis von δ gesucht. In unserem Beispiel: 3.77*10 3 Von hier aus kann der Algorithmus mit Hilfe von BACKPTR die Analyse des Satzes zurückverfolgen In unserem Beispiel: Time (Nom) flies (Verb) like (Prep) arrows (Nom).
Terminierung Zuletzt wird mit Hilfe von BACKPTR der beste Pfad ausgegeben. In der letzen Zeile von SEQSCORE wird das höchste Ergebnis von δ gesucht. In unserem Beispiel: 3.77*10 3 Von hier aus kann der Algorithmus mit Hilfe von BACKPTR die Analyse des Satzes zurückverfolgen In unserem Beispiel: Time (Nom) flies (Verb) like (Prep) arrows (Nom).
Terminierung Zuletzt wird mit Hilfe von BACKPTR der beste Pfad ausgegeben. In der letzen Zeile von SEQSCORE wird das höchste Ergebnis von δ gesucht. In unserem Beispiel: 3.77*10 3 Von hier aus kann der Algorithmus mit Hilfe von BACKPTR die Analyse des Satzes zurückverfolgen In unserem Beispiel: Time (Nom) flies (Verb) like (Prep) arrows (Nom).
Terminierung Zuletzt wird mit Hilfe von BACKPTR der beste Pfad ausgegeben. In der letzen Zeile von SEQSCORE wird das höchste Ergebnis von δ gesucht. In unserem Beispiel: 3.77*10 3 Von hier aus kann der Algorithmus mit Hilfe von BACKPTR die Analyse des Satzes zurückverfolgen In unserem Beispiel: Time (Nom) flies (Verb) like (Prep) arrows (Nom).
Algorithmus Datenstrukturen initialisieren for i=1 to N: SEQSCORE(i,1)=P(Time k i ) P(k i π) BACKPTR(i,1)=0 for i=1 to K: for j=1 to N: SEQSCORE(j,i+1)=max 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] BACKPTR(i,i+1)=argmax 1 k K [δ i (n k ) P(w i+1 n j ) P(n j n k )] for j=k to 1: Suche in SEQSCORE das höchste Ergebnis und verfolge dieses mit BACKPTR zurück. Ergebnis ausgeben
Weiterführend Allen, James (1995): Natural Language Unterstanding. 2 n d edition. Addison-Wesley Publishing Co. Haenelt, Karin: Der Viterbi-Algorithmus. Eine Erläuterung der formalen Spezifikationen am Beispiel des Part-of-Speech Tagging. Kursskript. 16.06.2007 http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-tutor.pdf Haenelt,Karin: Der Viterbi-Algorithmus im Part-of-Speech Tagging. Kursfolien. 16.06.2007. http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-algorithmus.pdf Manning, Christopher D. - Schütze, Hinrich (1999): Foundations of Statistical Natural Language Processing. Cambridge, Mass., London: The MIT Press Viterbi, Andrew J. (1967): Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. In: IEEE Transactions on Information Theory IT-13, S. 1260-1269. Wikipedia
Weiterführend Allen, James (1995): Natural Language Unterstanding. 2 n d edition. Addison-Wesley Publishing Co. Haenelt, Karin: Der Viterbi-Algorithmus. Eine Erläuterung der formalen Spezifikationen am Beispiel des Part-of-Speech Tagging. Kursskript. 16.06.2007 http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-tutor.pdf Haenelt,Karin: Der Viterbi-Algorithmus im Part-of-Speech Tagging. Kursfolien. 16.06.2007. http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-algorithmus.pdf Manning, Christopher D. - Schütze, Hinrich (1999): Foundations of Statistical Natural Language Processing. Cambridge, Mass., London: The MIT Press Viterbi, Andrew J. (1967): Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. In: IEEE Transactions on Information Theory IT-13, S. 1260-1269. Wikipedia
Weiterführend Allen, James (1995): Natural Language Unterstanding. 2 n d edition. Addison-Wesley Publishing Co. Haenelt, Karin: Der Viterbi-Algorithmus. Eine Erläuterung der formalen Spezifikationen am Beispiel des Part-of-Speech Tagging. Kursskript. 16.06.2007 http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-tutor.pdf Haenelt,Karin: Der Viterbi-Algorithmus im Part-of-Speech Tagging. Kursfolien. 16.06.2007. http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-algorithmus.pdf Manning, Christopher D. - Schütze, Hinrich (1999): Foundations of Statistical Natural Language Processing. Cambridge, Mass., London: The MIT Press Viterbi, Andrew J. (1967): Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. In: IEEE Transactions on Information Theory IT-13, S. 1260-1269. Wikipedia
Weiterführend Allen, James (1995): Natural Language Unterstanding. 2 n d edition. Addison-Wesley Publishing Co. Haenelt, Karin: Der Viterbi-Algorithmus. Eine Erläuterung der formalen Spezifikationen am Beispiel des Part-of-Speech Tagging. Kursskript. 16.06.2007 http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-tutor.pdf Haenelt,Karin: Der Viterbi-Algorithmus im Part-of-Speech Tagging. Kursfolien. 16.06.2007. http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-algorithmus.pdf Manning, Christopher D. - Schütze, Hinrich (1999): Foundations of Statistical Natural Language Processing. Cambridge, Mass., London: The MIT Press Viterbi, Andrew J. (1967): Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. In: IEEE Transactions on Information Theory IT-13, S. 1260-1269. Wikipedia
Weiterführend Allen, James (1995): Natural Language Unterstanding. 2 n d edition. Addison-Wesley Publishing Co. Haenelt, Karin: Der Viterbi-Algorithmus. Eine Erläuterung der formalen Spezifikationen am Beispiel des Part-of-Speech Tagging. Kursskript. 16.06.2007 http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-tutor.pdf Haenelt,Karin: Der Viterbi-Algorithmus im Part-of-Speech Tagging. Kursfolien. 16.06.2007. http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-algorithmus.pdf Manning, Christopher D. - Schütze, Hinrich (1999): Foundations of Statistical Natural Language Processing. Cambridge, Mass., London: The MIT Press Viterbi, Andrew J. (1967): Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. In: IEEE Transactions on Information Theory IT-13, S. 1260-1269. Wikipedia
Weiterführend Allen, James (1995): Natural Language Unterstanding. 2 n d edition. Addison-Wesley Publishing Co. Haenelt, Karin: Der Viterbi-Algorithmus. Eine Erläuterung der formalen Spezifikationen am Beispiel des Part-of-Speech Tagging. Kursskript. 16.06.2007 http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-tutor.pdf Haenelt,Karin: Der Viterbi-Algorithmus im Part-of-Speech Tagging. Kursfolien. 16.06.2007. http://kontext.fraunhofer.de/haenelt/kurs/folien/haenelt_viterbi-algorithmus.pdf Manning, Christopher D. - Schütze, Hinrich (1999): Foundations of Statistical Natural Language Processing. Cambridge, Mass., London: The MIT Press Viterbi, Andrew J. (1967): Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. In: IEEE Transactions on Information Theory IT-13, S. 1260-1269. Wikipedia