Ошибка загрузки english.pickle с помощью nltk.data.load
При попытке загрузить токенизатор punkt
...
import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')
... a 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'
> **********************************************************************
Ответы
Ответ 1
У меня была такая же проблема. Перейдите в оболочку python и введите:
>>> import nltk
>>> nltk.download()
Появится окно установки. Перейдите на вкладку "Модели" и выберите "punkt" из столбца "Идентификатор". Затем нажмите "Загрузить", и он установит необходимые файлы. Тогда это должно сработать!
Ответ 2
import nltk
nltk.download('punkt')
from nltk import word_tokenize,sent_tokenize
Использовать токенизаторы:)
Ответ 3
Это то, что сработало для меня сейчас:
# 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 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 - список списка токенов:
[['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', '.']]
Предложения были взяты из примера ноутбука ipython, сопровождающего книгу "Mining the Social Web, 2nd Edition"
Ответ 4
В командной строке bash запустите:
$ python -c "import nltk; nltk.download('punkt')"
Ответ 5
Это работает для меня:
>>> import nltk
>>> nltk.download()
В Windows вы также получите загрузчик NLTK
![NLTK Downloader]()
Ответ 6
Простой nltk.download()
не решит эту проблему. Я попробовал ниже, и это сработало для меня:
в nltk
папке создать tokenizers
папку и скопировать punkt
папку в tokenizers
папку.
Это будет работать. структура папок должна быть такой, как показано на рисунке! 1
Ответ 7
У nltk есть свои предварительно обученные модели токенизаторов. Модель загружается из предварительно определенных веб-источников и сохраняется по пути к установленному пакету nltk при выполнении следующих возможных вызовов функций.
Например, 1 tokenizer = nltk.data.load('nltk: tokenizers/punkt/english.pickle')
Например, 2 nltk.download('пункт')
Если вы вызываете вышеприведенное предложение в своем коде, убедитесь, что у вас есть подключение к Интернету без каких-либо брандмауэров.
Я хотел бы поделиться более лучшим альтернативным способом решения вышеуказанной проблемы с более глубоким пониманием.
Пожалуйста, выполните следующие шаги и наслаждайтесь токенизацией английского слова, используя nltk.
Шаг 1: Сначала загрузите модель "english.pickle", следуя веб-пути.
Перейдите по ссылке " http://www.nltk.org/nltk_data/ " и нажмите "скачать" в опции "107. Модели токенайзера Punkt"
Шаг 2: Извлеките загруженный файл "punkt.zip", найдите из него файл "english.pickle" и поместите его на диск C.
Шаг 3: скопируйте вставьте следующий код и выполните.
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 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
Дайте мне знать, если у вас возникнут проблемы
Ответ 8
В Jenkins это можно исправить, добавив следующий подобный код в Virtualenv Builder на вкладке Build:
python -m nltk.downloader punkt
![enter image description here]()
Ответ 9
Я столкнулся с этой проблемой, когда пытался выполнить пометку в nltk.
способ, которым я получил это правильно, - создать новый каталог вместе с каталогом bodya с именем "taggers" и скопировать max_pos_tagger в тег файлы.
Надеюсь, это сработает и для вас. удачи с ним!!!.
Ответ 10
Проверьте, есть ли у вас все библиотеки NLTK.
Ответ 11
Данные токенайзеров punkt довольно велики - более 35 МБ, это может быть очень важно, если, как и я, вы запускаете nltk в среде, такой как lambda, с ограниченными ресурсами.
Если вам нужен только один или, возможно, несколько языковых токенизаторов, вы можете резко уменьшить размер данных, включив .pickle
файлы этих языков .pickle
.
Если вам требуется только поддержка английского языка, размер данных nltk можно уменьшить до 407 КБ (для версии Python 3).
меры
- Загрузите данные nltk punkt: https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
- Где-то в вашей среде создайте папки:
nltk_data/tokenizers/punkt
, если при использовании python 3 добавьте еще одну папку PY3
чтобы ваша новая структура каталогов выглядела как nltk_data/tokenizers/punkt/PY3
. В моем случае я создал эти папки в корне моего проекта. - Извлеките zip и переместите файлы
.pickle
для языков, которые вы хотите поддерживать, в папку punkt
вы только что создали. Примечание: пользователи Python 3 должны использовать соленья из папки PY3
. С загруженными языковыми файлами это должно выглядеть примерно так: example-folder-stucture - Теперь вам просто нужно добавить вашу папку
nltk_data
в пути поиска, предполагая, что ваши данные не находятся в одном из предопределенных путей поиска. Вы можете добавить свои данные, используя переменную окружения NLTK_DATA='path/to/your/nltk_data'
. Вы также можете добавить собственный путь во время выполнения в Python, выполнив:
from nltk import data
data.path += ['/path/to/your/nltk_data']
ПРИМЕЧАНИЕ. Если вам не нужно загружать данные во время выполнения или связывать данные с вашим кодом, было бы лучше создать папки nltk_data
во встроенных местах, которые ищет nltk.
Ответ 12
В Spyder перейдите в свою активную оболочку и загрузите nltk, используя нижеприведенные 2 команды. import nltk nltk.download() Затем вы увидите открытое окно загрузчика NLTK, как показано ниже, перейдите на вкладку "Модели" в этом окне, нажмите "пункт" и загрузите "пункт"
![Window]()
Ответ 13
nltk.download()
не решит эту проблему. Я попробовал следующее, и это сработало для меня:
в папке '...AppData\Roaming\nltk_data\tokenizers'
извлеките загруженную папку punkt.zip
в том же месте.