J'ai trouvé ce code ci-dessous de Kaggel, chaque fois que j'exécute le code obtient ValueError. Ceci est à cause de la nouvelle version de Spacy. S'il vous plaît Aide Merci d'avance
import scispacy
import spacy
import en_core_sci_lg
from spacy_langdetect import LanguageDetector
nlp = en_core_sci_lg.load(disable=["tagger", "ner"])
nlp.max_length = 2000000
nlp.add_pipe(LanguageDetector(), name='language_detector', last=True)
ValueError: [E966] nlp.add_pipe
Prend maintenant le nom de la chaîne de l'usine de composant enregistré, pas un composant appelable. Chaîne attendue, mais got <spacy_langdetect.spacy_langdetect.Langugedetector objet à 0x00000216BB4C8D30> (Nom: 'Language_Detector').
Si vous avez créé votre composant avec nlp.create_pipe('name')
: supprimer nlp.create_pipe et appelez nlp.add_pipe('name')
à.
Si vous avez passé dans un composant comme TextCategorizer()
: appelez nlp.add_pipe
Avec le nom de la chaîne, par exemple. nlp.add_pipe('textcat')
.
Si vous utilisez un composant personnalisé: ajoutez le décorateur @Language.component
(Pour les composants de la fonction) ou @Language.factory
(Pour les composants/usines de classe) sur votre composant personnalisé et attribuez-lui un nom, par exemple @Language.component('your_name')
. Vous pouvez ensuite exécuter nlp.add_pipe('your_name')
pour l'ajouter au pipeline.
J'ai installé:
scispacy.version: '0.4.0'
eN_CORE_SCI_LG.VERSION: '0.4.0'
python_version: 3.8.5
spacy.Version: '3.0.3'
Vous pouvez également utiliser un @Language.factory
décorateur pour obtenir le même résultat avec moins de code:
import scispacy
import spacy
import en_core_sci_lg
from spacy_langdetect import LanguageDetector
from spacy.language import Language
@Language.factory('language_detector')
def language_detector(nlp, name):
return LanguageDetector()
nlp = en_core_sci_lg.load(disable=["tagger", "ner"])
nlp.max_length = 2000000
nlp.add_pipe('language_detector', last=True)