python - Error al cargar english.pickle con nltk.data.load
jenkins (9)
Al intentar cargar el tokenizer punkt
...
import nltk.data
tokenizer = nltk.data.load(''nltk:tokenizers/punkt/english.pickle'')
... se planteó un LookupError
:
> 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''
> **********************************************************************
Compruebe si tiene todas las bibliotecas NLTK.
Desde la línea de comando bash, ejecuta:
$ python -c "import nltk; nltk.download(''punkt'')"
Esto es lo que funcionó para mí en este momento:
# 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))
sentences_tokenized es una lista de una lista de tokens:
[[''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'', ''.'']]
Las oraciones fueron tomadas del ejemplo del cuaderno ipython que acompaña el libro "Minería de la red social, 2da edición"
Me encontré con este problema cuando estaba tratando de hacer pos etiquetado en nltk. la forma en que lo obtuve es haciendo un nuevo directorio junto con el directorio corpora llamado "taggers" y copiando max_pos_tagger en los etiquetadores de directorios.
Espero que funcione para usted también. ¡¡¡Buena suerte con eso!!!.
Simple nltk.download()
no resolverá este problema. Intenté el siguiente y funcionó para mí:
en la carpeta nltk
cree una carpeta tokenizers
y copie su carpeta punkt
en la carpeta tokenizers
.
Esto funcionará.! ¡la estructura de la carpeta debe ser como se muestra en la imagen! 1
Yo tuve el mísmo problema. Entra en un shell de python y escribe:
>>> import nltk
>>> nltk.download()
Luego aparece una ventana de instalación. Vaya a la pestaña ''Modelos'' y seleccione ''punkt'' en la columna ''Identificador''. A continuación, haga clic en Descargar e instalará los archivos necesarios. ¡Entonces debería funcionar!
nltk tiene sus modelos de tokenizadores pre-entrenados. El modelo se descarga desde fuentes web predefinidas internamente y se almacena en la ruta del paquete nltk instalado mientras se ejecutan las siguientes llamadas a funciones posibles.
Ej. 1 tokenizer = nltk.data.load (''nltk: tokenizers / punkt / english.pickle'')
Por ejemplo, 2 nltk.download (''punkt'')
Si llama a la oración anterior en su código, asegúrese de tener conexión a Internet sin ninguna protección de firewall.
Me gustaría compartir alguna forma de alterar la red para resolver el problema anterior con una comprensión más profunda.
Siga los siguientes pasos y disfrute de la tokenización de palabras en inglés usando nltk.
Paso 1: Primero descargue el modelo "english.pickle" siguiendo la ruta web.
Vaya al enlace " nltk.org/nltk_data " y haga clic en "descargar" en la opción "107. Modelos Tokenizer Punkt"
Paso 2: extraiga el archivo "punkt.zip" descargado y encuentre el archivo "english.pickle" y colóquelo en la unidad C.
Paso 3: copia y pega el código siguiente y ejecútalo.
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
Avísame, si enfrentas algún problema
import nltk
nltk.download(''punkt'')
from nltk import word_tokenize,sent_tokenize
Usa tokenizers :)