J'essaye actuellement d'implémenter l'algorithme de viterbi en python, plus précisément la version présentée dans un cours en ligne. En l'état, l'algorithme est présenté de la façon suivante: étant donné une phrase avec K jetons, nous devons générer des K tags.Essayer de mieux comprendre l'algorithme de VITERBI
Nous supposons que balise K-1 = étiquette K-2 = '*', alors pour k allant de 0 à K, nous avons mis la balise pour le jeton comme suit: tag (WORD_k) = arg (p (k-1, tag_k-2, tag_k-1) * e (mot_k, tag_k) * q (tag_k, tag_k-1, tag_k-1))
D'après ce que je comprends c'est simple car les paramètres p sont déjà calculé sur chaque étape (on passe de 1 en avant, et on sait déjà p0), et max pour les params e et q peuvent être calculés par une itération à travers les tags (puisque nous ne pouvons pas trouver 2 tags différents, nous fondamentalement doit trouver l'étiquette T pour laquelle le produit q * e est maximal, et renvoyer cela). Cela économise beaucoup de temps, puisque nous sommes presque au temps linéaire en termes de notation O, au lieu de complexité exponentielle, ce que nous obtiendrions si nous parcourions toutes les combinaisons mot/étiquette possibles. Est-ce que j'obtiens le noyau de l'algorithme correctement ou est-ce que je rate quelque chose?
Merci à l'avance