Cant load spacy en_core_web_trf
Asked Answered
U

4

15

As the self guide says, I've installed it with (conda environment)

conda install -c conda-forge spacy
python -m spacy download en_core_web_trf

I have spacy-transformers already installed. But when I simply do:

import spacy
spacy.load("en_core_web_trf")

It shows me this error:

ValueError: [E002] Can't find factory for 'transformer' for language English (en). This usually happens when spaCy calls `nlp.create_pipe` with a custom component name that's not registered on the current language class. If you're using a Transformer, make sure to install 'spacy-transformers'. If you're using a custom component, make sure you've added the decorator `@Language.component` (for function components) or `@Language.factory` (for class components).

Available factories: attribute_ruler, tok2vec, merge_noun_chunks, merge_entities, merge_subtokens, token_splitter, parser, beam_parser, entity_linker, ner, beam_ner, entity_ruler, lemmatizer, tagger, morphologizer, senter, sentencizer, textcat, spancat, textcat_multilabel, en.lemmatizer

More info about the error:

ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_11108/2648447056.py in <module>
----> 1 nlp_en = spacy.load("en_core_web_trf")

~\Anaconda3\envs\rl\lib\site-packages\spacy\__init__.py in load(name, vocab, disable, exclude, config)
     49     RETURNS (Language): The loaded nlp object.
     50     """
---> 51     return util.load_model(
     52         name, vocab=vocab, disable=disable, exclude=exclude, config=config
     53     )

~\Anaconda3\envs\rl\lib\site-packages\spacy\util.py in load_model(name, vocab, disable, exclude, config)
    345             return get_lang_class(name.replace("blank:", ""))()
    346         if is_package(name):  # installed as package
--> 347             return load_model_from_package(name, **kwargs)
    348         if Path(name).exists():  # path to model data directory
    349             return load_model_from_path(Path(name), **kwargs)

~\Anaconda3\envs\rl\lib\site-packages\spacy\util.py in load_model_from_package(name, vocab, disable, exclude, config)
    378     """
    379     cls = importlib.import_module(name)
--> 380     return cls.load(vocab=vocab, disable=disable, exclude=exclude, config=config)
    381 
    382 

~\Anaconda3\envs\rl\lib\site-packages\en_core_web_trf\__init__.py in load(**overrides)
      8 
      9 def load(**overrides):
---> 10     return load_model_from_init_py(__file__, **overrides)

~\Anaconda3\envs\rl\lib\site-packages\spacy\util.py in load_model_from_init_py(init_file, vocab, disable, exclude, config)
    538     if not model_path.exists():
    539         raise IOError(Errors.E052.format(path=data_path))
--> 540     return load_model_from_path(
    541         data_path,
    542         vocab=vocab,

~\Anaconda3\envs\rl\lib\site-packages\spacy\util.py in load_model_from_path(model_path, meta, vocab, disable, exclude, config)
    413     overrides = dict_to_dot(config)
    414     config = load_config(config_path, overrides=overrides)
--> 415     nlp = load_model_from_config(config, vocab=vocab, disable=disable, exclude=exclude)
    416     return nlp.from_disk(model_path, exclude=exclude, overrides=overrides)
    417 

~\Anaconda3\envs\rl\lib\site-packages\spacy\util.py in load_model_from_config(config, vocab, disable, exclude, auto_fill, validate)
    450     # registry, including custom subclasses provided via entry points
    451     lang_cls = get_lang_class(nlp_config["lang"])
--> 452     nlp = lang_cls.from_config(
    453         config,
    454         vocab=vocab,

~\Anaconda3\envs\rl\lib\site-packages\spacy\language.py in from_config(cls, config, vocab, disable, exclude, meta, auto_fill, validate)
   1712                     # The pipe name (key in the config) here is the unique name
   1713                     # of the component, not necessarily the factory
-> 1714                     nlp.add_pipe(
   1715                         factory,
   1716                         name=pipe_name,

~\Anaconda3\envs\rl\lib\site-packages\spacy\language.py in add_pipe(self, factory_name, name, before, after, first, last, source, config, raw_config, validate)
    774                     lang_code=self.lang,
    775                 )
--> 776             pipe_component = self.create_pipe(
    777                 factory_name,
    778                 name=name,

~\Anaconda3\envs\rl\lib\site-packages\spacy\language.py in create_pipe(self, factory_name, name, config, raw_config, validate)
    639                 lang_code=self.lang,
    640             )
--> 641             raise ValueError(err)
    642         pipe_meta = self.get_factory_meta(factory_name)
    643         # This is unideal, but the alternative would mean you always need to
Undry answered 1/10, 2021 at 13:32 Comment(3)
If you are getting that error, spacy-transformers is not installed, or it is installed in a different environment or something and cannot be found. Try installing it again.Astrogation
@Astrogation thank you for answering! I've reseted my pc and now it works, without touching anything. maybe the conda couldn't load properly before i truned off my pc?Undry
It sounds like maybe your PATH variable wasn't updated. As long as it works that's good though.Astrogation
A
12

Are you sure you did install spacy-transformers? After installing spacy?

I am using pip: pip install spacy-transformers and I have no problems loading the en_core_web_trf.

Aboulia answered 1/10, 2021 at 23:49 Comment(2)
thank you for answering! i had spacy-transformers installed. i reset my computer and now it works, don't know why before it doesn'tUndry
the package install command is actually "pip install spacy[transformers]", also on windows I also required a system reboot for everything to work.Epileptic
M
23

For anyone who tried this solution but still did not get it to work. Something that they did not mention (because it is trivial) but got me staring at it for ages was that after the

!pip install spacy-transformers

You still need to place

import spacy_transformers

at the top of your code.

Montoya answered 5/6, 2022 at 17:23 Comment(0)
A
12

Are you sure you did install spacy-transformers? After installing spacy?

I am using pip: pip install spacy-transformers and I have no problems loading the en_core_web_trf.

Aboulia answered 1/10, 2021 at 23:49 Comment(2)
thank you for answering! i had spacy-transformers installed. i reset my computer and now it works, don't know why before it doesn'tUndry
the package install command is actually "pip install spacy[transformers]", also on windows I also required a system reboot for everything to work.Epileptic
G
6
# !pip install spacy
# !pip install spacy-transformers
# !python3 -m spacy download en_core_web_trf

It's working fine, if you are working in google colab, use this

# !pip install spacy==(last version of spacy(3.2.4)) 

Remaining all are same, colab downloading the older version. Hope you get the answers!

Goebel answered 24/4, 2022 at 1:17 Comment(0)
T
1

I was facing the same error.

I just restarted my Notebook and that fixed the issue for me. Try doing the same and then try running the load.

Tinsmith answered 13/8 at 4:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.