English.pickle nltk.data.load ile yüklenemedi


144

punktBelirteç yüklemeye çalışırken ...

import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')

... a LookupErroryükseltildi:

> 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'
>     **********************************************************************

2
turşu modelini kullanarak indirebilirsiniz>>> nltk.download()
alvas

Yanıtlar:


262

Aynı sorunu yaşadım. Bir python kabuğuna gidin ve şunu yazın:

>>> import nltk
>>> nltk.download()

Ardından bir kurulum penceresi görünür. 'Modeller' sekmesine gidin ve 'Tanımlayıcı' sütununun altındaki 'punkt' seçeneğini seçin. Sonra İndir'e tıklayın ve gerekli dosyaları yükleyecektir. O zaman işe yarayacak!


4
Bazı sürümlerde, Modeller sekmesinin olmadığını ve 'İndir'e gidip' punkt 'paketini almaya çalışabileceğinizi veya mevcut paketleri listelemek için herhangi bir' liste 'seçeneğini kullanabileceğinizi unutmayın.
ely

2
nltk_data dizinindeki ana klasöre yüklenir. Bu punkt dizinini herhangi bir nltk kütüphane klasörüne kopyalamalıyım. pls yardım
sumanth232

Ne anlatmak istediğinden emin değilim. tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')Daha sonra iş ve bunu gibi tokenizer kullanabilirsiniz olmalıdır: tokenizer.tokenize('The cat. The mat. It Sat.'). Burada nltk tokenizers/punkt/english.picklebirkaç konuma karşı göreli yolu çözmeye çalışır . Örneğin Windows'da %APPDATA%\nltk_data\tokenizers\punkt\english.pickleveya C:\nltk_data\tokenizers\punkt\english.pickle(D: ve E :) için aynı görünüyor . Bu nedenle, punkt.zip dosyasının bu konumlardan birinin var olduğu şekilde sıkıştırıldığından emin olursanız, onu bulabilmelidir.
richardr

Alternatif olarak, NLTK_DATAortam değişkeninizi nltk_data klasörünü gösterecek şekilde ayarlayın %NLTK_DATA%\tokenizers\punkt\english.pickle.
richardr

X-Window olmayan bir sistemde (örneğin bir sshbağlantı üzerinden olduğu gibi ) çalışıyorsa, GUI penceresi ve dolayısıyla 'Modeller' sekmesi olmayacaktır.
mknaf

95

Bunu böyle yapabilirsin.

import nltk
nltk.download('punkt')

from nltk import word_tokenize,sent_tokenize

İşlevi punktbağımsız değişken olarak geçirerek belirteçleri indirebilirsiniz download. Ardından sözcük ve cümle belirteçleri kullanılabilir nltk.

Eğer indirme şeyi yani isterseniz chunkers, grammars, misc, sentiment, taggers, corpora, help, models, stemmers, tokenizers, bu gibi herhangi bir argüman geçemiyor.

nltk.download()

Daha fazla bilgi için buna bakın. https://www.nltk.org/data.html


1
Kod Sadece cevaplar çok hoş karşılanır. Lütfen cevabınıza daha fazla açıklama ekleyin. Bu nasıl çalışır? Neden faydalı?
RubberDuck

Yaptığı şey, nltk'nin herhangi bir tokenizasyon çalışması yapmasına izin vermek için gerekli kütüphaneleri indirmektir.
Itzik Gili

belirteçler nasıl kullanılır?
luckyhandler

python -c "import nltk; nltk.download('punkt')" [nltk_data] Downloading package punkt to /home/my_user/nltk_data... [nltk_data] Error downloading 'punkt' from [nltk_data] <https://raw.githubusercontent.com/nltk/nltk_data/gh- [nltk_data] pages/packages/tokenizers/punkt.zip>: HTTP Error [nltk_data] 503: first byte timeout
mrgloom

27

Şu an benim için işe yarayan buydu:

# 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))

letters_tokenized, belirteç listesinin bir listesidir:

[['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', '.']]

Cümleler "Sosyal Web Madenciliği, 2. Baskı" kitabına eşlik eden örnek ipython not defterinden alınmıştır.


16

Bash komut satırından şunu çalıştırın:

$ python -c "import nltk; nltk.download('punkt')"

[Nltk_data] hatası alıyorum.
user2478236

