[{"data":1,"prerenderedAt":261},["ShallowReactive",2],{"studies-it-ghigliottina":3},{"id":4,"title":5,"body":6,"category":238,"description":72,"extension":239,"featured":240,"links":241,"meta":243,"navigation":240,"order":244,"path":245,"period":246,"role":247,"seo":248,"slug":249,"stack":250,"stem":257,"subtitle":258,"summary":259,"__hash__":260},"projects_it\u002Fprojects\u002Fit\u002Fghigliottina.md","Ghigliottina Solver",{"type":7,"value":8,"toc":229},"minimark",[9,14,32,43,47,58,61,65,76,82,112,115,133,143,147,176,180,183,207,211,222],[10,11,13],"h2",{"id":12},"il-contesto","Il contesto",[15,16,17,18,22,23,26,27,31],"p",{},"\"La Ghigliottina\" è il gioco finale de ",[19,20,21],"em",{},"L'Eredità",": cinque indizi tra loro scollegati, ognuno legato a un'unica parola nascosta. Il legame è quasi sempre lessicale o culturale — la soluzione forma con ogni indizio una parola composta, un modo di dire, una collocazione frequente (",[19,24,25],{},"doppio, carta, soldi, pasta, regalo"," → ",[28,29,30],"strong",{},"pacco","). Il giocatore ha 60 secondi.",[15,33,34,35,38,39,42],{},"L'esame di ",[28,36,37],{},"Natural Language Processing"," chiedeva un sistema che risolvesse il gioco entro il limite di tempo ",[19,40,41],{},"e"," generasse una descrizione che spiega il legame con ciascun indizio. Dataset: 965 partite di training, 100 di test — e solo il 22% delle soluzioni di test compare nel training. Memorizzare non basta: serve vero ragionamento associativo.",[10,44,46],{"id":45},"lidea-di-fondo","L'idea di fondo",[15,48,49,50,53,54,57],{},"La scoperta che guida tutto il progetto è empirica: gli LLM generici sono ",[28,51,52],{},"deboli nel risolvere"," questo gioco (GPT-4 si ferma intorno al 4% in letteratura), mentre un ",[28,55,56],{},"ranker knowledge-based"," fondato sulle associazioni tra parole — l'approccio storico al gioco (OTTHO, UNIOR4NLP) — è molto più affidabile e praticamente istantaneo.",[15,59,60],{},"Quindi: divisione del lavoro. Un solver knowledge-based trova la soluzione, l'LLM genera solo la descrizione — dove la generazione è il suo punto forte.",[10,62,64],{"id":63},"come-funziona","Come funziona",[66,67,73],"pre",{"className":68,"code":70,"language":71,"meta":72},[69],"language-text","5 indizi ─► [A] generazione candidati ─► [B] scoring per copertura ─► SOLUZIONE\n                                                                   └─► descrizione (LLM)\n","text","",[74,75,70],"code",{"__ignoreMap":72},[15,77,78,81],{},[28,79,80],{},"(A) Knowledge base di associazioni."," Tre fonti, tutte indicizzate per co-occorrenza:",[83,84,85,92,106],"ol",{},[86,87,88,91],"li",{},[28,89,90],{},"Polirematiche e proverbi"," forniti dal corso (~36.000 voci, incluso il dizionario De Mauro)",[86,93,94,97,98,101,102,105],{},[28,95,96],{},"Titoli multi-parola di Wikipedia italiana"," trattati come espressioni (\"Conquista del West\" collega ",[19,99,100],{},"conquista"," e ",[19,103,104],{},"west",")",[86,107,108,111],{},[28,109,110],{},"Collocazioni estratte dal corpus Paisà"," — per ogni indizio, le parole che co-occorrono entro ±3 token con PMI positiva",[15,113,114],{},"Dati i cinque indizi, i candidati sono tutte le parole associate ad almeno uno di essi.",[15,116,117,120,121,124,125,128,129,132],{},[28,118,119],{},"(B) Scoring per copertura."," Ogni candidato riceve ",[74,122,123],{},"score = W · copertura + forza_MWE \u002F √frequenza",". La copertura — a quanti dei cinque indizi il candidato è collegato — domina: una parola legata a tutti e cinque batte una legata a due, esattamente la logica del gioco. La divisione per √frequenza è una penalità tipo IDF che impedisce alle parole comuni (",[19,126,127],{},"dire",", ",[19,130,131],{},"grande",") di inquinare la classifica. Parametri scelti su un dev set di 200 partite, test intatto fino alla valutazione finale.",[15,134,135,138,139,142],{},[28,136,137],{},"(C) Descrizione."," La genera ",[28,140,141],{},"Qwen2.5-7B in locale"," (via Ollama), con due esempi few-shot dal training, nello stile del gold. Locale perché gratuito, illimitato e non soggetto al limite dei 60 secondi — che vale solo sulla risoluzione.",[10,144,146],{"id":145},"risultati","Risultati",[148,149,150,156,162,169],"ul",{},[86,151,152,155],{},[28,153,154],{},"47% accuracy top-1"," sulla soluzione, MRR 0.55, gold nei top-50 nell'82% delle partite",[86,157,158,161],{},[28,159,160],{},"0.01 s\u002Fpartita"," — zero partite oltre i 60 secondi",[86,163,164,165,168],{},"Descrizione: ",[28,166,167],{},"BERTScore-F1 0.73"," (BERT multilingue), ROUGE-1 0.33, BLEU 6.73",[86,170,171,172,175],{},"Progressione delle scelte di design: 21% (conteggio MWE grezzo) → 25% (copertura + rarità) → 36% (titoli Wikipedia, recall 63%→89%) → ",[28,173,174],{},"47%"," (collocazioni da corpus)",[10,177,179],{"id":178},"cosa-è-stato-provato-e-scartato","Cosa è stato provato e scartato",[15,181,182],{},"L'ablation è metà del valore del progetto:",[148,184,185,191,197],{},[86,186,187,190],{},[28,188,189],{},"Embeddings fastText"," — utili per il recall prima dei titoli Wikipedia (25%→31%), ridondanti e leggermente dannosi dopo → fuori dal sistema finale",[86,192,193,196],{},[28,194,195],{},"Scorer a grafo (Personalized PageRank)"," — la propagazione di attivazione dai cinque indizi non batte il ranking diretto: il collo di bottiglia è la copertura dei dati, non l'algoritmo",[86,198,199,202,203,206],{},[28,200,201],{},"Selezione della soluzione con LLM"," — peggiora il ranker: modelli locali ~0% in un test diagnostico, il 14B sfora i 60 secondi. Conferma che gli LLM non aiutano a ",[19,204,205],{},"risolvere"," questo gioco",[10,208,210],{"id":209},"cosa-mi-porto-dietro","Cosa mi porto dietro",[15,212,213,214,217,218,221],{},"La leva decisiva non è stata l'algoritmo ma ",[28,215,216],{},"l'ampiezza della knowledge base",": ogni salto di accuracy è arrivato aggiungendo una fonte di associazioni, non raffinando lo scoring. E il risultato negativo vale quanto quello positivo — sapere ",[19,219,220],{},"dove"," un LLM non serve è una competenza di design, non una sconfitta. La pipeline è concettualmente un RAG portato all'estremo: il retrieval decide la risposta, il modello si limita a spiegarla.",[15,223,224,225,228],{},"Progetto individuale per il corso di NLP all'",[28,226,227],{},"Università degli Studi di Bari Aldo Moro",".",{"title":72,"searchDepth":230,"depth":230,"links":231},2,[232,233,234,235,236,237],{"id":12,"depth":230,"text":13},{"id":45,"depth":230,"text":46},{"id":63,"depth":230,"text":64},{"id":145,"depth":230,"text":146},{"id":178,"depth":230,"text":179},{"id":209,"depth":230,"text":210},"studies","md",true,{"github":242},"https:\u002F\u002Fgithub.com\u002FTomValenzano\u002Fghigliottina-solver",{},9,"\u002Fprojects\u002Fit\u002Fghigliottina","2026","Natural Language Processing · MSc curriculum AI",{"title":5,"description":72},"ghigliottina",[251,252,253,254,255,256],"Python","gensim · scikit-learn","PMI · corpus mining","Wikipedia · corpus Paisà","Qwen2.5-7B · Ollama","BERTScore · ROUGE · BLEU","projects\u002Fit\u002Fghigliottina","Risolutore knowledge-based per il gioco televisivo La Ghigliottina — ranking per copertura su una knowledge base di associazioni lessicali, con un LLM locale usato solo per spiegare la soluzione.",null,"Woqc47aHUsXR9NJHQAU_ZM5ytb3zWq5OfAUwakXU2tk",1785261405203]