2009-08-17 21 views
17

पर पायथन एनएलटीके (2.0b5) का उपयोग करके मैं Google App Engine पर एनएलटीके (प्राकृतिक भाषा टूलकिट) काम करने की कोशिश कर रहा हूं। मेरे द्वारा दिए गए चरणों में हैं:Google App Engine

  1. इंस्टॉलर डाउनलोड करें और इसे चलाएं (एक .dmg फ़ाइल, जैसा कि मैं मैक का उपयोग कर रहा हूं)।
  2. python साइट-पैकेज निर्देशिका से nltk फ़ोल्डर की प्रतिलिपि बनाएँ और इसे मेरे प्रोजेक्ट फ़ोल्डर में उप-फ़ोल्डर के रूप में रखें। from nltk.tokenize import *

दुर्भाग्य से, यह शुरू करने के बाद मैं इस त्रुटि मिलती है (ध्यान दें कि इस त्रुटि NLTK और मैं भीतर गहरे उठाया है:

  • कि nltk उप-फ़ोल्डर वाले फ़ोल्डर में एक अजगर मॉड्यूल लाइन बनाएँ और जोड़ने 'अजगर की मेरी प्रणाली की स्थापना के लिए यह देखकर हूँ के रूप में एक GAE परियोजना के उप फ़ोल्डर में है कि) करने का विरोध किया:

    <type 'exceptions.ImportError'>: No module named nltk 
    Traceback (most recent call last): 
        File "/base/data/home/apps/xxxx/1.335654715894946084/main.py", line 13, in <module> 
        from lingua import reducer 
        File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/reducer.py", line 11, in <module> 
        from nltk.tokenizer import * 
        File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/__init__.py", line 73, in <module> 
        from internals import config_java 
        File "/base/data/home/apps/xxxx/1.335654715894946084/lingua/nltk/internals.py", line 19, in <module> 
        from nltk import __file__ 
    

    नोट: इस जब GAE पर अपलोड कैसे त्रुटि लॉग में दिखता है । यदि मैं इसे स्थानीय रूप से चलाता हूं तो मुझे एक ही त्रुटि मिलती है (सिवाय इसके कि यह एनएलटीके के मेरे साइट-पैकेज उदाहरण के अंदर उत्पन्न होता है ... इसलिए कोई अंतर नहीं है)। और "xxxx" प्रोजेक्ट नाम का प्रतीक है।

    तो सारांश में:

    • क्या मैं भी संभव करने के लिए कोशिश कर रहा हूँ है? क्या एनएलटीके ऐप इंजन पर भी चलाएगा?
    • क्या मुझे कुछ याद आया है? यही है: जीएई परियोजना में "nltk" की प्रतिलिपि पर्याप्त नहीं है?

    संपादित करें: तय टाइपो और हटाया अनावश्यक कदम

  • +4

    क्या आप कभी इससे आगे निकल गए थे? – dfrankow

    +0

    इस सवाल को अब बहुत अप्रचलित हो गया है; पी – alvas

    +0

    मैंने तीन सरल परिवर्तनों के साथ एक पीएल बनाया है जो इसे जीएई पर काम करने की अनुमति देगा। https://github.com/nltk/nltk/pull/933 –

    उत्तर

    4

    समस्या यहाँ nltk पुनरावर्ती आयात करने के लिए प्रयास कर रहा है वह यह है कि: जब nltk/__init__.py आयात किया जाता है, यह nltk/internals.py आयात करता है, जो तब nltk फिर से आयात करने का प्रयास करता है। चूंकि nltk स्वयं आयात होने के बीच में है, यह एक (बल्कि अनुपयोगी) त्रुटि के साथ विफल रहता है।जो कुछ भी वे कर रहे हैं वह वैसे भी अजीब है - यह from nltk import __file__ ब्रेक जैसे कुछ असुरक्षित है।

    यह nltk के साथ एक समस्या की तरह दिखता है - क्या यह एक पायथन कंसोल से सीधे आयात किए जाने पर काम करता है? यदि ऐसा है, तो वे स्थापित संस्करण में कुछ प्रकार की चाल चलाना चाहिए। मैं एनएलटीके समूहों से पूछता हूं कि वे क्या कर रहे हैं और इसके आसपास कैसे काम करें।

    +0

    हां! ऐसा लगता है कि यह एनएलटीके की निराशाजनक आयात में आ गया है। और हाँ, यह कंसोल पर ठीक काम करता है। समाधान में "nltk" के सभी संदर्भों में जाकर उन्हें ठीक करना शामिल होना चाहिए। हालांकि यह गैर-तुच्छ है क्योंकि ऐसा लगता है कि अन्य पैकेजों के संदर्भ में भी समस्याएं हैं। तो, अधिमानतः: सभी कष्टप्रद आयात मुद्दों को हल करने का एक सामान्य तरीका होना अच्छा होगा। –

    +0

    शायद यदि आप एनएलटीके लोगों से पूछते हैं कि अजीब रिकर्सिव आयात के साथ उनका इरादा क्या है, तो हम इसे काम करने के लिए एक तरीका समझ सकते हैं। –

    3

    NLTK, मुझे विश्वास है, शुद्ध अजगर एक फ़ॉलबैक (मनोहर पतन) के रूप में जब यह सी नहीं हो सकता अपनी पूरी कोशिश करता है कोडित त्वरक एक्सटेंशन यह पसंद करेंगे। हालांकि, हमेशा एक अमीर पैकेज को घुसपैठ करने के लिए पूरी तरह से देखभाल करने की आवश्यकता होती है (सभी .py फाइलों को दोबारा जोड़ना और ज़िपिमपोर्ट का उपयोग करना कम फ्लैकी हो सकता है)।

    मेरा स्थापित एनएलटीके, 0.95 मेरा मानना ​​है कि इसमें कोई ntlk.tokenizer नहीं है - इसमें एक nltk.tokenize है, कोई पिछला आर नहीं है, लेकिन स्पष्ट रूप से यहां तक ​​कि सबसे अधिक मिनट भी टाइपो 100% असहिष्णु है जब आप बताने की कोशिश कर रहे हैं एक कंप्यूटर जो आप चाहते हैं, इसलिए मुझे लगता है कि यह आपके हिस्से पर एक टाइपो नहीं है बल्कि एनएलटीके की पूरी तरह से अलग और असंगत रिलीज का उपयोग है, इसलिए क्या रिलीज है जिसमें टोकननाइजेशन के बजाए टोकननाइज़र नामक उप-पैकेज है?

    आप सहन करने के लिए कठिन एक चार गलत वर्तनी की एक शून्य सहनशीलता की नीति मिल जाए, कंप्यूटर और अपने प्रोग्रामिंग आप के लिए संतोषजनक होने की संभावना नहीं ... ;-)

    +0

    आह, ठीक है, मेरे हिस्से पर एक गलती। लेकिन, यह एक लाल हेरिंग है (जिसे मैं संभवतः खोज सकता था अगर यह * एनएलटीके के * * आयात करने में सक्षम नहीं था) :-) तो, मुझे ज़िपिमपोर्ट का उपयोग करने की आवश्यकता क्यों है? मुझे वास्तव में इससे पहले एक अजगर पुस्तकालय के साथ ऐसा नहीं करना पड़ा था। धन्यवाद। –

    +0

    आपको ज़िपिमपोर्ट का उपयोग करने की आवश्यकता नहीं है - यह सुनिश्चित करने के लिए केवल एक सुविधा है कि आपके पास पैकेज से सभी .py फ़ाइलों को एक .zip फ़ाइल में रखा गया है, जिसके पीछे कुछ भी नहीं छोड़ा गया है या अनदेखा किया गया है; चूंकि आपके पास जीएई ऐप में फाइलों और सी की संख्या की सीमा है, इसलिए उस सीमा से बचने के लिए भी सुविधाजनक है। लेकिन यह स्पष्टता का एक मामला है, अंतरिक्ष की बचत, और flakiness को कम करने, जैसा कि मैंने उल्लेख किया है, और कुछ नहीं। मुझे विश्वास है कि आप जीएई पर एनएलटीके का उपयोग कर सकते हैं (कम से कम सभी हिस्सों जो सी-कोडित मॉड्यूल की कमी के लिए स्वीकार्य कामकाज पा सकते हैं ;-)। यदि आप मदद चाहते हैं तो सटीक संस्करण निर्दिष्ट करें! -) –

    +0

    2.0b5। एक बार फिर, मैं Google ऐप इंजन के अतिरिक्त अपनी स्थानीय मशीन (जीएई देव पर्यावरण के भीतर चल रहा) दोनों में एक ही त्रुटि देख रहा हूं। –

    8

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

    +0

    लिंक के लिए धन्यवाद। इसने मुझे कुछ अच्छे संकेत दिए (हालांकि मुझे नहीं लगता कि यह समस्या का पूरा * समाधान है)। –