1
@ user2478236 GitHub zaman zaman aşırı yüksek ses seviyesi nedeniyle indiriciyi HTTP 405 ile engelliyor; bkz. github.com/nltk/nltk/issues/1787
John Vandenberg

1
Benim için çalıştı, bu nltk_databenim ev dizine klasör oluşturur ve punkt içine kaydeder. Fedora 27, Py3.6'ya sahibim.
MaNKuR

13

Bu benim için çalışıyor:

>>> import nltk
>>> nltk.download()

Windows'da ayrıca nltk downloader alacaksınız

NLTK İndirici


9

Basit nltk.download()bu sorunu çözmez. Aşağıdakileri denedim ve benim için çalıştı:

içinde nltkklasörün bir oluşturmak tokenizersklasörü ve kopyalama punktklasörü tokenizersklasöründe.

Bu çalışacak.! klasör yapısının resimde gösterildiği gibi olması gerekir! 1


1
Bu benim için çalışıyor, benim durumumda nltk.download üzerinden indiremedim ... Bu yüzden dosyayı nltk.org/nltk_data'dan manuel olarak indirdim ve c: / nltk_data / tokenizers / punkt klasörü oluşturdum ve hepsini kopyaladım Bu konumdaki dosyalar
Fermin Pitol

6

nltk, önceden eğitilmiş tokenizer modellerine sahiptir. Model, önceden tanımlanmış web kaynaklarından indiriliyor ve aşağıdaki olası işlev çağrılarını yürütürken kurulu nltk paketinin yolunda saklanıyor.

Ör. 1 belirteç = nltk.data.load ('nltk: belirteçler / punkt / english.pickle')

Örn 2 nltk.download ('punkt')

Kodunuzda yukarıdaki cümleyi çağırırsanız, güvenlik duvarı koruması olmayan İnternet bağlantınız olduğundan emin olun.

Yukarıdaki sorunu daha iyi derinlemesine anlayışlarla çözmek için daha iyi bir alternatif net yol paylaşmak istiyorum.

Lütfen aşağıdaki adımları izleyin ve nltk kullanarak İngilizce sözcük belirtecinin tadını çıkarın.

Adım 1: Önce web yolunu izleyen "english.pickle" modelini indirin.

" Http://www.nltk.org/nltk_data/ " bağlantısına gidin ve "107. Punkt Tokenizer Modelleri" seçeneğinde "indir" i tıklayın.

Adım 2: İndirilen "punkt.zip" dosyasını ayıklayın ve "english.pickle" dosyasını bulun ve C sürücüsüne yerleştirin.

3.Adım: Aşağıdaki kodu yapıştırın ve yürütün.

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

Herhangi bir sorunla karşılaşırsan haberim olsun


Çok agresif bir güvenlik duvarının arkasındaysanız gerçekten güzel bir cevap.
kariato

5

Jenkins'te bu, Build sekmesi altında Virtualenv Builder'a aşağıdaki gibi kodlar eklenerek düzeltilebilir :

python -m nltk.downloader punkt

resim açıklamasını buraya girin


4

Ben nltk pos etiketleme yapmaya çalışırken bu sorunla karşılaştı. Ben doğru var yolu "taggers" adlı corpora dizin ile birlikte yeni bir dizin yapmak ve dizin taggers max_pos_tagger kopyalamaktır.
umarım senin için de çalışır. onunla iyi şanslar !!!


4

Spyder'da, aktif kabuğunuza gidin ve aşağıdaki 2 komutu kullanarak nltk'yi indirin. import nltk nltk.download () Sonra NLTK indirici penceresini aşağıdaki gibi açık görmelisiniz, bu pencerede 'Modeller' sekmesine gitmeli ve 'punkt' üzerine tıklayıp 'punkt' dosyasını indirmelisiniz

pencere


0

Tüm NLTK kitaplıklarınızın olup olmadığını kontrol edin.


0

Punkt tokenizer verileri 35 MB üzerinde oldukça büyük, benim gibi sınırlı kaynakları olan lambda gibi bir ortamda nltk çalıştırıyorsanız, bu büyük bir anlaşma olabilir.

Yalnızca bir veya birkaç dil belirtecine ihtiyacınız varsa, yalnızca bu dil .pickledosyalarını ekleyerek verilerin boyutunu önemli ölçüde azaltabilirsiniz .

