對使用者建模:Minuum鍵盤背後的演算法

toolate發表於2014-03-06

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

如果你還沒見過或用過Minuum鍵盤,簡單說,這項設計就是把傳統的鍵盤壓縮成僅僅一行,使得只要環境允許,在任何地方使用單行輸入法成為可能。


將鍵盤如此壓縮之後,我們馬上不得不面對一個基本事實:人類輸入是不準確的,而且打字速度越快越不準確。我們並不試圖提高使用者輸入的準確性,而是坦然接受紕漏。

只有同時使用自動更正和歧義消除技術,這種想法才能奏效。“自動更正”是指你輸入錯了需要糾正,而“歧義消除”承認人類的互動行為從根源上帶有模糊性,並利用對語言的理解來減少它。試想一下,這就像語音識別:在一個嘈雜的酒吧裡,你朋友們的談話對錯不是問題;人類語言總是模稜兩可的,而環境的嘈雜肯定無益於理解。你聽懂了談話,全是因為你對他們的話題具備先驗知識。
讓我們進入貝葉斯統計的奇妙世界吧!
Minuum將兩個因素結合起來判定單詞,一個是空間模型(spatial?model),它能知道你敲擊鍵盤的精確度(我們進行了使用者研究來加以度量),另一個是語言模型,它明白你想要使用哪個單詞(我們是從現實生活中大量的文字中建立起這個模型)。假設你在鍵盤上敲擊了五次,有點像是敲了個“hello”,我們就用下面這個貝葉斯方程來測試究竟它有多像你所想要輸入的“hello”:

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

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

 

簡單的空間模型

Minuum使用的空間模型真心不簡單(請記得空間模型表示人們心中所想與鍵盤所打有多接近)。這個模型能處理多種誤輸入,如多打或少打字母。但是,簡單模型將按鍵的概率密度視為以目標字母為中心的高斯分佈,它的效果出奇的好。
gs
這表示,如果你是想打一個“t”,那麼“t”鍵的概率就是最大的,但是你按下了旁邊“v”或“g”鍵的概率仍然相當可觀。

簡單的語言模型

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

Word Frequency
if 1,115,786
IV 5335

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

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

 

Word(s) Frequency
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間的數字表示。

字母閉聯集,從0.0至1.0

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

wordspace1

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

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

 

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

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

map1map2

使用者之前輸入了單詞”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鍵盤上所有的母音字母挨在一起,歧義顯著增加。在直覺上,它改變了單詞空間,讓很多常見詞互相緊鄰。

相關文章