天天看點

對使用者模組化:Minuum鍵盤背後的算法

當你開創一種新的鍵盤輸入技術時,在互動設計以及背景算法方面,都有大量工作要做。你隻需用一用,就能完全了解我們的鍵盤設計,而使得這種單行輸入法可行的真實“魔力”在于驅動它的統計算法。I

如果你還沒

見過 用過 Minuum鍵盤,簡單說,這項設計就是把傳統的鍵盤壓縮成僅僅一行,使得隻要環境允許,在任何地方使用單行輸入法成為可能。
對使用者模組化:Minuum鍵盤背後的算法
将鍵盤如此壓縮之後,我們馬上不得不面對一個基本事實:人類輸入是不準确的,而且打字速度越快 越不準确

。我們并不試圖提高使用者輸入的準确性,而是坦然接受纰漏。

隻有同時使用自動更正和歧義消除技術,這種想法才能奏效。“自動更正”是指你輸入錯了需要糾正,而“歧義消除”承認人類的互動行為從根源上帶有模糊性,并利用對語言的了解來減少它。試想一下,這就像語音識别:在一個嘈雜的酒吧裡,你朋友們的談話對錯不是問題;

人類語言總是模棱兩可的 ,而環境的嘈雜肯定無益于了解。你聽懂了談話,全是因為你對他們的話題具備先驗知識。

讓我們進入貝葉斯統計的奇妙世界吧!

Minuum将兩個因素結合起來判定單詞,一個是空間模型(spatial model),它能知道你敲擊鍵盤的精确度(我們進行了使用者研究來加以度量),另一個是語言模型,它明白你想要使用哪個單詞(我們是從現實生活中大量的文本中建立起這個模型)。假設你在鍵盤上敲擊了五次,有點像是敲了個“hello”,我們就用下面這個貝葉斯方程來測試究竟它有多像你所想要輸入的“hello”:

對使用者模組化:Minuum鍵盤背後的算法

讓我們把這個方程分成幾個部分:以給定的鍵盤敲擊為前提,你想要輸入的單詞是“hello”的機率與空間項與語言項之積成正比。空間項給出你按了一串鍵是想打出“hello”這個單詞的可能性;語言項給出你曾經輸入“hello”的機率。

Minuum所做的就是找到使p(word|taps)最大的單詞。在上例中,Minuum會算出單詞“hello”的得分。要找到那個最佳的單詞,Minuum會将這個分數與其他單詞的得分(同法所得)作比較。對給定的單詞,你的擊鍵位置與之越接近,這個單詞的空間項值越高;一個單詞在英語(或者是法語、德語、意大利語、西班牙語,隻要你将其激活)中越是常見,語言項值就越大。

簡單的空間模型

Minuum使用的空間模型真心不簡單(請記得空間模型表示人們心中所想與鍵盤所打有多接近)。這個模型能處理多種誤輸入,如多打或少打字母。但是,簡單模型将按鍵的機率密度視為以目标字母為中心的高斯分布,它的效果出奇的好。

對使用者模組化:Minuum鍵盤背後的算法

這表示,如果你是想打一個“t”,那麼“t”鍵的機率就是最大的,但是你按下了旁邊“v”或“g”鍵的機率仍然相當可觀。

簡單的語言模型

最簡單的語言模型就是計算詞頻。找一個語料庫(corpus),計算每個單詞出現了多少次。

Word Frequency
if 1,115,786
IV 5335

要比較兩個可能的單詞,如“if”和“Ⅳ”,根據上表,鍵入的是“if”的可能性高出是“Ⅳ”的可能性約200倍。

這個簡單模型和簡單的空間模型一樣,在實際運作中表現優異。更多的改進可以利用上下文,比如緊挨目前條目的上一詞。

Word(s)
what if 13,207
what of 1,380

短語“what if”比“what of”更常見約十倍,是以,即使“if”與“of”都是非常常見的單詞,目前文是“what”時,我們可以肯定的推斷“if”就是你想輸入的單詞。

單詞對應高維空間中的點

每當我可以用幾何形式将難題描述出來,我就能透徹地了解它。對于消歧難題,我的直覺了解突然頓悟,隻要我們能洞悉:單詞對應高維空間中的點,而打字就是搜尋這些點的過程。不信?聽我解釋。

Minuum鍵盤是呈一條直線排列,是以你手指的敲擊位置可以用一個數字表示,例如在下圖中,敲擊“q”鍵可以記為0至0.04間的一個數字,而按下“p”鍵可以用0.98至1間的數字表示。

對使用者模組化:Minuum鍵盤背後的算法

字母閉聯集,從0.0至1.0

兩個字母的單詞,需要擊鍵兩次,是以可以用一對數字來表示。單詞“an”,如果輸入準确無誤,表示為{0.06,0.67},而單詞“if”表示為{0.83,0.40}。下圖顯示了一些常見兩字母單詞在“單詞”空間中的位置。

對使用者模組化:Minuum鍵盤背後的算法

對于更長的單詞,處理的邏輯一模一樣:”and“表示為{0.06,0.67,0.29},”minuum“表示為{0.79, 0.83, 0.67, 0.71, 0.71, 0.79}。不幸的是,維數超過三,可視化就難得多了。

使用者敲擊的順序在單詞空間中也對應一個點,我們可以稱其為輸入點。一個單詞離輸入點越近,它在上文貝葉斯方程的空間項中就會得到更高的分數。奇怪的是,無論你想輸入的是什麼,它都和你在此空間中實際輸入很”接近“。

就讓我們來可視化幾個單詞吧!

我們可以生成一張全圖,上面是位列Minuum建議榜首的兩字母單詞,這些單詞都是基于所有可能的輸入組合;圖中,單詞越是常見,它占有的面積越大。滑鼠滑過該圖,你可以看到程式建議的其他候選替換詞。

對使用者模組化:Minuum鍵盤背後的算法

使用者之前輸入了單詞”what“,按下上面的上下文鍵,可以看到當我們使用更好的語言模型來分析時發生了什麼。很明顯,當我們考慮到上下文時,輸入的更有可能是”if“,而不太可能建議替換為”in“,因為”what if“比起”what of“更常見,而”what in“沒有”what I‘m“常見。1

統計模組化使界面更友好

所有這些複雜的計算使得Minuum可以擺脫傳統鍵盤的一些局限(單行鍵盤輸入法甚至在1吋的螢幕上運作良好)。

這意味着什麼呢?隻有了解使用者,界面才會更友好!谷歌即時搜尋之是以厲害,在于它在你敲了兩個鍵之後就知道你要找什麼。蘋果Siri也離不開複雜的語言模組化。Minuum結合使用人類輸入的空間和語言模型,可以簡化鍵盤。如果你正在設計一個

複雜的界面

,好好考慮一下該怎麼對使用者行為模組化以簡化所需的互動行為吧。

不考慮上下文,”if“這個單詞占有面積很小,周圍的單詞”it“和”of“占主導地位。這是使用QWERTY布局鍵盤的副作用。如果不考慮加入學習曲線,我們可以将鍵盤重新布局,讓”i“和”o”還有”f“和”t“鍵離得很遠!我們确實這樣做了:馬上就有論文發表出來。順便說一句,這也是為什麼Dvorak布局鍵盤在高歧義場合極為不利于使用;Dvorak鍵盤上所有的元音字母挨在一起,歧義顯著增加。在直覺上,它改變了單詞空間,讓很多常見詞互相緊鄰。

繼續閱讀