Nltk.data.load के साथ english.pickle लोड करने में विफल


144

जब punktटोकनर को लोड करने की कोशिश की जा रही है ...

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

... एक 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'
>     **********************************************************************

2
आप अचार मॉडल का उपयोग कर डाउनलोड कर सकते हैं>>> nltk.download()
11

जवाबों:


261

मुझे भी बिल्कुल यही समस्या है। एक अजगर खोल में जाओ और टाइप करें:

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

फिर एक इंस्टॉलेशन विंडो दिखाई देती है। 'मॉडल' टैब पर जाएं और 'पहचानकर्ता' कॉलम के नीचे से 'पंकट' चुनें। फिर डाउनलोड पर क्लिक करें और यह आवश्यक फ़ाइलों को स्थापित करेगा। तो फिर यह काम करना चाहिए!


4
ध्यान दें कि कुछ संस्करणों में, कोई मॉडल टैब नहीं है और आप 'डाउनलोड' पर जा सकते हैं और उपलब्ध संकुल को सूचीबद्ध करने के लिए पैकेज 'पंकट' प्राप्त करने या किसी 'सूची' विकल्पों का उपयोग करने का प्रयास कर सकते हैं।
ईली

2
यह एक निर्देशिका nltk_data में मेरे घर फ़ोल्डर में स्थापित करता है। क्या मुझे किसी nltk लाइब्रेरी फ़ोल्डर में पंकट की इस निर्देशिका को कॉपी करना चाहिए। pls मदद
sumanth232

मुझे नहीं पता तुम्हारा क्या मतलब है। tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')तब काम करना चाहिए और आप टोकन का उपयोग कर सकते हैं जैसे tokenizer.tokenize('The cat. The mat. It Sat.'):। यहाँ nltk tokenizers/punkt/english.pickleकई स्थानों के विरुद्ध सापेक्ष पथ को हल करने का प्रयास करता है । जैसे विंडोज पर यह %APPDATA%\nltk_data\tokenizers\punkt\english.pickleया C:\nltk_data\tokenizers\punkt\english.pickle(डी: और ई :) के लिए समान दिखता है । इसलिए यदि आप सुनिश्चित करते हैं कि punkt.zip फ़ाइल इस तरह से अनज़िप की गई है कि उन स्थानों में से एक मौजूद है, तो इसे खोजने में सक्षम होना चाहिए।
ऋचाधर

वैकल्पिक रूप से, अपने NLTK_DATAपर्यावरण चर को nltk_data फ़ोल्डर में इंगित करने के लिए सेट करें ताकि %NLTK_DATA%\tokenizers\punkt\english.pickleमौजूद हो।
ऋचाधर

यदि एक गैर-एक्स-विंडो सिस्टम पर चल रहा है (उदाहरण के लिए किसी sshकनेक्शन पर) कोई GUI विंडो नहीं होगी और इस प्रकार कोई 'मॉडल' टैब नहीं होगा।
mknaf

95

आप ऐसा कर सकते हैं।

import nltk
nltk.download('punkt')

from nltk import word_tokenize,sent_tokenize

आप फ़ंक्शन के punktतर्क के रूप में पास करके टोकन डाउनलोड कर सकते हैं download। शब्द और वाक्य टोकन तब उपलब्ध होते हैं nltk

आप डाउनलोड सब कुछ यानी चाहते हैं chunkers, grammars, misc, sentiment, taggers, corpora, help, models, stemmers, tokenizers, इस तरह किसी भी तर्क से पारित नहीं है।

nltk.download()

अधिक जानकारी के लिए इसे देखें। https://www.nltk.org/data.html


1
कोड केवल उत्तर अत्यधिक पर आधारित हैं। कृपया अपने उत्तर में और स्पष्टीकरण जोड़ें। यह कैसे काम करता है? क्यों उपयोगी है?
रबरडुक

यह क्या करता है बस जरूरत पुस्तकालयों को डाउनलोड करने के लिए किसी भी टोकन काम करने की अनुमति है।
इत्ज़िक गिली

टोकनधारकों का उपयोग कैसे करें?
लखिंदर

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
मर्ग्लोम

27

यह मेरे लिए अभी काम किया है:

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

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

उदाहरण उदाहरण के लिए ipython नोटबुक की पुस्तक "द सोशल वेब माइनिंग, 2 डी एडिशन" के साथ लिया गया।


16

बैश कमांड लाइन से, रन:

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

मुझे [nltk_data] पंकट लोड करने में त्रुटि हुई: HTTP त्रुटि 405: अनुमति नहीं है।
user2478236

1
@ user2478236 GitHub कई बार अत्यधिक उच्च मात्रा के कारण HTTP 405 के साथ डाउनलोडर को रोक रहा है; देखिए github.com/nltk/nltk/issues/1787
जॉन वंडेनबर्ग

