簡體   English   中英

Python:加載的NLTK分類器無法正常工作

[英]Python: Loaded NLTK Classifier not working

我正在嘗試訓練NLTK分類器進行情緒分析,然后使用pickle保存分類器。 訓練有素的分類器工作正常。 但是,如果我加載一個保存的分類器,分類器將為所有示例輸出'positive'或'negative'。

我正在使用保存分類器

classifier = nltk.NaiveBayesClassifier.train(training_set)
classifier.classify(words_in_tweet)
f = open('classifier.pickle', 'wb')
pickle.dump(classifier, f)
f.close()

並使用加載分類器

f = open('classifier.pickle', 'rb')
classifier = pickle.load(f)
f.close()
classifier.classify(words_in_tweet)

我沒有收到任何錯誤。 知道問題可能是什么,或者如何正確調試?

酸洗分類器最容易出錯的地方是特征提取功能。 這必須用於生成分類器使用的特征向量。

NaiveBayesClassifier期望訓練和分類的特征向量; 您的代碼看起來就像是將原始單詞傳遞給分類器(但可能只是在取消渲染之后,否則您將無法在unpickling之前和之后獲得不同的行為)。 您應該將特征提取代碼存儲在單獨的文件中,並將其import訓練和分類(或測試)腳本中。

我懷疑這適用於OP,但是一些NLTK分類器將特征提取函數作為構造函數的參數。 當您有用於訓練和分類的單獨腳本時,確保unpickled分類器成功找到相同的函數可能很棘手。 這是因為pickle工作方式:pickling只保存數據,而不是代碼。 要使其工作,只需將提取功能放在腳本導入的單獨文件(模塊)中。 如果您輸入“main”腳本, pickle.load將在錯誤的位置查找它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM