Python - Error de ChatterBot - OSError: [E941] No se puede encontrar el modelo

CorePress2024-01-25  9

Intenté ejecutar mi primer programa Chatterbot (es desde la página PyPi de Chatterbot) y cuando lo ejecuto, aparece un error. El error está relacionado con Spacy, pero no puedo encontrar una solución.

Aquí está el código:

from chatterbot.trainers import ChatterBotCorpusTrainer

chatbot = ChatBot('Ron Obvious')

trainer = ChatterBotCorpusTrainer(chatbot)

trainer.train("chatterbot.corpus.english")

chatbot.get_response("Hello, how are you today?")

Y aquí está el error:

Traceback (most recent call last):
  File "c:/users/USER/desktop/bot.py", line 77, in <module>
    chatbot = ChatBot('Ron Obvious')
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\chatterbot.py", line 28, in __init__
    self.storage = utils.initialize_class(storage_adapter, **kwargs)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\utils.py", line 33, in initialize_class
    return Class(*args, **kwargs)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\storage\sql_storage.py", line 20, in __init__
    super().__init__(**kwargs)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\storage\storage_adapter.py", line 21, in __init__
    'tagger_language', languages.ENG
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py", line 13, in __init__
    self.nlp = spacy.load(self.language.ISO_639_1.lower())
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\spacy\__init__.py", line 47, in load
    return util.load_model(name, disable=disable, exclude=exclude, config=config)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\spacy\util.py", line 328, in load_model
    raise IOError(Errors.E941.format(name=name, full=OLD_MODEL_SHORTCUTS[name]))
OSError: [E941] Can't find model 'en'. It looks like you're trying to load a model from a shortcut, which is deprecated as of spaCy v3.0. To load the model, use its full name instead:

nlp = spacy.load("en_core_web_sm")

For more details on the available models, see the models directory: https://spacy.io/models. If you want to create a blank model, use spacy.blank: nlp = spacy.blank("en")

Sería útil si alguien encontrara una solución para esto. Gracias.

2

Una de las posibles soluciones es degradar spacy a una versión 2.x, como pip install -U spacy==2.1.3

– Wiktor Stribiżew

7 de febrero de 2021 a las 11:59

2

Es posible que tengas que realizar la descarga de python -m spacy en_core_web_sm antes de usarlo.

- aneroide

7 de febrero de 2021 a las 12:21



------------------------------------

Asegúrese de tener instalado el modelo spacy correcto. Por ejemplo, instale en_core_web_sm con el comando python -m spacy download en_core_web_sm en la terminal.

Next, corrige este error:

File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py", line 13, in __init__
    self.nlp = spacy.load(self.language.ISO_639_1.lower())

Es decir,

Abra el archivo C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py Ir a la línea 13 Reemplace self.nlp = spacy.load(self.language.ISO_639_1.lower()) con
if self.language.ISO_639_1.lower() == 'en':
    self.nlp = spacy.load('en_core_web_sm')
else:
    self.nlp = spacy.load(self.language.ISO_639_1.lower())

Deberás agregar más condiciones para otros idiomas que necesites admitir.

2

¡Gracias gran ayuda!

-Ezequiel Miceli

16/07/2021 a las 21:30

@EzequielMiceli ¡De nada!

– Wiktor Stribišew

16 de julio de 2021 a las 21:46



------------------------------------

Comprueba la versión de spacy que estás utilizando.

Instala spacy y descarga el modelo de lenguaje, en_core_web_sm, en este caso usando

 python -m spacy download en_core_web_sm

Si es v3.0, necesitarás cargarlo usando

nlp = spacy.load("en_core_web_sm")

Si es < v3.0, puedes vincular el modelo creando un acceso directo usando

python -m spacy link en_core_web_sm en

y así cargarlo usando nlp = spacy.load("en")

1

