sv_SE-one-letter-words.dat och sv_SE-two-letter-words.dat

Jag har analyserat de två saknade filerna sv_SE-one-letter-words.dat och sv_SE-two-letter-words.dat. De skall uppenbarligen (om man tittar på filnamnet) innehålla ord som är ett tecken respektive två tecken långa.

En sak som förbryllar mig med sv_SE-one-letter-words.dat är att filen, på de befintliga språken (som följer med iPhone), inte innehåller specialtecken. Exempelvis innehåller den tyska inte tecknet ü. Dessutom innehåller den tecken som inte är ord. En annan sak som är konstig är att man aldrig får förslag på ord som består av en bokstav, så den exakta använiningen av den här filen är också oklar för mig.

Så här ser den tyska filen ut om man tittar på den i en hexeditor:

one-letter-wordsdat.jpg

Så fort jag får mer information så kommer jag att skapa en sv_SE-one-letter-words.dat-fil. Min gissning blir att den svenska filen är väldigt lik den tyska motsvarigheten.

Noterat: Alla one-letter-words.dat filer är exakt 320 bytes stora.

När det gäller two-letter-words.dat så ser läget lite annorlunda ut. Även här har jag tittat på den tyska filen i en hexeditor. Här är en del av innehållet:

two-letter-wordsdat.jpg

Det råder ingen tvekan om att innehållet är ord som består av två bokstäver. Men varför förkommer vissa ord flera gånger (se exempelvis ”ag” och ”an” ovan)? När jag vet svaret på den frågan så kan jag skapa en two-letter-words.dat-fil.

Jag har dessutom lyckats hitta en lista med svenska ord som är två tecken långa. Den finns här [pdf]. Listan innehåller alla ord från SAOL. Det bästa vore nog att försöka plocka bort alla ord som man i normalt tal inte använder så ofta så att man inte får förslag på dem. Eftersom listan inte är så lång är detta någonting man kan göra manuellt (någon frivillig?).

Jag har provat att ersätta den svenska filen med den tyska motsvarigheten och kan konstatera att man då får förslag på tyska ord.Noterat: Alla two-letter-words.dat-filer är exakt 6092 bytes stora.

Jag har förutom det som jag skrivit om ovan även tittat på dem danska, engelska och amerikanska one/two-letter-words.dat filerna för att försöka hitta likheter/skillnader. Men det har inte gjort mig klokare.

För den som är intresserad så är filerna uppbyggda på det här sättet (citerar signaturen M4v3R):

”These two files hold one and two letter words for each language. They always start with 8 byte header, 6 bytes unknown, and 2 bytes are length of the file minus 8 bytes. Then the list of words follow, with 3 byte ‘counter’ at the beginning, and 3 (one-letter-words) / 6 (two-letter-words) 00-padded word in plain ASCII.”

Så nu har du all information som jag har kring dessa två filer. Har du mer information eller har jag tänkt fel någonstans? Skriv då en kommentar!

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

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: , , , , , , , , ,

Frekvensfördelning

Som jag tidigare skrivit använder jag en ordlista från Debian som bas när jag skapar ordlistan till iPhone. För att få fram en siffra över vilket ord som är vanligast har jag gjort en lista över alla ord på svenska Wikipedia och hur många gånger respektive ord förekommer.

När jag sedan mappar Debians ordlista med frekvenslistan från Wikipedia och konverterar frekvenserna så att dem hamnar mellan talet 20 och 100 så fördelar sig talen på följande sätt (klicka för större bild):

Som synes är det mer än 10000 ord som får samma viktning, talet 20. Det är ord som ”abakus”, ”abandon”, ”abbedissor” (några exempel från början av ordlistan) – det vill säga ord som du inte kommer att skriva så ofta.

Anledningen är att det i listan, som jag genererat från Wikipedia, finns väldigt många ord som förekommer färre än 50 gånger, och det finns några ord som förekommer mer än 200000 gånger. Spridningen blir därför väldigt stor.

Min tanke var att det var bättre att göra om fördelningen så att den blir logaritmisk istället för linjär. Talen skulle då fördela sig jämnare vilket jag tror skulle leda till bättre förslag på ord i slutändan.

Jag hittade en sida som beskrev en algoritm för att göra just fördela frekvenser logaritmistk. Men efter att ha provat alogritmen så visade det sig att fördelningen inte alls blev bättre. Jag vet inte riktigt vad det beror på, men kontentan är att den nuvarande ordlistan är bättre än den ordlista som jag hade planer på att skapa nu i dagarna. Jag har hittat en annan algoritm som jag skall kolla på vid tillfälle – så jag har inte gett upp vad gäller att göra en bättre frekvensfördelning.

Vill du hjälpa till att göra ordlistan bättre? Prova då den nuvarande ordlistan och hör av dig om du upptäcker någonting som skulle kunna bli bättre.

God Jul!

Uppdaterat

Jag tänkte att det kan vara intressant att jämföra frekvensfördelningen i den svenska ordlistan med den amerikanska motsvarigheten (från en 1.1.1 telefon). Här är den (klicka för större bild):

Om vi jämför den amerikanska ordlistan med ”min” ordlista så syns tydligt att den största skillnaden är att den amerikanska har nästan 10000 ord som har fått relevansen ”50”.

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

Håll dig uppdaterad

Lägg in denna adress i din flödesläsare för att få den senaste informationen om utvecklingen av min svenska ordlista till iPhone:

https://svenskiphoneordlista.wordpress.com/feed/

Jag rekommenderar Google Reader.

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

Ordlistan i iPod Touch

Det vore intressant att se hur den svenska ordlistan i iPod Touch ser ut. Är det någon som har filerna så lägg gärna upp dem någonstans och skriv en kommentar!

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

Inga förslag på ord som innehåller å,ä och ö

I den tyska ordlistan, som följer med iPhone 1.1.2, så får man förslag om man skriver ordet ”uber”. iPhone föreslår helt korrekt ordet ”über”.

Detta fungerar inte med min ordlista. Skriver du ”over” så får du inte något förslag. Det korrekta hade varit att iPhone föreslår ”över”.

Hur kommer då detta sig? Jag är ganska säker på att det är en bugg i iPhoneshop som orsakar detta. Jag har föreslagit en lösning till utvecklarna och väntar just på besked.

Det skulle gå riktigt snabbt att skriva ord med å,ä och ö om jag fick detta att fungera…

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

Så återställer du din personliga ordlista

Varje gång du skriver ett eget ord så lagras det i en separat ordbok. Vill du tömma den så går du bara in under Inställningar -> Allmänt -> Återställ -> Återställ tangentbordsordbok. Klicka sedan på kappen ”Återställ ordbok”. Den svenska ordboken kommer att ligga kvar, men dina egna ord kommer att tas bort.

Det kan vara bra att återställa din personliga ordlista när du skall testa en ny version av min ordlista.

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