2011-04-05 72 views
0

我訓練了一個NaiveBayes分類器來做基本的情感分析。該模型是208MB。我只想加載一次,然後使用Gearman工作人員繼續調用模型以獲得結果。加載一次只需要很長時間。我如何只加載一次模型,然後繼續調用它?使用Pickle對象,如API調用

一些代碼,希望這有助於:

import nltk.data 
c=nltk.data.load("/path/to/classifier.pickle") 

這仍然是裝載機腳本。

現在我有一個傳動員工腳本,它應該調用這個「c」對象然後分類文本。

c.classify('features') 

這就是我想要做的。 謝謝。

+0

您可以將Python對象序列化爲文件,然後加載它們。問題是模型太大? – Andrey 2011-04-05 10:48:32

+0

是的,如果我這樣做,那麼我無需加載它。我只需要加載一次並繼續調用它。就像調用服務器一樣。 – crazyaboutliv 2011-04-05 11:01:18

+0

不要把另一個軟件包扔進你的混音中,但我需要緩存昂貴的SQL查詢的結果,這些查詢將在很長的時間間隔內進行更改,方法是將它們加載到cherrypy守護程序中,並將它們檢索爲JSON編碼值。 SQL調用每個時間間隔只進行一次,當時間間隔過去後,再次執行給定的查詢並刷新所有緩存的數據。我應該想象你可以在這裏做類似的事情。 – lysdexia 2011-04-05 14:48:07

回答

0

如果問題是如何使用的泡菜,比這就是答案

import pickle 
    class Model(object): 
     #some crazy array of data 
     def getClass(sentiment) 
      #return class of sentiment 

    def loadModel(filename): 
     f = open(filename, 'rb') 
     res = pickle.load(f) 
     f.close() 
     return res 

    def saveModel(model, filename): 
     f = open(filename, 'wb') 
     pickle.dump(model, f) 
     f.close() 
    m = loadModel('bayesian.pickle') 

,如果這是一個問題加載大對象以這樣的方式,比我不知道泡菜是否有助於

+0

感謝您的解決方案,但沒有。我正在尋找的是加載模型一次,然後繼續調用它。讓我上傳代碼以使其更清楚。 – crazyaboutliv 2011-04-05 12:38:13