Il 31/07/2017 12:08, Valerio Maggio ha scritto:
2017-07-31 11:07 GMT+02:00 Massimiliano Modena <[email protected]
<mailto:[email protected]>>:
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
[email protected]
https://lists.python.it/mailman/listinfo/python