MaxHalford / maxhalford.github.io

:house_with_garden: Personal website
https://maxhalford.github.io
MIT License
13 stars 5 forks source link

blog/dynamic-on-screen-keyboards/ #24

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

Dynamic on-screen TV keyboards • Max Halford

This article has some interactive keyboards, therefore I recommend reading it from your computer rather than your phone. On-screen TV keyboards I’ve recently been spending time at my brother’s place. We usually eat in front of TV. I’ve thus found myself typing stuff on the Netflix/Amazon/Plex TV apps. The typing happens through a remote controller, which is slower than typing with ones fingers. However, the TV apps usually suggest the correct show/movie after five or six keystrokes, so it’s not that bad.

https://maxhalford.github.io/blog/dynamic-on-screen-keyboards/

smastelini commented 2 years ago

Nice post, Max. After reading that, I keep wondering about some possible directions to explore further. Some things come to my mind:

  1. What about using an extra heuristic? The dynamical keyboards usually leave the letters I want closer to the current location than a static keyboard. However, the placement of the letters always changes. What if we had a ranking, e.g., alphabetical, to spread the closest characters around my current location? For example, a clockwise spiral. This way, I would know to search for an "a" above the current location or keep searching the "spiral" for an "r", or whatever. Humans like patterns, hahaha. Did you consider something like that?

  2. Have you considered state machines or Hidden Markov Models (HMM)? Maybe it is not going to change much, and I am by no means an expert. But in my Artificial Intelligence course days, I remember one nice thing about HMMs: you can use higher-order models. For instance, what are the most likely characters to appear next, given that the last three were "the"?

MaxHalford commented 2 years ago

Cheers @smastelini 🙌

What about using an extra heuristic? The dynamical keyboards usually leave the letters I want closer to the current location than a static keyboard. However, the placement of the letters always changes. What if we had a ranking, e.g., alphabetical, to spread the closest characters around my current location? For example, a clockwise spiral. This way, I would know to search for an "a" above the current location or keep searching the "spiral" for an "r", or whatever. Humans like patterns, hahaha. Did you consider something like that?

Yes I think some sense of stability is necessary to not confuse users. That's definitely a good idea that isn't too difficult to implement :)

Have you considered state machines or Hidden Markov Models (HMM)? Maybe it is not going to change much, and I am by no means an expert. But in my Artificial Intelligence course days, I remember one nice thing about HMMs: you can use higher-order models. For instance, what are the most likely characters to appear next, given that the last three were "the"?

Any kind of sequence modelling can be used here. I'm familiar with Dynamic Bayesian Networks, which generalize HMMs. I didn't talk about this in the post because it would have become too complex. The way I wrote the code in this article, you can plug in any (conditional) probability distribution. However, as I mention towards the end, that can quickly lead to lookup tables which are too large in memory. If you have a compressed model of that probability distribution, then you can save space and also be a bit more accurate.