Sigo teniendo el mismo problema. Creo que lo mejor que se puede hacer [al momento de escribir este artículo] es cambiar a una versión inferior de spacy (tal vez a la versión 2.1.3). Luego, vuelva a descargar en_core_web_sm usando este comando python -m spacy download en_core_web_sm. Esto debería darte en_core_web_sm==2.1.0 y luego podrás aplicar el enlace (es decir, python -m spacy link en_core_web_sm en)

- Alvindera97

19/04/2022 a las 22:43



------------------------------------

EnAdemás de los otros comentarios, tenga en cuenta un problema con SpaCy 3.0.3 y Python 3.8: si estas son las versiones que está utilizando, es posible que deba descargar el modelo de lenguaje a través del shell de Python, por ejemplo:

import spacy
from spacy.cli.download import download
download(model="en_core_web_sm")

Para estas versiones, la descarga a través de python -m spacy download en_core_web_sm puede generar excepciones, como se describe por ej. aquí.

Respondido

9 de marzo de 2021 a las 10:44

zuzaanto

zuzaanto

53

4

4 insignias de bronce



------------------------------------

Primero, necesitas descargar en_core_web_sm ejecutando: python -m spacy download en_core_web_sm

Necesitas modificar el siguiente código.

ingrese la descripción de la imagen aquí



------------------------------------

Intenta instalar spacy con >>pip install -U spacy

Y cambia el código

self.nlp = spacy.load(self.language.ISO_639_1.lower()) 

en "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py" a

  if self.language.ISO_639_1.lower() == 'en':
     self.nlp = spacy.load('en_core_web_sm')
  else:
    self.nlp = spacy.load(self.language.ISO_639_1.lower()) 

Consígueme trabajo aquí y tuve el mismo problema

0



------------------------------------

Para usuarios de Linux y Mac:

A la respuesta más votada anterior agregaré que la ubicación de tagging.py es:

/usr/local/lib/python3.7/site-packages/chatterbot

Para ser más precisos:

<Install_path_of_Python>/site-packages/chatterbot

(La ruta de instalación también podría ser la ruta de su entorno virtual)

Respondido

27 de febrero de 2022 a las 17:16

eriknau

eriknau

1

1

Su respuesta podría mejorarse con información de respaldo adicional. Edite para agregar más detalles, como citas o documentación, para que otros puedan confirmar que su respuesta es correcta. Puedes encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.

Comunidad

Bot

27/02/2022 a las 17:40



------------------------------------

Intenta instalar spacy con pip install -U spacy

Y cambia el código

self.nlp = spacy.load(self.language.ISO_639_1.lower()) 

en C:\Usarrs\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py a

if self.language.ISO_639_1.lower() == 'en':
   self.nlp = spacy.load('en_core_web_sm')
else:
  self.nlp = spacy.load(self.language.ISO_639_1.lower()) 
Respondido

16 de agosto de 2022 a las 16:46

juan cheda

juan cheda

1



------------------------------------

si la descarga del paquete no funciona de la siguiente manera:

python -m spacy descargar en_core_web_sm

entonces no necesitas cambiar el código en el paquete, solo cambia la causa.

desde idiomas de importación de chatterbot

idiomas.ENG.ISO_639_1 = "en_core_web_sm"

cambiará "en" a "en_core_web_sm" para espacio



------------------------------------

Asegúrese de tener instalado el modelo spacy correcto. Por ejemplo, instale en_core_web_sm con el comando python -m spacy download en_core_web_sm en la terminal.

A continuación, solucione este error:

File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py", line 13, in __init__

> `self.nlp = spacy.load(self.language.ISO_639_1.lower())`

Es decir,

Abra el archivo C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py

Ir a la Línea 13

Reemplazar

self.nlp = spacy.load(self.language.ISO_639_1.lower())

con

if self.language.ISO_639_1.lower() == 'en':
    self.nlp = spacy.load('en_core_web_sm')
else:
    self.nlp = spacy.load(self.language.ISO_639_1.lower())

Necesitarás agregar más condiciones para otroser idiomas que necesitas admitir.

Me está funcionando, ¡lo recomendé!

Respondido al

4 de junio de 2023 a las 16:57

Zeeshan

Zeeshan

1

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare