<div dir="ltr"><div class="gmail_default"><div class="gmail_default"><font face="verdana, sans-serif">Ciao lista, ho bisogno di un suggerimento su un problema che devo risolvere.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Contesto: ho un'applicazione Django che si collega ad un servizio di terze parti per ottere dei dati di un "business" </font><span style="font-family:verdana,sans-serif">che l'utente sta integrando. Il servizio ci da varie informazioni tra cui un dato `industry_type`.</span></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Questo valore `industry_type` e' digitato dall'utente e significa: descrizione dell'attivita' del business</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Ora questo valore `industry_type` lo devo confrontare con una tabella nel database che puo' essere paragonata alla classificazione delle attivita' ATECO[1]. La mia tabella ha un codice e una descrizione. Io faccio il match da `industry_type` alla descrizione sul database e il match piu' probabile "vince".</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Per applicare questo procedimento ho usato l'algoritmo jaro-winkler dal package "jellyfish"[2], faccio il matching di</font></div><div class="gmail_default"><font face="verdana, sans-serif">tutta la tabella nel database e il miglior match e' cio' che piu' si avvicina. Ovviamente non funziona un gran che' perche' il si avvicina significa quanti editing sono necessari per arriva</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Ecco un esempio:</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">*INDUSTRY TYPE*, *DESCRIZIONE TROVATA*</font></div><div class="gmail_default"><font face="verdana, sans-serif">Solar Panels, Solar Panel Installation</font></div><div class="gmail_default"><font face="verdana, sans-serif">Software Consultancy, Software Publishing</font></div><div class="gmail_default"><font face="verdana, sans-serif">Auto Trim, Arts Education</font></div><div class="gmail_default"><font face="verdana, sans-serif">Consulting, Counselling Service - Debt</font></div><div class="gmail_default"><font face="verdana, sans-serif">Advanced Mobile Technology Development, Masonic Lodge Operation</font></div><div class="gmail_default"><font face="verdana, sans-serif">Bridal Boutique, Primary Education</font></div><div class="gmail_default"><font face="verdana, sans-serif">Cafe/Restaurant, Restaurant</font></div><div class="gmail_default"><br></div><div class="gmail_default"><font face="verdana, sans-serif">Ho circa 5000 industry_type disponibili realmente digitati dall'utente e purtroppo senza il corrispettivo matching, ma controllando i match generati dall'algoritmo, il risultato e' bassino, i match sono circa il 15%.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Ora, c'e' modo di migliorare la situazione?</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Io stavo pensando di fare due cose:</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">1) Migliorare il matching cambiando algoritmo o applicandolo scorporando le parole di industry_type</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">2) Applicare del "machine learning" anche se mi tocca impararmelo. Pensavo di salvare gli abbinamenti fatti dall'utente per correggere il falso match in modo di avere un numero sempre maggiore di associazioni di `industry_type` al codice attivita'.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Quindi se ad esempio l'industry_type e' "Sport activities" purtroppo non mi esce "Sporting Club Room" che e' presente come attivita', ma mi esce tutt'altro. </font></div><div class="gmail_default"><font face="verdana, sans-serif">Se pero' io abbinassi al codice di "Sporting Club Room" l'abbinamento "sport activities" corretto dall'utente, avrei qualcosa di piu' su cui fare il matching la volta successiva.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">La cosa buffa e' che usando il matching, piu' parole scrivi piu' tendi ad allontanarti dal match giusto se le parole sono diverse.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Tornando all'esempio di prima:</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">l'utente ha digitato "Sport" e allora il match mi da correttamente "Sporting Club Room", ma se l'utente digita "sport activities", l'algoritmo mi trova: "Podiatrist / Chiropodist" a causa della distanza dell'algoritmo.</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Qualcuno di voi ha affrontato questo tipo di situazioni?</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">Grazie</font></div><div class="gmail_default"><font face="verdana, sans-serif"><br></font></div><div class="gmail_default"><font face="verdana, sans-serif">[1] <a href="http://www.istat.it/it/strumenti/definizioni-e-classificazioni/ateco-2007">http://www.istat.it/it/strumenti/definizioni-e-classificazioni/ateco-2007</a></font></div><div class="gmail_default"><font face="verdana, sans-serif">[2] <a href="http://jellyfish.readthedocs.io/en/latest/comparison.html#jaro-winkler-distance">http://jellyfish.readthedocs.io/en/latest/comparison.html#jaro-winkler-distance</a></font></div><div style="font-family:verdana,sans-serif"><br></div></div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Karim N. Gorjux<br></div></div>
</div>