Confesso, sono un cliente di Amazon.it, come molte persone, immagino.
Da quando ho scoperto che posso comprare qualsiasi cosa (o quasi) e che posso riceverla a casa in tutta comodità non riesco più a farne a meno.
Di recente, però, ho sentito parlare di uno stato di disordine (brutta parola, ma adeguata), che prende il nome di acquisto compulsivo e, devo ammettere, che la cosa mi ha fatto un poco pensare.
Allora mi sono posto la domanda: “Negli ultimi anni, quanto ho speso e cosa ho comprato su Amazon?“. Domanda facile, direi, risposta complicata…
Siccome sono pigro e non voglio mettermi a farlo con carta e penna ma mi interessa sapere la risposta alla domanda, ho trovato un modo di avere i dati che mi servono direttamente da Amazon. Basta chiederli al link https://www.amazon.it/hz/privacy-central/data-requests/preview.html, selezionando, nel mio caso, la voce ordini. Dopo non molto tempo Amazon ci invierà un link per scaricare un file compresso in cui dovrete cercare un file csv che prende il nome di Retail.OrderHystory, sotto una cartella col medesimo nome. Le informazioni dovrebbero comprendere tutti gli acquisti effettuati da quando ci si è iscritti (nel mio caso, dal 2011).
Il file contiene molte informazioni, in particolare la data dell’acquisto, l’importo totale nella valuta di acquisto e il codice ASIN dell’articolo, più un campo Product Name che descrive l’articolo. Nessuna informazione sulla categoria del prodotto acquistato che mi permetta di capire quanto ho speso all’interno di una certa categoria merceologica, ad esempio Elettronica, Alimentari, Libri e così via.
Adesso viene il bello.
Usando KNIME Analytics Platform ed un LLM locale comincio importando il file, eliminando le colonne che non mi interessano e qualche altra manipolazione.
La prima idea è risalire alla categoria usando l’ASIN, ma abbandono subito perché leggo, su stackoverflow che si può fare solo utilizzando della API che richiedono un account su AWS (non ho approfondito; può darsi ci siano altri modi).
La seconda idea, che invece ho fattivamente utilizzato, è utilizzare un LLM locale e Ollama per ricavare la categoria dalla descrizione dell’articolo e… Funziona!
Il workflow e setup di Ollama
Per usare Ollama, sul mio computer con Windows, ho diverse scelte, ma la maniera più semplice è installare l’applicativo scaricandolo dal link presente alla pagina del progetto e poi, da prompt di DOS, digitare:
ollama run llama3.1:latest
questo avvierà lo scaricamento della versione più recente di llama3.1, un modello open source di Meta da 8B.
Utilizzando il Workflow mostrato sopra, che troverete nel mio spazio pubblico su hub.knime.com, potrete:
- importare il file Retail.OrderHistory
- collegare il nodo LLM prompter ad Ollama utilizzando l’ultima versione di Llama 3.1 8B
- inviare tutte le description degli ordini per ricavare la categoria merceologica di ogni articolo
- creare una Pivot che per ogni anno visualizzi il totale di spesa per categoria
- visualizzare una grafico a torta che mostri le prime 10 categorie di spesa
Risultati dell’elaborazione del mio file degli ordini su amazon.it
Le prime dieci voci delle categorie di acquisti mostrano che un terzo delle spese sono per prodotti alimentari (non ci avrei scommesso), mentre le voci che seguono, che assieme fanno circa la metà, sono la categoria Altro ed Elettronica (questa mi stupisce meno).
Riguardo alla categoria Altro, il problema è che l’LLM non riesce a trova la categoria adatta per alcuni articoli quali i libri, i CD e i DVD (ad esempio, quale dovrebbe essere la categoria per il libro ‘I promessi sposi’ dato che il LLM riceve solo il titolo come elemento?) e, in effetti, questo è certo, ho sicuramente acquistato molti articoli in queste due categorie.
La quarta categoria è Giocattoli (questa mi convince) ed infine, l’ultima categoria, che nel grafico a torta è stata chiamata Other, in realtà raccoglie le categorie Cosmetici, Moda, Elettrodomestici, Abbigliamento, Sportivo, Salute.
Conclusioni
Ovviamente questa attività è stata eseguita più per rispondere ad una curiosità che per scopi utili, ma è stata un’occasione per mostrare l’utilizzo di un LLM locale in un tipo di attività che potrebbe, invece, essere utile in un contesto in cui sia necessario classificare gli elementi di una lista qualsiasi, grande o piccola che sia.
P.S. nel mio caso ho dovuto elaborare circa 1800 righe di ordini, quindi l’elaborazione è durata circa cinque ore; utilizzando un LLM a pagamento, come chatGPT, l’attività sarebbe stata di gran lunga più breve. Il workflow può essere facilmente modificato per ChatGPT semplicemente inserendo le credenziali che autorizzano all’accesso al servizio all’interno del nodo Creedential Configuration, dato che per dialogare con Ollama sfrutta la caratteristica che questo implementa lo stesso funzionamento di chatGPT.