Il 31/07/2017 12:08, Valerio Maggio ha scritto:


2017-07-31 11:07 GMT+02:00 Massimiliano Modena <xam...@gmail.com <mailto:xam...@gmail.com>>:



    Il 31/07/2017 10:58, Valerio Maggio ha scritto:
    Oppure: se capisco bene quello che persisti è l'oggetto
    "classificatore" - aka: oggetto Python con i parametri risultanti
    dal training.
    Cosa più leggera potrebbe essere salvarti esclusivamente i valori
    dei parametri e ogni volta ricreare oggetto con i parametri
    giusti.. per questo basterebbe un formato qualsiasi a tua
    scelta.. da csv a JSON a whatever ;)

    HTH
    Valerio

    Il problema si presenta ben prima di arrivare a fare
    /pickle.dump(classifier, f).
    /


ok, allora non ho capito io il problema... oppure non ti sei spiegato :D
La procedura e':
Ottengo i dati dal database:
trainbase=[]
for item in session.query(Nltrainingdatum).filter(Nltrainingdatum.group==pcategory).order_by(Nltrainingdatum.category):
    tokens = nltk.word_tokenize(item.description)
    words_filtered = [e.lower() for e in tokens if len(e) >= 1]
    trainbase.append((words_filtered, item.category))

che costruisce il trainbase.
Terminato questo, applico i calcoli statistici:
training_set = nltk.classify.apply_features(extract_features, trainbase)
extract_features e' un metodo.

in ultimo creo l'oggetto classificatore:
classifier = nltk.NaiveBayesClassifier.train(training_set)
quest'ultima operazione e' quella che va in errore. L'ho appena terminata su una workstation piu' performante, ci ha messo 30 minuti generando un oggetto di 1.5gb. L'uso della ram si attestava attorno ai 20gb per tutto il tempo. \
Dopo di questa operazione ne effettuo il pickle ma non ci arrivo.
f = open(config[categoria], 'wb')
pickle.dump(classifier, f)
f.close()
che mi permette di NON rieffettuare il training, dato che i dati hanno validita' di una settimana (ed infatti, anche i 30 minuti di elaborazione, non sono un problema).


    //Json non e' un formato adatto, troppo overhead, potrei provare
    jsonB. Ma al momento, non e' questa l'urgenza.


Io sto parlando della memorizzazione dei **soli** parametri (e valori) non dell'oggetto Python... per cui, non capisco JSONB... parliamo di cose che starebbero in un file di testo...
Questi stanno gia' su database, e cosi' mi basta.

    Vedo se riesco a creare un mokup del programma che ho fatto e
    postarlo (devo stare attento perché sui dati ho firmato un NDA).


direi che non serve, se ci spieghi *bene* quale sia il tuo problema allora.. leggendo avevo capito che il tuo problema era con Pickle (cosa alquanto probabile...)
Ciao,
Valerio

P.s. Manteniamo la discussione sulla ML.
scusa, ho fatto rispondi senza guardare, convinto che rispondesse in automatico alla mailing list. Mea culpa.

_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Reply via email to