2012-12-17 4 views
1

nltk를 통해 훈련 된 순진한 bayes 분류기를 제거하는 데 문제가 있습니다. 다음은 분류자를 저장하는 데 사용하는 코드입니다.naive bayes classifier를 저장하십시오. nltk

pickledfile=open('my_classifier.pickle','wb') 
pickle.dump(classifier,pickledfile) 
pickledfile.close() 

이 코드는 정상적으로 처리되는 것 같습니다. 그러나 시도하고 다음 코드를 사용하여 절인 된 파일을로드 할 때 :

f1=open('my_classifier.pickle') 
classifier=pickle.load(f1) 
f1.close() 

나는 EOF 오류가 발생합니다. 나는이 질문에서 바로이 코드를 얻었고 어떤 이유로 든 나를 위해 일하지 않는다 : Save Naive Bayes Trained Classifier in NLTK. 이 일이 무엇인지 알면 알려주세요.

+1

에서

은 나도이 몇 가지 문제가 있었다. 'cPickle' 모듈로 덤핑과 로딩이 저에게 효과적이었습니다. 만약 작동하지 않는다면 프로토콜을 1로 설정해보십시오 :'pickle.dump (classifier, pickledfile, 1)' –

+0

예, 설정 후 프로토콜 매개 변수가 MaxEnt 모델과 비슷한 문제를 수정합니다. – winwaed

답변

1

코드를 테스트 할 수있는 환경 설정이 없지만 피클을 저장 /로드하는 부분에 적합하지 않다고 느낍니다. NLTK 책의 Storing Taggers 섹션을 참조

, 난 당신의 코드를 변경하고이 같이 할 것이다 :

def save_classifier(classifier): 
    f = open('my_classifier.pickle', 'wb') 
    pickle.dump(classifier, f, -1) 
    f.close() 

def load_classifier(): 
    f = open('my_classifier.pickle', 'rb') 
    classifier = pickle.load(f) 
    f.close() 
    return classifier 

는 도움이되기를 바랍니다. https://stackoverflow.com/posts/17635668/

관련 문제