2015-05-19 23 views
5

Tôi đang sử dụng nltk nhưng vấn đề tôi đang đối mặt dường như không liên quan đến nltk cụ thể. Tôi có một mô-đun tên util.tokenize bên trong đó có một số lớp học và tôi có dòng đầu tiên như sau:Python, ImportError: không thể nhập tên 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') 

Khi tôi gọi những lớp học từ mô-đun khác, nói test.py tất cả mọi thứ dường như để hoạt động, nhưng chạy mô-đun tokenize.py trực tiếp gây ra lỗi Nhập.

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 

Điều gì có thể là vấn đề? Tại sao nó hoạt động khi được gọi từ các mô-đun khác?

test.py

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

Platform là Windows.

+0

Đã thêm nhiều phần của mã có liên quan – CentAu

+0

Nó thậm chí không nhận được mã __main__. Tại dòng một nó ném lỗi. Tôi đã thêm nhiều mã hơn. @grill – CentAu

+1

Điều gì sẽ xảy ra nếu bạn tạo tệp .py mới chỉ với mã bạn đã bao gồm ở trên (không bao gồm dấu ba chấm)? – grill

Trả lời

4

Chúng tôi xác định rằng điều này đã được gây ra bởi xung đột không gian tên với nltk.tokenize và của người dùng tokenize.py. Sau khi đổi tên tokenize.py, mọi thứ hoạt động bình thường.

Các vấn đề liên quan