<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>