iPhone föreslår fel ord – varför?

Jag fick en kommentar i mitt förra inlägg om Frekvensfördelning från Isak. Frågan löd: ”Jag ska skriva ’till’ men råkar skriva ‘toll’. Ordlistan ger istället förslag på ‘tolk’.”

Så här är mitt svar:

När jag jag skriver in ”tol” så får jag förslaget ”tolk” precis som du, Isak. Slår jag sedan in ett ”l” till, dvs ”toll” så får jag förslaget ”roll”.

Anledningen att ”tolk” föreslår när du skriver ”tol” är nog att iPhone tänker så här:

  1. finns det några ord som börjar på de bokstäver du skrivit
  2. om ja, plocka fram de kortaste orden som matchar
  3. om det finns flera ord med samma längd, visa den som har högst relevans

I ditt fall innebär det att iPhone hittar 35 ord som börjar på ”tol”. Av dessa 35 ord finns det två ord som är fyra tecken långa, nämligen tolk som har relevansen ”76” och ”tolv” som har relevansen ”99”. Här anser jag alltså att iPhone borde föreslå ”tolv”. Varför iPhone föreslår ”tolk” förstår jag inte eftersom ”tolv” har mycket högre relevans. Här kan det finnas någonting i iPhones algoritm som vi ännu inte känner till. Men att iPhone inte på detta stadie förstår att det är ”till” du egentligen vill skriva faller sig ganska naturligt. Och det är inte någonting som jag kan påverka.

När du sedan skriver in det sista l:et i ”toll” så finns det inte ett enda ord i ordlistan som börjar på dessa bokstäver. Jag antar att iPhone då gör en lista över ord som matchar felstavningar. Både ”till” och ”roll” har relevansen 99* i den nuvarande ordlistan. Här finns alltså en möjlighet för iPhone att välja ”till” men väljer ändå ”roll”.

Jag provade precis att göra en ny ordlista där jag bytt ut relevansen på ”roll” från 99 till 98. Trots min ändring föreslår iPhone ändå ”roll”. Även här finns det alltså något i iPhones algoritm som vi ännu inte känner till.

Vid båda tillfällena så beter sig alltså iPhone inte som förväntat, trots att den har fått bra indata. Mycket konstigt…

Obs! Jag har provat detta på en iPhone 1.1.1. Det kan vara så att Apple ändrar i algoritmerna mellan de olika versionerna – så det vore intressant att höra om man får upp samma förslag på en 1.1.2 telefon.

* Här skulle den frekvensfördelning som jag arbetar på kunna göra skillnad i relevans på de två orden.

Andra bloggar om: , , , , , , , , ,

