如何通过保存经过训练的模型来减少使用 pickle 的编译时间?
How to reduce compilation time using pickle by saving trained model?
这是一个情感分析代码,每次我改变我的输入,编译需要 10-15 分钟。我可以通过哪些方式减少它?通过保存分类器或任何其他方法使用 pickle 更可取?
其他功能这里就不说了
inpTweets = csv.reader(open('training_neatfile_4.csv', 'r' ,encoding='ISO-8859-1'), delimiter=',')
stopWords = getStopWordList('stopwords.txt')
count = 0;
featureList = []
tweets = []
for row in inpTweets:
sentiment = row[0]
tweet = row[1]
processedTweet = processTweet(tweet)
featureVector = getFeatureVector(processedTweet, stopWords)
featureList.extend(featureVector)
tweets.append((featureVector, sentiment));
#end loop
# Remove featureList duplicates
featureList = list(set(featureList))
# Generate the training set
training_set = nltk.classify.util.apply_features(extract_features, tweets)
# Train the Naive Bayes classifier
nb_classifier = nltk.NaiveBayesClassifier.train(training_set)
# Test the classifier
testTweet = 'He is a brainless kid'
processedTestTweet = processTweet(testTweet)
sentiment = nb_classifier.classify(extract_features(getFeatureVector(processedTestTweet, stopWords)))
print ("testTweet = %s, sentiment = %s\n" % (testTweet, sentiment))
训练一个 NaiveBayesClassifier(或任何)需要很多时间(取决于训练数据的输入),如果你在训练后保存分类器(NBClassifier)的对象以节省时间,它会变得更容易省略重新训练。
以下是使用pickle保存对象的方法,您可以在代码中使用它来保存train或加载Classifier。
import pickle
pickle.dump(object, file)
您可以通过如下保存其对象 (nb_classifier) 来保存 NaiveBayesClassifier。
with open('model.pkl', 'wb') as nb_classifier_model:
pickle.dump(nb_classifier, nb_classifier_model)
然后,您可以将其检索为:
with open('model.pkl', 'rb') as nb_classifier_model:
nb_classifier = pickle.load(nb_classifier_model)
这就是您可以通过相应地使用来实现您的目标的方式。
希望对您有所帮助!
这是一个情感分析代码,每次我改变我的输入,编译需要 10-15 分钟。我可以通过哪些方式减少它?通过保存分类器或任何其他方法使用 pickle 更可取? 其他功能这里就不说了
inpTweets = csv.reader(open('training_neatfile_4.csv', 'r' ,encoding='ISO-8859-1'), delimiter=',')
stopWords = getStopWordList('stopwords.txt')
count = 0;
featureList = []
tweets = []
for row in inpTweets:
sentiment = row[0]
tweet = row[1]
processedTweet = processTweet(tweet)
featureVector = getFeatureVector(processedTweet, stopWords)
featureList.extend(featureVector)
tweets.append((featureVector, sentiment));
#end loop
# Remove featureList duplicates
featureList = list(set(featureList))
# Generate the training set
training_set = nltk.classify.util.apply_features(extract_features, tweets)
# Train the Naive Bayes classifier
nb_classifier = nltk.NaiveBayesClassifier.train(training_set)
# Test the classifier
testTweet = 'He is a brainless kid'
processedTestTweet = processTweet(testTweet)
sentiment = nb_classifier.classify(extract_features(getFeatureVector(processedTestTweet, stopWords)))
print ("testTweet = %s, sentiment = %s\n" % (testTweet, sentiment))
训练一个 NaiveBayesClassifier(或任何)需要很多时间(取决于训练数据的输入),如果你在训练后保存分类器(NBClassifier)的对象以节省时间,它会变得更容易省略重新训练。
以下是使用pickle保存对象的方法,您可以在代码中使用它来保存train或加载Classifier。
import pickle
pickle.dump(object, file)
您可以通过如下保存其对象 (nb_classifier) 来保存 NaiveBayesClassifier。
with open('model.pkl', 'wb') as nb_classifier_model:
pickle.dump(nb_classifier, nb_classifier_model)
然后,您可以将其检索为:
with open('model.pkl', 'rb') as nb_classifier_model:
nb_classifier = pickle.load(nb_classifier_model)
这就是您可以通过相应地使用来实现您的目标的方式。
希望对您有所帮助!