Il 2022 è stato talmente pessimo in termini di email spazzatura e rumore che ho avviato la Virtual Secretary , un framework Python per scrivere filtri email intelligenti incrociando informazioni provenienti da diverse fonti per indovinare cosa siano le email in arrivo e se siano importanti/urgenti o meno. Quando parlo di email spazzatura, intendo anche le notifiche di Github, i ping su pixls.us (grazie al cielo ho chiuso il mio account su quello stupido forum), YouTube ed email dirette da persone che sperano di ottenere un po’ di aiuto in privato.

Essendo diventato «il volto» di darktable, soprattutto perché sono uno dei pochi a prendersi la briga di fornire istruzione e formazione agli utenti invece di limitarsi a sfornare codice, non me l’aspettavo e non ero preparato. Molte persone ora mi scambiano per la reception, il che non aiuta il pensiero astratto sulle questioni di programmazione, per non parlare del prendersi il tempo per produrre effettivamente arte. Il problema è che tutto il tempo perso a gestire info/rumore/richieste non è speso a risolvere problemi, e il tempo è l’unica cosa per cui non puoi ottenere un rimborso.

Dopo un po’, ho pensato che sarebbe stato bello estendere la Virtual Secretary con un classificatore basato sull’apprendimento automatico, che indovinasse in quale cartella dovrebbero finire le email in arrivo, estraendo il contenuto delle email già presenti in detta cartella. In realtà è molto più facile da implementare di quanto pensassi, ma la parte che richiede tempo è scrivere i filtri di testo per ripulire l’input (perché garbage in, garbage out, specialmente per le email di spam che sono generalmente formattate in modo scorretto).

Ma l’obiettivo finale, nei miei sogni più sfrenati, era costruire un risponditore automatico per le persone che pongono domande a cui è già stata data risposta su uno dei tanti siti a cui ho contribuito nel corso degli anni. È una frustrazione costante vedere che tutte le pagine di documentazione che ho scritto negli anni si perdono nel limbo di Internet. Sui forum incentrati su FLOSS, anche i ragazzi benevoli tendono a sperimentare lo stesso tipo di stanchezza: ripetere ancora e ancora le stesse informazioni, linkare le stesse pagine, a orde infinite di principianti che non sanno cosa cercare. Basta guardare il Reddit di darktable: ogni 14 giorni, qualcun altro chiede perché le miniature del tavolo luminoso non abbiano lo stesso aspetto dell’anteprima della camera oscura. Anche scartando la quantità di frustrazione e rabbia in gioco, il numero di ore-uomo perse nel ripetere è straordinario. Solo perché l’informazione va perduta.

Il vero problema dei motori di ricerca è che devi sapere quali parole chiave cercare. Il che ci riporta al fatto che i principianti non conoscono il gergo. Quindi non sanno cosa cercare. Non hanno alcun punto d’ingresso nella matrice. Tranne altri esseri umani. Il che è una rogna per chi deve fare il lavoro, di solito gratis.

Dopo aver integrato uno strato neurale di word embedding word2vec (paroloni per dire che si tratta di apprendimento automatico non supervisionato che trova come le parole siano contestualmente correlate nelle frasi, cioè trova strutture sintattiche, sinonimi e simili), come primo passo nel mio classificatore di email (che ora arriva al 92 % di accuratezza), mi sono chiesto se questo non potesse essere utilizzabile per costruire un motore di ricerca consapevole del contesto e dei sinonimi, in grado di guardare oltre le parole chiave esatte.

Si scopre che un paio di ragazzi di Bing hanno avuto la stessa idea nel 2016, e hanno pubblicato la loro matematica, quindi l’ho implementata. Poi ho proceduto ad aggiungerci sopra un’interfaccia web. Ciò ha dato vita a Chantal , l’IA che sei gentilmente pregato di scomodare prima di scomodare me. La versione attuale è addestrata su 101.000 pagine internet dai miei stessi siti, dalla documentazione di darktable e Ansel, insieme ad alcune affidabili risorse di scienza del colore. Indicizza 15.500 pagine in francese e inglese e può elaborare query di ricerca in una o entrambe queste lingue. Una delle sue funzioni interessanti è proporti un elenco di parole chiave associate alla tua query, così puoi affinare/riorientare/provare cose a cui non avresti pensato prima.

Spero che sia d’aiuto.

Quel lavoro mi ha mostrato quanto molti siti web siano scarsamente indicizzabili. Per compensare la mancanza di una sitemap XML su forums.darktable.fr e color.org, ho dovuto scrivere un crawler ricorsivo. Ma anche così, molte pagine non hanno meta tag di descrizione né un tag di data adeguato. Significa che devi usare espressioni regolari e metodi indiretti nel tentativo di identificare i metadati, e regolare manualmente il parser HTML per estrarre la parte di contenuto effettivo della pagina web (scartando barre laterali, menu, riquadri e pubblicità se presenti).

Poi, impari ad amare i forum di domande e risposte come Stack Overflow, dove le domande adeguate avviano una discussione, seguono le risposte adeguate, e le migliori risposte vengono selezionate dalla comunità. I messaggi «grazie» e «anch’io» sono esplicitamente vietati nelle condizioni d’uso. Su forum come pixls.us o forums.darktable.fr, le informazioni tecniche adeguate si perdono in mezzo a divagazioni semi-tecniche, storie di vita e camerati che fraternizzano su racconti di software, in una discussione continua dove nulla distingue il rilevante dall’irrilevante, l’accurato dall’inaccurato e le grossolane incomprensioni della teoria del colore. Dal punto di vista del crawling automatico, qui c’è ben poco da sfruttare, e investire tempo su una tale piattaforma è una perdita secca.

Ulteriori informazioni (tecniche):

  • Websites suck : sulle sfide tecniche del crawling e dell’indicizzazione delle pagine web HTML (e… PDF), in un’epoca in cui la gente dice cose altisonanti come «Web 4.0» o «Internet delle cose», ma cose basilari come fornire le sitemap delle pagine o inserire la data delle pubblicazioni internet in formati standard è ancora troppo chiedere a webmaster e CMS,
  • Designing an AI search engine from scratch in the 2020’s : su come è stata costruita Chantal e su come è stato creato il linguaggio sintetico Dumbrish per generalizzare il francese e l’inglese naturali, più un po’ di abbondanza di regex,
  • Thoughts on Word2Vec AI for information retrieval applications : su come la ripulitura dell’input sia di gran lunga il passo più dispendioso in termini di tempo nella progettazione di un’IA e su come i modelli linguistici che diventano troppo semanticamente accurati non facciano motori di ricerca migliori.

Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.