2022 was zo slecht wat betreft rommelmails en ruis dat ik ben begonnen met de Virtual Secretary , een Python-framework om intelligente e-mailfilters te schrijven door informatie tussen verschillende bronnen te combineren om te raden wat inkomende e-mails zijn en of ze belangrijk/urgent zijn of niet. Als ik het over rommelmails heb, gaat het ook over Github-meldingen, pings op pixls.us (goddank heb ik mijn account op dat stomme forum opgeheven), YouTube, en directe e-mails van mensen die hopen in het privé wat hulp te krijgen.
Nadat ik „het gezicht" van darktable was geworden, vooral omdat ik een van de weinigen ben die de moeite neemt om gebruikers voor te lichten en te trainen in plaats van alleen maar code uit te poepen, zag ik dat niet aankomen, en ik was er niet op voorbereid. Veel mensen verwarren me nu met de receptie, wat niet helpt bij het abstract nadenken over programmeerkwesties, laat staan dat het tijd oplevert om daadwerkelijk kunst te maken. Het probleem is dat alle tijd die verloren gaat aan het verwerken van info/ruis/input niet wordt besteed aan het oplossen van problemen, en tijd is het enige waarvoor je geen terugbetaling kunt krijgen.
Na een tijdje bedacht ik dat het leuk zou zijn om de Virtual Secretary uit te breiden met een machine-learningclassificatie, die zou raden in welke map inkomende e-mails zouden moeten komen, door de inhoud te extraheren van de e-mails die al in die map staan. Het is eigenlijk veel makkelijker te implementeren dan ik dacht, maar het tijdrovende deel is het schrijven van tekstfilters om de input op te schonen (want garbage in, garbage out, vooral voor spam-e-mails die doorgaans onjuist opgemaakt zijn).
Maar het uiteindelijke doel was, in mijn wildste dromen, om een automatisch antwoordapparaat te bouwen voor mensen die vragen stellen die al beantwoord zijn op een van de vele websites waaraan ik door de jaren heen heb bijgedragen. Het is een constante frustratie om te zien dat alle pagina’s documentatie die ik door de jaren heen heb geschreven verloren zijn in het niemandsland van internet. Op FLOSS-gerichte forums hebben welwillende lui ook de neiging om dezelfde soort vermoeidheid te ervaren: keer op keer dezelfde info herhalen, dezelfde pagina’s linken, aan eindeloze hordes beginners die niet weten waar ze naar moeten zoeken. Kijk maar naar Reddit darktable: elke 14 dagen vraagt weer iemand anders waarom de miniaturen op de lichttafel er niet uitzien als het voorbeeld in de donkere kamer. Zelfs als je de hoeveelheid frustratie en boosheid hier buiten beschouwing laat, is het aantal verloren manuren aan herhaling opmerkelijk. Alleen maar omdat informatie verloren gaat.
Het echte probleem van zoekmachines is dat je moet weten naar welke trefwoorden je moet zoeken. Wat weer terugkomt op het feit dat beginners het jargon niet kennen. Dus weten ze niet waar ze naar moeten zoeken. Ze hebben geen enkel toegangspunt tot de matrix. Behalve andere mensen. Wat waardeloos is voor degenen die het werk moeten doen, meestal gratis.
Nadat ik een neurale laag van word2vec-woordinbedding had samengevoegd (dure woorden om te zeggen dat het om onbegeleide machine learning gaat die uitvindt hoe woorden contextueel gerelateerd zijn in zinnen, dat wil zeggen het vinden van syntactische structuren, synoniemen en dergelijke), als een eerste stap in mijn e-mailclassificatie (die nu tot 92 % nauwkeurigheid komt), vroeg ik me af of dit niet bruikbaar zou zijn om een context-bewuste en synoniem-bewuste zoekmachine te bouwen, die verder kan kijken dan exacte trefwoorden.
Het blijkt dat een paar gasten van Bing in 2016 hetzelfde idee hadden, en hun wiskunde publiceerden, dus implementeerde ik die. Vervolgens ging ik verder met er een webinterface bovenop te zetten. Dat gaf leven aan Chantal , de AI die je vriendelijk verzocht wordt lastig te vallen voordat je mij lastigvalt. De huidige versie is getraind op 101.000 internetpagina’s van mijn eigen websites, de darktable- & Ansel-documentatie, samen met enkele betrouwbare kleurwetenschappelijke bronnen. Ze indexeert 15.500 pagina’s in het Frans en Engels en kan zoekopdrachten in een van deze of beide talen verwerken. Een van haar sterke functies is dat ze je een lijst van trefwoorden voorstelt die verband houden met je zoekopdracht, zodat je dingen kunt verfijnen/heroriënteren/uitproberen waar je eerder niet aan gedacht zou hebben.
Ik hoop dat dit helpt.
Dat werk liet me zien hoe slecht indexeerbaar veel websites zijn. Om het gebrek aan een XML-sitemap op forums.darktable.fr en color.org op te vangen, moest ik een recursieve crawler schrijven. Maar zelfs dan hebben veel pagina’s geen description-metatags en een fatsoenlijke datumtag. Het betekent dat je reguliere expressies en indirecte methoden moet gebruiken om de metadata te proberen te identificeren, en de HTML-parser handmatig moet afstellen om het daadwerkelijke inhoudsgedeelte van de webpagina te extraheren (waarbij zijbalken, menu’s, terzijdes en eventuele reclame worden weggelaten).
Vervolgens leer je Q&A-forums als Stack Overflow waarderen, waar fatsoenlijke vragen een thread beginnen, fatsoenlijke antwoorden volgen, en de beste antwoorden door de gemeenschap worden geselecteerd. „Dank je"- en „ik ook"-berichten zijn expliciet verboden in de gebruiksvoorwaarden. Op forums als pixls.us of forums.darktable.fr gaat fatsoenlijke technische informatie verloren te midden van semi-technisch geraaskal, levensverhalen en gasten die een band smeden over softwareverhalen, in een doorlopende thread waarin niets het relevante van het irrelevante onderscheidt, het accurate van het inaccurate, en grove misverstanden over kleurentheorie. Vanuit het perspectief van een machine die crawlt, valt hier maar heel weinig te benutten, en tijd investeren in zo’n platform is een puur verlies.
Meer (technische) info:
- Websites suck : over de technische uitdagingen van het crawlen en indexeren van HTML- (en… PDF-)webpagina’s, in een tijd waarin mensen grote dingen zeggen als „Web 4.0" of „Internet of Things", maar basale dingen als het aanbieden van paginasitemaps of het in standaardformaten zetten van de datum van internetpublicaties nog steeds te veel gevraagd is van webmasters en CMS’en,
- Designing an AI search engine from scratch in the 2020’s : over hoe Chantal werd gebouwd en hoe de synthetische taal Dumbrish werd gecreëerd om natuurlijk Frans en Engels te generaliseren, plus wat regex-overvloed,
- Thoughts on Word2Vec AI for information retrieval applications : over hoe het opschonen van de input veruit de meest tijdrovende stap is bij het ontwerpen van een AI, en dat taalmodellen die te semantisch accuraat worden geen betere zoekmachines opleveren.
Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.