Ошибка загрузки 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).

меры

  1. Загрузите данные nltk punkt: https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
  2. Где-то в вашей среде создайте папки: nltk_data/tokenizers/punkt, если при использовании python 3 добавьте еще одну папку PY3 чтобы ваша новая структура каталогов выглядела как nltk_data/tokenizers/punkt/PY3. В моем случае я создал эти папки в корне моего проекта.
  3. Извлеките zip и переместите файлы .pickle для языков, которые вы хотите поддерживать, в папку punkt вы только что создали. Примечание: пользователи Python 3 должны использовать соленья из папки PY3. С загруженными языковыми файлами это должно выглядеть примерно так: example-folder-stucture
  4. Теперь вам просто нужно добавить вашу папку 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 в том же месте.