Mots inconnus dans une incorporation de mots entraînés (Gensim) à utiliser dans Keras
J'entraîne une incorporation de mots à l'aide de GENSIM (word2vec) et j'utilise le modèle entraîné dans un réseau de neurones dans KERAS. Un problème survient lorsque j'ai un mot inconnu (hors vocabulaire), de sorte que le réseau de neurones ne fonctionne plus car il ne peut pas trouver de poids pour ce mot spécifique. Je pense qu'une façon de résoudre ce problème est d'ajouter un nouveau mot ( <unk>
) au mot pré-formé incorporant avec des poids zéro (ou peut-être des poids aléatoires? Lequel est le meilleur?) Cette approche est-elle correcte? De plus, pour ce mot incorporant, les poids ne peuvent pas être entraînés dans ce réseau neuronal.
Réponses
Le plus typique est d'ignorer les mots inconnus. (Les remplacer par un mot d'extension ou le vecteur d'origine est plus déformant.)
Vous pouvez également envisager d'entraîner un FastText
mode à la place, qui synthétisera toujours un vecteur de supposition pour un mot hors vocabulaire, à partir des vecteurs caractère-n-gramme créés pendant la formation. (Ces vecteurs synthétiques sont souvent meilleurs que rien, surtout lorsqu'un mot a des racines de mots qui se chevauchent avec des mots apparentés - mais obtenir plus de données d'entraînement avec des exemples de tous les usages de mots pertinents est préférable, et ignorer simplement les mots inconnus rares n'est pas si mal.)