Corriger l’erreur AttributeError: ‘spacy.tokens.doc.Doc’ object has no attribute ‘pos_’

0

Cause de l’erreur

L’erreur “AttributeError: ‘spacy.tokens.doc.Doc’ object has no attribute ‘pos_'” se produit lorsqu’on essaie d’accéder à l’attribut ‘pos_’ d’un objet Doc dans Spacy, mais que cet attribut n’existe pas pour cet objet. Cela peut se produire pour plusieurs raisons, notamment si l’on essaie d’accéder à ‘pos_’ pour un objet qui n’a pas été correctement traité par Spacy, ou si l’on essaie d’accéder à ‘pos_’ pour un objet qui n’a pas été traité pour les parties du discours.

Correction de l’erreur

Il existe plusieurs solutions pour corriger cette erreur en fonction de la cause sous-jacente.

Vérifier que le document a été correctement traité

Si le document n’a pas été correctement traité par Spacy, l’attribut ‘pos_’ ne sera pas disponible. Pour résoudre ce problème, assurez-vous que le document a été correctement initialisé en utilisant le modèle de langue Spacy approprié et que le pipeline Spacy a été correctement appliqué au document. Vous pouvez utiliser la méthode nlp.pipe() pour appliquer le pipeline Spacy à une liste de documents, comme suit :

python
import spacy

nlp = spacy.load("fr_core_news_sm")
docs = list(nlp.pipe(texts))

Vérifier que le document a été traité pour les parties du discours

Si le document a été correctement traité par Spacy, mais que l’attribut ‘pos_’ n’est toujours pas disponible, cela peut signifier que le traitement du document pour les parties du discours n’a pas été inclus dans le pipeline Spacy. Vous pouvez résoudre ce problème en incluant le traitement pour les parties du discours dans le pipeline, comme suit :

python
import spacy

nlp = spacy.load("fr_core_news_sm")
nlp.add_pipe(nlp.create_pipe('sentencizer'), before='parser')
nlp.add_pipe(nlp.create_pipe('tagger'), after='sentencizer')
nlp.add_pipe(nlp.create_pipe('parser'), after='tagger')
docs = list(nlp.pipe(texts))

Vérifier l’orthographe de l’attribut

Enfin, il est également possible que l’attribut ait été mal orthographié. Vérifiez l’orthographe de l’attribut pour vous assurer qu’il est correct.

Conseils pour éviter cette erreur

  • Assurez-vous que le document a été correctement initialisé en utilisant le modèle de langue Spacy approprié et que le pipeline Spacy a été correctement appliqué au document.
  • Incluez le traitement pour les parties du discours dans le pipeline Spacy si vous devez accéder à l’attribut ‘pos_’.
  • Vérifiez l’orthographe de l’attribut avant de l’utiliser.
  • Gardez à l’esprit que l’attribut ‘pos_’ n’est pas disponible pour tous les objets Doc dans Spacy.