<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<br>
<div class="moz-cite-prefix">Il 31/07/2017 12:08, Valerio Maggio ha
scritto:<br>
</div>
<blockquote type="cite"
cite="mid:CAEt-TDx=Tg4nsOCOKBMmiMag__qLxaEYNF-MgZeAp=-jUSF8AA@mail.gmail.com">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">2017-07-31 11:07 GMT+02:00
Massimiliano Modena <span dir="ltr"><<a
href="mailto:xam8re@gmail.com" target="_blank"
moz-do-not-send="true">xam8re@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>
<div class="h5">
<p><br>
</p>
<br>
<div class="m_7858834494919296388moz-cite-prefix">Il
31/07/2017 10:58, Valerio Maggio ha scritto:</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div>Oppure: se capisco bene quello che
persisti è l'oggetto "classificatore" -
aka: oggetto Python con i parametri
risultanti dal training.</div>
<div>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 ;)</div>
<div><br>
</div>
<div>HTH</div>
<div>Valerio</div>
</div>
</div>
</div>
</blockquote>
<br>
</div>
</div>
Il problema si presenta ben prima di arrivare a fare <i>pickle.dump(classifier,
f).<br>
</i></div>
</blockquote>
<div><br>
</div>
<div>ok, allora non ho capito io il problema... oppure non
ti sei spiegato :D</div>
</div>
</div>
</div>
</blockquote>
La procedura e': <br>
Ottengo i dati dal database:<br>
trainbase=[]<br>
for item in
session.query(Nltrainingdatum).filter(Nltrainingdatum.group==pcategory).order_by(Nltrainingdatum.category):<br>
tokens = nltk.word_tokenize(item.description)<br>
words_filtered = [e.lower() for e in tokens if len(e) >= 1]<br>
trainbase.append((words_filtered, item.category))<br>
<br>
che costruisce il trainbase.<br>
Terminato questo, applico i calcoli statistici:<br>
training_set = nltk.classify.apply_features(extract_features,
trainbase)<br>
extract_features e' un metodo.<br>
<br>
in ultimo creo l'oggetto classificatore:<br>
classifier = nltk.NaiveBayesClassifier.train(training_set)<br>
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. \<br>
Dopo di questa operazione ne effettuo il pickle ma non ci arrivo. <br>
f = open(config[categoria], 'wb')<br>
pickle.dump(classifier, f)<br>
f.close()<br>
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). <br>
<br>
<br>
<blockquote type="cite"
cite="mid:CAEt-TDx=Tg4nsOCOKBMmiMag__qLxaEYNF-MgZeAp=-jUSF8AA@mail.gmail.com">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><i> </i>Json non e'
un formato adatto, troppo overhead, potrei provare
jsonB. Ma al momento, non e' questa l'urgenza. <br>
</div>
</blockquote>
<div><br>
</div>
<div>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...</div>
</div>
</div>
</div>
</blockquote>
Questi stanno gia' su database, e cosi' mi basta. <br>
<blockquote type="cite"
cite="mid:CAEt-TDx=Tg4nsOCOKBMmiMag__qLxaEYNF-MgZeAp=-jUSF8AA@mail.gmail.com">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"> Vedo se riesco a
creare un mokup del programma che ho fatto e postarlo
(devo stare attento perché sui dati ho firmato un NDA).
<br>
</div>
</blockquote>
<div><br>
</div>
<div>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...)</div>
<div> </div>
<div>Ciao,</div>
<div>Valerio</div>
<div><br>
</div>
<div>P.s. Manteniamo la discussione sulla ML.</div>
</div>
</div>
</div>
</blockquote>
scusa, ho fatto rispondi senza guardare, convinto che rispondesse in
automatico alla mailing list. Mea culpa.<br>
<br>
</body>
</html>