OSError: [E050] Can't find model 'en'

17.2k views Asked by At

I am trying to use this pytextrank library of python- https://github.com/DerwenAI/pytextrank/blob/master/example.ipynb but i am unable to resolve this error , earlier i was getting an error that ip.json can't be found, but then was resolved

    import pytextrank
    import sys
    path_stage0="data/ip.json" 
    path_stage1="o1.json"

    with open(path_stage1,'w') as f:
        for graf in pytextrank.parse_doc(pytextrank.json_iter(path_stage0)):
            f.write("%s\n" % pytextrank.pretty_print(graf._asdict()))
            print(pytextrank.pretty_print(graf))


    OSError                                   Traceback (most recent call last)
    <ipython-input-12-a20b437ea0f1> in <module>
          6 
          7 with open(path_stage1,'w') as f:
    ----> 8     for graf in pytextrank.parse_doc(pytextrank.json_iter(path_stage0)):
          9         f.write("%s\n" % pytextrank.pretty_print(graf._asdict()))
         10         print(pytextrank.pretty_print(graf))

~\Anaconda3\lib\site-packages\pytextrank\pytextrank.py in parse_doc(json_iter)
    259                 print("graf_text:", graf_text)
    260 
--> 261             grafs, new_base_idx = parse_graf(meta["id"], graf_text, base_idx)
    262             base_idx = new_base_idx
    263 

~\Anaconda3\lib\site-packages\pytextrank\pytextrank.py in parse_graf(doc_id, graf_text, base_idx, spacy_nlp)
    185     if not spacy_nlp:
    186         if not SPACY_NLP:
--> 187             SPACY_NLP = spacy.load("en")
    188 
    189         spacy_nlp = SPACY_NLP

~\Anaconda3\lib\site-packages\spacy\__init__.py in load(name, **overrides)
     25     if depr_path not in (True, False, None):
     26         deprecation_warning(Warnings.W001.format(path=depr_path))
---> 27     return util.load_model(name, **overrides)
     28 
     29 

~\Anaconda3\lib\site-packages\spacy\util.py in load_model(name, **overrides)
    137     elif hasattr(name, "exists"):  # Path or Path-like to model data
    138         return load_model_from_path(name, **overrides)
--> 139     raise IOError(Errors.E050.format(name=name))
    140 
    141 

OSError: [E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.
7

There are 7 answers

0
Yashraj Nigam On BEST ANSWER

Solved error on notebook using:

!python -m spacy download en_core_web_md

You can download packages as per your requirements like:

!python -m spacy download en_core_web_sm'

or

!python -m spacy download en_core_web_lg
2
Chamodi Lokuge On

Try using the following command:

spacy.cli.download("en")

nlp = spacy.load('en_core_web_sm')
0
Paco On

The model names changed, so en_core_web_sm or another model needed to be downloaded. That issue is resolved in the v1.2.1 release which updates to spaCy 2.x.

0
KingLiu On

here is my solution:

First, install the en_core_web package

pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.5.0/en_core_web_sm-3.5.0-py3-none-any.whl

Then, instead of using spacy as before:

import spacy
nlp = spacy.load('en_core_web_sm')

doc = nlp(text)
xxxxxxx

just use the installed package to act as the nlp processor like this

import en_core_web_sm
nlp = en_core_web_sm.load()

doc = nlp(text)
xxxxxxx
0
Muhammad Asaduzzaman On

I solve the problem as follows.

Problem: I issued the following command:

pip install spacy

python -m spacy download en_core_web_lg

Then in the python console, when I used spacy.load("en_core_web_lg"), I received the following error: "Can't find model 'en_core_web_lg'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory."

Solution:

  1. First, issue the 'which python' command to find the python installation used by your program. (Example of output: .../venv/bin/python)
  2. Inside the lib folder (located in the same level where the 'bin' folder is located), there should be a 'site-packages/spacy' folder. Go to the 'spacy/data' folder. Inside the 'site-packages, a folder was created (e.g., en_core_web_lg or en_core_web_sm) when you download the model. Create a symbolic link to the downloaded model folder as follows: ln -s LOCATION_TO_MODEL THE_MODEL_NAME_YOU_WANT_TO_USE (Example: ln -s .../venv/lib/python3.5/site-packages/en_core_web_lg
    en_core_web_lg en_core_web_lg)
  3. A symbolic link with the name 'en_core_web_lg' is created.
  4. spacy.load("en_core_web_lg") command is now working. The name passed as the argument now point to the correct location of the model

More about the symbolic link can be found here: https://askubuntu.com/questions/56339/how-to-create-a-soft-or-symbolic-link

5
cerofrais On

when using spacy we have to download the model using

python -m spacy download en_core_web_sm

If you have already done that make sure you have shortcut link assigned properly. meaning simlink between 'en' and 'en_core_web_sm'

easy hack that worked when i am working directly with spacy

nlp = spacy.load("en_core_web_sm")

more help at https://spacy.io/usage/models

0
fedorqui On

To me, the problem was solved by installing the en package:

python -m spacy download en

I was getting the following error:

OSError: [E050] Can't find model 'en_core_web_sm'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.