1
मेरे लिए काम किया, यह nltk_dataमेरे घर में फ़ोल्डर बनाता है dir और इसमें punkt बचाता है। मेरे पास फेडोरा 27, Py3.6 है।
MaNKuR

13

यह मेरे लिए काम करता है:

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

विंडोज़ में आपको nltk डाउनलोडर भी मिलेगा

एनएलटीके डाउनलोडर


9

सरल nltk.download()इस मुद्दे को हल नहीं करेगा। मैंने नीचे की कोशिश की और यह मेरे लिए काम किया:

nltkफ़ोल्डर में एक फ़ोल्डर बनाएँ tokenizersऔर punktफ़ोल्डर में अपने फ़ोल्डर की प्रतिलिपि tokenizersबनाएँ।

यह काम करेगा। फ़ोल्डर की संरचना को चित्र में दिखाया गया है! 1


1
यह मेरे लिए काम करता है, मेरे मामले में मैं nltk.download के माध्यम से डाउनलोड करने में सक्षम नहीं था ... इसलिए मैंने nltk.org/nltk_data से मैन्युअल रूप से फ़ाइल डाउनलोड की और एक फ़ोल्डर बनाया c: / nltk_data / tokenizers / punkt और मैंने सभी की प्रतिलिपि बनाई इस स्थान पर फाइलें
फरमिन पिटोल

6

nltk के पास अपने पूर्व-प्रशिक्षित टोकन मॉडल हैं। मॉडल आंतरिक रूप से पूर्वनिर्धारित वेब स्रोतों से डाउनलोड कर रहा है और संभव फ़ंक्शन कॉलों को निष्पादित करते समय स्थापित nltk पैकेज के पथ पर संग्रहीत है।

जैसे 1 टोकन = nltk.data.load ('nltk: tokenizers / punkt / english.picky')

उदा 2 nltk.download ('पंकट')

यदि आप अपने कोड में उपरोक्त वाक्य कहते हैं, तो सुनिश्चित करें कि आपके पास बिना किसी फ़ायरवॉल सुरक्षा के इंटरनेट कनेक्शन है।

मैं अधिक बेहतर गहरी समझ के साथ उपरोक्त मुद्दे को हल करने के लिए कुछ और बेहतर बदलाव-शुद्ध तरीके साझा करना चाहूंगा।

कृपया निम्नलिखित चरणों का पालन करें और nltk का उपयोग करके अंग्रेजी शब्द टोकन का आनंद लें।

चरण 1: सबसे पहले वेब पथ के बाद "english.pickle" मॉडल डाउनलोड करें।

गोटो लिंक " http://www.nltk.org/nltk_data/ " और विकल्प "107" पर क्लिक करें "पंकट टोकनराइज़र मॉडल" पर क्लिक करें

चरण 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'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

अगर आप किसी समस्या का सामना करते हैं, तो मुझे बताएं


यदि आप बहुत आक्रामक फ़ायरवॉल के पीछे हैं तो वास्तव में अच्छा जवाब।
कारीटो

5

जेनकींस पर इसे बिल्ड टैब के तहत वर्चुअनव बिल्डर के कोड की तरह जोड़कर तय किया जा सकता है :

python -m nltk.downloader punkt

यहाँ छवि विवरण दर्ज करें


4

मैं इस समस्या में आया जब मैं nltk में स्थिति टैगिंग करने की कोशिश कर रहा था। जिस तरह से मुझे यह सही लगा वह एक नई निर्देशिका बनाने के साथ-साथ "टैगर्स" नाम के कॉर्पोरा डायरेक्टरी के साथ है और डायरेक्टरी टैगर्स में max_pos_tagger की नकल कर रहा है।
उम्मीद है कि यह आपके लिए भी उपयोगी होगा। इसके लिए शुभकामनाएं!!!।


4

स्पाइडर में, अपने सक्रिय शेल पर जाएं और नीचे 2 कमांड का उपयोग करके nltk डाउनलोड करें। आयात nltk nltk.download () फिर आपको नीचे के रूप में एनएलटीके डाउनलोडर विंडो खुली दिखनी चाहिए, इस विंडो में 'मॉडल' टैब पर जाएं और 'पंकट' पर क्लिक करें और 'पंकट' डाउनलोड करें

खिड़की


0

जांचें कि क्या आपके पास सभी एनएलटीके पुस्तकालय हैं।


0

पंकट टोकेनाइजर्स का डेटा 35 एमबी से अधिक है , यह एक बड़ी बात हो सकती है अगर मेरी तरह आप भी लंबोदर जैसे वातावरण में nltk चला रहे हैं जिसमें सीमित संसाधन हैं।

यदि आपको केवल एक या कुछ भाषा टोकन की आवश्यकता है, तो आप केवल उन भाषाओं की .pickleफ़ाइलों को शामिल करके डेटा के आकार को काफी कम कर सकते हैं ।

