Processamento de linguagem natural para seletor de data

Nosso seletor de data e conversor é um recurso poderoso. Adoraria ver uma forma de simplificar a adição de data/hora a uma publicação. Uma maneira comum de fazer isso é por meio de processamento de linguagem natural. Aplicativos como o Fantastical no iOS já utilizam isso há anos para entrada de datas.

Em vez de ajustar o mouse para inserir uma data, você poderia digitar algo como:

  • segunda-feira às 14h, que resultaria na data e hora ajustadas ao seu fuso horário
  • próxima sexta-feira às 10h NZST, que resultaria na data/hora da próxima sexta-feira em NZST
  • 11h, que resultaria na data de hoje às 11h
  • 8/9 a 8/13, que resultaria em um intervalo de datas.

Isso poderia substituir o modal exibido ao clicar no ícone de calendário no editor por uma caixa de texto (com um botão avançado que exibe o conteúdo atual do modal) ou por um modal separado acionado por um atalho de teclado.

9 curtidas

Esta biblioteca pode ajudar na implementação: GitHub - wanasit/chrono: A natural language date parser in Javascript · GitHub

Dito isso, suspeito que será um desafio obter suporte robusto a idiomas para isso.

Os idiomas totalmente suportados atualmente são en, ja e fr (de e pt têm suporte parcial). Outros idiomas da v1 (nl e zh) estão em desenvolvimento.


Além disso, outro padrão de UX a considerar é substituir automaticamente strings de data no corpo de uma postagem por objetos de data/hora do Discourse. Algo como one-boxing, mas para datas. Por exemplo, se eu digitar “segunda-feira que vem às 14h” na minha postagem, isso é convertido automaticamente para 2021-08-17T18:00:00Z.

5 curtidas

Adoro essa ideia!

3 curtidas

Gostei muito dessa ideia, você pode me mostrar o mockup da interface de como você vê isso funcionando? É isso que está faltando aqui.

Pode nem ser necessário haver uma interface de usuário. Quando uma postagem for processada, o NLP poderia processá-la, retornar ao cliente e confirmar com uma janela modal simples:

1 data foi encontrada. Gostaria de converter para timestamps dinâmicos?
- terça-feira às 14h -- > [discourse date]

Ou, poderia ser mais simples. Clique no ícone do calendário e, em vez de um seletor de data, haverá uma caixa de texto simples.

E, semelhante à nossa janela modal de convites, poderia haver um botão para controles avançados que mostra nosso seletor de data/hora/fuso horário existente para opções mais granulares.

Cabe ao @j.jaffeux decidir, não tenho certeza se isso se encaixa na interface atual que temos? Também não tenho certeza se as pessoas normais querem digitar tanto em vez de clicar, especialmente em um smartphone?

Faz sentido no Google Agenda porque você pode fazer isso enquanto digita o nome do evento, por exemplo, em vez de digitar

“Encanador”

você digita

“Encanador 15h - 17h”

mas isso é fácil porque estou em um dispositivo com teclado.

Na verdade, acho nossa caixa de diálogo tediosa de usar tanto no desktop quanto no celular, e é por isso que sugeri esse recurso em primeiro lugar. É significativamente mais rápido digitar hoje às 11:31 em uma caixa de diálogo do que usar as rodas de rolagem ou clicar em uma caixa de diálogo grande. O fato de muitos calendários já fazerem isso torna menos complicado para as pessoas entenderem.

1 curtida

Concordo no desktop. Não concordo no smartphone, porque digitar no smartphone é brutal. Talvez este possa ser um comportamento apenas para desktop?

1 curtida

Eu ficaria bem com isso, pessoalmente.

Há muito código em datas que, na verdade, já faz isso, trabalhamos nisso com @daniel

Existem basicamente 3 maneiras de resolver isso:

  • um modal melhor
  • algum !comando
  • análise de texto

A análise de texto é ótima, mas não resolve tudo e também temos que fazê-la funcionar para todas as localidades. Mas concordo que poderíamos habilitar o suporte para um pequeno subconjunto. Já está quase tudo aqui, eu só teria que finalizar/habilitar.

5 curtidas