日付選択のための自然言語処理

日付ピッカーと変換機能は非常に強力です。投稿に日付や時刻を追加する操作をより簡素化できると良いですね。その一般的な手法として、自然言語処理があります。iOS の Fantastical などのアプリでは、長年にわたり日付入力にこの技術が採用されています。

マウスを操作して日付を入力する代わりに、以下のようなテキストを入力するだけで済むようになります:

  • monday at 2pm → ユーザーのタイムゾーンに合わせて日付と時刻を出力
  • next friday at 10am NZST → 来週の金曜日の 10 時(NZST)の日付と時刻を出力
  • 11am → 今日の 11 時の日付と時刻を出力
  • 8/9 to 8/13 → 日付範囲を出力

この機能は、作曲画面のカレンダーアイコンをクリックした際に表示されるモーダルをテキストボックスに置き換える(詳細ボタンで既存のモーダルを表示する)か、またはキーボードショートカットで起動する別モーダルとして実装できます。

「いいね!」 9

このライブラリは実装に役立つかもしれません:GitHub - wanasit/chrono: A natural language date parser in Javascript · GitHub

ただし、堅牢な言語サポートを実現するのは難しいのではないかと懸念しています。

現在、完全にサポートされている言語は enjafr です(dept は部分的にサポートされています)。v1 で使用されていた他の言語(nlzh)は開発中です。


また、別の UX パターンとして、投稿本文内の日付文字列を自動的に Discourse の日付/時刻オブジェクトに置き換える方法も検討できます。日付版のワンボックス化のようなものです。例えば、投稿で「来週の月曜日の午後2時」と入力すると、自動的に [date=2021-08-17 time=14:00:00 timezone="America/New_York"] に変換されます。

「いいね!」 5

このアイデア、とても素晴らしいですね!

「いいね!」 3

このアイデアはとても気に入りました。どのように機能するか、UIモックアップを見せていただけますか?それがここで欠けているものです。

UIすら不要になるかもしれません。投稿がベイクされたら、NLPが処理し、クライアントに戻ってシンプルなモーダルで確認できます。

1つの日付が見つかりました。動的なタイムスタンプに変換しますか?
- 火曜日午後2時 --> [discourse date]

あるいは、もっとシンプルにすることもできます。カレンダーアイコンをクリックすると、日付選択ではなく、シンプルなテキストボックスになります。

そして、招待モーダルと同様に、より詳細なオプションのために既存の日付/時刻/タイムゾーンピッカーを表示する高度なコントロール用のボタンを設けることもできます。

それを決定するのは @j.jaffeux さんだと思いますが、現在のUIに全く合っているか分かりません。また、スマートフォンで特に、クリックするよりも普通の人々がそんなに多く入力したいと思うのか疑問です。

Googleカレンダーでは、イベントの名前を入力しているときにこれができるので理にかなっています。例えば、

「配管工」

と入力する代わりに、

「配管工 午後3時~午後5時」

と入力しますが、これはキーボード付きのデバイスを使っているので簡単です。

私は、デスクトップとモバイルの両方で、私たちのモーダルは使いにくいと感じています。だからこそ、そもそもこの機能を提案したのです。スクロールホイールを使ったり、大きなモーダルをクリックしたりするよりも、モーダルに「today at 11:31am」と入力する方がはるかに高速です。多くのカレンダーがすでにこれを行っているという事実は、人々が理解するための精神的な負担を軽減します。

「いいね!」 1

デスクトップでは同意しますが、スマートフォンでは同意しません。スマートフォンのタイピングはひどいからです。これはデスクトップ限定の動作にすることも可能でしょうか?

「いいね!」 1

個人的にはそれで構いません。

これを行うためのコードはすでに多数ありますが、これは @daniel と共同で作業したものです。

基本的に 3 つの解決策があります。

  • より良いモーダル
  • 何らかの !コマンド
  • テキスト解析

テキスト解析は素晴らしいですが、すべてを解決するわけではなく、すべてのロケールで機能させる必要があります。しかし、小さなサブセットのサポートを有効にできることには同意します。ほとんどはすでにここにあり、完了/有効にするだけです。

「いいね!」 5