Lorsque vous essayez de charger le tokenizer punkt
...
import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')
... un LookupError
a été soulevé:
> LookupError:
> *********************************************************************
> Resource 'tokenizers/punkt/english.pickle' not found. Please use the NLTK Downloader to obtain the resource: nltk.download(). Searched in:
> - 'C:\\Users\\Martinos/nltk_data'
> - 'C:\\nltk_data'
> - 'D:\\nltk_data'
> - 'E:\\nltk_data'
> - 'E:\\Python26\\nltk_data'
> - 'E:\\Python26\\lib\\nltk_data'
> - 'C:\\Users\\Martinos\\AppData\\Roaming\\nltk_data'
> **********************************************************************
J'ai eu le même problème. Allez dans un python Shell et tapez:
>>> import nltk
>>> nltk.download()
Ensuite, une fenêtre d'installation apparaît. Allez dans l'onglet 'Modèles' et sélectionnez 'punkt' dans la colonne 'Identifiant'. Cliquez ensuite sur Télécharger et les fichiers nécessaires seront installés. Alors ça devrait marcher!
import nltk
nltk.download('punkt')
from nltk import Word_tokenize,sent_tokenize
Utilisez des jetons :)
C'est ce qui a fonctionné pour moi tout à l'heure:
# Do this in a separate python interpreter session, since you only have to do it once
import nltk
nltk.download('punkt')
# Do this in your ipython notebook or analysis script
from nltk.tokenize import Word_tokenize
sentences = [
"Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very Nice fellow.",
"Professor Plum has a green plant in his study.",
"Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]
sentences_tokenized = []
for s in sentences:
sentences_tokenized.append(Word_tokenize(s))
phrases_tokenized est une liste d'une liste de jetons:
[['Mr.', 'Green', 'killed', 'Colonel', 'Mustard', 'in', 'the', 'study', 'with', 'the', 'candlestick', '.', 'Mr.', 'Green', 'is', 'not', 'a', 'very', 'Nice', 'fellow', '.'],
['Professor', 'Plum', 'has', 'a', 'green', 'plant', 'in', 'his', 'study', '.'],
['Miss', 'Scarlett', 'watered', 'Professor', 'Plum', "'s", 'green', 'plant', 'while', 'he', 'was', 'away', 'from', 'his', 'office', 'last', 'week', '.']]
Les phrases ont été tirées de l'exemple cahier ipython accompagnant le livre "Mining the Social Web, 2nd Edition"
À partir de la ligne de commande bash, exécutez:
$ python -c "import nltk; nltk.download('punkt')"
Simple nltk.download()
ne résoudra pas ce problème. J'ai essayé le ci-dessous et cela a fonctionné pour moi:
dans le dossier nltk
, créez un dossier tokenizers
et copiez-le dans le dossier punkt
dans le dossier tokenizers
.
Cela fonctionnera.! la structure du dossier doit être comme dans l'image! 1
nltk a ses modèles de tokenizer pré-formés. Le modèle est en cours de téléchargement à partir de sources Web prédéfinies en interne et est stocké dans le chemin du package nltk installé lors de l'exécution des appels de fonction possibles.
Par exemple. 1 tokenizer = nltk.data.load ('nltk: tokenizers/punkt/english.pickle')
Par exemple. 2 nltk.download ('punkt')
Si vous appelez la phrase ci-dessus dans votre code, assurez-vous de disposer d'une connexion Internet sans aucune protection par pare-feu.
Je voudrais partager un meilleur moyen alternatif de résoudre le problème ci-dessus avec une meilleure compréhension en profondeur.
Suivez les étapes ci-dessous et profitez de la syntaxe Word anglaise avec nltk.
Étape 1: Commencez par télécharger le modèle "english.pickle" en suivant le chemin Web.
Cliquez sur le lien " http://www.nltk.org/nltk_data/ " et cliquez sur "Télécharger" dans l'option "107. Punkt Tokenizer Models".
Étape 2: Extrayez le fichier "punkt.Zip" téléchargé et recherchez-y le fichier "english.pickle", puis placez-le dans le lecteur C.
Étape 3: copier coller le code suivant et exécuter.
from nltk.data import load
from nltk.tokenize.treebank import TreebankWordTokenizer
sentences = [
"Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very Nice fellow.",
"Professor Plum has a green plant in his study.",
"Miss Scarlett watered Professor Plum's green plant while he was away from his office last week."
]
tokenizer = load('file:C:/english.pickle')
treebank_Word_tokenize = TreebankWordTokenizer().tokenize
wordToken = []
for sent in sentences:
subSentToken = []
for subSent in tokenizer.tokenize(sent):
subSentToken.extend([token for token in treebank_Word_tokenize(subSent)])
wordToken.append(subSentToken)
for token in wordToken:
print token
Faites le moi savoir, si vous rencontrez un problème
je suis tombé sur ce problème quand j'essayais de faire du marquage pos dans nltk. La façon dont je me suis bien fait est de créer un nouveau répertoire avec un répertoire de corpus nommé "tagueurs" et de copier max_pos_tagger dans les marqueurs de répertoire.
J'espère que ça marchera pour toi aussi. Bonne chance avec ça!!!.
nltk.download()
ne résoudra pas ce problème. J'ai essayé le ci-dessous et cela a fonctionné pour moi:
dans le dossier '...AppData\Roaming\nltk_data\tokenizers'
, extrayez le dossier téléchargé punkt.Zip
au même emplacement.
Les données des tokteurs punkt sont assez volumineuses 35 Mo , cela peut poser problème si, comme moi, vous utilisez nltk dans un environnement tel que lambda a des ressources limitées.
Si vous n'avez besoin que d'un ou de quelques tokenizer de langue, vous pouvez réduire considérablement la taille des données en n'incluant que les fichiers de cette langue .pickle
.
Si vous n'avez besoin que de l'anglais, alors la taille de vos données nltk peut être réduite à 407 Ko (pour le python Version 3).
nltk_data/tokenizers/punkt
, Si vous utilisez python 3 ajoutez un autre dossier PY3
Afin que votre nouvelle structure de répertoires ressemble à nltk_data/tokenizers/punkt/PY3
. Dans mon cas, j'ai créé ces dossiers à la racine de mon projet..pickle
Des langues que vous souhaitez prendre en charge dans le dossier punkt
que vous venez de créer. Remarque: Python 3 utilisateurs doivent utiliser les pickles du dossier PY3
. avec vos fichiers de langue chargé il devrait ressembler à quelque chose comme: exemple-folder-stucturenltk_data
Aux chemins de recherche, en supposant que vos données ne se trouvent pas dans l'un des chemins de recherche prédéfinis . Vous pouvez ajouter vos données à l'aide de la variable d'environnement NLTK_DATA='path/to/your/nltk_data'
. Vous pouvez également ajouter un chemin personnalisé au moment de l'exécution dans python en effectuant:from nltk import data
data.path += ['/path/to/your/nltk_data']
REMARQUE: Si vous n'avez pas besoin de charger les données au moment de l'exécution ni de regrouper les données avec votre code, il serait préférable de créer vos dossiers nltk_data
À la - emplacements intégrés que nltk recherche .
Dans Spyder, accédez à votre shell actif et téléchargez nltk en utilisant les 2 commandes ci-dessous. importer nltk nltk.download () Ensuite, vous devriez voir la fenêtre du téléchargeur NLTK s'ouvrir comme ci-dessous, allez dans l'onglet "Modèles" dans cette fenêtre et cliquez sur "punkt" et téléchargez "punkt"
Vérifiez si vous avez toutes les bibliothèques NLTK.