2015-05-19 21 views
5

मैं nltk का उपयोग कर रहा हूं लेकिन जिस समस्या का सामना कर रहा हूं वह विशेष रूप से nltk से संबंधित प्रतीत नहीं होता है। मैं एक मॉड्यूल नामित util.tokenize जो अंदर वहाँ कुछ वर्गों रहे हैं और मैं निम्नलिखित पहली पंक्ति है:पायथन, आयात त्रुटि: नाम आयात नहीं कर सकता है AbstractLazySequence

util/tokenizer.py

from nltk.tokenize.regexp import RegexpTokenizer 
... 

class SentTokenizer(object): 
    def __init__(self, stem=False, pattern='[^\w\-\']+'): 
     self.alg = RegexpTokenizer(pattern, gaps=True) 

    def __call__(self, text): 
     return self.alg.tokenize(text) 
    .... 

if __name__ == '__main__': 
    s_t = SentTokenizer() 
    s_t('blah blah') 

जब मैं एक और मॉड्यूल से उन वर्गों फोन, test.py सब कुछ लगता है कहना काम करने के लिए, लेकिन tokenize.py मॉड्यूल चलाना सीधे आयात त्रुटि का कारण बनता है।

File "tokenize.py", line 1, in <module> 
...  
File "Python27\lib\site-packages\nltk\corpus\reader\util.py", line 28, in <module> 
     from nltk.util import AbstractLazySequence, LazySubsequence, LazyConcatenation, py25 
    ImportError: cannot import name AbstractLazySequence 

समस्या क्या हो सकती है? अन्य मॉड्यूल से बुलाए जाने पर यह क्यों काम करता है?

test.py

from util.tokenize import SentTokenizer 
s_t = SentTokenizer() 
print s_t('blah blah') 

प्लेटफार्म विंडोज है।

+0

प्रासंगिक कोड – CentAu

+0

के और हिस्सों को जोड़ा गया यह भी __main__ कोड तक नहीं पहुंचता है। लाइन पर यह त्रुटि फेंकता है। मैंने और कोड जोड़ा। @grill – CentAu

+1

क्या होता है यदि आप ऊपर शामिल कोड के साथ एक नई .py फ़ाइल बनाते हैं (इलिप्स को छोड़कर)? – grill

उत्तर

4

हमने पाया है कि यह nltk.tokenize और उपयोगकर्ता के tokenize.py के साथ नामस्थान संघर्ष के कारण हुआ था। tokenize.py का नाम बदलने के बाद, सब ठीक से काम किया।

संबंधित मुद्दे