Ciao lista, ho bisogno di un suggerimento su un problema che devo risolvere.
Contesto: ho un'applicazione Django che si collega ad un servizio di terze parti per ottere dei dati di un "business" che l'utente sta integrando. Il servizio ci da varie informazioni tra cui un dato `industry_type`. Questo valore `industry_type` e' digitato dall'utente e significa: descrizione dell'attivita' del business 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". Per applicare questo procedimento ho usato l'algoritmo jaro-winkler dal package "jellyfish"[2], faccio il matching di 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 Ecco un esempio: *INDUSTRY TYPE*, *DESCRIZIONE TROVATA* Solar Panels, Solar Panel Installation Software Consultancy, Software Publishing Auto Trim, Arts Education Consulting, Counselling Service - Debt Advanced Mobile Technology Development, Masonic Lodge Operation Bridal Boutique, Primary Education Cafe/Restaurant, Restaurant 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%. Ora, c'e' modo di migliorare la situazione? Io stavo pensando di fare due cose: 1) Migliorare il matching cambiando algoritmo o applicandolo scorporando le parole di industry_type 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'. 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. 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. La cosa buffa e' che usando il matching, piu' parole scrivi piu' tendi ad allontanarti dal match giusto se le parole sono diverse. Tornando all'esempio di prima: 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. Qualcuno di voi ha affrontato questo tipo di situazioni? Grazie [1] http://www.istat.it/it/strumenti/definizioni-e-classificazioni/ateco-2007 [2] http://jellyfish.readthedocs.io/en/latest/comparison.html#jaro-winkler-distance -- Karim N. Gorjux
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python