D'après ce que j'ai vu, la formule de lissage (de second ordre) de Kneser-Ney est d'une manière ou d'une autre donnée comme
avec le facteur de normalisation donné comme
et la probabilité de continuation d'un mot
où est le nombre de contextes été vu dans ou, plus simplement, le nombre de mots distincts qui précèdent le mot donné . D'après ce que j'ai compris, la formule peut être appliquée de manière récursive.
Maintenant, cela gère bien les mots connus dans des contextes inconnus pour différentes longueurs de n-grammes, mais ce qu'il n'explique pas, c'est quoi faire quand il y a des mots hors du dictionnaire. J'ai essayé de suivre cet exemple qui indique que dans l'étape de récursivité pour les unigrammes, . Le document utilise ensuite cela - citant Chen et Goodman - pour justifier la formule ci-dessus comme .
Cependant, je ne vois pas comment cela fonctionne en présence d'un mot inconnu . Dans ces cas, car, évidemment, le mot inconnu ne continue rien concernant l'ensemble d'apprentissage. De même, le nombre de n-grammes va être .
De plus, le terme entier peut être nul si une séquence de mots inconnus - disons, un trigramme de mots OOD - est rencontrée.
Qu'est-ce que je rate?
Réponses:
Dan Jurafsky a publié un chapitre sur les modèles N-Gram qui parle un peu de ce problème:
J'ai essayé de comprendre ce que cela signifie, mais je ne sais pas si signifie simplement . Si tel est le cas et que vous supposez que lorsque le nombre atteint zéro, peut-être passe à , selon:lim x → 0 x λ ( ϵ ) dϵ limx → 0X λ ( ϵ ) ré
alors le mot inconnu ne reçoit qu'une fraction de la remise, c'est-à-dire:
Je ne suis pas du tout sûr de cette réponse, mais je voulais la diffuser au cas où cela susciterait d'autres réflexions.
Mise à jour: En fouillant un peu plus, il semble que soit généralement utilisé pour désigner la chaîne vide (""), mais on ne sait toujours pas comment cela affecte le calcul de . est toujours ma meilleure estimationλ dϵ λ ré| V|
la source
Il existe de nombreuses façons de former un modèle,
<UNK>
bien que Jurafsky suggère de choisir ces mots qui apparaissent très peu de fois dans la formation et de les changer simplement en<UNK>
.Ensuite, entraînez simplement les probabilités comme vous le feriez normalement.
Voir cette vidéo à partir de 3:40 -
https://class.coursera.org/nlp/lecture/19
Une autre approche consiste à considérer simplement un mot comme
<UNK>
la toute première fois qu'il est vu dans la formation, bien que d'après mon expérience, cette approche attribue trop de masse de probabilité à<UNK>
.la source
Juste quelques réflexions, je suis loin d'être un expert en la matière donc je n'ai pas l'intention de répondre à la question mais de l'analyser.
La chose simple à faire serait de calculer en forçant la somme à un. Ceci est raisonnable car la chaîne vide n'est jamais vue dans l'ensemble d'apprentissage (rien ne peut être prédit à partir de rien) et la somme doit être une. Si tel est le cas, peut être estimé par: Rappelez-vous qu'ici est obtenu à partir du modèle bigramme.λ ( ϵ )λ ( ϵ ) λ ( ϵ )
Une autre option serait d'estimer la
<unk>
probabilité avec les méthodes mentionnées par Randy et de la traiter comme un jeton régulier.Je pense que cette étape est faite pour s'assurer que les formules sont cohérentes. Notez que le terme ne dépend pas du contexte et attribue des valeurs fixes aux probabilités de chaque jeton. Si vous souhaitez prédire le mot suivant, vous pouvez annuler ce terme, d'autre part, si vous souhaitez comparer la probabilité de Kneser - Ney attribuée à chaque jeton dans deux ou plusieurs contextes différents, vous pouvez l'utiliser.λ ( ϵ )| V|
la source