Model Your Users: Algorithms Behind the Minuum Keyboard
minuum.com
minuum.com
I speak three that uses the english alphabet, and the keyboards get annoying when it starts predicting english words when I'm typing something in a different language altogether.
Most of the time I even disable the dictionary on normal keyboards.
Fr: liberté, libertés, libérer...
Sp: libertad, libertades, liberar...
Pt: liberdade, liberdades, liberar...
For a 2-3 word completion choice it's useless.
I haven't written or typed a word of French since high-school.
So, which is it? Should I read "must need" as "Microsoft assumes I need two layouts?" Isn't is possible to disable the French keyboard on the phone?
And I think that's the experience for a lot of people who live in a foreign country, or still have friends from other countries. Languages get mixed all the time.
It is a terrible design flaw, that is primarily due to the fact that a lot of software designers assume that the average person speaks one language; in fact there are more multilingual people than monolingual people in the world (cf first paragraph of [0]).
Ideally, software keyboards would be designed to take that fact into account - a few smart things could be done! But no, a lot of software is designed by upper middle class westerners which tend to only speak a single language, and the designs we have are victims of their creators' biases.
In the meantime, I have 5 different keyboards on my iPhone, and I find texting extremely painful.
The Minuum team includes a number of multilingual people; I mix french and english on a daily basis, others on the team speak slavic languages regularly. Similarly being based in Toronto, near the bilingual province of Quebec, our friends and family early user network included many multilingual people.
I think that more than almost any other type of software designers, keyboard makers are acutely aware of the importance and the myriad of issues surrounding multilingual support. We've known since very early on that language support is a major factor that will eventually make or break us.
For us, each new language actually brings a surprising number of exciting new technical challenges. Hopefully we'll be able to gain insights from the process and find those "few smart things" that can be done to get you from 5 keyboards to 1.
Toronto is so multicultural it doesn't make sense to claim proximity to Quebec as a language bonus.
In countries where people have to deal with two or more system on a daily basis (i.e: any country that is not on ASCII like alphabet) there is no such assumption, but there is still no very good solution for this problem after decades of trying.
I don't think it's laziness or short-sighness that impedes progress. We might need a big breakthrough in some field or disrupting idea to have thing move faster.
Once a language is detected it won't reevaluate the input, so you have to paste whole sentences in it. The implementation really goes above and beyond to guess the input, I think that's what you and other mean by matching several languages at ounce. For instance "J'aime pas la philosophie du 'just do it'" will translate both french and english parts at the same time.
The thing is, 'just do it' is a ready made english sentence, but you could autocorrect it to 'juste doit' or 'jus doit', both of which are valid single words in french. There's no way to know what you really meant on the autocorrection front (we have to assume you made a mistake to suggest something), and you'll need an interface constantly suggesting correction that you'll dismiss 99% of the time. This feels like hell in a popup to me.
Even just training the markov chain on two language corpuses simultaneously should be able to handle that quite decently already.
Not to be flippant or anything. I think these words that can cause the most visceral reaction in engineering when uttered by clients or 'idea' people. There can be a very huge gap between something simple to put in words, and a concept that is actually simple (both in the easy to understand, and in the low technical complexity sense).
For the point at hand, detecting which words belong to what language is an insanely difficult problem. Even excluding words that are purely invented but still make sense (like a new fad, a technical world, proper nouns, abbreviations, short hands etc.). Even within a single language you'll still have a hard time coming up with heuristics about what the user is typing 80% of the time (my personal experience with IMEs), especially when the user makes awful typos all the time.
Up until now, the best system I've ever seen is to use a dedicated switching button on your keyboard to switch between the language contexts. Japanese mac keyboard's 'eiji' and 'kana' buttons are really good for that, a lot better than the Control+Shift kind of pattern mainly used in linux distros for instance. It's fast, fool proof, very simple to understand from the user POV, and the input system is always focused on one kind of input only. But it translates very badly to touch screens I guess.
I have a near 50/50 split between two languages in my day to day usage and I would already derive massive benefit from some very small tweaks, ranging from autocorrect accepting words for two languages at the same time to, like I mentioned, just offering prediction with a Markov model trained on two languages simultaneously.
These are fixes that are very easy to implement and would offer a significant benefit, yet they aren't being implemented because the developers just don't care enough.
I agree this. This is so important and so easy. I have basically gotten used to those red markers to the point I barely notice them anymore. It is easier to ignore them than to change language every time.
And most IMEs already work with several languages in a way, since they use the sentence context coupled with a system and user dictionary that contains the most common and some set of arbitrary words from any language you want/use regularly enough to have the IME remember the words.
What I described is basically taking that mechanism and baking it into the standard OS without all the custom personalization options the IMEs offer and just offer a ready to use "English + OtherLang" option.
I don't think iOS does anything like that, but there you can still reduce the threshold at which you'll auto-correct and get a significant improvement.
Just goes to show that on all platforms there are still plenty of trade-offs to be explored.
I completely agree. I speak two languages regularly (English/French) and I also find it to be a pain point.
It's something that I hope we can address over time with Minuum. Certainly the first step will be making it really fast and painless to switch languages.
We've also considered having a quick way to disable auto-correction/disambiguation on the fly.
Do you have a favoured solution? Sounds like maybe simultaneous language support doesn't quite cut it for you.
I can see that Minuum works well using Bayes to predict a certain english word given the user input.
If you guys generate/use a language model for other languages that would give us around the same accuracy/prior probability as the english model, then I think it shouldn't be a problem.
Having quick settings and options that you can setup and choose which languages to include in the prior probability.
Being able to quickly turn off/turn a language, add/remove languages to the priori, etc.
I speak a few languages and often use words from other languages with SMSs etc. I'd estimate 90-95% of being english with other words thrown in between.
If I analyse my message history I will most likely find that I use less than 100-150 words from the other languages pretty often.
So, if there is a feature to quick way to disable auto-correction/disambiguation on the fly like you mentioned with an added feature to automatically add words that I use when auto-correct is turned off to a dictionary, my need to turn auto-correct off would decrease quite rapidly, to the point where I may not need it at all.
Let user to check which languages he is using (somewhere in settings) and then allow him to use them as he wish. Mix all selected languages into one, previous (or two previous word) should be enough to predict correct next word.
They all allow to mix multiple languages and are pretty awesome virtual keyboards. Using them with two or more languages at the same time is a very smooth experience. Couldn't imagine to go back to a single language keyboard.
A quick overview:
- Swiftkey has probably the best prediction capabilities and with its cloud sync it has many advanced features.
- Touchpad is very close to swiftkey
- Kii is the keyboard with the most configuration possibilities. You can change really everything with this keyboard, from the size of the buttons over padding, click sounds, prediction behaviors to gestures and many, many more. It's definitely the most powerful and fastest keyboard. On par with swiftkey except the cloud sync feature. Once you you set it up to your needs your type as fast as with a blackberry either with one hand (by swiping) or with two hands (by tapping). But again swiftkey and touchpad are very powerful too and at the end it's a matter of taste.
Swype is still quite popular but doesn't have good multi language support and the experience is not that smooth compared to the other ones.
I'm almost positive they use an n-gram Markov model, which is pretty cool. But, and the big but (might be wrong but it's my feeling) is that they share the model across languages.
I suspect so because I normally keep English/Spanish on and switch between Portuguese and French, and even when I'm writing Spanish in E/S/F mode I get Portuguese suggestions (because of identical and very similar words to Spanish).
No, you should be way, way stricter to tell languages apart and use different models for each one, probably using another model to adjust the probability of each language.
Example annoyance: After I type 3 words in Spanish that happen to be 2 words in Portuguese and 1 in English, I certainly don't want the English suggestion, even if I use that word more frequently in English.
I suspected as much when it came to Swype; it's nice to see someone who has actually done the work verify this intuition. I use Dvorak on my physical keyboards, but I find it sort of... ironic, for lack of a better word... that the suboptimality of QWERTY is itself the key to how these alternate sloppy-keyboards work. It's sort of nice that my QWERTY skills don't entirely go to waste...
...
OK, OK, that was snark, I admit it, but it felt good. Mmmm... oh yeah, that's the stuff.
More seriously, it is unlikely that QWERTY is optimal for this use case since it certainly was never designed for this.
it is unlikely that QWERTY is optimal for this use case
since it certainly was never designed for this
QWERTY was designed to minimize jams on manual typewriters. You get a jam when you press two nearby keys in quick succession. This is actually extremely similar to the layout constraint swype operates under.Got any cites?
(I'm not doubting you, I'm genuinely curious.)
We will be setting up an alpha with some Galaxy Gear users in the next week. Some technical know how will be required, but if you're interested send us an e-mail at developers@minuum.com.
1) Network communication (full network access)
2) Your social information (read your contacts)
?
The first makes it sound like it's a keylogger, and stops me in my tracks.
The second... just why on Earth would a keyboard need to have a list of contacts? Are you going to spam my friends?
If #2 was asked for without #1, I could charitably hope that the contacts are just used for word suggestions based on names and addresses. But due to #2 being asked for in addition to #1 I really just think this is a spam machine at best, and a leaking of private contacts at worse.
Is anyone from Minuum on here who can explain why those permissions would be required.
As far as reading my social information, I have no idea why it requests that. However, upon checking XPrivacy, I can see that it has never even attempted to access accounts, contacts, SMS/MMS, etc. Which would lead me to speculate that this is either a mechanism for recommendations, or used to build up dictionaries. (Edit: I never have the keyboard build up dictionaries, so I never told Minuum to try to do anything along those lines.)
We require network access in order to collect analytics on how the
keyboard is used. This information is completely user anonymous
and we only use it so we can improve the experience for our users.
We request social contact information so that the app can import the
names of your contacts into our dictionary locally on your phone.
This information does not leave your phone.
We think it is of utmost importance to respect the privacy of our
users and only request certain information to improve the user
experience. For further information about privacy, please see:
http://minuum.com/data/
Please let us know if you have anymore questions,Please check out our data collection policy at http://minuum.com/data/ . We actually wrote a fair amount of it ourselves to try and reduce the “legalese” aspect. Hopefully, as you suggest, we can work to increase transparence more in the future.
As someone below mention the key reason we introduced network access was to enable language packs.
We also collect some analytics, but it's limited to data which is inherently anonymous. We really want to build an amazing keyboard that people will want to use every day so it’s critical we be able to answer basic questions like “Is the keyboard installed?” and “Was it used today?”. Otherwise we couldn't validate our design decision.
As stated in our data collection policy, if we ever want to collect anonymized typing statistics or other data related to what you type, that would be strictly opt-in and we would be as transparent as possible about it.
And yes, as others mentioned, we only access contact information if you use the import contacts feature in the settings.
1 - Small keyboard makes it hard to look at the keyboard itself as you type forcing me to actually touch type on my phone. This has allowed me to catch way more typos as I write and has also helped my writing as I can focus more on the flow of the words than on the act of typing.
2 - Screen real estate. I know that phone screens are huge, but if you want to write something longer being able to read more of what you have written without having to constantly stop and scroll is great. Responding to emails and incorporating details from prior messages is much, much easier.
Cons:
1 - I find the space gesture to sometimes result in the backspace gesture being selected if I go too quick. Compared to the speed and effortlessness of fleksy this is much more finicky.
2 - The swipe up/down to pick different word corrections from fleksy is not present meaning that choosing a different word completion requires you to leave the "home row" and click on a small target. Way less convenient.
3 - The swiftkey style "start typing and just select completions to finish the sentence" style doesn't really exist, but most of my sentences weren't as canned so I didn't really use this feature.
In summary, I use minuum and like it a lot. At most you've lost like 4-5 bucks or something or like 1/2 of a footlong sub. So you really can't go wrong by just trying it out. I would also recommend fleksy if you don't like minuum as I find both to be better than swiftkey. If minuum could grab some of the fleksy features I mentioned above it would be unstoppable.
Whenever I try to write one of those two thing (often, think email addresses, friends names , "yo", etc) I have to fall back on regular input.
With swiftkey, this means just going back to pecking. With minuum, it means going into a menu and switching to minuum's full sized view or long pressing each region to get a zoomed in view of the keys around there to pick out the one I want.
The compactness of minuum is great, though. And when I'm entering non-proper nouns it's as fast as any keyboard (given a few days to adjust).
I paticuraly like the "swipe left for space" function.
It makes me want to try even more radical keyboards. Maybe something chord based.
A quick point: you can actually access the 2d keyboard with a gesture by long-pressing two fingers on the keyboard. Not a very discoverable gesture, unfortunately, we'll definitely need to improve that.
Overall, the only real advantage of Minuum currently is its smaller size which allows you to see more of the screen... which is point. SwiftKey has more languages and currently allows for faster switching between 3 of them. And since its been around for longer is probably slightly more polished (less weird behavior when encountering weird input fields).
Oh, the other thing about Minuum is that people who haven't used it might have trouble borrowing your phone :P
So, sorry guys, refunded.
I wonder if typing on watches will be someday as normal as typing on phones. I would rather bet on speech recognition.
Off-topic, but I'm hoping one day programming won't be a desk job. You'll get to walk around, interact with a touch screen and just have a conversation with the computer about what should your program do.
EDIT: add "For input"
http://www.technologyreview.com/news/518356/device-could-spo...
By nestling the EEG inside the ear, the engineers avoid a lot of signal noise usually introduced by body movement. They can also ensure that the electrodes are always placed in exactly the same spot, which, they say, will make repeated readings more reliable.
It seems like I miss the space bar about five percent of the time.
To the developers, nice job and thanks for putting it on sale in the Play store.
We actually prefer to use the right slide gesture for a space, the added bonus being that then you can disable the space bar in the settings and save even more screen space.
After you've used it for a few days, I'd love to get your impressions. You can get in touch with me at xavier@whirlscape.com if you're interested in sending any thoughts.
I'm using an HTC First (please don't make fun of me), which has a 4.3 inch screen.
http://en.wikipedia.org/wiki/Dasher_(software)
"Dasher is an input method and computer accessibility tool which enables users to write without using a keyboard, by entering text on a screen using a pointing device such as a mouse, a touchpad, a touch screen, a roller ball, a joystick, a Push-button, a Wii Remote, or even mice operated by the foot or head."
Hard to tell how much success it ever had in terms of adoption, although I could imagine there may be users out there who find it invaluable. Certainly worth a look though as it gives a very nice visualisation of the text prediction algorithm as it goes.
also: took me all of 5 seconds to get fluent at it. no joke.
https://play.google.com/store/apps/details?id=com.vardhamani...
Basically the way Dvorak is optimized is sub-optimal for the Minuum disambiguation engine and so it reduces the accuracy. It turns out you're much better off with QWERTY or better yet something specifically optimized for Minuum.