web-dev-qa-db-fra.com

Comment configurer le répertoire de données nltk à partir du code?

Comment configurer le répertoire de données nltk à partir du code?

71
Juanjo Conti

Modifiez simplement les éléments de nltk.data.path, c'est une simple liste.

62
Tim McNamara

À partir du code, http://www.nltk.org/_modules/nltk/data.html :

``nltk:path``: Specifies the file stored in the NLTK data
 package at *path*.  NLTK will search for these files in the
 directories specified by ``nltk.data.path``.

Puis dans le code:

######################################################################
# Search Path
######################################################################

path = []
"""A list of directories where the NLTK data package might reside.
   These directories will be checked in order when looking for a
   resource in the data package.  Note that this allows users to
   substitute in their own versions of resources, if they have them
   (e.g., in their home directory under ~/nltk_data)."""

# User-specified locations:
path += [d for d in os.environ.get('NLTK_DATA', str('')).split(os.pathsep) if d]
if os.path.expanduser('~/') != '~/':
    path.append(os.path.expanduser(str('~/nltk_data')))

if sys.platform.startswith('win'):
    # Common locations on Windows:
    path += [
        str(r'C:\nltk_data'), str(r'D:\nltk_data'), str(r'E:\nltk_data'),
        os.path.join(sys.prefix, str('nltk_data')),
        os.path.join(sys.prefix, str('lib'), str('nltk_data')),
        os.path.join(os.environ.get(str('APPDATA'), str('C:\\')), str('nltk_data'))
    ]
else:
    # Common locations on UNIX & OS X:
    path += [
        str('/usr/share/nltk_data'),
        str('/usr/local/share/nltk_data'),
        str('/usr/lib/nltk_data'),
        str('/usr/local/lib/nltk_data')
    ]

Pour modifier le chemin, ajoutez simplement à la liste des chemins possibles:

import nltk
nltk.data.path.append("/home/yourusername/whateverpath/")

Ou dans les fenêtres:

import nltk
nltk.data.path.append("C:\somewhere\farfar\away\path")
39
alvas

J'utilise append, exemple

nltk.data.path.append('/libs/nltk_data/')
23
bahlum

Au lieu d'ajouter nltk.data.path.append('your/path/to/nltk_data') à chaque script, NLTK accepte la variable d'environnement NLTK_DATA. ( lien de code )

Ouvrir ~/.bashrc (ou ~/.profile) avec l'éditeur de texte (par exemple nano, vim, gedit), et ajoutez la ligne suivante:

export NLTK_DATA="your/path/to/nltk_data"

Exécutez source pour charger la variable d'environnement

source ~/.bashrc


Tester

Ouvrez python et exécutez les lignes suivantes

import nltk
nltk.data.path

Vous pouvez voir votre chemin de données nltk déjà dedans.

Référence: @ alvations's answer on nltk/nltk # 1997

6
fnjn

Pour ceux qui utilisent uwsgi:

J'avais des problèmes parce que je voulais qu'une application uwsgi (fonctionnant avec un utilisateur différent de moi) ait accès aux données nltk que j'avais précédemment téléchargées. Ce qui a fonctionné pour moi, c'est d'ajouter la ligne suivante à myapp_uwsgi.ini:

env = NLTK_DATA=/home/myuser/nltk_data/

Cela définit la variable d'environnement NLTK_DATA, comme suggéré par @schemacs.
Vous devrez peut-être redémarrer votre processus uwsgi après avoir effectué cette modification.

1
danyamachine

Une autre solution est de prendre de l'avance.

essayez d'importer nltk nltk.download ()

Lorsque la fenêtre apparaît et vous demande si vous souhaitez télécharger le corpus, vous pouvez spécifier dans quel répertoire il doit être téléchargé.

0
Steve