2016-11-30 2 views
0

나는 다음과 같은 기능이 있습니다 형식 오류 : 목록 객체는 호출하지

TypeError: 'list' object is not callable

가 어떤 그늘지게 여기에가는 : 나는이 코드를 실행하면

def sample_handling(sample, lexicon, classification): 
    featureset = [] 

    with open(sample, 'r') as f: 
     contents = f.readlines() 
     for l in contents[:hm_lines]: 
      current_words = word_tokenize(l.lower()) 
      current_words = [lemmatizer.lemmatize(i) for i in current_words] 
      features = np.zeros(len(lexicon)) 
      for word in current_words(): 
       if word.lower() in lexicon: 
        index_value = lexicon.index(word.lower()) 
        features[index_value] += 1 
      features = list(features) 
      featureset.append([features, classification]) 

    return featureset 

, 그것은 나에게 다음과 같은 오류를 제공을 ? 그래서이 오류를 다루는 많은 스레드를 따라하지만 내 문제를 해결할 수 없습니다.

이 내 전체 코드입니다 :

import nltk 
from nltk.tokenize import word_tokenize 
from nltk.stem import WordNetLemmatizer 
import numpy as np 
import random 
import pickle 
from collections import Counter 

lemmatizer = WordNetLemmatizer() 
hm_lines = 10000000 

def create_lexicon(pos, neg): 
    lexicon = [] 
    for fi in [pos, neg]: 
     with open(fi, 'r') as f: 
      contents = f.readlines() 
      for l in contents[:hm_lines]: 
       all_words = word_tokenize(l.lower()) 
       lexicon += list(all_words) 
    lexicon = [lemmatizer.lemmatize(i) for i in lexicon] 
    w_counts = Counter(lexicon) 
    #w_counts = {'the': 52521, 'and': 25242} 

    l2 = [] 
    for w in w_counts: 
     if 1000 > w_counts[w] > 50: 
      l2.append(w) 

    print(l2) 
    return l2 

def sample_handling(sample, lexicon, classification): 
    featureset = [] 

    with open(sample, 'r') as f: 
     contents = f.readlines() 
     for l in contents[:hm_lines]: 
      current_words = word_tokenize(l.lower()) 
      current_words = [lemmatizer.lemmatize(i) for i in current_words] 
      features = np.zeros(len(lexicon)) 
      for word in current_words(): 
       if word.lower() in lexicon: 
        index_value = lexicon.index(word.lower()) 
        features[index_value] += 1 
      features = list(features) 
      featureset.append([features, classification]) 

    return featureset 

def create_feature_sets_and_lables(pos, neg, test_size = 0.1): 
    lexicon = create_lexicon(pos, neg) 
    features = [] 
    features += sample_handling('pos.txt', lexicon,[1,0]) 
    features += sample_handling('neg.txt', lexicon,[0,1]) 
    random.shuffle(features) 

    features = np.array(features) 

    testing_size = int(test_size * len(features)) 

    train_x = list(features[:,0][:-testing_size]) 
    train_y = list(features[:,1][:-testing_size]) 

    test_x = list(features[:,0][-testing_size:]) 
    test_y = list(features[:,1][-testing_size:]) 

    return train_x, train_y, test_x, test_y 

if __name__ == '__main__': 
    train_x, train_y, test_x, test_y = create_feature_sets_and_lables('pos.txt', 'neg.txt') 
    with open('sentiment_set.pickle', 'wb') as f: 
     pickle.dump([train_x, train_y, test_x, test_y], f) 

답변

0

전체 스택 추적을 인쇄하면 도움이 될 것입니다. 비교적 단순한 오류이므로이 경우 문제를 쉽게 식별 할 수 있습니다. 그것은 반복하는 동안 당신은하지 전화 목록이 필요

for word in current_words(): 

,이 라인입니다. 간단히 말해서,

for word in current_words: 
+0

감사! 바보 같은 실수 였어. –

0

글쎄, 디버깅을 시작, 내가 PDB 디버깅 콘솔을 시작합니다

python -m pdb whatever_your_file_is.py 

을 사용하여 프로그램을 실행합니다. 프로그램이 실행되면 ' c'을 눌러 프로그램을 실행하십시오. 잠시 후 프로그램이 충돌한다고 가정하면 오류가 발생한 정확한 위치에서 중지됩니다.

는 거기에서, 당신은 당신의 코드에서 일어나는 정확히 파악하는 this 또는 this (단지 구글 파이썬 PDB)를 참조 할 수 있습니다.

행운을 빈다.

+0

'features = list (features) '부분에서 충돌합니다. –

+0

'features '만 콘솔에 입력하면 어떻게됩니까? –

+1

나는 그것을 해결했다. 당신의 도움을 주셔서 감사합니다! –