web-dev-qa-db-fra.com

SpaCy: Comment obtenir le nom du modèle Spacy?

Il n'apparaît pas dans pip list

zeke$ pip list | grep spacy
spacy (1.7.3)

Comment puis-je obtenir le nom du modèle?


J'ai essayé mais ça ne marche pas

echo "spaCy model:"
python3 -m sputnik --name spacy find

Génère cette erreur:

zeke$ python3 -m sputnik --name spacy find
Traceback (most recent call last):
  File "/Users/zeke/anaconda/lib/python3.5/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/Users/zeke/anaconda/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/__main__.py", line 28, in <module>
    main()
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/__main__.py", line 12, in main
    args.run(args)
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/cli.py", line 89, in run
    data_path=args.data_path)
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/__init__.py", line 114, in find
    obj = cls(app_name, app_version, expand_path(data_path))
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/pool.py", line 19, in __init__
    super(Pool, self).__init__(app_name, app_version, path, **kwargs)
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/package_list.py", line 33, in __init__
    self.load()
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/package_list.py", line 51, in load
    for package in self.packages():
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/package_list.py", line 47, in packages
    yield self.__class__.package_class(path=os.path.join(self.path, path))
  File "/Users/zeke/anaconda/lib/python3.5/site-packages/sputnik/package.py", line 15, in __init__
    super(Package, self).__init__(defaults=meta['package'])
KeyError: 'package'

Le gestionnaire de packages sputnik est obsolète à partir de la version 1.7.0 de spaCy. Dans votre version, vous devriez pouvoir voir tous les modèles installés/liés à l'aide de spacy info:

python -m spacy info     # info about spaCy and installed models
python -m spacy info en  # info about model with the shortcut link 'en'

Toutes les méta du modèle sont également exposées en tant qu'attribut meta de la classe Language, donc à partir de votre script, vous pouvez faire:

nlp = spacy.load('en') # or any other model
print(nlp.meta['name'])

Si vous avez téléchargé des modèles via la nouvelle commande download de spaCy, ils seront installés sous forme de packages pip. Cela signifie qu'ils devraient apparaître lorsque vous exécutez pip list ou pip freeze à partir du même environnement.

Notez que les modèles ne sont pas téléchargés automatiquement lorsque vous installez spaCy, vous devez donc les télécharger séparément (voir la documentation pour une liste des modèles disponibles):

python -m spacy download en              # default English model (~50MB)
python -m spacy download en_core_web_md  # larger English model (~1GB)
34
Ines Montani