Yalnızca İngilizce'yi desteklemeniz gerekiyorsa, nltk veri boyutunuz 407 KB'ye (python 3 sürümü için) küçültülebilir .

adımlar

  1. Nltk punkt verilerini indirin: https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
  2. Ortamınızın bir yerinde klasörleri oluşturun: nltk_data/tokenizers/punktpython 3 kullanıyorsanız PY3, yeni dizin yapınız gibi görünmesi için başka bir klasör ekleyin nltk_data/tokenizers/punkt/PY3. Benim durumumda bu klasörleri projemin kökünde oluşturdum.
  3. Zip .pickledosyasını çıkarın ve desteklemek istediğiniz diller için dosyaları punktyeni oluşturduğunuz klasöre taşıyın . Not: Python 3 kullanıcıları PY3klasördeki turşuları kullanmalıdır . Dil dosyalarınız yüklendiğinde şöyle görünmelidir: example-folder-stucture
  4. Şimdi nltk_data, verilerinizin önceden tanımlanmış arama yollarından birinde olmadığı varsayılarak, klasörünüzü arama yollarına eklemeniz yeterlidir . Ortam değişkenlerinden birini kullanarak verilerinizi ekleyebilirsiniz NLTK_DATA='path/to/your/nltk_data'. Ayrıca aşağıdakileri yaparak python'da çalışma zamanında özel bir yol ekleyebilirsiniz:
from nltk import data
data.path += ['/path/to/your/nltk_data']

NOT: Çalışma zamanında verileri yüklemenize veya verileri kodunuzla birlikte paketlemenize gerek yoksa, nltk_dataklasörlerinizi nltk'nin aradığı yerleşik konumlarda oluşturmak en iyisidir .


0

nltk.download()bu sorunu çözmez. Aşağıdakileri denedim ve benim için çalıştı:

içinde '...AppData\Roaming\nltk_data\tokenizers'klasör özü indirilen punkt.zipaynı yerde klasör.


0

Içinde Python-3.6öneri geri izleme görebilirsiniz. Bu oldukça faydalı. Bu nedenle, aldığınız hataya dikkat etmenizi söyleyeceğim, çoğu zaman cevaplar bu sorun içindedir;).

resim açıklamasını buraya girin

Ve sonra diğer milletlerin önerdiği gibi ya python terminali kullanarak ya da python -c "import nltk; nltk.download('wordnet')"onları anında yükleyebileceğimiz gibi bir komut kullanarak . Bu komutu bir kez çalıştırmanız yeterlidir ve daha sonra verileri yerel olarak ana dizininize kaydeder.


0

Birden çok indirme için atanmış bir klasör kullanırken benzer bir sorun yaşadım ve veri yolunu manuel olarak eklemek zorunda kaldım:

tek indirme, aşağıdaki gibi elde edilebilir (çalışır)

import os as _os
from nltk.corpus import stopwords
from nltk import download as nltk_download

nltk_download('stopwords', download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

stop_words: list = stopwords.words('english')

Bu kod çalışır, yani nltk indirme işlevinde geçen indirme yolunu hatırlar. Diğer nads bir sonraki paket indirirseniz ben kullanıcı tarafından açıklanan benzer hata alıyorum:

Birden çok indirme bir hata oluşturur:

import os as _os

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

from nltk import download as nltk_download

nltk_download(['stopwords', 'punkt'], download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

print(stopwords.words('english'))
print(word_tokenize("I am trying to find the download path 99."))

Hata:

Kaynak punkt bulunamadı. Kaynağı elde etmek için lütfen NLTK Downloader'ı kullanın:

import nltk nltk.download ('punkt')

Şimdi ntlk veri yolunu indirme yolumla eklerseniz çalışır:

import os as _os

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

from nltk import download as nltk_download
from nltk.data import path as nltk_path


nltk_path.append( _os.path.join(get_project_root_path(), 'temp'))


nltk_download(['stopwords', 'punkt'], download_dir=_os.path.join(get_project_root_path(), 'temp'), raise_on_error=True)

print(stopwords.words('english'))
print(word_tokenize("I am trying to find the download path 99."))

Bu işe yarıyor ... Neden bir durumda çalışıyor ama diğerinde çalışmıyor emin değilim, ancak hata mesajı indirme klasörüne ikinci kez kontrol etmediğini ima ediyor gibi görünüyor. Not: windows8.1 / python3.7 / nltk3.5 kullanma

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.