यदि आप सभी को केवल अंग्रेजी का समर्थन करने की आवश्यकता है, तो आपके nltk डेटा का आकार 407 KB (अजगर 3 संस्करण के लिए) तक कम किया जा सकता है ।

कदम

  1. Nltk punkt डेटा डाउनलोड करें: https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
  2. कहीं न कहीं आपके वातावरण में फ़ोल्डर्स का निर्माण होता है: nltk_data/tokenizers/punktयदि अजगर 3 का उपयोग करते हुए एक और फ़ोल्डर जोड़ें PY3ताकि आपकी नई निर्देशिका संरचना दिखे nltk_data/tokenizers/punkt/PY3। मेरे मामले में मैंने अपनी परियोजना के मूल में इन फ़ोल्डरों को बनाया।
  3. ज़िप को निकालें और .pickleउन भाषाओं के लिए फ़ाइलों को स्थानांतरित करें जिन्हें punktआप अभी बनाए गए फ़ोल्डर में समर्थन करना चाहते हैं । नोट: अजगर 3 उपयोगकर्ताओं को PY3फ़ोल्डर से अचार का उपयोग करना चाहिए । आपकी भाषा फ़ाइलों को लोड करने के साथ यह कुछ इस तरह दिखना चाहिए: उदाहरण-फ़ोल्डर-स्टेकचर
  4. अब आपको बस अपने nltk_dataफ़ोल्डर को खोज पथों में जोड़ना होगा , यह मानते हुए कि आपका डेटा पूर्व-निर्धारित खोज पथों में से एक में नहीं है । आप पर्यावरण चर का उपयोग करके अपना डेटा जोड़ सकते हैं NLTK_DATA='path/to/your/nltk_data'। आप ऐसा करके भी अजगर में एक कस्टम पथ जोड़ सकते हैं:
from nltk import data
data.path += ['/path/to/your/nltk_data']

नोट: यदि आपको रनटाइम में डेटा लोड करने या अपने कोड के साथ डेटा को बंडल करने की आवश्यकता नहीं है, तो अपने nltk_dataफ़ोल्डर को उन अंतर्निहित स्थानों पर बनाना सबसे अच्छा होगा जो nltk की तलाश में हैं


0

nltk.download()इस समस्या को हल नहीं करेगा। मैंने नीचे की कोशिश की और यह मेरे लिए काम किया:

में '...AppData\Roaming\nltk_data\tokenizers'फ़ोल्डर, निकालने डाउनलोड किया punkt.zipएक ही स्थान पर फ़ोल्डर।


0

में Python-3.6मैं ट्रैस बैक में सुझाव देख सकते हैं। यह काफी मददगार है। इसलिए मैं आप लोगों से कहूंगा कि आपको मिली त्रुटि पर ध्यान देना चाहिए, ज्यादातर समय उत्तर उस समस्या के होते हैं;)।

यहाँ छवि विवरण दर्ज करें

और फिर जैसा कि यहां अन्य लोगों द्वारा सुझाव दिया गया है कि या तो अजगर टर्मिनल का उपयोग कर रहे हैं या एक कमांड का उपयोग python -c "import nltk; nltk.download('wordnet')"कर रहे हैं जैसे कि हम उन्हें मक्खी पर स्थापित कर सकते हैं। आपको बस एक बार उस कमांड को चलाने की आवश्यकता है और यह आपके होम डायरेक्टरी में स्थानीय रूप से डेटा को बचाएगा।


0

एकाधिक डाउनलोड के लिए असाइन किए गए फ़ोल्डर का उपयोग करते समय मेरे पास समान समस्या थी , और मुझे डेटा पथ को मैन्युअल रूप से जोड़ना पड़ा:

एकल डाउनलोड, निम्नलिखित के रूप में प्राप्त किया जा सकता है (काम करता है)

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

यह कोड काम करता है, जिसका अर्थ है कि nltk डाउनलोड फ़्यूज़न में पारित डाउनलोड पथ को याद करता है। यदि मैं एक बाद के पैकेज को डाउनलोड करता हूं तो अन्य नोड्स पर मुझे उपयोगकर्ता द्वारा बताई गई समान त्रुटि मिलती है:

एकाधिक डाउनलोड एक त्रुटि उठाते हैं:

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."))

त्रुटि:

संसाधन गुंडा नहीं मिला। संसाधन प्राप्त करने के लिए कृपया NLTK डाउनलोडर का उपयोग करें:

आयात nltk nltk.download ('पंकट')

अब अगर मैं अपने डाउनलोड पथ के साथ ntlk डेटा पथ को जोड़ता हूं, तो यह काम करता है:

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."))

यह काम करता है ... सुनिश्चित नहीं है कि एक मामले में क्यों काम करता है, लेकिन दूसरे को नहीं, लेकिन त्रुटि संदेश का अर्थ यह लगता है कि यह दूसरी बार डाउनलोड फ़ोल्डर में जांच नहीं करता है। NB: windows8.1 / python3.7 / nltk3.5 का उपयोग करना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.