18 svar to “iPhone föreslår fel ord – varför?”

  1. Lone_fox Says:

    Intressant, följer dissektionen av ordlistan med spänning!

  2. zightx Says:

    Jag har en 1.1.2 iPhone. (Ej OOB utan uppgraderad).

    Detta verkar iaf vara väldigt slumpmässigt och konstigt. När jag skriver först ”tol” får jag förslag på ”tok” och skriver jag sedan ”toll” får jag förslag på ”till”. Men ibland får jag istället helt andra resultat.

    När jag då skriver ”tol” får jag förslag på ”tok” som vanligt men när jag skriver ”toll” får jag förslag på ”roll”.

  3. Kia Says:

    Får du ”till” som förslag när du skriver ”toll” eller får du ”roll”? Din kommentar är motsägelsefull.

  4. zightx Says:

    Som jag sa. Jag får olika resultat. Ibland ”till” och ibland ”roll” som förslag när jag skriver ”toll”

  5. henrik pejer Says:

    Jag tror att det har med tangentbordets layout att göra. Om du skriver toll ligger bokstaven k nära l vilket gör att om jag ‘missade’ den sista bokstaven i ordet var det antagligen k och inte v således tolk och inte tolv.

    Så tolk ÄR smartare än tolv, i detta fall… Om du inte har enorma fingrar förstås!

    God jul folks!

  6. Oskar Says:

    Kan det vara så att kodningen (encoding) på text-filen du använder som source till ordlistan är felaktig, så att den kodar å, ä och ö felaktigt? Prova att spara textfilen (i TextEdit) i UTF-8-format istället för standard Western Mac Roman. När jag öppnade textfilen i ”src”-mappen var å, ä och ö totalt messed up. Å var ”√•”, ä var ”√§” och ö var ”√∂”. Mycket möjligt att det är därför det inte fungerar.

    Om du sparar textfilen med en kodning som iphoneshop förstår så kanske vi äntligen kan få ordlistan att automatiskt rättstava ord med svenska tecken, precis som den tyska ordlistan klarar av.

    Ang. ordlistorna ”two-letters” och ”one-letters”, borde det bara vara att lista alla såna ord, sen konvertera med iphoneshop och döpa om filen från ”sv_SE-unigrams.dat” till respektive namn. Värt ett försök!

  7. Oskar Says:

    Update: UTF-8 är naturligtvis standard-formatet man redan använder. Jag menade så klart UTF-16, vilket iPhoneShop inte stödjer. Ni kan själva försöka konvertera en ordlista med svenska tecken i UTF-8-format, och sen kolla på debug-filen. Alla ord med svenska tecken är totalt förstörda. Inte konstigt att vi inte får upp några förslag. UTF-16 är förhoppningsvis lösningen, när vi kan få iPhoneShop att stöjda detta.

  8. Oskar Says:

    P.S: Danskarna har fått ihop en ordbok som verkar funka.

    http://iphone.vildmedmac.dk/?p=279

  9. Kia Says:

    @henrik pejer: det är när man skriver ”tol” (inte ”toll”) som man får förslaget ”tolk”.

    @Oskar: Kodningen är korrekt. Jag är säker. Jag har jämfört med den tyska inbyggda ordboken, och den använder samma kodning. Dessutom får man exempelvis förslaget ”Åkerier” om man skriver ”Åker”.

    Jag vet inte vilken fördel UTF-16 skulle ge, men när jag tittar på debug-filen så ser allting ut som det ska.

    När det gäller “two-letters” och “one-letters” så är det tyvärr inte så enkelt. Öppna gärna filerna i valfri texteditor eller hexeditor så ser du innehållet ganska bra. Än så länge förstår jag inte vilka ord som avses. Det enda jag har lyckats lista ut är att den tyska, franska och engelska ordboken har en exakt likadan one-letters-fil, men den amerikanske ser annorlunda ut. two-letters filen är alltid 6 092 bytes lång.

    Om du kan hitta något annan information om vilka ord som skall finnas i dessa två filer så vore det väldigt intressant.

  10. Kia Says:

    @Oskar: Jag kikat på den danska ordlistan (från 2007-12-22) och den ser ut precis som min svenska ordlista. När jag provade den upplevde jag dessutom att den har samma problem som den svenska, nämligen att den inte föreslår ”åben” om man skriver ”aben”.

  11. Kia Says:

    @zightx: Jag förstår. Nu när du säger det så upplever jag faktiskt samma sak på 1.1.1. Men förmodligen är det inte slumpmässigt. Kan det kanske vara så att iPhone minns vilka ord man ”tackat nej” till tidigare, och föreslår nya ord nästa gång den får möjlighet?

  12. Lone_fox Says:

    Det måste ju i så fall sparas någonstans och bli en personlig relevans eller att den ursprungliga ändras, eller?

  13. Kia Says:

    @Lone_fox: Ja det stämmer. Det skall finnas en sådan personlig ordlista någonstans. Jag har sett andra referera till den men jag vet fortfarande inte var den ligger och exakt vad som lagras där.

  14. Isak Says:

    Hej igen🙂

    Ordboken verkar iaf lära sig, nu föreslår den ’till’ för det mesta.
    Det med åäö-ord har jag itne riktigt förstått, det funkar för det mesta för min del, såvida orden är längre än tre bokstäver.

    När jag skriver ‘behover’ brukar den föreslå ‘behöver’ (för att ta ett exempel).

    Tack så mycket för ditt arbete och att du engagerar dig i detta🙂

    (Förresten, om det är av någon nytta kör jag med OOB 1.1.2 + Turbosim)

  15. Kia Says:

    Det är bra att den lär sig, men synd att den inte förstår från början…

  16. Carlisle_united Says:

    Finns det nått sätt att få den att inte föreslå ”närhet” när man ska skriva ”när”?

    Har blivit många sms där jag frågat efter Närhet när jag bara ville veta när…

  17. Gurra Says:

    Anledningen till att den väljer tolk istället för tolv är att k sitter bra mycket närmre l än vad v gör. Ordlistan bedöms efter rimlighet också… om man vill skriva tolv är det osannolikt att man missar v så grovt så att man träffar ett l till istället. mycket mer sannolikt är enligt telefonen att man missade den bokstav man ville skriva med en bokstav i bredd eller höjd, dvs till eller tolk. Därefter så är det ju en viktningsfråga…

  18. Kia Says:

    Stämmer bra. Men den lär sig dessutom nya ord med tiden. Varje gång du trycker bort ett ord genom att trycka på X-et så får det ordet en sämre viktning. När du gjort det tillräckligt många gånger (antal gånger beror på ursprungsviktningen) så försvinner ordet. Det räcker alltså inte med att trycka bort ordet en gång för att det skall sluta föreslås.


Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: