OSError: [E050] Can't find model 'en'
Asked Answered
A

7

5

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.
Alsatia answered 23/9, 2019 at 6:51 Comment(3)
Have you installed models separately ? Because that models are not downloaded automatically when you install spaCy.Lincolnlincolnshire
which models exactly should be downloaded ?Alsatia
you can download en_core_web_md and en using python spacy download like mentioned in the answer belowLincolnlincolnshire
B
3

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
Banditry answered 21/9, 2020 at 4:59 Comment(0)
A
10

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

Afghan answered 23/9, 2019 at 7:13 Comment(5)
when executing "python -m download en_core_web_sm " in cmd, it displayed that the requirements are already satisfied and when running "spacy.load("en_core_web_sm") , it displayed that spacy.load is not recognized as an internal or external command, operatable program or batch file " , neither did , "nlp=spacy.load("en_core_web_sm") worked , it also displayed the same error that nlp is not recognized ."Alsatia
try this first pip install -U spacy && python -m spacy download en and then try to run the program .Lincolnlincolnshire
Download successful but linking failed Creating a shortcut link for 'en' didn't workAlsatia
this is the error which i am getting now , but i am running from admin account onlyAlsatia
try doing spacy_nlp = spacy.load("en_core_web_sm") just after import sysAfghan
T
6

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.

Tradespeople answered 2/11, 2019 at 10:49 Comment(0)
A
4

Try using the following command:

spacy.cli.download("en")

nlp = spacy.load('en_core_web_sm')
Adkinson answered 13/10, 2020 at 5:2 Comment(2)
Welcome to Stack Overflow! When answering an old question having an accepted answer ensure your answer adds something substantial new or is otherwise helpful in relation to it. Don't answer if that's not the case. (I think your answer is already covered in the first comment under the question.)Metabolize
Thanks for the suggestion @Timus. But the answer covered in first comment didn't really worked for me as shown in the below [screenshot][1] [1]: i.sstatic.net/pTGzt.jpgAdkinson
B
3

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
Banditry answered 21/9, 2020 at 4:59 Comment(0)
G
2

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

Gaylegayleen answered 29/3, 2021 at 0:4 Comment(0)
R
1

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.

Royo answered 6/8, 2020 at 9:39 Comment(0)
C
0

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
Conservatism answered 11/7, 2023 at 8:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.