Compress - automatizei metade da minha digitação
(github.com/eschluntz)- Ferramenta que cria automaticamente atalhos de digitação a partir do seu próprio corpus de textos e gera atalhos de entrada usados em e-mails e no Slack
- Analisa o corpus de texto para sugerir atalhos que economizam o maior número de caracteres ao digitar e gera arquivos de configuração para o programa de atalhos de teclado do Linux, Autokey
- Encontra n-gramas frequentes no corpus e cria candidatos para substituí-los por expressões mais curtas, e a ordem das sugestões é calculada como
[número de caracteres economizados] * [frequência da frase] - A seleção de atalhos busca abreviações fáceis de memorizar; abreviações que você queira digitar como palavras podem ser excluídas por blacklist, e abreviações mais fáceis de lembrar são priorizadas para frases usadas com mais frequência
- Também fornece uma ferramenta para analisar Slack Data Export e usá-lo como corpus
- Apenas administradores do workspace do Slack podem fazer export
- Apenas canais públicos são exportados
- É necessário substituir
USERNAME_TO_EXPORTpelo nome de usuário do Slack e depois executarparse_slack.py - O procedimento inclui apagar o export do Slack com
srm
- O fluxo básico de uso é colocar o corpus em
data/corpus/*.txt, gerar os 200 principais candidatos emoutput/suggested_shortcuts.yamlcomfind_suggested_phrases.py, mover os itens desejados parashortcuts.yamle então gerar os arquivos de configuração do Autokey comgenerate_autokeys.py - As dependências são instaladas com
install.sh, e no momento o projeto foi testado com Python3.10.12 - O Autokey atualmente oferece suporte apenas a X11 no Linux e não oferece suporte a Wayland
- A configuração gerada do Autokey é feita para ser aplicada apenas quando o Chrome estiver em foco, e a experiência de uso menciona que, no terminal e no vscode, houve mais problemas porque comandos curtos do Linux ou nomes de variáveis entravam em conflito com as abreviações
1 comentários
Comentários do Hacker News
Também escrevi um post no blog com um vídeo sobre o projeto: https://erikschluntz.com/software/2023/08/26/compressing-my-...
Raramente acontece, mas foi um projeto paralelo que de fato economizou mais tempo do que o tempo investido nele :)
A ideia é muito esperta, mas acho que eu não gostaria de usar algo cujo comportamento muda com o tempo
Por exemplo, se eu rodasse a cada 6 meses e no ano passado
dbfossedebug, mas este ano virassedatabase, isso poderia atrapalhar a memória muscular e os hábitosPor isso fico mais curioso com uma versão genérica que ajudasse de forma estável todo mundo quando aplicada a livros, e-mails e mensagens escritos por milhares de pessoas de diferentes contextos
Expandir
tparatheestparasomethingparece óbvio, mas fico imaginando se daria para criar um conjunto mínimo de umas 200 a 500 opções que todo mundo pudesse aprender, como um “teclado padrão”https://archive.org/details/evansbasicenglis00evan
É melhor usar o PDF; o arquivo TXT tem uma qualidade de OCR ruim e é praticamente inutilizável
Isto também é útil: https://en.m.wikipedia.org/wiki/Most_common_words_in_English
suggested_shortcuts.yaml, e então você copia dali para oshortcuts.yaml, de modo que dá para controlar manualmente os atalhos que serão ativados de fato :)E, claro,
the -> testá no topo da lista: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...Um químico pode digitar
droppercom frequência e quererdp, enquanto um burocrata talvez prefiradepartmentQuem não é falante nativo de chinês talvez não saiba, mas o chinês tem esse recurso embutido
Oficialmente se chama 双拼 (Shuangpin), e é um método em que você digita 2 letras latinas para cada palavra para inserir a palavra inteira: https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
Mesmo sem usar o Shuangpin formalmente, a maioria dos métodos de entrada chineses oferece um recurso parecido de 简拼 para frases populares, permitindo digitar expressões com várias palavras inserindo apenas a primeira letra latina de cada palavra
Por exemplo, para digitar
xiexie, que significa “thank you” em chinês, geralmente basta digitarxxe a maioria dos métodos de entrada chineses sugere automaticamente os caracteres correspondentesPor exemplo, 「你想吃什麼」, que significa “what do you want to eat”, é digitado como
n x c s mXiao long baocomXLBtambém é um exemplo disso. Eu não sabia que havia um sistema mais amplo; muito legalGosto muito de ver projetos assim
No fim de semana lidei com um problema parecido, mas voltado a palavras inteiras, não a abreviações de um dicionário criado manualmente, e no caso geral era uma abordagem ajustada a um determinado corpus de texto
A pergunta que eu tinha era: “será que dá para criar um corretor automático ajustado a um determinado corpus de texto?” Por exemplo, se em um documento eu uso muito uma expressão longa como
data augmentation, queria ver se dava para automatizar issoA abordagem foi calcular a surpresa de palavras individuais e 2-gramas no corpus genérico do NYT, adicionar peso às palavras no índice-alvo a ser ajustado e então criar uma estrutura de dados trie ponderada pela surpresa para usar como autocomplete avançado
Uma solução funcional está aqui: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
Ainda não há documentação; pretendo adicioná-la em alguns dias. Se quiser conversar, é só abrir uma GitHub Issue
Ou talvez eu tenha me confundido e você esteja tentando encontrar uma forma mais criativa de dizer a mesma expressão
Como ideia de extensão, seria possível acoplar um keylogger que observa a digitação. Claro, isso em si é uma desvantagem
A abordagem seria aprender as frases que o usuário usa com frequência, encontrar frases comuns, sugerir atalhos e então avisar suavemente o usuário sobre o atalho sempre que ele digitasse a frase completa
Assim, qualquer pessoa poderia instalar, a barreira de entrada seria baixa e a produtividade poderia aumentar gradualmente com o tempo
A ideia era manter os dados em um armazenamento seguro no próprio dispositivo, para que não se tornassem um risco de segurança
Um método de entrada que ofereça autocompletar em inglês no desktop como em celulares, ou forneça atalhos por meio de um framework de método de entrada como
fcitx5, parece um conceito interessanteSeria algo como exportar automaticamente o histórico do Slack toda semana, calcular a frequência das palavras e, com base nos resultados visíveis, definir manualmente várias expansões?
A estrutura era usar
Bluetooth Keyboard -> ESP32como host de teclado e enviar as teclas digitadas para USB e para um arquivoSe você tiver dinheiro, também existem loggers de teclado USB/PS2 que salvam os dados em disco
Fazer as coisas convergirem nessa direção também ajudaria na consistência entre vários computadores, e seria bom para quem usa mais de uma máquina
Para mim, fora algumas situações de chat, acho que digitar quase nunca foi o gargalo
Em vez disso, só houve interações em que a largura de banda extra de vídeo ou voz teria ajudado. Fico curioso se esses atalhos realmente se traduzem em economia de tempo no trabalho
Por exemplo, conversas como “você pode enviar uma captura de tela?” ou respostas do tipo enviar um link do Calendly
Mesmo ao escrever textos longos, muitas vezes é frustrante perceber que o pensamento é mais rápido que a digitação, então isso também ajuda nessa parte
Digitar é uma tarefa manual que interrompe o pensamento, então quanto menos tempo você passa entrando e saindo da digitação, mais rápido consegue voltar a pensar
Passei bastante tempo tentando criar uma expansão de texto para uso próprio
Foi muito mais difícil do que eu esperava, e é difícil encontrar aliases que tenham valor suficiente sem falhar com frequência demais
Como me comunico diariamente em vários idiomas, ficou ainda mais complexo, então hoje separo os aliases por aplicativo
Mesmo assim, os falsos acionamentos continuam existindo, e estou chegando à conclusão de que, em geral, é preciso ter um delimitador
kk,zz,qq, que raramente aparecem como primeiras letras de palavras ou nomes de variáveisPor exemplo,
qqmeé a minha assinatura de e-mailSeria bom se a ferramenta do post original também sugerisse aliases para frases mais longas do que as que vi no README. Ouvi dizer que o TextExpander para macOS faz isso, mas não sou usuário de Mac
Um dos TODOs é também gerar uma lista de bloqueio de aliases a evitar, usando o corpus real de textos analisado
Fazendo uma confissão pessoal, eu nunca gostei das abreviações estilo SMS usadas nos celulares anteriores ao iPhone
Esse foi um dos motivos pelos quais eu quase não usava SMS ou mensagens de texto, exceto quando era realmente necessário
Uso expansão de texto desde os primeiros tempos do TextExpander no iOS e no macOS, e, por melhor que o teclado do iPhone fosse, era incômodo digitar repetidamente coisas como endereço de casa, mapas de casa/trabalho e informações profissionais e pessoais. O TextExpander ajudou muito
Depois que o TextExpander passou para um modelo de assinatura, comecei a procurar alternativas, porque pessoalmente não acho que assinatura combine com esse tipo de ferramenta. Os Snippets incluídos no Powerpack do Alfred foram uma alternativa melhor
O macOS/iOS também têm “Text Replacements” embutido, mas isso falha com frequência fora dos apps da Apple. O que está aqui é parecido com o Text Replacement da Apple, e eu mantenho esse recurso, mas gerencio o restante pelo Alfred. Sinceramente, se isso me permitisse sair completamente do Alfred, talvez eu migrasse para este lado
No entanto, eu gostaria de usar um delimitador nas expansões para não atrapalhar a digitação normal. Hoje uso
,como delimitador, porque em inglês a vírgula é sempre seguida de espaço, e minhas expansões só acontecem quando digito uma vírgula e um texto curto sem espaço. A posição da tecla de vírgula também é confortável ao digitar por toqueMesmo que eu continue com o Text Replacement do sistema operacional, acho que introduziria um delimitador para impedir que palavras sejam expandidas automaticamente em situações não intencionais
https://textexpander.com
https://www.alfredapp.com
O tratamento de exceção mais refinado é
.py. Em geral,.é um delimitador, mas fiz uma exceção antes depypara não atrapalhar ao digitar nomes de arquivos PythonAnos de autocompletar já pioraram meu domínio de inglês, que é minha segunda língua
Eu sei as palavras, mas com frequência não lembro a grafia e acabo esquecendo a pronúncia; ferramentas assim parecem capazes de acabar de vez até com o que resta dessa habilidade
Em vez de memorizar palavras-chave, será que não daria para escrever as primeiras letras?
Fiz um experimento com o ChatGPT algumas semanas atrás, mas parece que não existe um software já existente com esse tipo de recurso
Não sou muito bom em programação, mas seria ótimo se alguém criasse algo assim: https://imgur.com/a/0o4zLwT
A precisão é bem boa, mas quando erra é extremamente irritante
Mesmo funcionando perfeitamente, ao usar na prática a carga cognitiva foi muito maior do que digitar como de costume
Com muita concentração, eu conseguia usar abreviações e chegar mais ou menos à minha velocidade confortável de digitação normal, mas não ultrapassava isso; no fim, acabava voltando naturalmente à digitação comum
Dito isso, eu digito rápido e escrevo bastante, então esse protótipo estava tentando superar um processo mental fortemente otimizado ao longo de uns 30 anos. Talvez funcione melhor para quem não é originalmente um digitador rápido