2022 foi tão ruim em termos de e-mails inúteis e ruído que comecei o Virtual Secretary , um framework em Python para escrever filtros de e-mail inteligentes cruzando informações entre várias fontes para adivinhar o que os e-mails recebidos são e se eles são importantes/urgentes ou não. Quando falo de e-mails inúteis, são também notificações do Github, pings no pixls.us (graças a Deus fechei minha conta naquele fórum idiota), YouTube e e-mails diretos de pessoas esperando conseguir alguma ajuda em particular.
Tendo me tornado “o rosto” do darktable, principalmente porque sou um dos poucos a se dar o trabalho de fornecer educação e treinamento aos usuários em vez de só cuspir código, eu não vi isso vindo e não estava preparado. Muita gente agora me confunde com a recepção, o que não ajuda o pensamento abstrato em questões de programação, muito menos reservar tempo para de fato produzir arte. O problema é que todo o tempo perdido lidando com informação/ruído/entrada não é gasto resolvendo problemas, e o tempo é a única coisa para a qual você não consegue reembolso.
Depois de um tempo, achei que seria bom estender o Virtual Secretary com um classificador de aprendizado de máquina, que adivinharia em qual pasta os e-mails recebidos deveriam ir, extraindo o conteúdo dos e-mails já presentes na referida pasta. Na verdade é bem mais fácil de implementar do que eu pensava, mas a parte que consome tempo é escrever filtros de texto para limpar a entrada (porque lixo entra, lixo sai, especialmente para e-mails de spam que geralmente são mal formatados).
Mas o objetivo final, nos meus sonhos mais loucos, era construir um autorrespondedor para pessoas que fazem perguntas já respondidas em um dos muitos sites para os quais contribuí ao longo dos anos. É uma frustração constante ver que todas as páginas de documentação que escrevi ao longo dos anos estão perdidas no limbo da Internet. Em fóruns centrados em FLOSS, caras benevolentes também tendem a experimentar o mesmo tipo de fadiga: repetir sempre e sempre a mesma informação, linkando as mesmas páginas, para hordas intermináveis de novatos que não sabem o que procurar. Basta olhar o Reddit do darktable: a cada 14 dias, alguém pergunta por que as miniaturas da mesa de luz não se parecem com a pré-visualização da sala escura. Mesmo descartando a quantidade de frustração e raiva aqui, o número de horas-homem perdidas em repetição é impressionante. Só porque a informação se perde.
O verdadeiro problema dos mecanismos de busca é que você precisa saber quais palavras-chave procurar. O que nos leva de volta ao fato de que novatos não conhecem o jargão. Então eles não sabem o que procurar. Eles não têm nenhum ponto de entrada na matriz. Exceto outros humanos. O que é péssimo para os que têm de fazer o trabalho, geralmente de graça.
Depois de mesclar uma camada neural de word embedding word2vec (palavras rebuscadas para dizer que é aprendizado de máquina não supervisionado que descobre como as palavras estão contextualmente relacionadas nas frases, ou seja, descobrindo estruturas sintáticas, sinônimos e afins), como primeiro passo no meu classificador de e-mails (que agora chega a 92 % de acurácia), me perguntei se isso não seria utilizável para construir um mecanismo de busca ciente de contexto e de sinônimos, capaz de enxergar além das palavras-chave exatas.
Acontece que uns caras do Bing tiveram a mesma ideia em 2016, e publicaram sua matemática, então eu a implementei. Em seguida acrescentei uma interface web por cima. Isso deu à luz a Chantal , a IA que você é gentilmente solicitado a incomodar antes de me incomodar. A versão atual é treinada com 101.000 páginas de internet dos meus próprios sites, das documentações do darktable e do Ansel, além de alguns recursos confiáveis de ciência das cores. Ela indexa 15.500 páginas em francês e inglês e pode processar consultas de busca em qualquer uma dessas línguas, ou em ambas. Um de seus recursos maneiros é propor a você uma lista de palavras-chave associadas à sua consulta, para que você possa refinar/reorientar/tentar coisas em que não teria pensado antes.
Espero que ajude.
Aquele trabalho me mostrou o quão mal indexáveis muitos sites são. Para compensar a falta de sitemap XML em forums.darktable.fr e color.org, tive que escrever um crawler recursivo. Mas mesmo assim, muitas páginas não têm meta tags de descrição e uma tag de data adequada. Isso significa que você precisa usar expressões regulares e métodos indiretos tentando identificar os metadados, e ajustar manualmente o parser de HTML para extrair a parte de conteúdo real da página web (descartando barras laterais, menus, apartes e publicidade, se houver).
Então, você passa a amar fóruns de perguntas e respostas como o Stack Overflow, onde perguntas adequadas iniciam um tópico, respostas adequadas seguem, e as melhores respostas são selecionadas pela comunidade. Mensagens de “obrigado” e “eu também” são explicitamente proibidas nas condições de uso. Em fóruns como pixls.us ou forums.darktable.fr, informação técnica adequada se perde no meio de divagações semi-técnicas, histórias de vida e camaradas confraternizando com causos sobre software, em um tópico contínuo em que nada distingue o relevante do irrelevante, o preciso do impreciso, e grosseiros mal-entendidos de teoria das cores. Do ponto de vista de um rastreamento por máquina, há muito pouco a explorar aqui, e investir tempo em tal plataforma é uma perda seca.
Mais informações (técnicas):
- Websites suck : sobre os desafios técnicos de rastrear e indexar páginas web HTML (e… PDF), numa época em que as pessoas falam coisas grandiosas como “Web 4.0” ou “Internet das Coisas”, mas coisas básicas como fornecer sitemaps de páginas ou colocar a data de publicações da internet em formatos padrão ainda é demais para se pedir de webmasters e CMS,
- Designing an AI search engine from scratch in the 2020’s : sobre como a Chantal foi construída e como a linguagem sintética Dumbrish foi criada para generalizar o francês e o inglês naturais, além de uma fartura de regex,
- Thoughts on Word2Vec AI for information retrieval applications : sobre como a limpeza da entrada é de longe o passo mais demorado de projetar uma IA e como modelos de linguagem que se tornam semanticamente precisos demais não fazem mecanismos de busca melhores.
Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.