Rok 2022 był tak fatalny pod względem śmieciowych e-maili i szumu, że rozpocząłem projekt Virtual Secretary , framework w Pythonie do pisania inteligentnych filtrów poczty, które krzyżują informacje z kilku źródeł, aby odgadnąć, czym są przychodzące e-maile i czy są ważne/pilne, czy nie. Kiedy mówię o śmieciowych e-mailach, chodzi też o powiadomienia z Githuba, pingi na pixls.us (dzięki Bogu zamknąłem konto na tym głupim forum), YouTube oraz bezpośrednie e-maile od ludzi liczących na uzyskanie prywatnej pomocy.
Stawszy się „twarzą" darktable, głównie dlatego że jestem jednym z niewielu, którym chce się dostarczać edukację i szkolenia dla użytkowników, zamiast tylko wypluwać kod, nie przewidziałem tego i nie byłem na to przygotowany. Wiele osób bierze mnie teraz za recepcję, co nie pomaga w abstrakcyjnym myśleniu o kwestiach programistycznych, a co dopiero w znalezieniu czasu na faktyczne tworzenie sztuki. Problem w tym, że cały czas tracony na zajmowanie się informacją/szumem/napływem nie jest poświęcany na rozwiązywanie problemów, a czas to jedyna rzecz, za którą nie dostaniesz zwrotu pieniędzy.
Po jakimś czasie pomyślałem, że fajnie byłoby rozszerzyć Virtual Secretary o klasyfikator uczenia maszynowego, który zgadywałby, do którego folderu powinny trafiać przychodzące e-maile, wyodrębniając treść e-maili już znajdujących się w tym folderze. Wdrożenie tego jest właściwie znacznie łatwiejsze, niż sądziłem, ale czasochłonną częścią jest napisanie filtrów tekstowych oczyszczających dane wejściowe (bo śmieci na wejściu, śmieci na wyjściu, zwłaszcza w przypadku spamu, który jest zazwyczaj niepoprawnie sformatowany).
Ale ostatecznym celem, w moich najśmielszych marzeniach, było zbudowanie autorespondera dla osób zadających pytania, na które już udzielono odpowiedzi na jednej z wielu witryn, do których przyczyniłem się przez lata. To ciągła frustracja widzieć, że wszystkie strony dokumentacji, które napisałem przez lata, giną w internetowym niebycie. Na forach skupionych wokół FLOSS życzliwi goście również mają tendencję do doświadczania tego samego rodzaju zmęczenia: powtarzania w kółko tych samych informacji, linkowania tych samych stron niekończącym się hordom nowicjuszy, którzy nie wiedzą, czego szukać. Wystarczy spojrzeć na Reddita darktable: co 14 dni ktoś kolejny pyta, dlaczego miniatury na stole podświetlanym nie wyglądają jak podgląd w ciemni. Nawet pomijając ilość frustracji i złości, liczba roboczogodzin traconych na powtarzanie jest zdumiewająca. Tylko dlatego, że informacja ginie.
Prawdziwym problemem wyszukiwarek jest to, że musisz wiedzieć, jakich słów kluczowych szukać. Co sprowadza się z powrotem do faktu, że nowicjusze nie znają żargonu. Więc nie wiedzą, czego szukać. Nie mają żadnego punktu wejścia do matrycy. Poza innymi ludźmi. Co jest kiepskie dla tych, którzy muszą wykonywać tę pracę, zwykle za darmo.
Po scaleniu warstwy neuronowej z osadzaniem słów word2vec (mądre słowa na powiedzenie, że jest to nienadzorowane uczenie maszynowe znajdujące, jak słowa są kontekstowo powiązane w zdaniach, czyli znajdujące struktury składniowe, synonimy i tym podobne), jako pierwszego kroku w moim klasyfikatorze e-maili (który osiąga teraz 92% dokładności), zastanawiałem się, czy nie dałoby się tego wykorzystać do zbudowania wyszukiwarki świadomej kontekstu i synonimów, zdolnej patrzeć poza dokładne słowa kluczowe.
Okazuje się, że paru gości z Binga miało ten sam pomysł w 2016 roku i opublikowało swoją matematykę, więc ją wdrożyłem. Następnie dodałem na to interfejs webowy. Tak narodziła się Chantal , AI, którą uprzejmie proszę nagabywać, zanim nagabniesz mnie. Obecna wersja jest wytrenowana na 101 000 stron internetowych z moich własnych witryn, dokumentacji darktable i Ansel, wraz z kilkoma wiarygodnymi źródłami z zakresu nauki o kolorze. Indeksuje 15 500 stron po francusku i angielsku i potrafi przetwarzać zapytania w jednym lub obu z tych języków. Jedną z jej głównych funkcji jest proponowanie Ci listy słów kluczowych powiązanych z Twoim zapytaniem, dzięki czemu możesz doprecyzować/przeorientować/wypróbować rzeczy, o których wcześniej byś nie pomyślał.
Mam nadzieję, że to pomaga.
Ta praca pokazała mi, jak słabo indeksowalnych jest wiele witryn. Aby poradzić sobie z brakiem mapy witryny XML na forums.darktable.fr i color.org, musiałem napisać rekurencyjnego crawlera. Ale nawet wtedy wiele stron nie ma metatagów opisu ani porządnego tagu daty. Oznacza to, że trzeba używać wyrażeń regularnych i metod pośrednich próbujących zidentyfikować metadane oraz ręcznie dostrajać parser HTML, aby wyodrębnić właściwą część treściową strony (odrzucając paski boczne, menu, ramki poboczne i reklamy, jeśli takie są).
Wtedy zaczynasz kochać fora typu pytanie-odpowiedź, jak Stack Overflow, gdzie porządne pytania rozpoczynają wątek, następują po nich porządne odpowiedzi, a najlepsze odpowiedzi są wybierane przez społeczność. Wiadomości „Dziękuję" i „ja też" są wyraźnie zabronione w warunkach użytkowania. Na forach takich jak pixls.us czy forums.darktable.fr porządna informacja techniczna gubi się pośród na wpół technicznego gadulstwa, historii z życia i kolesiów zacieśniających więzy nad opowieściami o oprogramowaniu, w ciągłym wątku, w którym nic nie odróżnia istotnego od nieistotnego, trafnego od nietrafnego oraz rażących nieporozumień co do teorii koloru. Z perspektywy maszynowego crawlowania jest tu bardzo niewiele do wykorzystania, a inwestowanie czasu na takiej platformie to czysta strata.
Więcej informacji (technicznych):
- Websites suck : o technicznych wyzwaniach crawlowania i indeksowania stron HTML (i… PDF) w czasach, gdy ludzie mówią wielkie rzeczy typu „Web 4.0" czy „Internet Rzeczy", ale podstawowe rzeczy, jak udostępnianie map witryn czy podawanie daty publikacji internetowych w standardowych formatach, to wciąż za dużo, by wymagać tego od webmasterów i systemów CMS,
- Designing an AI search engine from scratch in the 2020’s : o tym, jak zbudowano Chantal i jak stworzono syntetyczny język Dumbrish, aby uogólnić naturalny francuski i angielski, plus trochę festiwalu wyrażeń regularnych,
- Thoughts on Word2Vec AI for information retrieval applications : o tym, że oczyszczanie danych wejściowych jest zdecydowanie najbardziej czasochłonnym etapem projektowania AI oraz że modele językowe, które stają się zbyt dokładne semantycznie, nie tworzą lepszych wyszukiwarek.
Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.