93

Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

�eské vysoké u£ení technické v PrazeFakulta elektrotechnickáKatedra kybernetiky

Softwarový nebo výzkumný projekt

Moºnosti predikce textu p°i psaní osobou s omezenoupohyblivostí a reakcí

Bc. Martin Vogal

Vedoucí práce: Ing. Petr Novák

Studijní program: Otev°ená informatika, strukturovaný, navazujícímagisterský

Obor: Po£íta£ové vid¥ní a digitální obraz

19. kv¥tna 2011

Page 2: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

iv

Page 3: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

v

Pod¥kováníJe mou milou povinností pod¥kovat na tomto míst¥ Ing. Petrovi Novákovi za spolupráci,cenné rady, podn¥tné p°ipomínky, které mi nemalou m¥rou pomohly p°i vypracování tétopráce. Dále bych cht¥l pod¥kovat své rodin¥, p°átel·m a spoluºák·m za odborné radya trp¥livost p°i psaní této práce.

Page 4: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

vi

Page 5: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

vii

Prohlá²eníProhla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedenév p°iloºeném seznamu.Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu �60 Zákona £. 121/2000Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterýchzákon· (autorský zákon).

V Praze dne 15. 5. 2011 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Page 6: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

viii

Page 7: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Abstract

There is many handicapped people who are not able to write text using commonlyinstruments. Because of them is the main goal of this thesis to propose and implementthe instrument (the computer program) to simplify and accelerate writting of text forpersons with bounded movement and reaction ability. The instrument can predict notonly following suitable chars but even following words and eventually parts of sentences.The instrument is suppose to learn these often words and sentences.

Abstrakt

Hendikepovaných lidí je nemalý po£et. Vzhledem k jejich postiºení d¥lá takto hendikepo-vaným lidem problém psaní textu pomocí b¥ºn¥ dostupných nástroj·. Proto se hledajímoºnosti, jak t¥mto lidem ve snadn¥j²ím psaní pomoci. Z tohoto d·vodu je cílem tétodiplomové práce navrhnout a implementovat nástroj (program) pro zjednodu²ení azrychlení psaní textu pro osoby s omezenou schopností pohybu nebo reakce. Schopnostnástroje spo£ívá nejen v návrhu následujících vhodných znak·, ale i slov a p°ípadn¥ £ástiv¥t, p°i£emº by m¥l vyuºít moºnosti u£ení se t¥chto £asto vyskytujících slov £i £ástí v¥t.

ix

Page 8: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

x

Page 9: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Obsah

1 Úvod 11.1 Moºnosti predikce textu . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Historie predikce textu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Dokon£ování vhodných slov . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Dokon£ování frází a v¥t . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Popis problému, speci�kace cíle 52.1 Popis problému predikce textu . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Cílová skupina uºivatel· . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Vymezení cíl· obecn¥ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Existující implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.4.1 Dasher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4.1.1 Podrobn¥j²í popis funkcionality . . . . . . . . . . . . . . 72.4.1.2 Jazykový model . . . . . . . . . . . . . . . . . . . . . . . 82.4.1.3 Predikce textu obecn¥ . . . . . . . . . . . . . . . . . . . 92.4.1.4 Vyuºití predikce textu . . . . . . . . . . . . . . . . . . . 102.4.1.5 Relace mezi predikcí a kompresí . . . . . . . . . . . . . . 102.4.1.6 Relace mezi predikcí a klasi�kací . . . . . . . . . . . . . 102.4.1.7 Knuth-Morris-Pratt algoritmus . . . . . . . . . . . . . . 102.4.1.8 Predikce £áste£né shody . . . . . . . . . . . . . . . . . . 11

2.4.2 Read & Write GOLD . . . . . . . . . . . . . . . . . . . . . . . . . 112.4.3 ClaroRead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4.4 OpenO�ce.org Writer . . . . . . . . . . . . . . . . . . . . . . . . 142.4.5 Microsoft Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4.6 T9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4.6.1 Speciální vlastnosti . . . . . . . . . . . . . . . . . . . . . 152.4.7 Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 Analýza a návrh °e²ení 173.1 Analýza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.1.1 Jazyk C# a technologie .NET . . . . . . . . . . . . . . . . . . . . 173.1.2 Technologie .NET a jazyk C# . . . . . . . . . . . . . . . . . . . . 173.1.3 Výhody technologie .NET . . . . . . . . . . . . . . . . . . . . . . 183.1.4 Porovnání jazyka C# s jinými jazyky . . . . . . . . . . . . . . . . 193.1.5 Výb¥r programovacího jazyku . . . . . . . . . . . . . . . . . . . . 21

xi

Page 10: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

xii OBSAH

3.1.6 Postup u£ení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.6.1 U£ení ze souboru . . . . . . . . . . . . . . . . . . . . . . 223.1.6.2 U£ení pomocí uºivatelského vstupu . . . . . . . . . . . . 23

3.2 Návrh °e²ení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.1 Skladba v¥ty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.2 �etnost výskytu slov . . . . . . . . . . . . . . . . . . . . . . . . . 253.2.3 Aktuáln¥ psané téma . . . . . . . . . . . . . . . . . . . . . . . . . 273.2.4 Následná slova . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2.5 Slovní druhy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.6 Zabarvení v¥ty . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2.7 Predikce frází £i £ástí v¥t . . . . . . . . . . . . . . . . . . . . . . . 323.2.8 Interpretované zkratky do v¥t . . . . . . . . . . . . . . . . . . . . 343.2.9 Uloºení dat pro trvalé pouºití . . . . . . . . . . . . . . . . . . . . 353.2.10 Pro�ly uºivatel· . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.2.11 Vstupy a výstupy . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2.12 Návrh GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4 Realizace 414.1 Predikce b¥ºící na pozadí . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.2 Pouºité komponenty testovací demo verze . . . . . . . . . . . . . . . . . . 43

4.2.1 T°ída Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.2.2 Ovládací prvek DataGridView . . . . . . . . . . . . . . . . . . . . 444.2.3 Ovládací prvek TextBox . . . . . . . . . . . . . . . . . . . . . . . 454.2.4 Gra�cké uspo°ádání komponent a jejich význam v demo aplikaci . 46

4.3 Popis °e²ení a vnit°ní struktury knihovny . . . . . . . . . . . . . . . . . . 474.3.1 T°ída SlovoZname . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.3.1.1 Výpo£et váhy slova . . . . . . . . . . . . . . . . . . . . . 484.3.1.2 Výpo£et do£asné váhy slova . . . . . . . . . . . . . . . . 504.3.1.3 Významné metody . . . . . . . . . . . . . . . . . . . . . 51

4.3.2 T°ída NasledneSlovo . . . . . . . . . . . . . . . . . . . . . . . . . 514.3.3 T°ída SlovnikPouzivanychSlovAVet . . . . . . . . . . . . . . . . . 514.3.4 T°ída SlovnikPouzivanychSlov . . . . . . . . . . . . . . . . . . . . 564.3.5 T°ída SlovnikVsechSlov . . . . . . . . . . . . . . . . . . . . . . . . 564.3.6 T°ída VetaZnama . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.3.6.1 Výpo£et váhy v¥ty . . . . . . . . . . . . . . . . . . . . . 574.3.7 T°ída VetyZname . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.3.8 T°ída Hlavni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.3.9 T°ída ZpracovaniSlov . . . . . . . . . . . . . . . . . . . . . . . . . 594.3.10 T°ída Pro�l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.4 Omezení aplikace pro predikci textu . . . . . . . . . . . . . . . . . . . . . 59

5 Manuál aplikace pro predikci textu 615.1 Demonstra£ní aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.2 Jak se aplikace u£í . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.3 Dal²í schopnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Page 11: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

OBSAH xiii

5.4 Ukázka hotové demo aplikace . . . . . . . . . . . . . . . . . . . . . . . . 63

6 Testování 656.1 Zp·sob, pr·b¥h a výsledky testování . . . . . . . . . . . . . . . . . . . . 65

6.1.1 Zhodnocení testování . . . . . . . . . . . . . . . . . . . . . . . . . 666.2 Srovnání s existujícími °e²eními . . . . . . . . . . . . . . . . . . . . . . . 68

7 Záv¥r 71

Literatura 73

8 Seznam pouºitých zkratek 75

9 Obsah p°iloºeného CD 77

Page 12: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

xiv OBSAH

Page 13: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Seznam obrázk·

2.1 Dasher a jeho gra�cké uºivatelské prost°edí. . . . . . . . . . . . . . . . . 92.2 Read & Write GOLD a ukázka jeho gra�ckého prost°edí a predikce pro-

gramu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3 ClaroRead a ukázka jeho gra�ckého prost°edí a predikce programu. . . . 142.4 Excel a ukázka dokon£ování slov. . . . . . . . . . . . . . . . . . . . . . . 142.5 Ukázka programu pro psaní jednoduchých v¥t. . . . . . . . . . . . . . . . 16

3.1 Návrh uºivatelského prost°edí. . . . . . . . . . . . . . . . . . . . . . . . . 39

4.1 Diagram vstup· a výstup· knihovny. . . . . . . . . . . . . . . . . . . . . 424.2 Ukázka pouºité komponenty DataGridView. . . . . . . . . . . . . . . . . 454.3 Ukázka pouºité komponenty TextBox a TextBox s vlastností Multiline a

ReadOnly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.4 Uspo°ádání komponent v GUI demo aplikace. . . . . . . . . . . . . . . . 464.5 Diagram t°íd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1 Ukázka hotové aplikace. . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6.1 Výsledky testování. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

9.1 Obsah p°iloºeného CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

xv

Page 14: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

xvi SEZNAM OBRÁZK�

Page 15: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Seznam tabulek

3.1 Po£et slov za£ínajících na po£áte£ní text. . . . . . . . . . . . . . . . . . . 253.2 Po°adí slov ve v¥t¥, p°íklad 1. . . . . . . . . . . . . . . . . . . . . . . . . 333.3 Po°adí slov ve v¥t¥, p°íklad 2. . . . . . . . . . . . . . . . . . . . . . . . . 343.4 Vypo£tené vzdálenosti slov napsané uºivatelem a v¥t v systému. . . . . . 343.5 Ukázka moºnosti vyuºití zkratek a v¥t, které tyto zkratky interpretují. . . 353.6 P°ehled a popis akcí, které systém zpracovává od uºivatele. . . . . . . . . 383.7 P°ehled a popis akcí, které systém vyuºívá k práci se slovníkem a predik-

tivní logikou. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.1 Zhodnocení výsledk· testování. . . . . . . . . . . . . . . . . . . . . . . . 676.2 Výhody a nevýhody jednotlivých °e²ení. . . . . . . . . . . . . . . . . . . 69

xvii

Page 16: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

xviii SEZNAM TABULEK

Page 17: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 1

Úvod

�lov¥k dne²ní doby je obklopen nep°eberným mnoºstvím elektroniky, která je mu nápo-mocna a významnou m¥rou mu usnad¬uje ºivot. U za°ízení, a´ jiº se jedná o mobilnítelefony, PDA nebo po£íta£e, je vºdy zapot°ebí brát z°etel na klávesnici nebo jiné vstupníza°ízení umoº¬ující vzájemnou komunikaci, nebo´ bez ní jsou v²echny tyto elektronickép°ístroje v podstat¥ nevyuºitelné.

Vstupní za°ízení nám umoº¬uje s daným za°ízením komunikovat, zadávat mup°íkazy, které pro nás vykonává a jejich výstup renderuje na obrazovku £i jiné výstupníza°ízení. Rozdíl mezi t¥mito vstupními za°ízeními spo£ívá zejména v jejich velikosti, ale irozloºení a po£tem kláves. U stolního po£íta£e nemusíme mít na velikost klávesnice p°íli²vysoké poºadavky a m·ºeme si dovolit velkou klávesnici. Co se tý£e notebooku, zde jiºvyºadujeme, aby byla klávesnice men²í, nebo´ práv¥ ona mnohdy ur£uje velikost celéhoza°ízení. Proto se £asto p°i zmen²ení rozm¥r· notebooku opustí od numerické kláves-nice a nebo klávesnice podlehne i p°emíst¥ní, £i zmen²ení n¥kterých kláves, a to nejenz d·vodu zmen²ení, ale i lep²í ergonomie, £ímº docílíme rychlej²í, a tedy i efektivn¥j²ípráci s daným za°ízením. Pokud jde o mobilní telefony, museli se tv·rci intenzivn¥ zabý-vat výsledným vzhledem, rozloºením a velikostí klávesnice. Zde se kladl ur£it¥ nejv¥t²íd·raz na co nejmen²í rozm¥ry za°ízení a tedy i klávesnice, ale i na co nejefektivn¥j²ívyuºitelnost, která spo£ívá nejen v rozloºení kláves, ale i jejich funk£nosti.

A tak se dostávám k tématu své diplomové práce. Protoºe m¥ uº del²í dobu návrhklávesnic a efektivního psaní pomocí predikce zajímal, vybral jsem si práv¥ toto téma.Budu se snaºit vytvo°it aplikaci umoº¬ující zjednodu²ení a zrychlení psaní textu proosoby s omezenou schopností pohybu nebo reakce. Tento software je ur£en zejménapro osoby s omezenou pohyblivostí a reakcí, nebo´ tito lidé (£asto i pacienti) pot°ebujíkomunikovat s okolím a léka°i co nejjednodu²²í a nejrychlej²í cestou.

Hlavní zam¥°ení bude kladeno na psaní textu a to formou vhodné nápov¥dy, tedyv podstat¥ dopl¬ování slov p°ípadn¥ £ásti v¥t.

1

Page 18: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

2 KAPITOLA 1. ÚVOD

1.1 Moºnosti predikce textu

Systémy na dopl¬ování slov se d¥lí na dva základní:

• systémy vyuºívající slovník pro dopl¬ování slov,

• systémy nevyuºívající slovník pro dopl¬ování slov.

V systémech vyuºívajících slovník algoritmus vyhledává ve slovníku, na základ¥toho co uºivatel napí²e, seznam moºných slov, která se nejvíce podobají kombinaciznak·, které uºivatel napsal a nabídne ty s nejv¥t²í pravd¥podobností výskytu. Uºivatelnyní m·ºe potvrdit nabízené slovo a pokra£ovat, a nebo si vybrat vhodn¥j²í slovo znavrºeného seznamu.

Systémy nevyuºívající slovník konstruují slova £i jiné sekvence znak· na základ¥statistiky £ástí slov.

Systémy na predikci textu by m¥ly obsahovat uºivatelskou databázi na ukládánínapsaných slov nebo frází, které nejsou obsaºeny v iniciální databázi. Pokud jsou slovap°idávána do uºivatelské databáze bez jiného zákroku neº £istým psaním textu, pak jsoutyto systémy nazývány jako 'u£ící se' systémy.

1.2 Historie predikce textu

Predikce textu z telefonní klávesnice byla známa od roku 1970 (Smith and Goodwin,1971). Aspekty predikování textu byly patentovány nap°íklad panem Kondraske (1985)a patentována jako pln¥ funk£ní klávesnice do textových systém· pro komunikaci s nes-ly²ícími lidmi pomocí telefon· v roce 1988 (Roy Feinson). Prediktivní text byl nejvícepouºívaný k vyhledávání jmen v telefonních seznamech, pozd¥ji pak p°i psaní krátkýchtextových zpráv SMS (Short Message Service), kdyº p°i²li do ²irokého uºití.

1.3 Dokon£ování vhodných slov

Jedná se o b¥ºnou vlastnost webových prohlíºe£· a program· pro vkládání textu. Pokuduºivatel za£ne psát £asto pouºívaná slova, za£ne je po£íta£ automaticky dokon£ovat nebonabídne seznam vhodných slov. Toto je vyuºito nap°íklad p°i psaní adresy webovéhoserveru URL (Uniform Resource Locator) u moderních internetových prohlíºe£·.

Dokon£ování slov pracuje dob°e pouze tehdy, pokud existuje malý po£et nabízenýchpoloºek k prohledání. Systém pro dokon£ování slov se pot°ebuje po kaºdém zmá£knutíklávesy rozhodovat, zda je lep²í pokra£ovat psát a tím zmen²it seznam moºných slov, anebo zkoumat nejlep²í moºnosti a prezentovat je.

Page 19: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

1.4. DOKON�OVÁNÍ FRÁZÍ A V�T 3

Efektivita dopl¬ování slov je zaloºena na pr·m¥rné délce napsaných slov. Pokudse nap°íklad text skládá z názv· funkcí, které jsou £asto dlouhé - LongNameForSpecial-Function(), dopl¬ování je uºite£né a obecn¥ aplikované do editor· ur£eným programá-tor·m.

Zvaºujme nap°íklad vloºení slova 'soccer' se systémem slovního dokon£ování vyuºí-vající objemný slovník angli£tiny. Jak postupn¥ pí²eme, dostáváme:

• s - 14 234 slov za£ínajících na s,

• so - 848 slov za£ínajících na so,

• soc - 75 slov za£ínajících na soc,

• socc - 2 slova za£ínající na socc.

Uºivatel by m¥l rozumn¥ uváºit, ºe kdyº se zastaví na pozici 'soc' a poté prozkoumáseznam moºných dopln¥ní, najde slovo 'soccer' mnohem d°íve, neº kdyby psal zbytek slov'cer'. Tento odhad nane²t¥stí ignoruje jak spoustu b¥ºných slov jako je 'sock', 'socket','society', 'social', tak málo b¥ºná slova jako jsou 'socorro' nebo 'socrates'.

V rozdílných jazycích se m·ºe délka slov zna£n¥ m¥nit. V N¥mecku se fotbalovémuhrá£i °ekne 'Fussballspieler' coº je slovo o délce 15 znak· na rozdíl od anglického 'soccer''player'. Tento p°íklad ilustruje, ºe angli£tina není ideální jazyk pro dokon£ování slov.Studie ukazují, ºe pr·m¥rná délka anglických slov ve 100 000 slovním korpusu je 8,9znak·, pro �echy 10,5 znak· a pro N¥mce 13,2 znak·.

1.4 Dokon£ování frází a v¥t

Jedná se o vlastnost textových editor· podobnou dokon£ování slov, prvn¥ p°edstavenépanem Jurajem Simlovicem v TED Notepad v £ervenci roku 2006. Kdyº uºivatel za£íná°ádek £asto se vyskytující frází, doplní po£íta£ automaticky první její £ást do pozice,kde se v²echny podobné fráze za£ínají li²it, nebo nabídne seznam b¥ºných pokra£ování.

Slovní dokon£ování m·ºe být pouºito pouze pro dokon£ování slov a obvykle neníp°íli² efektivní, kdyº se dovoláváme prázdných mezer. Dokon£ování frází £i celých v¥tje na druhé stran¥ moºné pouºít k dopln¥ní jakéhokoli znaku v£etn¥ interpunkce a jeefektivní dokonce i na prázdné °ádky, kdyº p°edchozí °ádek za£al stejnou frází. Nejvíceefektní je v²ak vyuºití kombinace obojího, nebo´ kaºdý z p°ístup· je efektivn¥j²í v jinýchp°ípadech.

V p°ípadech £asto pouºívaných frází jako je 'I would like to' nebo 'There is needfor' je namísto psaní celých frází pot°eba napsat jen n¥kolik málo za£ínajících znak· a

Page 20: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4 KAPITOLA 1. ÚVOD

zbytek je dokon£en automaticky. V t¥chto p°ípadech je dokon£ování frází £i v¥t rychlej²ía také více komfortn¥j²í neº dokon£ování slov.

Ve vyvíjejících softwarech je toto moºné s výhodou vyuºít nap°íklad pro deklaracefunkcí a t°íd, podmínek £i smy£ek.

Page 21: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 2

Popis problému, speci�kace cíle

2.1 Popis problému predikce textu

Predikce z latinského prae (p°ed) a dicere(°íkat) znamená p°edpov¥¤ nebo prognózuo tom co se stane nebo m·ºe nastat v blízké budoucnosti. Predikce textu pak tedyznamená p°edpovídání £i navrhování následujících znak·, slov £i £ástí v¥t, které máuºivatel v úmyslu napsat, p°i£emº ú£elem je zrychlení, usnadn¥ní a dodrºení správnostivkládaného textu.

2.2 Cílová skupina uºivatel·

K tomu, abychom byly schopni vymezit cíle diplomové práce, je zapot°ebí znát podrobn¥cílovou skupinu uºivatel·. Znát jejich schopnosti a naopak nedostatky. Nyní tedy popí²iskupinu uºivatel·, pro které je aplikace primárn¥ vytvá°ena. Nebýt jich, ani tato diplo-mová práce by nevznikla, nebo´ by nem¥la své vyuºití.

Jedná se o lidi, kte°í jsou du²evn¥ zdraví, dokáºí p°emý²let jako b¥ºný £lov¥k, alek jejich dokonalosti jim chybí fyzická zru£nost. M·ºe se tedy jednat o lidi s poran¥ním,kte°í by rádi n¥co rychle sd¥lili svému o²et°ujícímu, ale vzhledem k tomu, ºe nemo-hou z n¥jakého d·vodu mluvit, musejí se pokusit tuto informaci sd¥lit prost°ednictvímnástroje, který jim usnadní a zrychlí psaní.

Této skupin¥ lidí d¥lá nejv¥t²í problém napsat v¥tu, nebo´ to pro n¥ znamenávelkou fyzickou námahu. Dal²ím jejich nedostatkem je, ºe napsat tuto v¥tu jim zabíráp°íli² dlouhou dobu, nebo´ v¥tu pí²í po jednotlivých znacích a navíc dosti pomalu. Titolidé jsou tedy schopni napsat rozvitou plnohodnotnou v¥tu, ale zabere jim to p°íli² úsilía spoustu £asu.

5

Page 22: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

6 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE

2.3 Vymezení cíl· obecn¥

V dne²ní dob¥ jiº existují programy, které napomáhají takto hendikepovaným lidem,ale nejsou vºdy pro na²i cílovou skupinu p°íli² vhodné. Nap°íklad programy, jejichº GUI(Graphical User Interface) je sloºeno z tabulky, nebo-li £tvere£k·, kde kaºdý takovýto£tverec obsahuje ur£ité slovo a uºivatel si mezi t¥mito slovy vybírá. Jak je asi z°ejmé,t¥chto slov tu nem·ºe být p°íli², a proto tento program sice umoº¬uje dané skupin¥uºivatel· psát dostate£n¥ rychle, ale pouze primitivní v¥ty. Respektive v¥ty sloºené zt¥chto uºivatelem vybraných slov. Ukázku takového programu, který se nazývá Grid,ukazuje obrázek 2.5, který se nachází v následující sekci existujících implementací.

Má snaha tedy bude spo£ívat ve vytvo°ení aplikace, která by zvolenou cílovouskupinu uspokojila a to moºností výb¥ru. Pokud by uºivatel cht¥l napsat v¥tu rychlea nevadilo by mu, ºe v¥ta bude jaksi krkolomná, bude se mu nabízet výb¥r základníchsloví£ek v predikovaném seznamu. Zvolí krat²í £as na psaní a více se bude pohybovatv nabízeném seznamu a bude vybírat sloví£ka tak, aby nemusel p°íli² dlouho psát, alep°itom sd¥lil danou informaci.

Naopak, pokud by jiný uºivatel cht¥l psát v¥ty rozvité, plnohodnotné, bude míttuto moºnost také k dispozici. Je v²ak pochopitelné, ºe takový uºivatel stráví psanímrozvité v¥ty mnohem del²í £as. Nebo´ ne v²echna sloví£ka bude systém obsahovat, a prototedy bude nutné je celá vypsat (znak po znaku). Tato nová sloví£ka se následn¥ uloºí dosystémového slovníku. Samoz°ejm¥ i zde bude fungovat nápov¥da s prediktivními slovy.

Proto mezi hlavní cíle diplomové práce pat°í navrhnutí efektivn¥ u£ícího se pos-tupu, který bude na základ¥ uºivatelského vstupu p°idávat do databáze nejen nová slovana základn¥ £astosti jejich výskytu, ale bude se snaºit tato slova so�stikovan¥j²ími meto-dami ohodnotit, nap°. podle v¥tných £len·, podle kladnosti, neutrálnosti £i zápornostive v¥t¥, apod. Tato ohodnocení by m¥l poté program vyuºít ke správn¥j²í predikci atedy k celkové efektivit¥ p°i psaní textu.

Dal²ím cílem by m¥la být schopnost aplikace predikovat nejen slova, ale i fráze £i£ásti v¥t.

S t¥mito cíli souvisí návrh vhodné struktury a datové reprezentace pro vytvo°eníu£ícího se nástroje, jenº se bude u£it na základ¥ napsaného textu uºivatelem, p°ípadn¥prvotního textu uloºeného v externím souboru. Nástroj by pak m¥l poskytovat predikcipro (budoucí) psaný text.

Ur£itou (vybranou) £ást toho nástroje realizuji jako knihovnu a demonstruji jeho£innost na textech n¥kterých typ· (nap°íklad p°átelský mail, o�ciální text, atd.).

Protoºe dob°e navrºené a p°ehledné GUI (Graphical User Interface) významnoum¥rou zefektiv¬uje práci uºivatele s aplikací, bude mým dal²ím cílem navrhnout práv¥efektivní a p°ehledné uºivatelské prost°edí. Vzhledem k tomu, ºe cílovou skupinou jsou

Page 23: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

2.4. EXISTUJÍCÍ IMPLEMENTACE 7

osoby s omezenou schopností pohybu £i reakce, m¥l by být na návrh tohoto rozhraníkladen obzvlá²´ d·raz.

Ve �nále pak hotový program podrobím test·m na uºivatelích jak cílové skupiny,tak i n¥kterých zdravých osob. Dále by bylo vhodné tyto výsledky porovnat s výsledkyjiº existujících systém·.

2.4 Existující implementace

2.4.1 Dasher

Jde o nástroj umoº¬ující psaní bez klávesnice vkládáním textu na obrazovce s vyuºitímukazovacího za°ízení jako je my², touchpad, dotyková obrazovka, roller ball, joystick,push-button, wii remote nebo speciální my², kterou se nechá pohybovat nohama nebohlavou. Díky této ²iroké ²kále moºností ovládání mohou s výhodou program vyuºívatlidé, kte°í klávesnici pouºívat nemohou, a nebo je pro n¥ vyuºívání klávesnice neprak-tické.

A´ uº uºivatel jako ukazatel pouºívá cokoli, vybere jedno ze zobrazených písmen(po£áte£n¥ se nabízí celá abeceda), na£eº systém pouºívá pravd¥podobnostní prediktivnímodel pro p°edpov¥¤ nejpravd¥podobn¥j²í kombinace znak· k výb¥ru dal²ích moºnýchpísmen. Znaky s v¥t²í pravd¥podobností výskytu se viditeln¥ zvýrazní a to podle priority.�ím má písmeno vy²²í prioritu (pravd¥podobnost výskytu), tím se plocha pod ním vícezv¥t²í a tím se plo²ka obsahující daný znak více zvýrazní. Naopak písmena s men²íprioritou leºí na men²í plo²ce, a tudíº nejsou tak vid¥t. Proces skládání textu je podobnýh°e, kde uºivatel jakoby prolétává skrze znaky, které letí naproti obrazovce (nebo zlevadoprava £i ze shora dol·), a ozna£uje je v po°adí vkládání textu.

Dasher obsahuje popis abeced v²ech jazyk·, nastavení barev znak· a trénovacídata ve v²ech jazycích.

2.4.1.1 Podrobn¥j²í popis funkcionality

Dejme tomu, ºe bychom cht¥li pomocí programu Dasher napsat v¥tu 'All good thingsmust come ...' a p°edpokládejme, ºe máme na za£átku v²echna po£áte£ní písmena us-po°ádaná od a do z. Za£neme tedy ukazatelem mí°it na písmeno a, kde m·ºeme naléztnápov¥dy za£ínající na aa, ab, ac, ... al ... az. Vybereme tedy moºnosti za£ínající naal, a zde se nám op¥t nabídne nápov¥da za£ínající na sekvenci ala, alb, ... alz. Taktobychom se propracovali postupn¥ aº k na²emu cíli. Tímto zp·sobem Dasher pracuje srozdílem, ºe pro nabízené znaky, které nejsou tak £asto pouºité v daném jazyce, mámede�novaný malý prostor, a naopak pro £asto se vyskytující znaky existuje prostor v¥t²í.Dasher navíc pouºívá znak _ (podtrºítko) k de�nování mezery mezi slovy.

Page 24: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

8 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE

Mezi £asté chyby nová£k· uºivatel· pat°í rychlost postupování. Tedy i p°esto, ºenev¥dí kam postupovat (kde se nachází dal²í písmenko), postupují p°íli² rychle. Radoujim je zpomalit, £ili nejprve vybrat cestu, a aº poté po ní jít, t°eba i rychleji. Obecnárada tedy zní: neklikej, netahej a nesp¥chej.

Vysv¥tlení barev:

• bílý £tverec - obsahuje znak mezery (vºdy umíst¥n vespodu abecedy),

• speciální ºlutý box obsahuje velká písmena [A - Z],

• £ervený box obsahuje £ísla [0 - 9] (pokud jsou zapnuté £íslice),

• zelený box obsahuje interpunk£ní znaky,

• ostatní barvy jsou vkládány jednodu²e k rozli²ení £tverc· obsahujících písmeno,

• v jazycích s akcentem (váºný, naléhavý, atd.) je akcent zobrazen v oranºovém boxu.

Nastavení barev je moºné m¥nit podle vlastního uváºení.

2.4.1.2 Jazykový model

Nyní uº víme jak program Dasher pracuje a co d¥lá, ale pouze z uºivatelského pohledu.Pokud bychom cht¥li proniknout více do hloubky a zjistit jak práv¥ nejvíce st¥ºejnífunkce Dasheru pracuje, tedy predikce následujícího znaku, museli bychom se více zají-mat o jazykový model.

Kdyº se vybírá jazykový model pro Dasher, musí se zvaºovat dv¥ podstatné vlast-nosti. Jak dob°e jazykový model komprimuje text a jaká je doba výpo£tu pravd¥podob-nosti znaku. V aplikaci Dasher je nutné totiº po£ítat vºdy spoustu pravd¥podobnostípro update obrazovky.

Model v d°ív¥j²í verzi Dasheru je zaloºen na populárním algoritmu pro kompresitextu nazývaný predikce £áste£né shody PPM (Prediction by Partial Match). PPM jealgoritmus zaloºený na kontextu, pouºívá statistiky znak·, které následují identické°et¥zce. V nov¥j²ích aplikacích Dasher se vyuºívá rychlá a snadno implementovatelnávarianta PPM algoritmu nazývaná PPM5D+, která dokáºe zkomprimovat znak v¥t²inyanglického textu do p°ibliºn¥ 2 bit·. Mimo algoritmus PPM5D+ se vyuºívají je²t¥ dal²íso�stikovan¥j²í algoritmy zaloºené na PPM.

Page 25: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

2.4. EXISTUJÍCÍ IMPLEMENTACE 9

Obrázek 2.1: Dasher a jeho gra�cké uºivatelské prost°edí.

2.4.1.3 Predikce textu obecn¥

Algoritmus predikce textu je zaloºený na algoritmu Knuth-Moriss-Pratt, který slouºík vyhledávání °et¥zc· v textu. Je zavedené, ºe úkol predikce je úzce spojený s úkolemkomprese a klasi�kace. Algoritmus, o n¥mº se nyní budu rozepisovat, je velice podobnýkompresní technice predikce £áste£né shody PPM, která je jednou z nejlep²ích bezeztrá-tových textov¥ kompresních technik.

Úkolem predikce textu je odhad následujícího znaku daného textu reprezentujícíhovloºenou historii. První charakter vloºeného °et¥zce bude reprezentovat nejstar²í vloºenýznak a poslední charakter bude naopak reprezentovat nejnov¥j²í vloºený znak. Nap°íklad,m¥jme text "abababa". Dobrým odhadem pro následující znak by bylo písmeno b, nebo´b vºdy následuje znak a ve vloºené historii. Úkol predikce textu není nutn¥ limitovanýna p°irozené jazyky. Je moºné vyuºít predikci i pro jazyky binární a ostatní.

Page 26: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

10 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE

2.4.1.4 Vyuºití predikce textu

Predikce textu m·ºe být vyuºitá v mnoha rozdílných aplikacích, nap°íklad pro mini-malizaci po£tu zmá£knutých kláves vyºadovaných pro napsání daného textu. Toto jespeciáln¥ vyuºito u za°ízení, která nedovolují rychlé vkládání znak·, nap°íklad kv·li ne-dostate£ného mnoºství kláves, jako je tomu u klávesnic mobilních telefon·. Dále algorit-mus dovoluje urychlení komunikace postiºeným lidem. Neposledním p°íkladem vyuºitíje odstran¥ní ²umu z dat. Predikce znak· m·ºe být vlastn¥ více validní (gramatickysprávn¥j²í), neºli vkládání textu bez predikce. Pravopisné chyby m·ºeme tedy povaºo-vat za ²um. Ve �nále spo£ívá jeho vyuºití v automatickém dopl¬ování textu a výb¥rumoºností dopln¥ní jednotlivých znak· £i celých slov.

2.4.1.5 Relace mezi predikcí a kompresí

Algoritmus predikce m·ºe p°i°adit pravd¥podobnostní rozd¥lení znak·m v abeced¥ kore-spondujících s pravd¥podobností kaºdého následujícího znaku ve vloºené sekvenci znak·.Toto pravd¥podobnostní rozd¥lení m·ºe být kombinováno s kódovacím schématem, jakoje aritmetické kódování nebo Hu�manovo kódování ke kompresi dat.

2.4.1.6 Relace mezi predikcí a klasi�kací

Klasi�kace je úkol, ve kterém musejí být poloºky kategorizovány do skupin zaloºených natrénovací mnoºin¥ jiº d°íve ozna£ených poloºek. Jakýkoli algoritmus predikce £i komp-rese m·ºe být pouºit ke klasi�kaci. To m·ºe být provedeno rozd¥lením trénovací mnoºinydo kategorií zaloºených na jejich zna£eních. Kdyº neozna£ená data pot°ebují být oz-na£ena do kategorií, kaºdá trénovací kategorie m·ºe být pouºita jako separátní tréno-vací mnoºina pro predik£ní £i kompresní algoritmus. Data mohou být klasi�kována dokategorie, pokud v dané kategorii m¥li p°i trénování nejniº²í predik£ní chybu. Obdobn¥pro p°ípad kompresního algoritmu, data pat°í do dané kategorie, jestliºe získala nejniº²íkompresní velikost.

Jako ozna£ení skupiny dat m·ºeme povaºovat popisky, jako jsou nap°íklad vtipné,nevtipné £i smutné, ²´astné, atd.

2.4.1.7 Knuth-Morris-Pratt algoritmus

Naivní postup k nalezení °et¥zce S délky M v textu T délky N má £asovou asymptotickousloºitost O (M ×N). Tento postup zahrnuje jednoduché iterování N pozicemi textu Ta pro kaºdou pozici kontrolu, jestli dal²í M znaky odpovídají °et¥zci S. KMP (Knuth-Morris-Pratt Algorithmus) algoritmus sniºuje tuto sloºitost na O (M +N). Algoritmusse skládá ze dvou £ástí.

Page 27: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

2.4. EXISTUJÍCÍ IMPLEMENTACE 11

První obsahuje iteraci skrze M znak· °et¥zce S a stav¥ní tabulky velikosti M.Druhá zahrnuje iteraci skrze N znak· textu T a hledání podobností.

P°edpokládejme, ºe chceme najít °et¥zec S = 'abcabz' v textu T = 'abcabcabz'.Iterováním skrze T zjistíme, ºe prvních 5 znak· pasuje p°esn¥ °et¥zci S. �estý znak v Sje 'z' a v T je 'c', je tedy rozdílný. V naivním p°ístupu bychom se museli vrátit na 2.index textu T a za£ít prohledávat S od za£átku. Nicmén¥, kdyº jsme zjistili, ºe 6. znak jerozdílný, mohli jsme pozorovat správné párování znak· 'ab' na pozici 4. a 5. Tyto znakyjsou první dva znaky °et¥zce S. To znamená, ºe m·ºeme pokra£ovat ve vyhledávání 6.znaku textu T a 3. znaku S bez nutnosti vracení se na za£átek.

D·vod pro stav¥ní tabulky pro S je tedy takový, ºe tabulka zastává roli chybovéfunkce pro p°ípad, kdy zjistíme nestejné znaky. Obsahuje index v S, od kterého je námumoºn¥no nové hledání v textu T bez nutnosti se vracet na za£átek. Tato tabulka senechá postavit v £ase O (M). Poté co je tabulka sestavena, zabere iterace skrze T £asO (N).

2.4.1.8 Predikce £áste£né shody

A£koli je známa spousta variant PPM algoritmu, v²echny sdílejí obecný koncept. My²lenkaje taková, ºe chceme vhodným zp·sobem vykonat predikci následujícího znaku sekvence.Tuto sekvenci zkou²íme napasovat na vloºenou historii a pomocí toho predikovat dal²íznak sekvence. Vysv¥tlení na p°íkladu. Máme °et¥zec S = 'abczabczabc'. Dobrý odhadna dal²í znak v sekvenci bude písmeno 'z', nebo´ 'z' vºdy následuje po písmenu 'c' vevloºené historii. Navíc 'z' následuje vºdy po °et¥zci 'bc'. Krom toho, 'z' následuje po°et¥zci 'abc'. M¥lo by být jasné, ºe konstruování del²ích pár· je preferovan¥j²í díky tomu,ºe se vyskytují mén¥ £ast¥ji. Proto del²í páry podávají lep²í predikci.

2.4.2 Read & Write GOLD

Je multifunk£ní program, který se skládá z toolbaru obsahující spoustu tla£ítek inter-pretujících jednotlivé funkce. Program pracuje s °adou aplikací b¥ºících pod opera£nímsystémem Windows, jako je nap°íklad Word, Excel, internetový prohlíºe£ nebo databázea poskytuje podporu pro negramotné.

D·leºité prvky aplikace:

• �e£ - £te slova, v¥ty nebo fráze v dokumentech,

• Pravopis - umí pokro£ilou kontrolu pravopisu speciáln¥ navrºenou k °e²ení sloºitýchfonetických chyb,

• Podpora pro homonyma - identi�kuje a poskytne zvukové de�nice pro podobn¥zn¥jící slova,

Page 28: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

12 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE

• Predikce slov - zam¥°uje se na konstruování v¥t díky navrhování a predikování slov.Word Prediction se u£í, jak se pí²e korektní text zam¥°ený na rozvíjení gramotnostia zvy²ování korektnosti. Predikce textu je zaloºena na kontextové souvislosti azvukových doprovod·,

• Slovník - slovník o 180 000 sloví£ek a dal²í nástroje.

Nejzajímav¥j²ím nástrojem pro mé ú£ely je práv¥ Word Prediction. Jeho hlavnímú£elem v aplikace R&W GOLD je zkvalitn¥ní práce psaní textu. Není v aplikaci tedyza£len¥n zejména kv·li rychlej²ímu psaní, ale spí²e pro kontrolu chyb a návrh mnohdyvhodn¥j²ích slov, neº by mohl mít písa° práv¥ namysli. P°edpovídá foneticky stejn¥zn¥jící slova, tedy pokud bychom cht¥li napsat 'photograph' a za£ali by jsme jej psáttak, jak jej sly²íme, tedy dvojicí písmen fo, program automaticky nabídne i slovo 'pho-tograph'.

Kaºdé nabízené slovo je indikováno p°esností kontextové souvislosti a to barvami:

• zelená - vysoce pravd¥podobné a gramaticky správné na základn¥ souvislosti tro-jice slov,

• ºlutá - vysoce pravd¥podobné a gramaticky správné na základn¥ souvislosti dvojiceslov,

• modrá/£erná - moºný, zaloºeno na £etnosti slov - bez kontextové souvislosti.

Slovník nabízí n¥kolik podmnoºin umoº¬ujících nejvhodn¥j²í výb¥r ²itý na míruuºivateli - dít¥, teenager a dosp¥lý.

Dále je moºné si vybrat slovník z kategorií pro vhodn¥j²í p°izp·sobení k tématupsaní. Kategorie jsou kreativní psaní; sv¥tové aféry, ekonomika a politika; teoretická,aplikovaná a p°írodní v¥da; um¥ní a volný £as a spole£enské v¥dy.

Nakonec je nám umoºn¥no základní a roz²í°ené nastavení zp·sobu predikce. Vnastavení predikce programu m·ºeme:

• barevn¥ a rozm¥rov¥ p°izp·sobit panel predikovaných slov podle svých p°edstav,

• nastavit automatické £tení nabízených slov a jejich zvýrazn¥ní,

• nau£it predikci z vlastních £i jiných zdroj·,

• nahradit ve²keré fonetické záznamy,

• nastavit sensitivitu kontextové souvislosti nabízených slov, respektive která slovaje²t¥ nabízet a která jiº nikoli,

• vybrat podmnoºinu slovníku,

• vybrat soubor pro u£ení predikce. Je moºné vybírat z malého, st°edního £i velkéhosouboru.

Page 29: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

2.4. EXISTUJÍCÍ IMPLEMENTACE 13

Obrázek 2.2: Read & Write GOLD a ukázka jeho gra�ckého prost°edí a predikce pro-gramu.

2.4.3 ClaroRead

Jedná se o obdobný program jako je program Read & Write. Aplikace je úzce spjatá sMicrosoft Word aplikací a to z d·vodu usnadn¥ní práce. Je nám nápomocen i v ostatníchaplikacích. Program nám pomáhá pracovat s textem a to tak, ºe nap°íklad dokáºe p°e£ísttext ve Wordu, nebo nám pom·ºe s predikcí. Na první pohled si b¥ºný uºivatel v²imnev²ak propracovan¥j²í gra�ky. Co se funk£nosti tý£e, ClaroRead nabízí spoustu funkcíjako je:

• �e£ - umoº¬uje £tení textu z obrazovky,

• Zm¥na fontu - umoº¬uje snadn¥j²í práci s Microsoft Wordem, kde je pomocí jed-noho tla£ítka moºné m¥nit font celého dokumentu a p°epínat tak mezi 3-mi nejs-nadn¥ji £itelnými fonty, dále je moºné m¥nit barvu textu, velikost fontu,

• Zm¥na odsazení £i prokládání °ádk· v Microsoft Wordu £i Internet Exploreru,

• Podpora pro homonyma - v textu dokáºe zvýraznit slova, která stejn¥ zn¥jí, alejinak se pí²í,

• Predikce textu - umoº¬uje psát kvalitn¥j²í text díky nápov¥dy navrhovaných slov,nástroj se nechá u£it bu¤ p°ímo tím, jak uºivatel pí²e, a nebo z externího souboru,

• Uloºit jako audio - aplikace umoº¬uje uloºit aktuální Microsoft Word dokumentnebo zkopírovaný text ve schránce do audia nahrávky,

Page 30: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

14 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE

• Snímání - umoº¬uje editovat text naskenovaného dokumentu.

Obrázek 2.3: ClaroRead a ukázka jeho gra�ckého prost°edí a predikce programu.

2.4.4 OpenO�ce.org Writer

Poskytuje slovní dokon£ení, které navrhuje slova d°íve psaná v textu spí²e neº slova zcelého slovníku.

2.4.5 Microsoft Excel

Tabulkový procesor má pracující slovní dokon£ování, které navrhuje d°íve psaná slova vhorních bu¬kách, viz obrázek 2.4.

Obrázek 2.4: Excel a ukázka dokon£ování slov.

Page 31: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

2.4. EXISTUJÍCÍ IMPLEMENTACE 15

2.4.6 T9

Jedná se o patentovanou technologii pro predikci textu u mobilních telefon· vyuºívajícíchke psaní textu 9 kláves. P·vodn¥ vynalezené spole£ností Tegic Communication.

Tiago Rosa byl vynálezce této velmi uºite£né technologie a to jiº ve svých 9 letech.Proto se jí °íká T9 (Tiago-9).

T9 je pouºitá na telefonech od LG, NEC, Nokia, Samsung Electronics, Siemens,Sony Ericsson, Sanyo, Sagem a ostatních.

Ú£el T9 je umoºnit rychlej²í napsání textové zprávy. Umoº¬uje nám vloºit slovoefektivn¥ji a to tak, ºe nap°íklad pro slovo 'hallo' sta£í stisknout sekvenci kláves 42556,namísto p·vodního n¥kolikanásobného stisku stejných tla£ítek pro jeden znak (44 2 555555 666).

V rychle p°ístupném slovníku vyhledává v²echna slova korespondující sekvencinapsaných znak· a °adí je podle £astosti pouºití.

Pokud práv¥ navrhované slovo není p·vodn¥ zamý²lené, dovolí T9 uºivateli pomocíspeciálního tla£ítka listovat seznamem a vybrat si tak poºadované slovo.

Slovník umoº¬uje p°idávání nových slov pouºívaných daným uºivatelem pro pozd¥j²írozpoznání. Uºivatel m·ºe tato nová slova p°idávat do DB pomocí technologie multi-tap(technologie poºadující více zmá£knutí na tla£ítko pro získání poºadovaného znaku).

2.4.6.1 Speciální vlastnosti

Pro kombinaci tla£ítek 4663 nám T9 nabídne v angli£tin¥ slova jako jsou: 'good', 'home','gone', 'hood', atd. Tyto kombinace jsou známy jako textonyms. Nap°íklad 'home' jeozna£ováno jako textonym slova 'good'. Pokud uºivatel pouºívá slovo 'home' více £ast¥jineº 'good', zam¥ní se pozice t¥chto dvou slov a nabízet se bude p°ednostn¥ slovo 'home'a aº po n¥m 'good'.

D°ív¥j²í verze T9 umoº¬ovaly pouºívat dva jazyky zárove¬. Umoº¬ovaly tak uºi-vateli psát jak svým nativním jazykem, tak jazykem cizím.

N¥které implementace se také u£ily párové dvojice slov. Nap°íklad pokud uºivatel£asto psal slovní spojení 'eat food', pak po nau£ení a napsání 'eat' automaticky telefonnavrhoval 'food', které se nechalo jednodu²e potvrdit tla£ítkem next.

Dal²í výkonná vlastnost bylo automatické rozpoznání a oprava napsaných chybtak, ºe se T9 koukla na sousední tla£ítka a podle nich zjistila, zda ²lo o p°eklep £ine. Nap°íklad slovo 'testing' by m¥lo být vloºeno kombinací kláves 8378464. Vloºenímstejného £ísla se dv¥ma nesprávnými sousedními tla£ítky stále navrhuje slova 'tasting'(8278464), 'testing' (8378464) a 'tapping' (8277464).

Page 32: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

16 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE

2.4.7 Grid

Jedná se o program, jehoº GUI (Graphical User Interface) je sloºeno z tabulky, nebo-li£tvere£k·, kde kaºdý takovýto £tverec obsahuje ur£ité slovo a uºivatel si mezi t¥mitoslovy vybírá a postupn¥ sestavuje jednoduchou v¥tu. Jak je asi z°ejmé, t¥chto slov tunem·ºe být p°íli² mnoho, a proto tento program sice umoº¬uje dané skupin¥ uºivatel·psát dostate£n¥ rychle, ale pouze primitivní v¥ty. Respektive v¥ty sloºené z t¥chto uºi-vatelem vybraných slov. Ukázku takového programu ukazuje obrázek 2.5.

Obrázek 2.5: Ukázka programu pro psaní jednoduchých v¥t.

Page 33: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 3

Analýza a návrh °e²ení

3.1 Analýza

Jaké zvolit implementa£ní prost°edí? Jaké postupy p°i vytvá°ení nástroje pouºít? O tompojednává následující kapitola.

3.1.1 Jazyk C# a technologie .NET

Technologie .NET poskytuje nové prost°edí, ve kterém lze vyvíjet tém¥° libovolné ap-likace ur£ené pro systém Windows, zatímco C# je pom¥rn¥ nový programovací jazyk,který byl navrºen zejména pro spolupráci s technologií .NET.

.NET jako sou£ást názvu má zd·raznit p°esv¥d£ení spole£nosti Microsoft, ºe cestuvp°ed p°edstavují distribuované aplikace, kde je výpo£etní zpracování rozd¥leno meziklienta a server. Jazyk C# neslouºí pouze k psaní internetových nebo sí´ových ap-likací. Nabízí moºnosti pro tvorbu tém¥° libovolných typ· program· nebo komponent,které m·ºeme v systému Windows poºadovat. Jazyk C# spolu s technologií .NET bylyvytvo°eny zejména proto, aby zásadn¥ zm¥nily zp·sob psaní program· a aby usnadnilyprogramování v systému Windows.

3.1.2 Technologie .NET a jazyk C#

I kdyº zp¥tná kompatibilita byla vºdy klí£ovou vlastností technologií Windows a jednouze silných stránek této platformy, neslo toto s sebou i velkou nevýhodu. Pokaºdé, kdyºse n¥jaká technologie vyvíjí a získává nové funkce, postupn¥ se p°i tom komplikuje.

Spole£nost Microsoft nemohla donekone£na roz²i°ovat stejné vývojové nástroje ajazyky a neustále zvy²ovat jejich sloºitost. Pokud cht¥la p°ijít s jednoduchou, ale p°estopokro£ilou sadou jazyk·, prost°edí a vývojových nástroj·, které vývojá°·m umoºnísnadnou tvorbu ²pi£kových program·, musela d°íve £i pozd¥ji za£ít s £istým stolem.

17

Page 34: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

18 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

P°esn¥ takový nový za£átek p°edstavuje jazyk C# a technologie .NET. Jednodu²e°e£eno je .NET platforma (rozhraní API) k programování na platform¥ Windows. Spolus platformou .NET Framework se objevuje jazyk C#, který byl od základ· navrºen tak,aby spolupracoval s technologií .NET a zárove¬ vyuºil ve²kerý pokrok ve vývojovýchprost°edích a koncepcích objektov¥ orientovaného programování.

3.1.3 Výhody technologie .NET

• Objektov¥ orientované programování - platforma .NET Framework a jazyk C#jsou jiº od za£átku kompletn¥ zaloºeny na objektov¥ orientovaných principech.

• Dobrý návrh - knihovna základních t°íd je od základu navrºena vysoce intuitivnímzp·sobem.

• Jazyková nezávislost - v technologii .NET se v²echny jazyky, tj. Visual Basic .NET,C#, J# a spravované (managed) C++, kompilují do spole£ného zprost°edkujícíhojazyka (Intermediate Language). To znamená, ºe jazyky mohou spolupracovat zp·-sobem, který d°íve nebyl k dispozici.

• Lep²í podpora dynamických webových stránek - prost°edí ASP sice poskytovalozna£nou pruºnost, ale zárove¬ nebylo p°íli² efektivní, protoºe pouºívalo interpre-tované skriptovací jazyky. Nedostate£ný objektov¥ orientovaný návrh také £astovedl ke vzniku nep°ehledného kódu ASP. Technologie .NET nabízí integrovanoupodporu webových stránek pomocí nové technologie ASP.NET. V rámci ASP.NETje kód stránek kompilován a lze jej psát v jazyce vysoké úrovn¥ kompatibilním stechnologií .NET, jako je nap°. jazyk C#, J# nebo Visual Basic.

• Ú£inný p°ístup k dat·m - sada komponent .NET souhrnn¥ ozna£ována jako ADO.NETzaji²´uje efektivní p°ístup k rela£ním databázím a r·zným zdroj·m dat. Jsou takék dispozici komponenty, které poskytují p°ístup k systému soubor· a k adresá°·m.Zejména je do technologie .NET integrována podpora jazyka XML, coº umoº¬ujemanipulaci s daty, která lze importovat nebo exportovat na jiné platformy neºWindows.

• Sdílení kódu - technologie .NET zcela m¥ní zp·sob sdílení kódu mezi aplikacemi.Zavádí koncepci sestavení (assembly), která nahrazují tradi£ní knihovny DLL. Ses-tavení mají formální funkce pro správu verzí a je moºné, aby vedle sebe existovalyr·zné verze sestavení.

• Zlep²ené zabezpe£ení - kaºdé sestavení m·ºe také obsahovat integrované informaceo zabezpe£ení, jeº mohou p°esn¥ ur£ovat, který uºivatel nebo kategorie uºivatel·£i proces· smí volat ur£ité metody de�novaných t°íd.

Page 35: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.1. ANALÝZA 19

• Podpora webových sluºeb - technologie .NET zahrnuje pln¥ integrovanou podporuvývoje webových sluºeb, které lze vytvá°et stejn¥ snadno jako libovolný jiný typaplikací.

• Visual Studio 2010 - pro technologii .NET se dodává vývojové prost°edí VisualStudio, které umoº¬uje stejn¥ snadno pracovat s jazyky C++, C#, J# a VisualBasic i s kódem ASP.NET.

• C# - je pom¥rn¥ nový objektov¥ orientovaný jazyk, který je ur£en pro spoluprácis technologií .NET.

3.1.4 Porovnání jazyka C# s jinými jazyky

Z ur£itého hlediska lze jazyk C# povaºovat za stejnou revoluci mezi programovacímijazyky, jakou v prost°edí Windows p°edstavuje technologie .NET. Sou£asn¥ s tím, jakspole£nost Microsoft p°idávala v posledním desetiletí dal²í a dal²í funkce do systémuWindows a rozhraní Windows API, rozrostly se i jazyky Visual Basic a C++. JazykyVisual Basic a C++ sice díky tomu získaly mimo°ádné moºnosti, ale oba jazyky takékv·li zp·sobu svého vývoje trpí r·znými problémy.

V p°ípad¥ jazyka Visual Basic spo£ívala jeho hlavní síla v tom, ºe jej bylo snadnépochopit a usnad¬oval mnoho programátorských úkol·, protoºe p°ed vývojá°em z v¥t²í£ásti skrýval podrobnosti rozhraní Windows API a infrastruktury komponent COM.Kv·li tomu v²ak jazyk Visual Basic nikdy nebyl pln¥ objektov¥ orientován a kód velkýchaplikací brzy ztrácel p°ehlednost a obtíºn¥ se udrºoval. Syntaxe jazyka Visual Basic bylanavíc p°evzata ze star²ích verzí jazyka BASIC (který byl op¥t navrºen tak, aby se jejmohli intuitivn¥ nau£it za£ínající programáto°i, nikoli aby se v n¥m psaly komer£níaplikace). Proto se zcela nehodil k tvorb¥ kvalitn¥ strukturovaných £i objektov¥ orien-tovaných program·.

Jazyk C++ má na druhou stranu své ko°eny v de�nici standardu ISO jazyka C++.Nespl¬uje normu ISO úpln¥ z jednoduchého d·vodu, ºe spole£nost Microsoft napsalasv·j první kompilátor C++ je²t¥ p°ed o�ciálním vydáním standardu ISO. Velmi se v²aktéto norm¥ blíºí. Nane²t¥stí to vedlo ke dv¥ma problém·m. Za prvé má norma ISOC++ své ko°eny v technologii staré desítku let, coº se projevuje v nedostate£né pod-po°e moderních koncepcí (nap°. °et¥zc· v kódování Unicode a generování dokumentacev XML) a v ur£itých zastaralých strukturách ur£ených pro d°ív¥j²í kompilátory (jakoje odd¥lení deklarace od de�nice £lenských funkcí). Za druhé se spole£nost Microsoftsou£asn¥ snaºila vyvinout C++ jako jazyk, který je ur£en k náro£ným úkol·m v sys-tému Windows. Aby toho dosáhla, musela jazyk roz²í°it o velké mnoºství speci�ckýchklí£ových slov a také r·zných knihoven. Výsledek je, ºe v systému Windows se z tohotojazyka stal naprostý "gulá²". Nap°íklad se zde objevuje n¥kolik de�nic °et¥zce: char*,LPTSTR, string, CString(verze MFC), CString(WTL), wchar_t*, OLECHAR* atd.

Page 36: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

20 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

V této fázi na scénu vstupuje zcela nové prost°edí .NET, které bude zahrnovatnová roz²í°ení obou jazyk·. Spole£nost Microsoft tento problém vy°e²ila p°idáním dal²íchvlastních klí£ových slov do jazyk C++ a kompletním p°epracováním jazyka Visual Basicv prost°edí Visual Basic .NET na jazyk Visual Basic. Tento jazyk si zachovává n¥kterézákladní syntaktické prvky jazyka VB, ale jeho návrh se natolik li²í, ºe jej z praktickéhohlediska m·ºeme povaºovat za nový jazyk.

Za této situace se spole£nost Microsoft rozhodla poskytnout vývojá°·m alternativu- jazyk navrºený speciáln¥ pro technologii .NET a vytvo°ený zcela nov¥. Výsledek jeVisual C#. Spole£nost Microsoft o�ciáln¥ popisuje jazyk C# jako "jednoduchý, modernía objektov¥ orientovaný programovací jazyk s typovou bezpe£ností, který je odvozen odjazyk· C a C++". V¥t²ina nezávislých pozorovatel· by tento popis pravd¥podobn¥opravila na "odvozený od jazyk· C, C++ a Java". Tyto de�nice jsou technicky p°esné,ale p°íli² nezachycují krásu £i eleganci jazyka. Syntakticky se jazyk C# velmi podobájazyk·m C++ i Java do takové míry, ºe mnohá klí£ová slova jsou shodná. C# takésdílí stejnou strukturu blok· se závorkami () k ozna£ení blok· kódu a odd¥luje p°íkazypomocí st°edník·. Výpis kódu C# na první pohled velmi p°ipomíná kód jazyka C++nebo Java. Navzdory této prvotní podobnosti se v²ak jazyk C# lze nau£it mnohemsnáze neº C++ a jeho obtíºnost je srovnatelná s jazykem Java. Jeho struktura lépevyhovuje moderním vývojovým prost°edím neº oba star²í jazyky a zárove¬ byl navrºentak, aby programátor·m sou£asn¥ poskytl jednoduchost pouºívání jazyka Visual Basica v p°ípad¥ pot°eby vysoký výkon a nízkoúrov¬ový p°ístup k pam¥ti jako jazyk C++.

Zde uvedu n¥které vlastnosti jazyka C#:

• Plná podpora t°íd a objektov¥ orientovaného programování, v£etn¥ d¥di£nostirozhraní i implementace, virtuálních funkcí a p°etíºení operátor·.

• Konzistentní a vhodn¥ de�novaná sada základních typ·.

• Integrovaná podpora automatického generování dokumentace ve formátu XML.

• Automatické £i²t¥ní dynamicky p°id¥lované pam¥ti.

• Moºnost ozna£it t°ídy nebo metody uºivatelsky de�novanými atributy. Tato funkcem·ºe být uºite£ná pro dokumentaci a n¥kdy má ur£itý vliv na kompilaci (nap°.p°i ozna£ení metod, aby se kompilovaly pouze v ladících sestaveních).

• Plný p°ístup ke knihovn¥ základních t°íd .NET a také snadná dostupnost rozhraníWindows API (pokud ho skute£n¥ pot°ebujete, k £emuº nedochází p°íli² £asto).

• V p°ípad¥ pot°eby jsou dostupné ukazatele a p°ímý p°ístup do pam¥ti, ale jazykje navrºen takovým zp·sobem, ºe lze bez nich pracovat tém¥° ve v²ech situacích.

• Podpora vlastností a událostí ve stylu jazyka Visual Basic.

Page 37: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.1. ANALÝZA 21

• Pouhou zm¥nou moºností kompilátoru m·ºeme kompilovat bu¤ spustitelný soubornebo knihovnu komponent .NET, kterou m·ºe volat jiný kód stejným zp·sobemjako ovládací prvky ActiveX (komponenty COM).

• Pomocí jazyka C# lze psát dynamické stránky ASP.NET a webové sluºby zaloºenéna XML.

Je vhodné uvést, ºe v¥t²ina vý²e zmín¥ných vlastností se vztahuje i na jazykyVisual Basic a spravované C++. Nicmén¥ díky tomu, ºe jazyk C# je od za£átku navrºenpro spolupráci s technologií .NET, je jeho podpora funkcí této platformy kompletn¥j²í adostupná na základ¥ vhodn¥j²í syntaxe, neº je tomu u vý²e uvedených jazyk·. Jazyk C#je sice velmi podobný jazyku Java, ale poskytuje n¥která vylep²ení. Jazyk Java zejménanení ur£en ke spolupráci s prost°edím .NET.

Jazyk C# má ale také svá omezení. Jednou z oblastí, pro které tento jazyknení ur£en, je vývoj £asov¥ kritického nebo extrémn¥ zat¥ºovaného kódu, tj. kódu, kdeskute£n¥ záleºí na tom, zda pr·b¥h smy£ky vyºaduje 1 000 nebo 1050 cykl· proce-soru, a pot°ebujeme uvolnit prost°edky v té milisekund¥, kdy jiº nejsou pot°eba. Mezinízkoúrov¬ovými jazyky si v této oblasti nejspí² i nadále udrºí výsadní postavení C++.Jazyk C# postrádá n¥které klí£ové funkce, které jsou nutné pro aplikace s mimo°ádn¥vysokým výkonem, v£etn¥ moºnosti speci�kovat °ádkové (inline) funkce a destruktory, ukterých je zaji²t¥no spu²t¥ní v de�novaných bodech kódu. Do této kategorie v²ak pat°ípouze malá skupinka aplikací.

3.1.5 Výb¥r programovacího jazyku

K implementaci aplikace predikce textu pro osoby s omezenou pohyblivostí a reakcíjsem zvolil práv¥ jazyk C# a to zejména z d·vodu jeho nenáro£né syntaxe, která jedosti podobná jazyku Java, jak jsem jiº psal vý²e. S jazykem Java jsem se seznámil jiºna vysoké ²kole, a proto by p°echod k jazyku C# nemusel být p°ekáºkou. Dále je tojazyk pom¥rn¥ nový a efektivní, pln¥ objektov¥ orientovaný s typovou bezpe£ností a jáse cht¥l nau£it s tímto jazykem pracovat. V neposlední °ad¥ mi toto bylo doporu£enovedoucím mé diplomové práce, nebo´ i on sám vytvá°í aplikace v jazyce C#. A poslednímrozhodujícím d·vodem bylo, ºe výsledek práce m¥l být ve form¥ Windows aplikace, aobecn¥ pro Windows aplikace se jazyk C# z jazyk· °e²ících daný problém, jako je C++,Java a C#, hodí práv¥ jazyk C# nejvíce.

3.1.6 Postup u£ení

Podobn¥ jako u program· zmín¥ných v samotném úvodu této práce, bude má aplikacepodporovat u£ení se nových slov £i £ástí v¥t.

Page 38: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

22 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

Jak takové u£ení pracuje? Tak vezmeme v potaz, ºe z po£átku na²e aplikace neníschopna predikovat ºádná slova a uº v·bec ne £ásti v¥t, nebo´ slovník, který k tomutoú£elu vyuºívá je zcela prázdný. Nyní se naskýtají dv¥ metody u£ení, a to bu¤ ze souboru,a nebo u£ení se p°ímo z napsaného textu daným uºivatelem, tedy v real-time. U£ení zesouboru je v podstat¥ obdoba u£ení se z uºivatelského vstupu. M·ºeme si to p°edstavittak, ºe daný uºivatel napí²e n¥jaký text, který je pro n¥ho charakteristický, a ten uloºído textového souboru, ze kterého se následn¥ nau£í systém pro predikci slov, £i £ástí v¥t.Kaºdý uºivatel totiº bude ur£it¥ pouºívat n¥která slova, která jsou pro n¥j speci�cká akterá jiný uºivatel nepouºívá a nebo pouºívá mén¥ £ast¥ji.

3.1.6.1 U£ení ze souboru

Po u£ení systému ze souboru by jsme m¥li vyºadovat ur£ité vlastnosti. Nap°íklad, abyaplikace nenau£ila systémový slovník slova, která v·bec neexistují v £eském slovníku,coº mohou být slova bu¤ chybn¥ napsaná a nebo slova, která daný uºivatel sice pouºívá,ale jedná se o slova nespisovná £i neexistující. S tím tedy souvisí i správné d¥lení slov, £iliur£it¥ nebude sta£it d¥lit slova pouze pomocí mezery, ale nap°íklad i pomocí te£ky, pom-l£ky, otazníku, vyk°i£níku, otev°ené a uzav°ené závorky a to jak oby£ejné, tak hranatéa sloºené, atd. V neposlední °ad¥ klademe poºadavek na informace ohledn¥ kaºdéhosloví£ka, které u n¥j chceme uchovávat. Tedy nap°íklad, nejen ºe chceme uchovávat jehotextovou podobu, ale zajímají nás i informace jako je celkový po£et výskyt· v danémtextu, poslední £as nau£ení, tedy £as, kdy bylo naposledy pouºito, po£et pouºití danéhoslova za týden, po£et pouºití daného slova za m¥síc. Tohle byl výpis t¥ch základníchvlastností, nyní je²t¥ m¥jme ur£ité poºadavky na dv¥ asi nejd·leºit¥j²í vlastnosti, kterénám pomáhají v predikci slov £i £ástí v¥t.

Jedná se nejprve o ukládání následných slov u kaºdého sloví£ka. Tedy chcemeukládat ta slova, která se £asto vyskytují za daným slovem. Toto je samoz°ejm¥ op¥tpevn¥ svázáno s daným uºivatelem, nebo´ kaºdý uºivatel, jak uº bylo vý²e zmín¥no,pí²e jiná slova a staví v¥tu rozdílným zp·sobem. U kaºdého slova, které jiº m¥lo n¥jakénásledné slovo, si tedy budu uchovávat seznam t¥chto slov. A protoºe £etnost t¥chtonásledných slov, tedy po£et, kolikrát jiº toto slovo následovalo slovo p°edchozí je d·leºitávlastnost, budeme si pamatovat i tento po£et. V budoucí predikci pak tento po£et ukaºdého následného sloví£ka bude podstatn¥ p°idávat na váze volby následného slova.Tedy £ím vy²²í £etnost dané následné slovo bude mít, tím vy²²í váhu p°i predikci dostanea tím vý²e se bude ve výsledném seznamu vyskytovat.

Za druhé se jedná o znalost slovních druh·, tedy jen t¥ch, které nám n¥jakým zp·-sobem mohou pomoci p°i predikci. Zde jsem vycházel zejména z poznatku, ºe £asto poslovese nenásleduje druhé sloveso, ale podstatné jméno. Pak tyto dva slovní druhy oby£e-jn¥ zastávají základní skladební dvojici. Skute£ností v²ak z·stává, ºe ne vºdy tato dv¥slova tvo°ící základní skladební dvojici stojí p°ímo za sebou. Je totiº naprosto b¥ºné,

Page 39: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.1. ANALÝZA 23

ºe nap°íklad podm¥t je n¥kolikanásobný, tedy ºe se skládá z více podstatných jmen,nap°. Jarka, Luká² a Martin ... To samé platí i o slovesech, to také totiº m·ºe být veskladební dvojici hned n¥kolikrát. Dal²í nep°íjemností pro predikci, kde chceme vyuºí-vat znalosti slovních druh· je skute£nost, ºe podm¥t £asto bývá nevyjád°ený, £ili propredikci nevyuºitelný, nebo´ nejsem schopný detekovat nevyjád°ený podm¥t ve v¥t¥. Ip°es v²echna tahle omezení je dobré znalost slovních druh· do predikce zahrnout. Dal²ímvýznamným a £asto se vyskytujícím slovním druhem je p°ídavné jméno, tedy vlastnostiosob, zví°at i v¥cí. A jako takové se £asto vyskytují bu¤ p°ed a nebo za podstatnýmjménem. Ale to by nebyl £eský jazyk, aby i zde nem¥l své výjimky. Nap°íklad ve v¥t¥: "Tose uvidí rychlý Pet°e.". Zde "to"je podstatné jméno, "uvidí"se je sloveso a "rychlý"jep°ídavné jméno. Jak je vid¥t, zde podstatné jméno neleºí u p°ídavného jména. Jsouodd¥lené slovesem.

Velkou nevýhodou je, ºe slovní druhy nejsme schopni ur£it u slov jako takových,ale aº tehdy, kdyº se vyskytují ve v¥t¥. Bohuºel ani tehdy nejsme programov¥ totoschopni detekovat, proto je nutné zavést n¥jaké ozna£ení daných slov ru£n¥ do souboru.Já zvolil metodu, kdy za daným slovem, které chceme klasi�kovat jako nap°íklad sloveso,napí²eme jeho £íslo jako slovní druh. Tedy za slovesem "d¥lat"by následovalo £íslo 5,tedy "d¥lat5".

U£ení ze souboru pak °e²í následující situace. Musí p°e£íst textový soubor po°ádcích a kaºdé slovo na °ádku separovat a uloºit do listu slov. Zde °ádek není my²lenonedokon£ená v¥ta, ale t°eba celý odstavec textu. Tato slova pak dále zpracovávat. Jetedy nutné zjistit, zda neobsahují na konci £íslo. Pokud ano, p°id¥líme danému slovuslovní druh podle £ísla uvedeného na jeho konci. Takové slovo je poté nutno zkrátit ototo £íslo a následn¥ v p·vodní podob¥ p°idat do slovníku pouºívaných slov systému.Ihned poté projedu tento seznam slov pomocí funkce na uloºení následných slov.

Nyní uº by se tedy systém nau£il ve²keré vlastnosti ukládané u kaºdého slova ztextového souboru. Zde bych je²t¥ zmínil moºnost vyuºití pro�lování, tedy kaºdý uºivatelby m¥l napsaný sv·j textový soubor a pomocí n¥ho by nau£il systém. T¥chto textovýchsoubor· m·ºe mít kaºdý uºivatel více a kaºdý tento soubor m·ºe mít pro jiný ú£el.Nap°íklad textový soubor pro napsání emailu známým, £i textový soubor pro napsáníd·leºitého dopisu na ú°ad.

3.1.6.2 U£ení pomocí uºivatelského vstupu

U£ení pomocí uºivatelského vstupu probíhá obdobn¥ s tím rozdílem, ºe text není £tenze souboru, ale z °ádky ovládacího prvku TextBoxu. Po dopsání v¥ty uºivatel stisknenap°íklad klávesu Enter a celá v¥ta se separuje do jednotlivých slov, následn¥ je kaºdéslovo p°idáno do slovníku pouºívaných slov, pokud tam je²t¥ není. Pokud ve slovníkujiº existuje dané slovo, je u n¥j navý²ená £etnost pouºití a aktualizováno datum pouºití.Nakonec je seznam slov dané v¥ty je²t¥ jednou zkontrolován z d·vodu nau£ení násled-ných slov.

Page 40: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

24 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

3.2 Návrh °e²ení

Jak tedy navrhnout °e²ení, které by pokrylo poºadavky cílové skupiny uºivatel·, vyuºiloznalosti existujících implementací a vhodn¥ vyuºilo programovacího jazyka C#? V jed-notlivých bodech se budu snaºit p°idávat dal²í a dal²í vlastnosti a návrhy a výsledkemby m¥lo být jejich slou£ení, a tedy efektivní prediktivní systém.

Na základ¥ analýzy bude projekt °e²en na platform¥ Windows s pouºitím tech-nologie MS.NET C# 2010.

3.2.1 Skladba v¥ty

Co tedy vlastn¥ víme o skladb¥ v¥ty a co jsme schopni z toho vyuºít pro predikci textu?Je z°ejmé, ºe pokud chce jakýkoli £lov¥k sd¥lit n¥jakou informaci n¥komu druhému, jezapot°ebí vhodn¥ formulovat n¥jakou v¥tu. O kaºdé v¥t¥ m·ºeme °íci, ºe jejími základ-ními stavebními kameny jsou slova. Samoz°ejm¥ v¥ta jako taková má i jiné vlastnosti.Nap°íklad, ºe první slovo ve v¥t¥ musí za£ínat velkým písmenem a musí kon£it £árkou,te£kou, vyk°i£níkem £i otazníkem. Tyto vlastnosti nám ale pro predikci nijak nepomo-hou. Dále víme, ºe kaºdé takové slovo je sloºeno z jednozna£né posloupnosti písmen.�ili kaºdé slovo je v podstat¥ unikátní. Pokud jsou tedy dv¥ slova sloºená z té samékombinace písmen, jedná se zcela logicky o slovo totoºné.

Tato vlastnost je klí£ová pro predikci. M·ºeme ji vyuºít tak, ºe kdyº uºivatel za£nepsát v¥tu, za£ne zcela ur£it¥ také psát slovo. Toto slovo, které uºivatel plánuje napsatjako první ve v¥t¥, se ur£it¥ také skládá z jednozna£né kombinace písmen. Pokud tedyuºivatel napí²e první znak, je uº i na základ¥ takto malé informace moºné navrhnoutve²kerá slova, která jsou obsaºena v systémovém slovníku a za£ínají práv¥ na tentoznak. Pochopiteln¥, pokud je systémový slovník objemný, nabídne nám t°eba tisíce slovza£ínajících na toto písmeno. Na druhou stranu, systém zamítne ur£it¥ v¥t²í po£et slovneza£ínajících na tento znak. Pokud uºivatel p°idá dal²í znak, seznam nabízených slov sezcela ur£it¥ n¥kolikanásobn¥ zmen²í a nabízených slov bude jiº uº²í skupinka. Takºe zdejist¥ platí, ºe £ím více znak· daný uºivatel napí²e, tím uº²í výb¥r predikovaných slov musystém nabídne a tím více se nabízená slova budou podobat zamý²lenému slovu. Ov²emvelkou nevýhodou je, ºe £ím více znak· uºivatel napí²e, tím více £asu stráví psanímcelého slova £i v¥ty.

P°íklad sniºování po£tu vhodných slov po napsání dal²ích znak· ukazuje tabulka3.1. Dejme tomu, ºe nap°íklad chceme napsat slovo "pracovat"a jako slovník pouºiji£eský slovník £ítající 793760.

Jak je vid¥t na p°edchozím p°íkladu, opravdu po napsání kaºdého znaku docházívýznamn¥ k omezení nabízeného seznamu.

Page 41: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 25

Po£áte£ní znaky Po£et navrhovaných slov

p 127861

pr 27453

pra 2014

prac 177

praco 109

pracov 109

pracova 7

pracovat 1

Tabulka 3.1: Po£et slov za£ínajících na po£áte£ní text.

3.2.2 �etnost výskytu slov

Pokud chceme predikovat slova £i £ásti v¥t lépe, bude zapot°ebí k p°edchozí vlastnostidodat dal²í poznatek a vhodn¥ jej vyuºít. Nyní nebudeme p°emý²let pouze o skladb¥v¥ty, ale budeme hledat vyuºitelnou vlastnost u uºivatele, tedy u osoby, která pí²e danýtext. Kaºdý £lov¥k jako takový je, jak jsem jiº psal vý²e, jedine£ný. A jako takovýbude pouºívat svoji slovní zásobu, a tedy celkový výstup kaºdého uºivatele bude zna£n¥odli²ný. N¥kdo má slovní zásobu roz²í°en¥j²í, a bude tedy pouºívat ²ir²í rozsah sloví£ek,naopak n¥kdo jiný má slovní zásobu men²í, a tudíº celkový po£et rozdílných slov budeve výsledném textu men²í. Zde obecn¥ platí, ºe uºivateli, který pí²e jednodu²²í textskládající se z men²ího po£tu rozdílných slov, bude predikce více nápomocna. Uºivateli,který pouºívá spoustu rozdílných sloví£ek bude, pot°ebovat systém nau£it více termín·,které v základním slovníku zatím nejsou obsaºeny.

Dal²í vlastností, pro£ uºivateli, který pouºívá mén¥ rozdílných sloví£ek, budeprediktivní systém lépe napovídat, je napsaný vy²²í po£et opakujících se slov. Jehoslovní zásoba je men²í, £ili bude n¥která sloví£ka £ast¥ji opakovat. Pokud bychom ²li doextrému, mohli bychom si danou situaci p°edstavit na p°íkladu jedné v¥ty:

Uºivatel s malou slovní zásobou:

• Dnes je hezké po£así.

• Dnes je krásné po£así.

• Dneska je krásné po£así.

Uºivatel s velkou slovní zásobou:

Page 42: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

26 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

• Dnes je hezké po£así.

• Dneska je krásné po£así£ko.

• Dne²ní den je úºasné teplo.

• atd.

Jak vidíme na tomto triviálním p°íkladu, uºivatel s malou slovní zásobou £astoopakuje stejná slova. Jak tohoto vhodn¥ vyuºít? Pamatovat si u kaºdého slova jehopo£et pouºití (v ideálním p°ípad¥ za daný £as) a tuto vlastnost zkombinovat s vlastnostíp°edchozí. Potom se tato £ast¥ji vyskytující se slova up°ednostní v nabízeném seznamu.Zde bych v²ak zd·raznil, ºe se tato £asto se opakující slova váºí k danému uºivateli,proto by m¥l kaºdý uºivatel nau£it systém práv¥ sv·j slovník. Nebo´ jinému uºivateli bytahle £etnost £asto se vyskytujícího slova mohla v predikci spí²e u²kodit neº pomoci.

Na dal²ím p°íkladu ukáºu význam uchovávání celkové £etnosti pouºití kaºdéhoslova. P°edpokládejme, ºe uºivatel napí²e del²í text, kterým nau£í slovník pouºívanýchslov daného systému. Systém si kaºdé doposud nenau£ené slovo uloºí do svého slovníkupouºívaných slov a navý²í vºdy jeho £etnost p°i kaºdém dal²ím výskytu daného slova.Pokud slovník dané slovo jiº obsahoval, dojde pouze k navý²ení jeho £etnosti pouºití.Tohoto je poté vyuºito ke kvalitn¥j²í predikci, jak uvádí následující p°íklad:

V¥ty, ze kterých se nau£í slovník pouºívaných slov:

• Text ozna£uje jakékoliv uskupení slov, které dohromady tvo°í n¥jakou výpov¥¤.

• Vet²inou ale bývá jako text ozna£ován n¥jaký del²í oddíl nebo odstavec.

• Slovo text se pouºívá pro psané výpov¥di.

• Knihy jsou ozna£ovány jako um¥lecké texty, novinové £lánky jako publicistickétexty.

• V informatice se jedná o odborný technický pojem, kterým je ozna£en zvlá²tnídatový typ nebo datový formát.

Jak je na první pohled z°ejmé, slovo "text"je zde obsaºeno velice £asto, protom·ºeme p°edpokládat, ºe u toho slova bude vysoká £etnost výskytu. Jaký seznamnabízených slov by systém m¥l nabídnout, kdyº uºivatel za£ne psát slovo, za£ínajícípísmenem "t", ukazuje následující výpis:

• text s £etností výskytu 3

• texty s £etností výskytu 2

Page 43: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 27

• typ s £etností výskytu 1

• technický s £etností výskytu 1

• tvo°í s £etností výskytu 1

Je vid¥t, ºe slova nejsou abecedn¥ se°azena a ºe se tedy jiº ne°ídí podle abecedníhose°azení, ale vyuºívá se zde práv¥ £etnosti výskytu daných slov. Pochopiteln¥ se°azeníseznamu nabízených slov je mín¥no od shora dol· pro nejvhodn¥j²í kandidáty.

3.2.3 Aktuáln¥ psané téma

V p°edchozích bodech jsme se zabývali vlastnostmi, které se projevují dlouhodob¥, nebolineodráºejí aktuální stav uºivatele, jeho nálady a jeho proºitky. Byly to vlastnosti, u nichºnehraje £as ºádnou roli. Abecední °azení a celková £etnost pouºití sou£asn¥ pracují jiºuspokojiv¥, ale pokud bychom cht¥li do predikce slov £i £ástí v¥t promítnou aktuálnínáladu daného uºivatele, bylo by zapot°ebí brát z°etel na £asové údaje, tedy kdy danéslovo uºivatel napsal. Dejme tomu, ºe ten samý uºivatel psal jednu dobu text danéhotypu, ale za n¥jaký £as, krat²í £i del²í £asový okamºik, zm¥nil téma psaní. �ili slova,která m¥la d°íve vysokou váhu, nyní na své váze ztrácejí a do pop°edí se dostávají slovaaktuálního tématu.

Jak této vlastnosti vyuºít a jak ji navrhnout? Ur£it¥ si u kaºdého slova budemepamatovat poslední £asový okamºik p°idání do slovníku. Dále navrhnu dva £asové in-tervaly, jeden krat²í a jeden del²í. Pokud by se jednalo o b¥ºného uºivatele, který pí²etext £asto, °ekn¥me denn¥, byly by tyto intervaly mnohem krat²í, neºli u na²í cílovéskupiny uºivatel·. Nap°íklad bych navrhoval £as pro b¥ºné uºivatele pro krat²í £asovýinterval jeden den a pro del²í interval dobu jednoho týdne. U na²í cílové skupiny, kterápí²e mnohem mén¥ textu a mnohem mén¥ £ast¥ji, navrhuji krat²í £asový interval nadobu jednoho týdne a del²í £asový interval na dobu jednoho m¥síce.

Dále je pot°eba navrhnout, jak vhodn¥ u kaºdého slova kontrolovat, kolikrát bylo zakrat²í a del²í £asový interval dané slovo pouºito. Návrh zamý²lím tak, ºe u kaºdého slovasi zavedu seznam (frontu) do které vºdy p°i novém pouºití slova vloºím £asovou známkua p°ed pouºitím této informace zkontroluji, zda se £asové zna£ky v této front¥ vejdou dokrat²ího týdenního £asového intervalu. Pokud ano, spo£ítám po£et poloºek a dostanu£etnost pouºití za týden. Pokud se data ve front¥ nevejdou do týdenního intervalu, pakdata z fronty odstraním a op¥t spo£ítám £etnost pouºití. To stejné ud¥lám i pro del²í£asový interval, tedy m¥síc.

Nyní tedy znám £etnosti výskytu daného slova za krat²í a del²í £asový interval. Jaktoho vyuºít k dokonalej²í predikci? Je zapot°ebí op¥t vhodn¥ zkombinovat tuto vlastnosta p°edchozí vlastnosti a vypo£ítat tak v závislosti na t¥chto datech váhu kaºdého slova.

Page 44: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

28 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

Obecn¥ p·jde o to, dát slov·m psaných v krat²ím £asovém intervalu vy²²í váhu a to vzávislosti na jeho £etnosti v tomto intervalu. Ihned poté up°ednost¬ovat slova v intervaludel²ím a op¥t brát v úvahu £etnost výskyt· v tomto intervalu.

3.2.4 Následná slova

Dal²í silnou vlastností p°i tvorb¥ v¥t, které se dá s výhodou vyuºít, je následnost slov.N¥která slova jsou velice £asto následovaná jinými slovy. Co se zaºitých frází tý£e, jetato vlastnost patrná nejvíce, nebo´ tyto v¥ty jsou nem¥nné, a tudíº pokaºdé, kdyº seje £lov¥k chystá psát, dop°edu ví jaká slovo budou následovat za práv¥ psaným slovem,aniº by nad tím hloub¥ji uvaºoval. Toto se d¥je nejen u £asto se opakujících frází, ale iu jakékoli v¥ty týkající se b¥ºného ºivota.

Op¥t zde bude platit, ºe £ím men²í je uºivatelova slovní zásoba, tím tato vlastnostbude uºite£n¥j²í v predikci následného slova £i £ásti v¥t. �ím má totiº £lov¥k men²íslovní zásobu, tím obecn¥ napí²e mén¥ v¥t a tím je v¥t²í ²ance, ºe za práv¥ psanýmslovem bude následovat ur£ité slovo. U osob, které mají velkou slovní zásobu, je tatovlastnost zase omezen¥j²í, nebo´ za práv¥ psaným slovem m·ºe následovat v¥t²í po£etrozdílných slov.

T¥chto poznatk· je t°eba vyuºít a navrhnout dob°e pracující pravidlo, které poslouºík dokonalej²í predikci. Protoºe je moºné a dokonce i £asté, ºe za kaºdým slovem budenásledovat více neºli práv¥ jedno následné slovo, budu si u kaºdého p°edchozího slovauchovávat celý seznam následných slov. Tato slova je pot°eba n¥jakým vhodným zp·-sobem °adit a up°ednost¬ovat. Nejvhodn¥j²ím °e²ením se nabízí jejich £etnost výskyt·za daným p°edchozím slovem. Podle této £etnosti poté budu up°ednost¬ovat výb¥r ne-jvhodn¥j²ího následného slova, které nabídnu uºivateli k výb¥ru.

Co se tý£e celkové váhy, navrhuji této vlastnosti následných slov p°isoudit vysokoud·leºitost. Tak vysokou, ºe p°ed£í p°edchozí vlastnosti a bude mít tedy nejvýznam-n¥j²í postavení. K funkci, která bude vypo£ítávat váhu kaºdého slova do nabízenéhoseznamu predikovaných slov, bude podle vý²e £etnosti výskytu následného slova slovap°edchozího p°ipo£ítávat vysoký koe�cient násobený £etností daného následného slova.Bude tedy platit, ºe pokud jiº napsané slovo, tedy slovo p°edchozí, bude obsahovat n¥-jaký neprázdný seznam následných slov, bude tento seznam následných slov významn¥ovliv¬ovat nabízený seznam predikovaných slov.

Na následujícím p°íkladu ukáºi, jak by daná v¥c m¥la pracovat. Dejme tomu, ºesystém nau£íme n¥kolik v¥t, u kterých si budu pamatovat ve²keré p°ede²lé vlastnostiv£etn¥ seznamu následných slov. Pro jednoduchost p°edpokládejme ty samé v¥ty, jakobyly uvedeny v p°íkladu minulém:

• Text ozna£uje jakékoliv uskupení slov, které dohromady tvo°í n¥jakou výpov¥¤.

Page 45: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 29

• Vet²inou ale bývá jako text ozna£ován n¥jaký del²í oddíl nebo odstavec.

• Slovo text se pouºívá pro psané výpov¥di.

• Knihy jsou ozna£ovány jako um¥lecké texty, novinové £lánky jako publicistickétexty.

• V informatice se jedná o odborný technický pojem, kterým je ozna£en zvlá²tnídatový typ nebo datový formát.

Po nau£ení by si systém m¥l pamatovat u kaºdého slova, které je následovanéslovem jiným, toto následné slovo nebo seznam takovýchto následných slov. Efektivitaby pak m¥la být znát a to následovn¥. P°edpokládejme, ºe n¥kdy v budoucnu budemechtít op¥t napsat t°etí v¥tu z výpisu uvedeného nad tímto odstavcem, tedy v¥tu "Slovotext se pouºívá pro psané výpov¥di.". Pro tuto v¥tu by mi m¥l systém výrazn¥ pomocip°i op¥tovném napsání jiº jednou psané v¥ty.

Pro napsání této v¥ty by mi m¥lo sta£it napsat pouze text "sl"a nyní jenom pomocívýb¥ru z nabízených slov a to vºdy první, tedy nejvíce pravd¥podobné slovo. Doplnímtedy slovo "slovo", které by m¥lo být nejvý²e v nabízeném seznamu. Nyní nám systémautomaticky nabízí následující slova a hned první by m¥lo být slovo "text", po jehovybrání by m¥l systém nabízet slovo "se"a tak dále aº do konce v¥ty. U posledníhoslova "výpov¥di"by systém nem¥l mít uvedeno ºádné následující slovo, nebo´ za tímtoslovem v¥ta kon£í, a pokud bychom mu jako jeho následné slovo uloºili první slovo zv¥ty následující, byla by to chyba.

Dále je t°eba vy°e²it, jakým zp·sobem omezovat tuto váhu v p°ípadech, kdy jsmejiº dokon£ili psané slovo a nyní za£ínáme psát slovo dal²í. S kaºdým novým písmenkembych m¥l váhu následných slov daného slova p°edchozího omezovat. Toto provedu tak,ºe pokud nové slovo má jeden znak, pak váhu vyd¥lím po£tem 1 + délka napsanéhonového slova.

3.2.5 Slovní druhy

Jak jsem jiº psal vý²e, kaºdá v¥ta se skládá z jednotlivých slov. U t¥chto slov m·ºemesledovat nejen jejich sd¥lovací význam, ale i jiný význam. Lingvistika d¥lí slova do tzv.slovních druh·. V rozli²ení jednotlivých slovních druh· hrají úlohu r·zné faktory jakojsou: jakým zp·sobem se slovo zapojuje do v¥ty, jaké tvary tvo°í a jaké mluvnické kat-egorie u n¥j lze vysledovat, atd.

V £e²tin¥ rozli²ujeme následujících 10 slovních druh·:

1. podstatná jména (substantiva)

Page 46: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

30 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

2. p°ídavná jména (adjektiva)

3. zájmena (pronomina)

4. £íslovky (numeralia)

5. slovesa (verba)

6. p°íslovce (adverbia)

7. p°edloºky (prepozice)

8. spojky (konjunkce)

9. £ástice (partikule)

10. citoslovce (interjekce)

Slova, která jsou obsaºena v prvních p¥ti druzích jsou v¥t²inou ohebná, to zna-mená, ºe tato slova se nechají sklo¬ovat nebo £asovat, a to bu¤ podle vzor· a nebo jakonepravidelná. Slova zbývajících slovních druh· jsou v¥t²inou neohebná.

Jak ale vyuºít vý²e zmín¥ných slovních druh· ke zdokonalení predikce? P°edpok-ládejme, ºe bereme v úvahu jenom slovní druhy jako jsou podstatná jména, p°ídavnájména a slovesa a ºe kaºdá v¥ta obsahuje práv¥ jedno slovo daného slovního druhu. Totonap°íklad spl¬uje jednoduchá v¥ta: "Dnes je krásné po£así."Kde slovo "je"je sloveso,slovo "krásné"je p°ídavné jméno a slovo "po£así"je podstatné jméno. U takto triviál-ních v¥t je z°ejmé, ºe by se dalo ze znalosti slovních druh· zdokonalit predikci zp·sobemzji²´ování výskytu kaºdého ze slovních druh·. Pokud tedy bylo napsáno sloveso, tak uostatních sloves potla£ím jejich váhu a naopak up°ednost¬uji podstatná jména a p°í-davná jména. Pokud jsme napsali jiº sloveso i podstatné jméno, jako je tomu v této£ásti v¥ty: "Dnes je krásné ", pak se dá s vysokou pravd¥podobností o£ekávat podstatnéjméno.

Bohuºel toto platí pro triviální v¥ty, ve spoust¥ ostatních v¥t to takto neplatí.Nap°íklad m·ºeme mít za sebou hned n¥kolik sloves, respektive n¥kolik slov tvo°ícíchjedno sloveso, nap°íklad: "byl bych mluvil", "bude trvat", atd. Obdobn¥ toto platí i upodstatných jmen, nap°íklad: "Jirka, Petr a Luká² ... "a p°ídavných jmen, nap°íklad:"krásný, kulatý ...".

Tuto vlastnost op¥t budu vyuºívat vhodn¥ s kombinací s p°edchozími vlastnostmi.

Page 47: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 31

3.2.6 Zabarvení v¥ty

Kaºdá v¥ta, kdyº si ji £lov¥k p°e£te, podává jak n¥jakou sd¥lovací informaci, tak ur£itézabarvení. Z kaºdé v¥ty se dá p°ibliºn¥ vycítit a poznat, jakou náladu její autor m¥lve chvíli, kdy danou v¥tu psal. Pro jednoduchost uvaºujme zabarvenost v¥ty p°eváºn¥kladná, p°eváºn¥ záporná £i p°eváºn¥ neutrální. Tato informace o zabarvení v¥ty vycházíze slov, ze kterých je v¥ta sloºena a nebo z kombinace n¥kterých slov. Ur£itá slova jsoup°eváºn¥ bu¤ neutrální, výlu£n¥ kladná a nebo výlu£n¥ záporná. Následující p°íkladukazuje, jak by mohla vypadat klasi�kace n¥kterých slov (p°ídavná jména):

• krásný, p¥kný (klasi�kace 1, p°eváºn¥ kladná)

• ²karedý, o²klivý (klasi�kace -1, p°eváºn¥ záporná)

• lidský, normální (klasi�kace 0, p°eváºn¥ neutrální)

U slov, která nepodávají ºádnou informaci, ani nejsou nikterak zabarvená, se klasi-�kace nastaví jako neklasi�kovaná a doplní se znaménkem "-". Toto zde udávám v zásad¥proto, protoºe kaºdé slovo musí být n¥jak klasi�kováno. Pokud nejsme schopni klasi�kaciur£it, pak slovu vloºíme tuto klasi�kaci.

Jak této klasi�kace zabarvenosti slov vhodn¥ vyuºít k dokonalej²í predikci? Nejprveje t°eba si uv¥domit, jak autor smý²lející negativn¥ £i pozitivn¥ pí²e daný text a jakáslova u toho pouºívá. Protoºe i autor smý²lející p°eváºn¥ negativn¥ m·ºe v celém odstavcinapsat jednu v¥tu s p°eváºn¥ kladným zabarvením. Pro£ to pí²i? Nebo´ z tohoto jez°ejmé, ºe co se tý£e zabarvenosti textu, nem·ºeme smý²let o celém odstavci £i dokoncecelém textu, ale musíme se soust°edit a omezit pouze na jednotlivé v¥ty. Kaºdou v¥tupak m·ºeme klasi�kovat jako p°eváºn¥ kladnou, zápornou £i neutrální podle toho, zjak zabarvených slov se daná v¥ta skládá. Následující p°íklad ukazuje typické kandidátyzabarvených v¥t a jejich p°íslu²né skupiny:

• Dnes je krásné po£así a sluní£ko h°ejiv¥ svítí. (kladné zabarvení obou v¥t)

• V£era bylo ²kared¥ zataºeno a sychravo. (záporné zabarvení v¥ty)

• Dnes jsem byl nakupovat v nákupním st°edisku. (neutrální zabarvení)

Na tomto míst¥ je t°eba poznamenat, ºe nap°íklad t°etí v¥ta, tedy v¥ta "Dnesjsem byl nakupovat v nákupním st°edisku."m·ºe být zabarvená pro n¥koho pozitivn¥ apro n¥koho negativn¥ a to podle slova "nakupovat". Nebo´ n¥kdo nemá rád nakupování,na druhou stranu n¥kdo si bez nakupování nedovede p°edstavit ºivot. Obdobn¥ by jsmemohli smý²let i o dvou p°edcházejících v¥tách, nebo´ kaºdý máme rádi jiné po£así.Obecn¥ kaºdý £lov¥k je originální a má rád jiné záliby. Co z toho plyne? Pokud bychom

Page 48: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

32 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

tedy cht¥li nejvhodn¥ji vyuºít této vlastnosti zabarvení jednotlivých slov, museli bychomnechat kaºdého uºivatele tohoto systému provést svoji vlastní klasi�kaci svého nebocizího textu. Pro na²e ú£ely v²ak bude posta£ovat obecný náhled.

Pro dokonalej²í predikci budu tedy p°i zapo£etí psaní kaºdé v¥ty zohled¬ovat jiºnapsaná slova. U t¥chto slov budu sledovat jejich zabarvení a tedy zji²´ovat, zda je v¥taspí²e zabarvená kladn¥, záporn¥ £i neutráln¥. V nabídce predikovaných slov pak za£nuup°ednost¬ovat slova zabarvená stejn¥ jako je zabarvení dané v¥ty. Po napsání kaºdév¥ty toto váhování op¥t nuluji a za£ínám s dal²í v¥tou nanovo.

3.2.7 Predikce frází £i £ástí v¥t

Pro zkvalitn¥ní predikce lze vyuºít vedle predikce jednotlivých slov i predikci frází £i£ástí v¥t.

Jakou vlastnost v²ak vyuºít pro predikci frází £i £ástí v¥t? Nejd·leºit¥j²í je op¥tsi uv¥domit, z £eho se kaºdá fráze £i v¥ta, a´ uº pouze její £ást a nebo celá v¥ta, skládá.Jak jsem psal jiº vý²e, kaºdá v¥ta se skládá z posloupnosti jednotlivých slov. S výhodoulze vyuºít posloupnost dvou £i více jiº napsaných slov k predikci dané fráze £i v¥ty.Pokud daná fráze £i v¥ta totiº za£íná na tuto posloupnost, m·ºeme danou frází £i v¥tupredikovat a nabídnout tak k výb¥ru.

Pokud ov²em fráze £i v¥ta neza£íná na tuto posloupnost jiº napsaných slov, alet°eba tato slova obsahuje, bude pot°eba toto vzít v úvahu. U takových p°ípad· budevhodné si stanovit jakousi vzdálenost jiº napsaných slov od slov stejných, ur£itým zp·-sobem zp°eházených £i rozmíst¥ných ve v¥t¥. Podle této vzdálenosti pak danou v¥tunebo n¥kolik v¥t up°ednostnit v predik£ní nabídce.

Jak po£ítat vzdálenost napsaných slov a stejných slov obsaºených ve v¥t¥? Násle-dující ukázka toto vysv¥tlí nejlépe:

P°edpokládejme, ºe jiº napsaná slova jsou následující: "dnes je". Následuje seznamjiº uloºených v¥t v systému.

1. Je mi teplo a p°íjemn¥.

2. Hezké po£así dnes je.

3. Je hezké po£así.

4. V£era bylo krásn¥.

5. Dnes je hezky.

6. Jak se dnes máte?

Page 49: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 33

Nyní je t°eba u t¥chto v¥t po dopsání druhého slova spo£ítat jisté vzdálenosti,podle kterých v¥ty se°adíme a nabídneme, nebo dokonce n¥které v·bec nenabídneme.Kaºdá v¥ta je uloºena v systému v seznamu jako posloupnost slov. �ili nebudu ukládatv¥ty jako celek, ale jako mnoºinu slov, samoz°ejm¥ v tom po°adí, jak zn¥la originálnív¥ta. Na tomto po°adí bude velice záleºet p°i po£ítání vzdálenosti.

Vzdálenost budu po£ítat tak, ºe kaºdé slovo v dané v¥t¥ ohodnotím £íslem, kterébude ur£ovat jeho pozici ve v¥t¥. U jednopísmenných slov budu toto po°adí zanedbá-vat. Nap°íklad si vezm¥me první v¥tu v p°edchozím vý£tu v¥t, tedy: "Je mi teplo ap°íjemn¥.". Tato v¥ta bude v systému vypadat následovn¥: "je", "mi", "teplo", "a","p°íjemn¥". Nyní t¥mto slov·m p°i°adím hodnoty jejich po°adí ve v¥t¥, jak ukazujenásledující tabulka 3.2.

Slovo ve v¥t¥ Pozice slova ve v¥t¥

je 1

mi 2

teplo 3

p°íjemn¥ 4

Tabulka 3.2: Po°adí slov ve v¥t¥, p°íklad 1.

Jak jiº jsem psal vý²e, jednopísmenná slova ignorujeme v ohodnocení slov jejichpo°adím ve v¥t¥. Nyní m·ºeme za£ít s výpo£tem vzdálenosti jiº napsaných slov a slovve v¥t¥. Podívám se na první slovo napsané uºivatelem. Toto slovo je "dnes", nyní sepodívám do této v¥ty, se kterou práv¥ po£ítám vzdálenost a zjistím, ºe toto slovo zdev·bec není obsaºeno. �ili ke vzdálenosti p°i£tu 5, nebo´ kdyº slovo není ve v¥t¥ v·becobsaºeno, penalizace je vysoká. Nyní má tedy vzdálenost hodnotu 5. Podívám se tedyna druhé slovo napsané uºivatelem, toto slovo zní "je". Podívám se do v¥ty a zjistím, ºetoto slovo má p°i°azenou hodnotu 1, je tedy ve v¥t¥ napsáno jako první. Vypo£tu jejichvzdálenost, tedy abs(po°adí na °ádku - po°adí ve v¥t¥), tj. 2 - 1 = 1 a tuto vzdálenostp°i£tu k celkové vzdálenosti, tedy 5 + 1 = 6. To je velká vzdálenost. Tato v¥ta ur£it¥nebude nejlep²í volba.

Pro jinou v¥tu by vzdálenost mohla vyjít niº²í. Zkusím druhý p°íklad a vezmuv¥tu £íslo 5, tedy v¥tu: "Dnes je hezky.". Následuje tabulka 3.3 po°adí slov ve v¥t¥.

Nyní spo£tu vzdálenost. Op¥t máme napsáno: "dnes je". Vezmu tedy první slovonapsané uºivatelem a hledám jej ve v¥t¥. Zjistím nejlep²í moºnou variantu a to, ºe na°ádku napsaného uºivatelem má slovo "dnes"po°adí stejné jako v tabulce vý²e, tudíº jejejich vzdálenost 1 - 1 = 0. Tuto nulovou vzdálenost p°i£tu k iniciální nulové vzdálenostia máme celkovou vzdálenost 0. Nyní vezmu druhé slovo na °ádku, coº je slovo "je", aop¥t zjistím, ºe jejich vzdálenosti jsou stejné. Celková vzdálenost tedy vyjde rovna 0.

Page 50: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

34 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

Slovo ve v¥t¥ Po°adí slova ve v¥t¥

dnes 1

je 2

hezky 3

Tabulka 3.3: Po°adí slov ve v¥t¥, p°íklad 2.

Tato v¥ta je tedy výborným kandidátem pro predikci. Pokud by vzdálenost vy²la u vícev¥t shodn¥, predikoval bych tyto v¥ty v po°adí od nejdel²ích k nejkrat²ím. Uºivateli totiºchceme nabídnout co moºná nej²ir²í predikci a tím mu co nejvíce zkrátit nutnost psaní.

Tabulka 3.4 ukazuje výpo£et ostatních vzdáleností a rovnou je se°azuje od ne-jlep²ích kandidát· k nejhor²ím.

V¥ty v systému Vzdálenosti

Dnes je hezky. 0

Hezké po£así dnes je. 4

Je mi teplo a p°íjemn¥. 6

Je hezké po£así. 6

Jak se dnes máte? 7

V£era bylo krásn¥. 10

Tabulka 3.4: Vypo£tené vzdálenosti slov napsané uºivatelem a v¥t v systému.

Jak je vid¥t na první pohled, tento systém výpo£tu vzdálenosti b¥ºí docela dob°e.Otázkou je, jeli v²ak vzdálenost dosta£ující. Jak £asto se stává, ºe £lov¥k napí²e totoºnouv¥tu vícekrát? Totoºnou ve smyslu stejného uspo°ádání slov v této v¥t¥. Mockrát z°ejm¥ne, ale co se stává £ast¥ji, je výb¥r stejné v¥ty s predik£n¥ nabízeného seznamu frází £iv¥t. Tudíº navrhuji ukládat si u takto vybraných v¥t £etnost jejich pouºití a tuto £etnostzohled¬ovat p°i výpo£tu výsledné váhy. Zde je pot°eba si dát pozor na skute£nost, ºevy²²í £etnost by m¥la up°ednost¬ovat v¥tu v nabídce. Av²ak vy²²í vzdálenost by m¥lasniºovat up°ednostn¥ní v nabídce.

3.2.8 Interpretované zkratky do v¥t

N¥kte°í uºivatelé mohou vyuºít také moºnosti rozvití zkratky do v¥ty, kterou tatozkratka interpretuje. Je to dal²í vlastnost, která se m·ºe vyuºít pro zrychlení a us-nadn¥ní psaní textu. Toto by se nechalo navrhnout jako tabulka, která obsahuje jakzkratku, tak v¥tu, kterou daná zkratka reprezentuje. Nap°íklad jak ukazuje tabulka 3.5.

Page 51: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 35

Zkratka v¥ty V¥ta

msf Mám se fajn.

djhp Dnes je hezké po£así.

jmt Je mi teplo.

mº Mám ºíze¬.

Tabulka 3.5: Ukázka moºnosti vyuºití zkratek a v¥t, které tyto zkratky interpretují.

Tyto zkratky by se nechaly bezprost°edn¥ po jejich napsání daným uºivatelem,rozloºit na celou v¥tu po stisku klávesy Enter a vloºily by se automaticky na výstup.Pro vysokou efektivitu by bylo t°eba navrhnout vhodné v¥ty, které by si systém uloºil,a dále by bylo t°eba, aby se s t¥mito v¥tami a jejich zkratkami uºivatel seznámil.

3.2.9 Uloºení dat pro trvalé pouºití

Vý²e jsem popsal, co v²e by bylo t°eba si uchovávat za informace u kaºdého slova.Nejen informace o slovech je t°eba si uchovávat, ale je t°eba si pamatovat pochopiteln¥i samotná slova a dále pak i celé v¥ty pro predikci frází £i £ástí v¥t. Jakým zp·sobem siuchovávat tyto informace? Jaký zp·sob je nejvhodn¥j²í pro mé ú£ely?

Jako nejvhodn¥j²í jsem zvolil ukládání ve²kerých informací do XML souboru.Hlavními výhodami tohoto °e²ení je, ºe to je obecné, jednoduché a £itelné. Pokud bytedy bylo zapot°ebí n¥kdy tyto soubory s t¥mito informacemi p°e£íst nap°íklad z jinéaplikace, nem¥l by to být v·bec problém. Nevýhody jsou pak nap°íklad v jeho v¥t²ívelikosti, ale pro mé ú£ely je toto zanedbatelné. Nebo´ se nejedná o velkou aplikaci,která bude vyuºívat slovníky o sta tisících sloví£ek, ale naopak vyuºívá jen n¥kterázákladní slova £asto pouºívaná daným uºivatelem. Následující p°íklad ukazuje, jakýmstylem ukládám data slov do XML souboru:

<slovnikPouzivanychSlovAVet>

<SlovoZname>

<docasnaVaha>0</docasnaVaha>

<ident>1</ident>

<naslednaSlova>

<NasledneSlovo>

<NaslSlovo>ozna£uje</NaslSlovo>

<Cetnost>1</Cetnost>

</NasledneSlovo>

<NasledneSlovo>

<NaslSlovo>ozna£ován</NaslSlovo>

<Cetnost>1</Cetnost>

</NasledneSlovo>

<NasledneSlovo>

<NaslSlovo>se</NaslSlovo>

Page 52: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

36 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

<Cetnost>2</Cetnost>

</NasledneSlovo>

</naslednaSlova>

<Slovo>text</Slovo>

<SlovniDruh>podstatne_jmeno</SlovniDruh>

<Zabarveni>neklasifikovano</Zabarveni>

<DateTimeUseStr>2011-05-01 19.51.41</DateTimeUseStr>

<SumOfUse>4</SumOfUse>

<listCasyPouzitiKratsi>

<dateTime>2011-04-29T23:28:55.6194298+02:00</dateTime>

<dateTime>2011-04-29T23:28:55.6234301+02:00</dateTime>

<dateTime>2011-04-29T23:28:55.6234301+02:00</dateTime>

<dateTime>2011-05-01T19:51:41.4644066+02:00</dateTime>

</listCasyPouzitiKratsi>

<listCasyPouzitiDelsi>

<dateTime>2011-04-29T23:28:55.6204299+02:00</dateTime>

<dateTime>2011-04-29T23:28:55.6234301+02:00</dateTime>

<dateTime>2011-04-29T23:28:55.6234301+02:00</dateTime>

<dateTime>2011-05-01T19:51:41.4644066+02:00</dateTime>

</listCasyPouzitiDelsi>

</SlovoZname>

</slovnikPouzivanychSlovAVet>

Nebudu v²ak ukládat pouze data jednotlivých slov, ale i fráze £i v¥ty. Tyto v¥tybudu ukládat do druhého textového souboru. V¥ty budu ukládat jako posloupnost £ísel.Tato £ísla jsou odkazy na atribut "ident"kaºdého slova. Následuje p°íklad uloºené jednév¥ty v XML souboru:

<vety>

<VetaZnama>

<vetaVCislech>

<unsignedShort>2</unsignedShort>

<unsignedShort>33</unsignedShort>

<unsignedShort>34</unsignedShort>

<unsignedShort>35</unsignedShort>

<unsignedShort>35</unsignedShort>

</vetaVCislech>

<cetnost>5</cetnost>

<Vzdalenost>22</Vzdalenost>

</VetaZnama>

</vety>

3.2.10 Pro�ly uºivatel·

S ukládáním dat úzce souvisí pro�l. Systém je tvo°en tak, aby si u kaºdého uºivatelepamatoval práv¥ jeho data. Jak jiº jsem se zmínil vý²e, kaºdý uºivatel disponuje odli²nou

Page 53: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 37

slovní zásobou a zp·sobem psaní v¥t. Proto nau£ená data jedním uºivatelem by z°ejm¥byla spí²e na obtíº druhému uºivateli.

Jak jsem se zmínil vý²e, u kaºdého pro�lu budu ukládat práv¥ dva XML soubory.Jeden pro nau£ená slova a druhý pro nau£ené v¥ty. Nejlépe tyto soubory odli²ím tak, ºepro kaºdý pro�l vytvo°ím sloºku a tyto soubory uloºím do této sloºky daného pro�lu.Mezi t¥mito pro�ly bude moºné p°epínat.

Pro�l m·ºe rovn¥º p°edstavovat typ psaného textu (váºný, kamarád, technický,...).

3.2.11 Vstupy a výstupy

Výstupem této diplomová práce má tedy být knihovna nebo programový modul, kterýsám o sob¥ nemá ºádné GUI (Graphical User Interface), ale jedná se o funk£ní kompo-nentu, které se p°edloºí n¥jaký vstup, a ona na základ¥ daného vstupu poskytne ur£itývýstup. Co tedy bude vstupem a co výstupem této aplikace?

Uºivatelským vstupem bude samoz°ejm¥ text, na jehoº základ¥ se bude danývýstup predikovat. Obecn¥ m·ºeme °íci, ºe £ím del²í vstupní text bude, tím kvalit-n¥j²í výstup bude aplikace schopná predikovat. Nebo´ nevyuºije jen prvních pár znak·prvního slova, ale vyuºije jiº práv¥ n¥jakou posloupnost slov pro predikci nejenom dal²íhoslova £i práv¥ psaného slova, ale i frází £i £ástí v¥t. Vstupem tedy bude soubor znak·a písmen, který aplikaci vloºí uºivatel. Dal²ím vstupem mohou být akce, které budeuºivatel schopný vykonat s aplikací. Bude se jednat o akce, které popisuje následujícítabulka 3.6.

Dále pak bude mít samotná aplikace n¥jaké moºnosti práce se slovníkem a predik-tivní logikou. Tyto moºnosti popisuje následující tabulka 3.7.

Nyní tedy známe vstupy. Co se výstup· tý£e, bude se jednat jednozna£n¥ o predikcitextu. Respektive o seznam následných slov £i seznam dopln¥ní práv¥ psaných slov.Jelikoº aplikace bude schopná navrhovat nejen slova, ale i fráze £i £ásti v¥t, bude druhýmvýstupem práv¥ seznam t¥chto v¥t.

3.2.12 Návrh GUI

Co se tý£e návrhu GUI (Graphical User Interface), vyuºil jsem znalosti, ºe spoust¥hendikepovaným lidem, kte°í nejsou schopni psát v²emi deseti, nevyhovuje klasické us-po°ádání klávesnice, ale spí²e preferují se°azení znak· podle abecedy. Do tohoto návrhujsem vloºil pouze znaky pot°ebné k napsání jednoduchých v¥t s moºností pouºití £ís-lic. Dal²í tla£ítka jsou pak ty, která ovládají systém. Znaky jako je te£ka £i £árka zdeneuvaºuji. Návrh uºivatelského rozhraní by tedy mohl znázor¬ovat následující obrázek3.1.

Page 54: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

38 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

Akce Popis akce Název akce

Ukon£ení v¥ty Ukon£ení kaºdé v¥ty a p°edloºení této v¥tysystému pro nau£ení.

KonecVety

Mazání znaku Maºe vstup od uºivatele po jednom znaku. SmazJedenZnak

Mazání slova Maºe vstup od uºivatele po jednotlivýchslovech.

SmazPosledniSlovo

Mazání celéhovstupu

Maºe celý vstup od uºivatele. SmazCelouVetu

Posun dol· vnabídce slov

Posun v nabídce predikovaných slov ojednu poloºku níºe.

JdiNaDalsiSlovo

Posun nahoru vnabídce slov

Posun v nabídce predikovaných slov ojednu poloºku vý²e.

JdiNaPredchoziSlovo

Výb¥rnabízenéhoslova

Výb¥r slova z nabídky predikovaných slov. VyberSlovo

Posun dol· vnabídce v¥t

Posun v nabídce predikovaných frází £i£ástí v¥t o jednu poloºku níºe.

JdiNaDalsiVetu

Posun nahoru vnabídce v¥t

Posun v nabídce predikovaných frází £i£ástí v¥t o jednu poloºku vý²e.

JdiNaPredchoziVetu

Výb¥r nabízenév¥ty

Výb¥r fráze £i £ásti v¥ty z nabídkypredikovaných frází £i £ástí v¥t.

VyberVetu

Tabulka 3.6: P°ehled a popis akcí, které systém zpracovává od uºivatele.

Tla£ítko "Enter"slouºí pro ukon£ení a odeslání dopsané v¥ty na výstupní za-°ízení. "Backspace"slouºí pro mazání jednotlivých znak· sm¥rem zprava doleva. "Smaºslovo"smaºe poslední rozepsané £i jiº dopsané slovo. "Smaº v¥tu"smaºe celou v¥tu navstupu. Tla£ítka "Dal²í slovo"a "P°edchozí slovo"slouºí k výb¥ru slova v predikovanénabídce slov. "Vyber slovo"slouºí pro výb¥r daného slova. Obdobn¥ to platí pro v¥ty.Mezerníkem pak vkládá uºivatel mezeru.

Page 55: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

3.2. NÁVRH �E�ENÍ 39

Akce Popis akce Název akce

U£it se Jedná se o nau£ení systémového slovníkuz uºivatelského vstupu.

NaucSlovnik

U£it se zesouboru

Jedná se o nau£ení systémového slovníkuz textového souboru.

NaucSlovnikZeSouboru

Resetuj slovník Resetování systému do základního stavu,tedy do stavu, kdy slovník obsahuje pouzezákladní sloví£ka. Toto se uplatní nap°ík-lad p°ed prvním spu²t¥ním systému nebop°i zm¥n¥ uºivatele.

ResetujSlovnik

Zm¥¬ pro�l Zm¥ní aktuální pro�l na pro�l jiného uºi-vatele.

ZmenPro�l

Vymaº slovník Jedná se o akci, kterou vyuºije systémv p°ípad¥, kdy resetuje pro�l. V tomtop°ípad¥ je nutné smazat ve²kerá nau£enáslova v£etn¥ jejich vlastností a nau£it sys-tém pouze slova základní.

VymazSlovnik

Odstra¬ vlast-nosti

Tato akce vymaºe ve²keré £etnosti,následná slova a ostatní vlastnosti ukaºdého sloví£ka.

OdstranVlastnosti

Tabulka 3.7: P°ehled a popis akcí, které systém vyuºívá k práci se slovníkem a prediktivnílogikou.

Obrázek 3.1: Návrh uºivatelského prost°edí.

Page 56: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

40 KAPITOLA 3. ANALÝZA A NÁVRH �E�ENÍ

Page 57: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 4

Realizace

Hlavním cílem mé diplomové práce je vytvo°it knihovnu £i programový modul propredikci následných slov £i £ástí v¥t. Do této knihovny vstupují v²echny vstupy uºi-vatele jako jsou jednotlivé znaky (písmena v£etn¥ diakritiky, £íslice a jiné) a akce (mazáníznaku, mazání celého slova, atd.). Z knihovny pak vystupuje výstup jako seznam prediko-vaných slov a v¥t.

Následující obrázek 4.1 gra�cky ukazuje, jak a jaké vstupy do knihovny vstupují ajaké výstupy knihovna na základ¥ t¥chto vstup· generuje. P°i spu²t¥ní aplikace je nutnéknihovn¥ p°edloºit pro�l, se kterým bude pracovat. Tento pro�l s sebou nese informacio úloºi²ti osobního systémového slovníku a seznamu uloºených v¥t. Tento slovník slovi v¥t je tedy na£ten do systému z XML souboru a p°ipraven k pouºití. Jako druhý sena£te do systému slovník £eských slov. Tento bude slouºit k detekci správnosti nov¥ukládaných slov. Nyní má knihovna v²e pot°ebné k zahájení své £innosti. Je tedy vestavu, kdy m·ºe plnohodnotn¥ p°ijímat a zpracovávat vstupy.

Hlavním vstupem je samoz°ejm¥ jednotlivý znak £i posloupnost jednotlivých znak·tvo°ících budoucí slovo. Na základ¥ tohoto vstupu se generuje seznam predikovanýchslov, a to bu¤ jiº slov práv¥ psaných a nebo slov následných. Pokud je tedy slovo vestavu rozepsaném, generuje se list predikovaných slov, tedy slov, o která by se mohlojednat. Jakmile je toto slovo dopsané, predikují se celá slova následná.

Jestliºe uºivatel vloºil dv¥ a více slov na vstup knihovny, je zahájena i predikcev¥t, pokud tedy systém obsahuje n¥jaký seznam jiº napsaných v¥t daným uºivatelem.

Mezi dal²í vstupy pak také pat°í akce, které systém zpracovává od uºivatele, viztabulka 3.6, a rovn¥º akce, které systém vyuºívá k práci se slovníkem a prediktivnílogikou, viz tabulka 3.7.

4.1 Predikce b¥ºící na pozadí

Jak je ona predikce implementována? Jako °e²ení bylo navrhnuto zajistit generovánípredikovaného listu jak slov, tak v¥t pomocí vlákna. Respektive pomocí metody, která

41

Page 58: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

42 KAPITOLA 4. REALIZACE

Obrázek 4.1: Diagram vstup· a výstup· knihovny.

b¥ºí ve vlákn¥. Toto vlákno je °ízeno semaforem, a pokud uºivatel nevykonává ºádnouakci, která n¥jakým zp·sobem ovliv¬uje predikci, vlákno stojí. Jakmile v²ak uºivatelza£ne psát text a nebo jej nap°íklad mazat, je po kaºdém vloºeném £i smazaném znakuspou²t¥no vlákno obsluhující predikci na pozadí.

Metoda, která je °ízena vláknem, zjistí stav napsaného textu a na jeho základ¥provede predikci, u£ení £i jinou operaci. Pokud by uºivatel psal p°íli² rychle, mohlo byse z d·vodu neasynchronnosti vlákna stát to, ºe by vlákno nestíhalo predikovat textp°esn¥ na základn¥ práv¥ vloºeného vstupu, ale nap°íklad na základ¥ vstupu o n¥kolikznak· krat²ího. Vlákno tedy predikuje v závislosti na svém vytíºení. Vzhledem k tomu, ºecílová skupina uºivatel· je fyzicky hendikepována, nem¥l by problém nestíhání predikcena základ¥ aktuáln¥ vloºeném vstupu nastat. �lov¥k, který pí²e rychle, nepot°ebujeaplikaci jako je tato.

Mimo predikce tato metoda vlákna umí také vyhodnotit, zda byla dopsána v¥ta,a jestliºe ano, pak ji zpracuje. Synchronizace vlákna pro predikci na pozadí a vláknagra�ckého uºivatelského prost°edí v demo verzi aplikace je zaji²t¥na pomocí zámk·.

Page 59: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.2. POU�ITÉ KOMPONENTY TESTOVACÍ DEMO VERZE 43

4.2 Pouºité komponenty testovací demo verze

V rámci lad¥ní, testování a demonstrace £innosti a funk£nosti celé aplikace vytvo°ímWindows GUI (Graphical User Interface) aplikaci pro zobrazení vstupu i výstupu kni-hovny pro predikci textu. Tato GUI aplikace se skládá z gra�ckých komponent, kteréumoº¬ují vhodn¥ zobrazit vstupy (psaný text, na jehoº základ¥ probíhá predikce slov£i £ástí v¥t) i výstupy aplikace. Windows Form, DataGridView, TextBox a TextBox svlastností Multiline a ReadOnly.

Nyní tyto komponenty popí²i podrobn¥ji.

4.2.1 T°ída Form

Kaºdá klientská okenní aplikace m·ºe obsahovat jeden nebo n¥kolik formulá°·. M·ºe sejednat o aplikace typu SDI (Single Document Interface) nebo MDI (Multiple Documentinterface). V kaºdém p°ípad¥ je jádrem klient· s formulá°i t°ída System.Windows.Forms.Form.T°ída Form je odvozena od t°ídy ContainerControl, která je odvozena od t°ídy Scrol-lableControl odvozené od t°ídy Control. Vzhledem k tomu je o£ividné, ºe formulá° dokáºepracovat jako kontejner jiných ovládacích prvk· a umoºní jejich posun v p°ípad¥, ºe setyto pod°ízené ovládací prvky nevejdou do klientské oblasti a ºe nabídne mnoho podob-ných vlastností, metod a událostí, jaké poskytují jiné ovládací prvky. Proto je také t°ídaForm také pom¥rn¥ sloºitá.

Proces vytvá°ení formulá°e je d·leºitý, proto jej zde uvedu. Poºadované funkcezávisejí na tom, kam zapí²ete inicializa£ní kód. P°i vytvo°ení instance dochází k událostemv následujícím po°adí:

1. Volání konstruktoru

2. Load (událost Load nastává po vytvo°ení instance objektu)

3. Activate (událost Activated nastává, kdyº se formulá° stane viditelným a aktuál-

ním)

4. Closing (událost Closing umoº¬uje zru²it proces uzav°ení formulá°e)

5. Closed (událost nastává po uzav°ení formulá°e a slouºí obdobn¥ jako událost Clos-

ing k provedení nezbytného úklidu)

6. Deactivate (poslední spu²t¥ná událost)

První t°i události mají význam p°i inicializaci. V závislosti na poºadovaném typuinicializace m·ºete ur£it, na kterou událost se navázat. Konstruktor t°ídy se uplat¬ujep°i vytvo°ení instance objektu. Událost Load nastává po vytvo°ení instance objektu,

Page 60: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

44 KAPITOLA 4. REALIZACE

ale t¥sn¥ p°ed tím, neº je formulá° zobrazen. Rozdíl mezi touto operací a konstruk-torem spo£ívá ve stavu formulá°e. P°i vyvolání události Load formulá° existuje, ale neníviditelný. B¥hem £innosti konstruktoru formulá° postupn¥ vzniká. Událost Activatednastává, kdyº se formulá° stane viditelným a aktuálním.

V ur£ité situaci lze toto po°adí mírn¥ upravit. Je-li b¥hem £innosti konstruktoruformulá°e vlastnost Visible nastavena na hodnotu true nebo je-li zavolána metoda Show,je událost Load aktivována okamºit¥. Protoºe se tím také formulá° nastaví jako viditelnýa aktuální, je také vyvolána událost Activate. Jestliºe po nastavení vlastnosti Visiblenásleduje kód, bude spu²t¥n. Událost spu²t¥ní by tedy mohla vypadat p°ibliºn¥ takto:

1. Volání konstruktoru, aº po p°íkaz Visible = true

2. Load

3. Activate

4. Volání konstruktoru, za p°íkazem Visible = true

To m·ºe vést k neo£ekávaným výsledk·m. Z hlediska optimálních postup· se zdá,ºe je nevhodn¥j²í umístit co nejv¥t²í £ást inicializace do konstruktoru.

Co se nyní stane po uzav°ení formulá°e? Událost Closing umoº¬uje proces zru²it.Událost Closing p°ijímá jako parametr CancelEventArgs. Tento argument má vlastnostCancel, která v p°ípad¥ nastavení na hodnotu true zru²í událost a formulá° z·staneotev°en. K události Closing dochází p°i uzav°ení formulá°e, zatímco událost Closednastává po zav°ení formulá°e. Ob¥ události umoº¬ují provést nezbytný úklid. Posledníspu²t¥nou událostí bude událost Deactivate.

4.2.2 Ovládací prvek DataGridView

Tento ovládací prvek byl novinkou od Visual Studia 2005 a slouºí k zobrazení dat.

Jiº v první verzi platformy .NET se vyskytoval ovládací prvek DataGrid, kterýbyl sice funk£ní, ale z mnoha hledisek se nehodil pro pouºití v komer£ních aplikacích.Neumoº¬oval mimo jiné zobrazit obrázky £i rozevírací ovládací prvky nebo uzamknoutsloupce. Tento ovládací prvek vºdy p·sobil nedokon£eným dojmem, takºe mnoho doda-vatel· ovládacích prvk· poskytovalo vlastní m°íºky, které tyto nedostatky p°ekonávalya také nabízely mnohem více funkcí.

Od platformy .NET 2.0 je k dispozici dal²í m°íºka s názvem DataGridView. Tentoprvek °e²í mnoho nedostatk· p·vodního ovládacího prvku a dopl¬uje mnoho dal²íchfunkcí, které dosud poskytovaly pouze dopl¬kové produkty.

Page 61: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.2. POU�ITÉ KOMPONENTY TESTOVACÍ DEMO VERZE 45

DataGridView má podobné moºnosti vazby jako p·vodní prvek DataGrid, takºeumoº¬uje vazbu na t°ídy Array, DataTable, DataView £i DataSet nebo na komponentu,která implementuje rozhraní IListSource nebo IList. Ovládací prvek DataGridViewposkytuje r·zné pohledy na stejná data. V nejjednodu²²ím p°ípad¥ lze data zobrazit(obdobn¥ jako ve t°íd¥ DataGrid) nastavením vlastností DataSource a DataMember.

Já vyuºil pro zobrazení dat pomocí DataGridView komponenty nastavení vlast-ností DataSource. DataGridView komponentu pouºívám pro ú£ely lad¥ní a testovaní kzobrazení vlastností u kaºdého jiº nau£eného slova, které je nabízené (predikované) azobrazené, viz obrázek 4.2. Z t¥chto slov je moºné posléze vybírat ta slova, která m¥l vúmysl uºivatel vloºit na °ádek.

Obrázek 4.2: Ukázka pouºité komponenty DataGridView.

4.2.3 Ovládací prvek TextBox

Je to jeden z nejpouºívan¥j²ích prvk· z panelu nástroj·. Ovládací prvky TextBox, Rich-TextBox i MaskedTextBox jsou odvozeny od t°ídy TextBoxBase. T°ída TextBoxBaseposkytuje vlastnosti jako MultiLine a Lines. Vlastnost MultiLine je hodnota typu bool,která umoº¬uje ovládacímu prvku typu TextBox zobrazit text na více °ádcích. Kaºdý°ádek textového pole je sou£ástí pole °et¥zc·. Toto pole je zve°ejn¥no pomocí vlastnostiLines. Vlastnost Text vrací celý obsah textového pole jako jediný °et¥zec. TextLengthur£uje celkovou délku °et¥zce vráceného textem. Vlastnost MaxLength omezí délku textuna uvedenou hodnotu.

Ve své aplikaci pouºívám ovládací prvek TextBox jako nejd·leºit¥j²í vstup, vizobrázek 4.3. �ili to, co daný uºivatel napí²e, pí²e práv¥ do TextBoxu, který daná datazpracovává dále a na základ¥ tohoto vstupu se predikují nabízená slova £i £ásti v¥t.

Hotové v¥ty pak pomocí klávesy Enter vkládám do horního TextBoxu s vlastnostíMultiline a vlastností ReadOnly, kde se uchovávají hotové v¥ty, viz obrázek 4.3.

Page 62: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

46 KAPITOLA 4. REALIZACE

Obrázek 4.3: Ukázka pouºité komponenty TextBox a TextBox s vlastností Multiline aReadOnly.

4.2.4 Gra�cké uspo°ádání komponent a jejich význam v demoaplikaci

Výsledné uspo°ádání vý²e popsaných komponent znázor¬uje obrázek 4.4. Nejvý²e jetedy umíst¥no jakoby výstupní za°ízení, tedy n¥jaké zobrazovací za°ízení, které je vdemo aplikaci interpretováno komponentou TextBox s vlastností Multiline a ReadOnly.Ihned pod touto komponentou se nachází TextBox, do kterého uºivatel pí²e vstupnítext, na jehoº základ¥ bude provád¥na predikce slov a v¥t. Pod touto komponentou,která je hlavním vstupem celé aplikace, se nacházejí zbylé dv¥ komponenty, tedy dvaDataGridView, které vypisují a nabízejí predikovaná slova a v¥ty a to v£etn¥ jejichvlastností a vypo£ítaných vah.

Obrázek 4.4: Uspo°ádání komponent v GUI demo aplikace.

Page 63: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.3. POPIS �E�ENÍ A VNIT�NÍ STRUKTURY KNIHOVNY 47

4.3 Popis °e²ení a vnit°ní struktury knihovny

Celá aplikace se skládá z n¥kolika t°íd, které spolu komunikují a tvo°í tak funk£ní kni-hovnu £i programový modul. Diagram t¥chto t°íd ukazuje následující obrázek 4.5.

Obrázek 4.5: Diagram t°íd.

4.3.1 T°ída SlovoZname

D·leºitou t°ídou je t°ída pojmenována SlovoZname. Tato t°ída de�nuje spoustu d·leºitýchmetod a uchovává d·leºitá data a jiº podle názvu dané t°ídy je jasné, ºe tato t°ídareprezentuje kaºdé jednotlivé slovo obsaºené v systémovém slovníku. Jedná se tedy ota slova, která daný systém pouºívá k predikci. Tato slova mají spoustu vlastnostípopsaných vý²e a práv¥ tato t°ída je v²echny uchovává. Jako data (atribut) de�nujetato t°ída samotné slovo, které je typem ur£eno jako textový °et¥zec. Toto je asi ne-jd·leºit¥j²ím prvkem celé t°ídy. Mezi dal²í data ukládaná ke kaºdému slovu pat°í datumposledního pouºití, které je typu DateTime, celkový po£et pouºití daného slova, které jetypem integer a ident, který je typu integer. Dále pak do£asná váha typu integer, kteráje vypo£ítávána v závislosti na ve²kerých vlastnostech daných slov. Podle této hodnotyse pak °adí slova v nabízeném prediktivním seznamu. Dal²ími daty jsou pak dv¥ fronty,

Page 64: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

48 KAPITOLA 4. REALIZACE

které uchovávají £asové údaje pouºití daného slova za krat²í a del²í £asové údaje. Tytoúdaje jsou typu DateTime. Jednou z nejd·leºit¥j²ích vlastností je pak seznam násled-ných slov. Tato slova jsou instance t°ídy NasledneSlovo, kterou popí²i níºe. Jako dal²íse zde nachází vý£tový typ slovního druhu typu enum. Tento typ de�nuje bu¤ nic, £ilislovo není ur£eno ºádným slovním druhem, nebo podstatná jména, p°ídavná jména £islovesa. Jiné slovní druhy nevyuºívám k predikci. Dal²í vý£tový typ de�nuje zabarvenídaných slov. Op¥t se jedná o typ enum. Tento typ de�nuje slovo jako neklasi�kované,kladné, záporné £i negativní.

Dále se zde objevují vlastnosti de�nující nastavení jednotlivých datových atribut·.Názvy t¥chto vlastností jsou vyobrazovány jako názvy jednotlivých sloupc· ve výslednémseznamu navrhovaných slov. Hodnoty t¥chto dat jsou pak hodnoty obsaºené v t¥chtosloupcích. Vlastnosti zde mám pro data Slovo, Váhování, Slovní druh, Následná slova,Zabarvení, Naposledy pouºito, Celkový po£et pouºití, Po£et pouºití za týden, Po£etpouºití za m¥síc, Pouºito p°ed x (dny) a Pouºito p°ed x (sekundami).

4.3.1.1 Výpo£et váhy slova

Jedná se o metoda výpo£tu váhy kaºdého slova, tedy hodnoty, která ovliv¬uje práv¥výstupní predikovaný seznam navrhovaných slov. P°ed výpo£tem této váhy je v²ak ne-jprve pot°eba vypo£íst n¥které hodnoty. Nejd°íve je nutné vypo£ítat týdenní váhu, tedyprom¥nnou tv a spolu s touto prom¥nou vypo£íst degradaci váhy d. Výsledná hodnotaprom¥nné tv je ovlivn¥na podmínkou, pokud je celkový po£et pouºití daného slova zaposlední týden pouºívání programu roven nule, pak prom¥nnou tv nastavíme hodnotou0 a degradaci d zvý²íme o hodnotu 0.2. Jestliºe je £etnost pouºití daného slova fptnenulová, pak prom¥nou tv nastavuji jako podíl:

tv =fpt

7

Obdobn¥ pak nastavuji hodnotu prom¥nné m¥sí£ní váhy mv. Pokud je po£etpouºití daného slova za poslední m¥síc roven nule, nastavuji prom¥nné mv hodnotu0 a degradaci d zvy²uji o 0.1. Pokud v²ak pouºití daného slova za poslední m¥síc fpmnení roven nule, pak prom¥nnou mv nastavuji jako podíl:

mv =fpm

30

Posledním krokem p°ed samotným výpo£tem celkové váhy je následující podmínka.Jestliºe hodnota pouºití p°ed n¥kolika dny nenabývá hodnoty 0, tedy dané slovo nebylopouºito práv¥ dne²ní den, pak degradaci vyd¥lím po£tem dn·, kdy naposledy bylo danéslovo pouºito. Tedy pokud bylo slovo pouºito dnes, pak degradaci nesniºuji v·bec. Pokudbylo dané slovo pouºito p°ed jedním dnem, také nesniºuji. Jestliºe bylo slovo pouºito

Page 65: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.3. POPIS �E�ENÍ A VNIT�NÍ STRUKTURY KNIHOVNY 49

p°ed p¥ti dny, d¥lím degradaci p¥ti. To znamená, ºe ve výsledném vzorci bude degradaced men²í, a tudíº degraduje operaci násobení celkové £etnosti pouºití cp daného slovavíce. Z toho vyplývá, ºe £ím del²í doba uplynula od pouºití daného slova, tím více budecelková váha cv tohoto slova degradována.

Výsledný výpo£et váhy kaºdého slova je pak vyjád°en následujícím vzore£kem.Obecn¥ platí, ºe £ím vy²²í výsledná váha bude, tím bude dané slovo vý²e v prediko-vaném listu. Vzorec se tedy skládá ze t°í vnit°ních závorek. První z nich je degradacecelkové £etnosti pouºití daného slova. Tato £etnost se za ur£itý £as pouºívání aplikacebude o£ekávat jako nejvy²²í hodnota ze v²ech vlastností, které se týkají £etnosti pouºití.Proto je dobré tuto vlastnost n¥jak degradovat. K této závorce se p°i£ítá závorka druhá,která konstantou násobí týdenní váhu, tedy £etnost pouºití daného slova za krat²í £asovýinterval, tedy týden. Dal²í závorka pak provádí obdobné s tím rozdílem, ºe konstantounásobí m¥sí£ní váhu, tedy £etnost pouºití za del²í £asový interval, to je za m¥síc. Rozdíljenº je patrný na první pohled spo£ívá ve velikosti konstant. Týdenní váhu násobí kon-stanta v¥t²í, nebo´ tuto váhu up°ednost¬uji, protoºe vypovídá více o intenzit¥ pouºívánídaného slova v aktuální dobu. Konstanta násobící m¥sí£ní váhu je pak men²í, nebo´ jichci více degradovat. D·vodem je pak op¥t men²í vypovídání o aktuálním pouºívání.

• cv = celková váha

• d = degradace váhy

• cp = celková £etnost pouºití

• tv = týdenní váha

• mv = m¥sí£ní váha

• dv = do£asná váha

cv = (100 ∗ ((d ∗ cp) + (5 ∗ tv) + (2 ∗mv))) + dv;

Je tedy patrné, ºe zohled¬uji ve výpo£tu váhy zejména období, kdy bylo danéslovo pouºito. Pokud má nap°íklad dané slovo vysokou celkovou £etnost pouºití cp, alenulovou £etnost pouºití za týden i m¥síc, bude degradace váhy d hodn¥ nízká, a tudíºi celková váha bude nízká. Pokud ov²em naopak bude celková £etnost pouºití nízká vesrovnání s ostatními slovy ve slovníku, ale vysoká £etnost pouºití za krat²í a del²í £asovýokamºik vysoká, bude celková váha daného slova vysoká.

Toto celé násobím vysokou konstantou, nebo´ se jedná o £ísla desetinná, av²akvýsledná váha kaºdého slova je typu integer, tedy celo£íselná.

Page 66: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

50 KAPITOLA 4. REALIZACE

4.3.1.2 Výpo£et do£asné váhy slova

Tímto v²ak nekon£í výpo£et váhy. K tomuto jiº tak velkému £íslu se dále p°ipo£ítáváhodnota, která m·ºe v²e je²t¥ úpln¥ obrátit. Tedy pokud doposud vy²la váha nízká, jedo£asná váha dv schopna tuto nízkou hodnotu p°evést na hodnotu vysokou a naopak.Coºe to ta do£asná váha dv vlastn¥ je? Na tuto do£asnou váhu dv mají vliv vlastnostijako jsou následná slova, slovní druhy a zabarvenost.

• Výpo£et do£asné váhy následných slov

Tento výpo£et probíhá tak, ºe se systém podívá na p°edchozí slovo, tedy slovodopsané jako poslední, a u n¥j prozkoumá jeho seznam následných slov. Pokudtakový existuje, pak jej slovo po slovu projede a podívá se na jejich £etnosti vtomto seznamu. Poté kaºdému takovému následnému slovu nastavím do£asnouváhu podle následujícího vzorce:

� cn = £etnost následného slova

� pz = penalizace za dal²í napsané znaky

� dv = do£asná váha

dv =1000 ∗ cn

pz

Je z°ejmé, ºe £ím vy²²í £etnost pouºití daného následného slova cn je, tím vy²²ído£asná váha dv bude. Prom¥nná pz pak ur£uje kaºdý nový znak dal²ího slova.Prom¥nná pz nabývá jedni£ky implicitn¥ a to jen tehdy, je-li rozepsané slovoprázdné, tedy ºádné je²t¥ není napsané. Na °ádku nyn¥j²í situace tedy vypadátak, ºe poslední dopsané slovo je ozna£eno jako slovo p°edchozí, a u jeho násled-ných slov navy²uji do£asné váhy a up°ednost¬uji je tak v nabízeném seznamu.Pokud v²ak uºivatel za£ne psát dal²í slovo, je do£asná váha následných slov skaºdým novým znakem penalizována.

• Výpo£et do£asné váhy slovních druh·

Zde systém zkoumá, zda daná práv¥ psaná v¥ta obsahuje n¥který ze slovních druh·,jako je podstatné jméno, p°ídavné jméno £i sloveso. Pokud v¥ta neobsahuje ºádný zt¥chto slovních druh·, pak tento slovní druh zvýhodním. Pakliºe zpo£átku není vev¥t¥ obsaºen ani jeden z vý²e zmín¥ných slovních druh·, ned¥je se nic. Jakmile jeve v¥t¥ alespo¬ jedno slovo s klasi�kací n¥kterého slovního druhu, jsou ostatní slovav nabízeném seznamu, jenº mají jiný slovní druh, zvýhodn¥na nastavením vy²²ído£asné váhy. Nap°íklad máme ve v¥t¥ napsané sloveso, zvý²ím váhu u podstatnýchjmen a p°ídavných jmen.

Page 67: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.3. POPIS �E�ENÍ A VNIT�NÍ STRUKTURY KNIHOVNY 51

• Výpo£et do£asné váhy zabarvenosti

Systém zkoumá jiº napsaná slova a zji²´uje u nich jejich zabarvenost. Pokud zjistí,ºe bylo napsané slovo zabarveno kladn¥, p°ipo£te k výsledné zabarvenosti v¥tyjedni£ku. Kdyº narazí na jiº napsané slovo, které je zabarvené záporn¥, ode£te odvýsledné zabarvenosti v¥ty jedni£ku. S kaºdým napsaným slovem projíºdí systémseznam slov a podle výsledné zabarvenosti navy²uje do£asnou váhu u slov, kterájsou zabarvená stejn¥ jako psaná v¥ta. Takto zabarvená slova jsou pak zvýhodn¥nav nabízeném seznamu.

4.3.1.3 Významné metody

Jednou z nejd·leºit¥j²ích metod je metoda PouzilJsem(). Tato metoda se pouºívá p°iu£ení systémového slovníku a to bu¤ z textového souboru, a nebo p°ímo z textu psanéhouºivatelem. Metoda nastavuje datum posledního pouºití daného slova na aktuální £as,navy²uje £etnost pouºití, p°idává £asovou zna£ku do fronty krat²ího a del²ího £asovéhointervalu a následn¥ tyto intervaly kontroluje, zda neobsahují star²í data.

Pomocí metody CompareTo() se°azuji v²echna slova podle jejich váhy. Na základ¥toho pak vracím sestupn¥ se°azené seznamy slov, ze kterých si uºivatel následn¥ vybírávhodná slova.

4.3.2 T°ída NasledneSlovo

T°ídaNasledneSlovo de�nuje kaºdé následné slovo slova p°edchozího. U t¥chto násled-ných slov si pamatuji jejich textovou podobu a jejich £etnost. Tyto dva atributy jsounastavovány p°es vlastnosti. T°ída disponuje metodou NavysCetnost(), která navý²í £et-nost daného následného slova. Dále je zde p°ekrytá metoda ToString(), kterou vyuºívámke snadné textové reprezentaci objekt· a poté k zobrazení dat v GUI (Graphical UserInterface) aplikace.

4.3.3 T°ída SlovnikPouzivanychSlovAVet

Tato t°ída de�nuje metody pro práci se systémovým slovníkem pouºívaných slov. Ne-jprve bych na tomto míst¥ zmínil metody, o kterých jsem zapo£al psát v p°edchozímodstavci.

• Metoda Save()

P°edpokládejme, ºe jsme systém nau£ili n¥jaká slova do jeho slovníku generickéhotypu Dictionary<string, SlovoZname>. Tento slovník umoº¬uje rychlé vyhledávání

Page 68: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

52 KAPITOLA 4. REALIZACE

a pro mé ú£ely je vhodn¥j²í neº-li seznam typu List. Metoda Save() bude zavolánap°i ukon£ení programu. Její úkol je snadný, uloºit tento slovník do XML souboru. Ktomu bude v²ak pot°eba tento slovník zm¥nit na seznam typu List<SlovoZname>a to proto, ºe t°ída XmlSerialization neumí se slovníkem typu Dictionary pra-covat. O tento p°evod se stará metoda SlovnikNaList().

Dále metoda Save() ukládá t°íduVetyZname, tedy seznam slov tvo°ící v¥tu. Tatoslova ukládá v £íselné podob¥ z d·vod· u²et°ení místa.

• Metoda Load()

Nyní p°edpokládejme, ºe spou²tíme program a jiº o£ekáváme, ºe se nám od min-ulého pouºití uloºila v²echna nov¥ nau£ená slova do XML souboru a nyní p°ispu²t¥ní se tato data z XML souboru na£tou do systémového slovníku. Tuto op-eraci obstarává tato metoda. Po na£tení slov do seznamu typu List<SlovoZname>je zapot°ebí op¥t tento list p°evést do slovníku typu Dictionary<string, SlovoZ-name>. O tento p°evod se stará metoda ListNaSlovnik().

Pokud je slovník prázdný po na£tení slov znamená to, ºe ºádná slova nebylana£tena. Proto nau£ím systém základní sloví£ka z textového souboru obsahujícítato sloví£ka.

Metoda Load() také na£ítá soubor obsahující v¥ty. Po na£tení t¥chto v¥t metodazjistí nejvy²²í £íslo identu, a pokud je toto £íslo rovno nule, nastala z°ejm¥ n¥kdechyba a bude t°eba tento seznam slov op¥t p°e£íslovat od jedni£ky vý²e. Totop°e£íslování provádím vºdy p°i spu²t¥ní programu, kdy se práv¥ tato metodaLoad() volá. Je totiº moºné, ºe n¥kde budou uloºena dv¥ slova s identem rovnýmnule, a pokud najdu jakýkoli ident roven nule, p°e£ísluji ho.

• Metoda PridatNoveSlovo()

Metoda PridatNoveSlovo() pat°í k nejd·leºit¥j²ím metodám celé aplikace, nebo´umoº¬uje systém u£it se novým slov·m. Na vstupu je tedy prom¥nná slovo typustring, které obsahuje slovo, které se systém chystá nau£it. Metoda nejprve zjistí,jestli dané slovo jiº nemá nau£ené ve svém slovníku pouºívaných slov. Pokud ano,navý²í u n¥j £etnost a aktualizuje ostatní vlastnosti. Pokud v²ak systémový slovníkneobsahuje toto slovo, pokusí se je nau£it. Nejprve metoda zjistí, zda se u£íme zesouboru a nebo z °ádky psané uºivatelem. Pokud se u£íme ze souboru, pak slovníknekontroluje existenci daného slova v £eském slovníku, ale rovnou dané slovo uloºído systémového slovníku. P°ed samotným uloºením si najdu nejprve nejvy²²í hod-notu atributu ident, abych tuto hodnotu o jedni£ku navý²il a p°idal práv¥ uklá-danému slovu. Nyní uº mohu vytvo°it novou instanci t°ídy SlovoZname, jehoºkonstruktoru p°edám dané slovo a jeho ident, a tuto instanci vloºím do slovníku

Page 69: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.3. POPIS �E�ENÍ A VNIT�NÍ STRUKTURY KNIHOVNY 53

slov a do slovníku £ísel. Nyní navý²ím u tohoto nového slova jeho £etnost a za-ktualizuji ostatní vlastnosti. Dále slovu p°idám slovní druh a ur£ím zabarvení.Ob¥ dv¥ tyto vlastnosti jsou p°edávány jako parametry s defaultními hodnotamineklasi�kováno.

Pokud se dané slovo neu£ím ze souboru ale z °ádky psané uºivatelem, kontroluji,zda dané slovo existuje v £eském slovníku. Pokud ne, ignoruji jej. Pokud ano,p°idám jej stejným zp·sobem do slovník·.

public void PridatNoveSlovo(string slovo, bool uceniZeSouboru,

int slovniDruh = 0, int zabarveni = 0)

{

// slovo ve slovníku je²t¥ není, tak vytvo°ím novou

// instanci a p°idám jej

if (dictionary.ContainsKey(slovo) == false)

{

// pokud se u£ím ze souboru, nekontroluji nová slova a

// p°edpokládám, ºe jsou správná

if (uceniZeSouboru)

{

...

}

// pokud se neu£ím dané slovo ze souboru, kontroluji, zda se

// slovo nachází v £eském slovníku

else

{

if (slovnikVsechSlov.ObsahujeCeskySlovnik(slovo))

{

Console.WriteLine("Slovo: " + slovo + " je obsaºeno

v £eském slovniku.");

UInt16 identNew = slovnikPouzivanychSlov.maxIdent++;

// vytvo°ím instanci nového slova

SlovoZname nove = new SlovoZname()

{

Slovo = slovo, ident = identNew

};

// následn¥ p°idám nové slovo do slovník·

dictionary.Add(nove.Slovo, nove);

dictionaryCisla.Add(identNew, nove);

// navý²ím celkový po£et pouºití daného slova

dictionary[slovo].PouzilJsem();

Console.WriteLine("P°idávám slovo: " + slovo + " do

slovníku pouºívaných slov.");

Page 70: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

54 KAPITOLA 4. REALIZACE

}

else

{

Console.WriteLine("Slovo: " + slovo + " není obsaºeno

v £eském slovníku.");

}

}

}

else

{

// navý²ím celkový po£et pouºití daného slova, které jiº

// ve slovníku existuje, a to jenom pokud u£ím ze souboru

// a nebo vypr²el £asový interval od posledního uºití slova

if ((uceniZeSouboru) ||

(dictionary[slovo].PouzilJsemPredSekundami > 20))

{

dictionary[slovo].PouzilJsem();

Console.WriteLine("Navy²uji £etnost slova: " + slovo);

}

}

}

• Metoda ZobrazPredikovanyListSlov()

Metoda vracející list predikovaných sloví£ek na základ¥ vstupujícího posledníhopráv¥ psaného slova a nebo prázdného slova. Dal²ím vstupujícím slovem je slovop°edchozí. Na základ¥ tohoto p°edchozího slova zji²´uji a predikuji slova následná.Toto slovo je defaultn¥ nastaveno na prázdný °et¥zec. Posledním parametrem je£íselná hodnota vyjad°ující po£et vrácených záznam·.

Metodu rozd¥luje podmínka, která detekuje, zda text, na jehoº základ¥ se budepredikovat, £ili prom¥nná poslední slovo, je prázdná £i nikoli. Pokud poslední slovonení prázdné, pak zkoumám, zda neexistuje n¥jaké p°edchozí slovo. Pokud ano, paksi zjistím, zda dané p°edchozí slovo existuje ve slovníku a pokud ano, nechám sivrátit jeho seznam následných slov. U t¥chto slov navý²ím do£asn¥ jejich váhu,tudíº se ve vráceném predikovaném listu vystupujícího z této metody budou up-°ednost¬ovat. Dále volám metodu VahaSlovnichDruhuAZabarveni(), která projedejiº napsanou v¥tu £i jediné slovo a také navý²í váhu v závislosti na slovních druzíchobsaºených v jiº napsané v¥t¥ a v závislosti na celkovém zabarvení jiº napsané v¥ty.Dále projdu slovník, a pokud slova v n¥m obsaºená za£ínají na stejnou kombinaciznak· jako jiº napsané slovo, vloºím je do navrhovaného listu. Tento list následn¥se°adím podle vypo£tené váhy a vrátím.

Pokud je text, na jehoº základ¥ budu predikovat, prázdný, zjistím si, zda u existu-jícího p°edchozího slova se vyskytují jeho slova následná, a u t¥chto následných slov

Page 71: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.3. POPIS �E�ENÍ A VNIT�NÍ STRUKTURY KNIHOVNY 55

navý²ím jejich do£asnou váhu. Dále op¥t zavolám metodu VahaSlovnichDruhuAZ-abarveni() a vrátím list v²ech slov ze slovníku se°azený podle váhy.

• Metoda ZobrazPredikovanyListVet()

Metoda vrací seznam navrhovaných frází £i £ástí v¥t. Vstupem je seznam jiº nap-saných slov a defaultní hodnota po£tu vrácených predikovaných v¥t. Metoda ne-jprve zkoumá, zda je po£et vstupujících slov do funkce v¥t²í neº jedna. �ili neza£nupredikovat v¥ty, dokud do metody nevstupují alespo¬ dv¥ jiº celá napsaná slova.Následn¥ za£nu brát v¥tu po v¥t¥ v £íselném vyjád°ení a budu u nich po£ítatvzdálenost. Nejprve si kaºdou v¥tu p°evedu do textové podoby, tedy do jednoho°et¥zce reprezentujícího celou v¥tu. Pokud tento °et¥zec není prázdný, pokra£ujidál, jinak danou prázdnou v¥tu p°esko£ím. Ve stejném cyklu si tuto v¥tu po slovechtaké uloºím do seznamu jednotlivých slov a to v po°adí, jak jdou ve v¥t¥ za sebou.

Nyní za£nu po£ítat vzdálenost. Nejprve si nastavím indexery práv¥ zpracovávanéhoslova zpracovávané v¥ty a slova napsaného na °ádku na -1. Nyní následují dva cykly.Vn¥j²í cyklus prochází slova napsaná na °ádku a vnit°ní cyklus prochází slova upráv¥ testované v¥ty. Pokud se ob¥ práv¥ zpracovávaná slova rovnají, nastavímp°íznak typu bool na hodnotu true. Tento p°íznak charakterizuje, ºe dané slovonapsané na °ádku je ve v¥t¥ obsaºeno, a na základ¥ této informace vím, ºe nebuduv¥t¥ nastavovat penalizaci za neobsahující slovo, a také znám oba dva indexy práv¥testovaných slov. Ty od sebe ode£tu a absolutní hodnotu p°i£tu do vzdálenosti.Také vím, ºe danou v¥tu jiº nemusím procházet dál a ºe mohu p°ejít na rozbordal²ího slova na °ádku. Pokud by dané slovo ve v¥t¥ nebylo nalezeno, nastavil bychdané v¥t¥ penále a p°i£etl tak do její vzdálenosti hodnotu 5.

Nakonec v²echny v¥ty se°adím v závislosti na jejich celkové váze a vrátím je jakoseznam predikovaných frází £i v¥t.

• Metoda VahaSlovnichDruhuAZabarveni()

Tato metoda p°ijímá jako parametr seznam jiº napsaných slov. Tato slova pos-tupn¥ projde a zjistí stav jiº napsaných slovních druh·. Tedy jestli jiº ve v¥t¥je obsaºen daný slovní druh. Slova doposud neuloºená ve slovníku ignoruji. Dáletaké vypo£ítám celkovou hodnotu zabarvení napsané v¥ty. Kdyº narazím na slovozabarvené kladn¥, navý²ím celkovou hodnotu zabarvení v¥ty o jedni£ku. Pokudnarazím na slovo záporné, sníºím celkovou hodnotu zabarvení v¥ty o jedni£ku.Nakonec projedu v²echna slova v systémovém slovníku a u kaºdého tohoto slovana základ¥ p°edchozích zji²t¥ní upravím do£asnou váhu.

• Metoda NaucZeSouboru()

Page 72: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

56 KAPITOLA 4. REALIZACE

Metoda, jak jiº její název napovídá, u£í systémový slovník z textového souboru.Metoda si na£te textový soubor a £te jej do konce. Tento text nejprve separujido jednotlivých v¥t, a aº poté kaºdou v¥tu separuji do jednotlivých slov. Dáletato slova procházím a u kaºdého zji²´uji, zda kon£í na £íslo, jestliºe ano, po-tom je slovo klasi�kováno n¥kterým ze slovních druh·. Dále je pot°eba toto £ísloodstranit. Poté zji²´uji, zda slovo neobsahuje je²t¥ p°íznak zabarvení, který hledámna po£átku kaºdého slova. Pokud slovo za£íná na znak "+", je klasi�kováno jakoslovo kladné. Pokud dané slovo za£íná na znak "-", je slovo klasi�kováno záporn¥.Op¥t je nutné tento znak odstranit. Nyní následuje metoda pro p°idání t¥chto slovdo systémového slovníku, £ili metoda PridatNoveSlovo(). Jako poslední v¥cí je zdenau£ení následných slov. K tomu slouºí metoda PridejNaslednaSlova(), která navstupu dostává seznam slov obsaºených v dané v¥t¥. Zde bylo d·leºité separovatslova jedné v¥ty od slov v¥ty druhé, aby nedo²lo k chybnému nau£ení následnéhoslova.

• Metoda PridejNaslednaSlova()

Na vstupu má metoda seznam slov tvo°ících práv¥ jednu v¥tu a u této posloupnostislov de�nuje následná slova. Metoda projede v²echna slova v seznamu po dvojicícha p°edchozímu slovu ukládá slovo následné. Pokud p°edchozí slovo jiº obsahovaloslovo následné, navý²ím u n¥j pouze £etnost.

4.3.4 T°ída SlovnikPouzivanychSlov

Tato t°ída slouºí k ukládání dat do XML souboru. T°ída XmlSerialization umí totiºdata ukládat pouze jako t°ídu celou. T°ída SlovnikPouzivanychSlov tedy de�nuje sez-nam generického typu List<SlovoZname>, ve kterém jsou uloºena v²echna slova systé-mového slovníku. Následná t°ída SlovnikPouzivanychSlovAVet pak de�nuje metodySave() a Load(), které ukládají/na£ítají tento seznam do/z XML souboru.

4.3.5 T°ída SlovnikVsechSlov

T°ída SlovnikVsechSlov reprezentuje slovník £eských slov. T°ída obsahuje dv¥ d·leºitémetody.

• Metoda NactiSlovnikCeskychSlov()

Tato metoda, jak jiº její název vypovídá, se stará o na£tení velkého slovníku do sez-namu typu System.Collections.Specialized.StringCollection. Tento typ jsem zvolilpro jeho výhodnost rychlého vyhledávání. �eský slovník, který na£ítám, je veliceobjemný, a proto bude t°eba rychlého vyhledávání.

Page 73: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.3. POPIS �E�ENÍ A VNIT�NÍ STRUKTURY KNIHOVNY 57

• Metoda ObsahujeCeskySlovnik()

Protoºe je tato metoda opravdu jednoduchá, je velice £asto vyuºívaná. Na vstupudostává slovo, které se systém chystá nau£it, a po této metod¥ vyºaduje informaci,zdali je toto slovo opravdu £eské a zdali se je má tedy v·bec u£it.

4.3.6 T°ída VetaZnama

Tato t°ída obdobn¥ jako t°ída SlovoZname popisuje jednotlivou v¥tu. Tato v¥ta jepopsána v £íslech, kdy kaºdé slovo obsahuje ident a posloupnost t¥chto £ísel tvo°í hotovouv¥tu. Dále je v¥ta vyjád°ena atributem i jako jeden textový °et¥zec. Obdobn¥ jako jsempo£ítal váhu u kaºdého slova, tak i zde po£ítám váhu u kaºdé v¥ty. Na základ¥ tohotoparametru jsou pak v¥ty °azeny a nabízeny v predik£ním seznamu uºivateli.

4.3.6.1 Výpo£et váhy v¥ty

Výpo£et váhy je provád¥n podle následujícího vzorce. �etnost pouºití dané v¥ty d¥límkonstantou, která této £etnosti ubere na významu. Výsledná váha je pak podíl vzdálenostidané v¥ty a jiº vyd¥lené £etnosti pouºití. Výsledné £íslo je následn¥ vynásobeno vysokoukonstantou pro lep²í testování a lad¥ní. Za zmínku stojí °íci, ºe u váhy slov platí, ºe £ímvy²²í váhu mají, tím spí²e je nabízím. U v¥t je toto °e²eno p°esn¥ obrácen¥. Tedy £ímvy²²í váhu v¥ta má, tím mén¥ pravd¥podobn¥ji ji nabídnu v predikovaném seznamu.

• cv = celková váha

• v = vzdálenost

• cp = celková £etnost pouºití

cv = (100 ∗ (vz/cp3));

4.3.7 T°ída VetyZname

Tato t°ída reprezentuje seznam v¥t, £ili seznam instancí t°ídy VetaZnama. T°ídadisponuje dv¥ma d·leºitými metodami.

• Metoda UlozVetu()

Tato metoda na vstupu p°ijímá seznam £ísel. Metoda vytvo°í novou instanci t°ídyVetaZnama a tomuto objektu uloºí tuto £íselnou reprezentaci dané v¥ty. Dálemetoda navý²í £etnost pouºití dané v¥ty o jedni£ku.

Page 74: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

58 KAPITOLA 4. REALIZACE

• Metoda VratVsechnyVety()

Metoda jednodu²e vrátí v²echny uloºené v¥ty, které se nacházejí v systémovémslovníku v¥t.

4.3.8 T°ída Hlavni

Jedná se o páte°ní t°ídu celé aplikace. T°ída zde vytvá°í instance t°íd SlovnikVsechSlova SlovnikPouzivanychSlovAVet. Vytvá°í zde také instanci t°ídy Thread slouºící kpredikci slov a v¥t na pozadí. Spu²t¥ní tohoto vlákna budu volat sám prost°ednictvímsemaforu, £ili nepovoluji vláknu, aby se spou²t¥lo automaticky. Pokud tedy ud¥lámd·leºitou zm¥nu, spustím proces vlákna, který tuto zm¥nu zpracuje. T°ída obsahujed·leºité metody.

• Metoda InicializujAplikaci()

Tato metoda je spu²t¥na bezprost°edn¥ p°i spu²t¥ní aplikace. Zde nastavuji jménopro�lu, následn¥ na£ítám £eský slovník do systému a spou²tím metodu Load()t°ídy SlovnikPouzivanychSlovAVet. Po tomto kroku de�nuji a spou²tím vlá-kno.

• Metoda ZmenPro�l()

Metoda, jak její název napovídá, slouºící ke zm¥n¥ pro�lu a p°ijímá jako jedinýparametr práv¥ název m¥n¥ného pro�lu. Pokud je na za£átku spln¥na podmínka,která se ptá, zda název zadaného m¥n¥ného pro�lu jiº existuje, pak pokra£ujemetoda dál. Op¥t spustím metodu Load t°ídy SlovnikPouzivanychSlovAVetpro na£tení pouºívaného slovníku a de�nuji a spou²tím vlákno.

• Metoda ZpracujVetu()

Metoda pro zpracování dané v¥ty. Tato v¥ta je této metod¥ p°edána jako parametrv podob¥ seznamu jednotlivých slov dané v¥ty. Tato slova postupn¥ procházím ap°idávám je do systémového slovníku £asto psaných slov pomocí metody Pridat-NoveSlovo(). Dále si nade�nuji seznam typu List<UInt16> a do n¥j postupn¥naskládám £íselnou reprezentaci slov dané zpracovávané v¥ty. Tuto v¥tu v £íselnéreprezentaci následn¥ uloºím. Nakonec nau£ím následná slova této v¥ty.

private void ZpracujVetu(List<string> slovaVety)

{

// definice listu reprezentujícího v¥tu v £íslech

Page 75: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

4.4. OMEZENÍ APLIKACE PRO PREDIKCI TEXTU 59

List<UInt16> vetaJakoCisla = new List<UInt16>();

// p°idáme slova do slovníku £asto pouºívaných slov

foreach(string slovo in slovaVety)

{

// p°idá (nau£í) slovo do systémového slovníku

slovnikPouzivanychSlovAVet.PridatNoveSlovo(slovo, false);

// pokud se dané slovo nep°idalo do slovníku,

// tak nep°idávám ani jeho ident

if (slovnikPouzivanychSlovAVet.dictionary.ContainsKey(slovo))

{

vetaJakoCisla.Add(slovnikPouzivanychSlovAVet.

dictionary[slovo].ident);

}

}

// uloºím v¥tu, pokud se skládá z více jak jednoho slova

if (vetaJakoCisla.Count > 1)

{

slovnikPouzivanychSlovAVet.vetyZname.UlozVetu(vetaJakoCisla);

}

// p°idáme následná slova

slovnikPouzivanychSlovAVet.PridejNaslednaSlova(slovaVety);

}

4.3.9 T°ída ZpracovaniSlov

T°ída obsahuje seznamy slov pro zpracování a p°íznaky, zda v¥ta jiº byla dopsána £inikoliv. Tyto seznamy a p°íznaky vyuºívá vlákno. Dál²í t°ídou je t°ída SlovoProZpra-covani, která reprezentuje kaºdé slovo na zpracování.

4.3.10 T°ída Pro�l

T°ída má na starost nastavení, zm¥nu a vytvo°ení pro�l·. T°ída uchovává název pro�lua základní cestu do sloºky, kde se projekt nachází. Dále je zde metoda, která vytvá°íadresá° daného pro�lu a metoda, která zji²´uje, zda daný pro�l existuje.

4.4 Omezení aplikace pro predikci textu

Systém má jediné omezení a to takové, ºe pokud uºivatel napí²e na vstup nástroje sloºe-nou v¥tu, nástroj nebude schopný tuto v¥tu nau£it rozd¥lenou v závislosti na £árkách

Page 76: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

60 KAPITOLA 4. REALIZACE

a te£kách, ale nau£í celý textový °et¥zec, který mu byl p°edán. Systém v²ak kontroluje,zda daná slova, ze kterých je v¥ta sloºena, jsou slova správn¥ napsaná. Pokud ne, systémje neuloºí.

Na obhajobu tohoto omezení bych rád zmínil, ºe cílová skupina bude nástroj pouºí-vat zejména pro sd¥lení informace a ºe tedy na kvalitu v¥ty nebude kladen p°íli² vysokýd·raz. P°i návrhu GUI (Graphical User Interface) ani znak £árky £i te£ky neuvaºuji.

Pokud se systém nechá u£it z textového souboru, který pochopiteln¥ £árky a te£kyobsahuje, vezme toto systém v úvahu a text do jednotlivých v¥t rozd¥lí a teprve z nichse nau£í. Nejd·leºit¥j²í vlastnost, která by p°i ignoraci tohoto postupu rozd¥lení textuna jednotlivé v¥ty utrp¥la, je vlastnost následných slov.

Page 77: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 5

Manuál aplikace pro predikci textu

5.1 Demonstra£ní aplikace

Tak jak obrázek 5.1 umíst¥ný níºe ukazuje, nachází se v levém horním rohu demo aplikacenabídka Soubor a nabídka Nápov¥da. Nabídka Soubor dále obsahuje dal²í moºnosti,které je moºné s aplikací provád¥t. Tyto moºnosti jsou:

• Nau£it ze souboru - slouºí k nau£ení systémového slovníku slov z textového souboru,

• Resetuj slovník - slouºí k resetování slovníku do p·vodního iniciálního stavu, tzn.v²echna jiº nau£ená slova budou vymazána a systém se nau£í pouze slova základní,

• Odstra¬ vlastnosti - odstraní ve²keré vlastnosti ze systémového slovníku slov,

• Zm¥¬ pro�l - umoº¬uje zm¥nit uºivatelský pro�l p°ímo za b¥hu aplikace,

• Konec - ukon£í demo aplikaci a uloºí v²echna nov¥ nau£ená slova a v¥ty do XMLsoubor·.

Nabídka Nápov¥da obsahuje pouze dv¥ podnabídky:

• Jak aplikaci pouºívat - jedná se o krátké vysv¥tlení, jak danou aplikaci pouºívat,

• O programu - ukazuje název aplikace, jeho autora a ú£el, pro jaký byla aplikacevytvo°ena.

Pod t¥mito nabídkami se nachází polí£ko ²edé barvy zobrazující jiº napsané v¥ty.Tyto v¥ty se zde °adí vzestupn¥ podle data odeslání. Toto polí£ko je jakousi náhradouza opravdové výstupní za°ízení, jako m·ºe být nap°íklad obrazovka. Pod ním se nacházídal²í polí£ko tentokrát bílé barvy, do n¥hoº uºivatel pí²e text na jehoº základ¥ se budeprovád¥t predikce slov a v¥t. Jedná se tedy o hlavní vstup celé aplikace.

61

Page 78: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

62 KAPITOLA 5. MANUÁL APLIKACE PRO PREDIKCI TEXTU

Pod tímto vstupem se nacházejí dv¥ tabulky. První interpretuje predikovaný sez-nam nabízených slov a druhá interpretuje seznam predikovaných v¥t. Jak je vid¥t zobrázku 5.1, kaºdá tato tabulka popisuje slovo a v¥tu více sloupci. Jedná se o jednotlivévlastnosti na jejichº hodnotách se provádí výpo£et výsledné váhy. Podle této váhy sepak predikuje seznam nejvhodn¥j²ích kandidát·.

Pod t¥mito tabulkami se nachází informa£ní li²ta, která ukazuje poslední úsp¥²n¥provedenou akci.

Uºivatel do vstupu aplikace za£ne psát text pomocí n¥jakého vstupního za°ízenía výstup této aplikace by m¥l v tomto psaní uºivateli být nápomocen. Nabídne mudva predikované seznamy. V prvním seznamu budou predikovaná slova a to bu¤ slovanásledná, a nebo slova dokon£ující dané nedopsané slovo. Seznam predikovaných frází£i v¥t se bude uºivateli nabízet aº po nau£ení se t¥chto v¥t z napsaných v¥t uºivatelem.

5.2 Jak se aplikace u£í

Systém se bude u£it z napsaného textu uºivatelem ve chvíli, kdy uºivatel ode²le dopsanouv¥tu na výstupní za°ízení. Toto výstupní za°ízení m·ºe být nap°íklad n¥jaká obrazovka.Informaci o tom, ºe uºivatel dopsal v¥tu, sd¥lí systému uºivatel pomocí klávesy Enter.

Ve chvíli, kdy uºivatel potvrdí, ºe dopsal v¥tu, se tato v¥ta vytiskne na výstup asystém se z ní nau£í. Bude se u£it jak jednotlivá slova a jejich následná slova, tak celouv¥tu. Tato slova a celou v¥tu si uloºí do systémového slovníku. P°i dal²ím psaní novév¥ty jsou uºivateli tyto nov¥ nau£ené informace k dispozici.

Systém je také moºné nau£it z textového souboru. Pokud má daný uºivatel kdispozici textový soubor, který sám n¥kdy napsal, a nebo tento textový soubor obsahujetext, který je uºivateli blízký, pak se systém nechá nau£it pomocí tohoto souboru a topomocí nabídky Soubor -> Nau£it ze souboru. Slova tohoto textového souboru je takémoºné je²t¥ dále klasi�kovat a to bu¤ zabarvením, a nebo slovním druhem. Pokudchceme nap°íklad klasi�kovat slovo "krásný", pak jako kladné zabarvení m·ºeme slovooklasi�kovat po£áte£ním symbolem "+". Výsledné kladn¥ oklasi�kované slovo by tedyvypadalo "+krásný". Pokud bychom dané slovo cht¥li oklasi�kovat je²t¥ slovním druhemp°ídavného jména, pak na konec daného slova vloºíme £íselné vyjád°ení slovního druhu.Klasi�kované slovo slovním druhem p°ídavného jména a kladným zabarvením by tedyvypadalo "+krásný2".

5.3 Dal²í schopnosti

Systém je moºné dále resetovat do základního stavu pomocí nabídky Soubor -> Resetujslovník. Resetování systému vymaºe ve²kerá nau£ená slova i v¥ty a systém nau£í pouzezákladní sloví£ka.

Page 79: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

5.4. UKÁZKA HOTOVÉ DEMO APLIKACE 63

Nebo je moºné odstranit ve²keré vlastnosti u v²ech slov pomocí nabídky Soubor-> Odstra¬ vlastnosti. �ili slova z·stanou uloºená, ale jejich £etnosti, následná slova,zabarvení, slovní druh a datum posledního pouºití budou vymazány.

V neposlední °ad¥ je moºné zm¥nit pro�l na jiný existující pro�l a to pomocínabídky Soubor -> Zm¥¬ pro�l.

Ukon£ení aplikace a uloºení aktuálního stavu se skrývá pod nabídkou Soubor ->Konec.

5.4 Ukázka hotové demo aplikace

Obrázek 5.1 ukazuje testovací rozhraní hotové aplikace. Na obrázku je moºné vid¥t jaknabídku predikovaných slov, tak nabídku predikovaných v¥t.

Page 80: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

64 KAPITOLA 5. MANUÁL APLIKACE PRO PREDIKCI TEXTU

Obrázek 5.1: Ukázka hotové aplikace.

Page 81: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 6

Testování

V této kapitole se pokusím n¥jakým zp·sobem otestovat vytvo°enou aplikaci. Pokusímse zjistit, jestli predik£ní systém skute£n¥ pracuje a do jaké míry je jeho £innost efektivnía zda napomáhá uºivateli p°i psaní textu.

6.1 Zp·sob, pr·b¥h a výsledky testování

Nejprve vyzkou²ím testovat s prázdným systémovým slovníkem £asto pouºívaných slova v¥t. Poté systém nau£ím ze základního slovníku n¥kolik slov a pokusím se napsat danév¥ty (testovací odstavec) znovu. Dále vyzkou²ím k tomuto základnímu slovníku dou£itslova z textového souboru, který není p°íli² podobný s psaným odstavcem. Systémusamoz°ejm¥ dovolím se u£it z jiº napsaných v¥t. Testovat rychlost napsání testovacíhoodstavce nemá p°íli² význam, nebo´ cílová skupina uºivatel· je práv¥ po fyzické stráncepostiºená. Testovat tedy budu minimální pot°ebný po£et stisk· klávesy a vºdy, kdyº tobude moºné, vyuºiji predikované nabídky. Kaºdý stisk jednoho znaku klávesnice a kaºdýklik do predik£ní nabídky si p°ipo£ítám a následn¥ výsledky zobrazím.

Testovat budu na jednom testovacím odstavci. Bude se jednat o text o celkovémpo£tu znak· (v£etn¥ mezer) 685. Základní slovník, kterým nau£ím systém je následující:

a ale jak kde kdy jak proc protoºe nebo nebo´ chci nechci umím bolí nebolí k°e£

rychle pomale u£it nau£it pracovat utíkat b¥hat skákat mám nemám mít nemít milovat

klamat lámat zlomit umím mohu nemohu

• Test £íslo 1

Prázdný slovník slov a v¥t. Celkový po£et stisk· klávesy: 621.

• Test £íslo 2

Slovník slov nau£en pouze základními sloví£ky. Celkový po£et stisk· klávesy: 605.

65

Page 82: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

66 KAPITOLA 6. TESTOVÁNÍ

• Test £íslo 3

Slovník slov nau£en základními sloví£ky a dále je nau£en z textového souboru,který není p°íli² podobný s psaným odstavcem. Celkový po£et stisk· klávesy: 560.

• Test £íslo 4

Slovník slov nau£en základními sloví£ky a dále je nau£en z textového souboru,který obsahuje p°ímo n¥kolik v¥t z daného odstavce. Celkový po£et stisk· klávesy:423.

Testovací odstavec, který jsem psal je následující. V n¥m jsou také vyzna£eny v¥ty,které jsem nau£il systém v testu £íslo 4.

Slovem p°íb¥h obvykle ozna£ujeme dv¥ r·zné i kdyº navzájem propojené záleºi-tosti. V hlavním významu p°íb¥h znamená n¥co, co se opravdu stalo, ozna£ujeme jímn¥jakou reálnou událost nebo i skupinu navzájem propojených d¥j· a událostí. N¥jakýskute£ný d¥j, který m¥l sv·j jasný po£átek i z°etelný konec, n¥co, co se opravdu stalo. Usmy²lených p°íb¥h· se m·ºe jednat jak o utilitární jednání n¥jakého jednotlivce, který sesnaºí smy²leným p°íb¥hem zatajit, zakrýt £i vyt¥snit skute£ný pr·b¥h událostí, kterýje mu z n¥jakých d·vod· nep°íjemný (smy²lenka, �kce, leº). M·ºe se ale jednat i ospole£enskou manipulaci, úmyslný ºert, um¥lecký zám¥r, um¥lecký popis skute£nostiapod.

6.1.1 Zhodnocení testování

Jak je z°ejmé ze sniºujících se pot°ebných po£t· stisk· klávesy k napsání daného odstavce,aplikace pracuje správn¥. Co se jednotlivých test· tý£e, jsou výsledky celkových pot°eb-ných stisk· kláves samoz°ejm¥ rozdílné, a to postupn¥ klesající. Obrázek 6.1 ukazujena grafu, jak si dané testy vedly. Osa y popisuje celkový po£et pot°ebných stisk· nanapsání daného testovacího odstavce. Osa x pak popisuje po£et vyuºitých nabídek slov£i v¥t z predikovaného seznamu.

Jak je vid¥t z grafu, nejmén¥ nabídek z predikovaného seznamu nabídl test £íslo 1.To proto, ºe na po£átku nem¥l ºádný základní slovník nau£ený a za£al se u£it postupn¥s psaním textu. M¥lo by být také patrné, a to nejenom na testu £íslo 1, ºe klesajícík°ivky by m¥ly stále více klesat. Znamená to, ºe systém má nau£ených více slov, a tudíºby m¥l poskytovat více vhodných nabídek. Skute£nost, ºe se modrá (plná) k°ivka, tedyk°ivka testu £íslo 1, dostala pod k°ivku £ervenou (prokládaná) a zelenou (£árkovaná)znamená pouze to, ºe je nejkrat²í a £ili není vykreslena aº do konce.

Test £íslo 2 byl jiº více nau£ený v prvotní fázi, a tudíº celkov¥ poskytl více nabídekz predik£ního listu slov a celkov¥ tak oproti testu £íslo 1 sníºil celkový pot°ebný po£et

Page 83: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

6.1. ZP�SOB, PR�B�H A VÝSLEDKY TESTOVÁNÍ 67

Obrázek 6.1: Výsledky testování.

úhoz·. Test £íslo 3 byl nau£ený je²t¥ více, a tudíº se projevil jako je²t¥ lep²í. �eho jsemsi v²ak v²iml bylo, ºe n¥kdy mén¥ znamená více. Kdyº bylo nau£eno více slov, museljsem n¥kdy pro vhodné sloví£ko napsat více po£áte£ních znak·, aby se v predik£nímlistu dostalo do první desítky. Na druhou stranu v²ak bylo slov nabízeno více, jak jevid¥t na grafu.

Nejefektivn¥j²ím je samoz°ejm¥ test £íslo 4, nebo´ znal jiº velkou slovní zásobu, ak tomu se nechal nau£it p°ímo 3 celé v¥ty, které následn¥ byly také pouºity. Díky tomutobyla u²et°ena spousta úhoz·. Na grafu je z°eteln¥ vid¥t, kdy k dané nabídce t¥chto 3v¥t do²lo a do jaké míry do²lo k u²et°ení po£tu úhoz·. První v¥ta byla nabídnuta jiºjako 3. v po°adí, 2. v¥ta jako 11. v po°adí a v¥ta 3. jako 17. v po°adí.

Dále by bylo dobré zmínit, do jaké míry do²lo k u²et°ení celkového po£tu úhoz·.Toto ukazuje tabulka 6.1.

Test Celkový po£et znak· Po£et pot°ebných úhoz· Po£et u²et°ených úhoz·

�íslo 1 685 621 64

�íslo 2 685 605 80

�íslo 3 685 560 125

�íslo 4 685 423 262

Tabulka 6.1: Zhodnocení výsledk· testování.

Poslední idealistický výsledek nám celkový po£et pot°ebných úhoz· sniºuje aº 2,6krát.

Nakonec bych podtrhl, ºe nejefektivn¥j²í vlastností pro predikci následných £ipráv¥ psaných slov je práv¥ vlastnost následná slova. Nejmén¥ efektní je pak vlastnost

Page 84: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

68 KAPITOLA 6. TESTOVÁNÍ

zabarvení slova a slovní druh. Tyto vlastnosti by byly více efektivní, kdyby se systémnechal nau£it vhodn¥ oklasi�kovaným textem a následn¥ psaný text by byl spí²e zabar-vený kladn¥ £i záporn¥. Slovní druhy by byly nejvíce efektivní, kdyby se psané v¥tyskládaly vºdy z práv¥ jednoho podstatného jména, jednoho p°ídavného jména a jednohoslovesa. Nic mén¥ ob¥ tyto vlastnosti byly p°i testováni n¥kolikrát vyuºity.

6.2 Srovnání s existujícími °e²eními

Pro srovnání jsem vybral dv¥ °e²ení, která jsou uvedena v £ásti existující implementace.Jedná se o aplikaci Dasher a Read & Write GOLD.

Jak ale porovnat moji aplikaci s t¥mito docela odli²nými programy? Nejv¥t²ímproblémem je jazyk, nad kterým byly ob¥ dv¥ aplikace tvo°eny. Jedná se o angli£t-inu. Svoji aplikaci mám postavenou nad £eským jazykem. Co se tý£e programu Dasher,podporuje spoustu jazyk· a mezi nimi i £e²tinu. Oba dva programy byly v²ak implemen-továny pro jiný typ cílové skupiny uºivatel·. Program Dasher vyºaduje uºivatele, kterýje schopný reagovat na rychlou odezvu. Naopak má aplikace v·bec nevyºaduje rychlouodezvu uºivatele, a to p°edev²ím z d·vodu fyzického postiºení cílové skupiny uºivatel·mé aplikace.

Byla snaha srovnat svoji aplikaci s t¥mito programy, ale jak se zmi¬uji vý²e, zjistilyse rozdílnosti, kv·li kterým nejsem schopen ú£eln¥ porovnat svoji aplikaci s aplikacemiDasher a Read & Write GOLD za b¥hu £i podle rychlosti psaní. Proto provedu srovnáníalespo¬ z pohledu výhod a nevýhod jednotlivých °e²ení. Toto srovnání ukazuje tabulka6.2.

Page 85: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

6.2. SROVNÁNÍ S EXISTUJÍCÍMI �E�ENÍMI 69

Dasher Read & Write GOLD Má aplikace

Výhody Nevýhody Výhody Nevýhody Výhody Nevýhody

�iroká ²kálamoºnostíovládání.Spoustajazyk·v£etn¥£e²tiny.

Uºivatelmusí pos-tupovatpomalu anesp¥chat.Nenabízípredikciv¥t.

�irokáspoustadal²íchaplikací.

Nenabízípredikciv¥t.

Umoº¬ujepredikcislov i v¥ta k tétopredikcivyuºíváspoustuvlastností.

Pokud novéslovo nenív £eskémjazyce,neuloºí se.

ZajímavéGUI, psanítextup°ipomínáhraní hry.

Pomalépsaní v¥t,uºiva-tel musídoslovavyhledávatpísmenka.

Barevnéodli²ení vícepravd¥podob-ných slov.Moºnost£tenínabízenýchslov.

Pouzeangli£tina.

Nenutíuºivatelepsát rychle£i naopakpomalu.Toto temposi volí uºi-vatel sám.�e²tina.

P°i velkéspoust¥slov v sys-témovémslovníkudochází kezpomalenípredikce.

Tabulka 6.2: Výhody a nevýhody jednotlivých °e²ení.

Page 86: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

70 KAPITOLA 6. TESTOVÁNÍ

Page 87: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 7

Záv¥r

Cílem této diplomové práce bylo navrhnout a implementovat nástroj pro predikci slov,frází £i £ástí v¥t. Hlavním ú£elem tohoto nástroje by tedy m¥lo být zjednodu²ení azrychlení psaní textu. Nástroj by m¥l být vhodný pro cílovou skupinu uºivatel·, kte°ímají omezenou schopnost pohybu a reakce. Dále by se m¥l tento nástroj u£it z textunapsaného uºivatelem. Dal²ím cílem pak bylo také navrhnout velmi jednodu²e vhodnéuºivatelské za°ízení.

Implementace zapo£ala nejd°íve knihovní £ástí (aplika£ní) a aº následn¥ návrhema implementací testovacího GUI (Graphical User Interface). Tvorba knihovní £ásti za-£ala vytvo°ením t°ídy de�nující slovo. Poté na£tením velkého slovníku £eských slova moºností vyhledávat zadaná slova v tomto velkém slovníku na základ¥ shodnostipo£áte£ních znak·. Postupn¥ se p°ipojovaly dal²í vlastnosti pro predikci, a to v£etn¥predikce v¥t, a tak vznikl nástroj, který, jak sám pevn¥ v¥°ím, bude vyuºitý lidmi,kterým nemalou m¥rou pom·ºe p°i psaní textu.

Práce vý²e zmín¥né cíle splnila. Navrhl jsem a implementoval nástroj, který nazáklad¥ uºivatelského vstupu dokáºe predikovat podle nejr·zn¥j²ích vlastností pom¥rn¥efektivn¥ slova rozepsaná £i slova následná. Pokud systém jiº má n¥které v¥ty nau£enéod uºivatele, pak po napsání dvou a více slov dokáºe predikovat i tyto v¥ty. Nástroj seu£í na základ¥ vstupního textu, navíc se nástroj nechá nau£it i z textového souboru.

V kapitole Testování jsem zjistil, ºe nástroj je schopný u²et°it danému uºivatelitém¥° aº jednu t°etinu pot°ebných úhoz·. Z tohoto vyplývá, ºe nástroj je efektivní a ºeskute£n¥ usnad¬uje a urychluje psaní.

Co se tý£e návrhu GUI (Graphical User Interface), vyuºil jsem znalosti, ºe spoust¥hendikepovaným lidem, kte°í nejsou schopni psát v²emi deseti, nevyhovuje klasické us-po°ádání klávesnice, ale spí²e preferují se°azení znak· podle abecedy. Do tohoto návrhujsem vloºil pouze znaky pot°ebné k napsání jednoduchých v¥t s moºností pouºití £íslic.Dal²í tla£ítka jsou pak ta, která ovládají systém.

71

Page 88: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

72 KAPITOLA 7. ZÁV�R

Práce na tomto projektu byla pro m¥ zajímavou a p°ínosnou. Díky této práci jsemsi dostate£n¥ osvojil programovací jazyk C#.

Na práci je moºné v budoucnu zdokonalit výpo£et váhy u predikce slov a v¥t. Byloby vhodné v¥novat nemálo £asu testování a up°esnit nastavení konstant, které danoupredikci ovliv¬ují. I kdyº je výsledek práce uspokojivý, tak se p°i implementaci objevilaspousta nápad·, kterými by se daná problematika samoz°ejm¥ nechala dále vylep²ovat.

Page 89: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Literatura

[1] Predikce textu � obecn¥ o predikci textu.http://en.wikipedia.org/wiki/Predictive_text#cite_note-1.

[2] Dokon£ování slov � obecn¥ o systémech s podporou dokon£ování slov.http://en.wikipedia.org/wiki/Word_completion.

[3] Dokon£ování frází a v¥t � obecn¥ o systémech s podporou dokon£ování frází a v¥t.http://en.wikipedia.org/wiki/Line_completion.

[4] Dasher � popis programu.http://en.wikipedia.org/wiki/Dasher/, stav z 15. 2. 2011.

[5] Dasher � podrobný popis funk£nosti programu.http://library.gnome.org/users/dasher/stable/basics.html.en.

[6] David J. Ward, Alan F. Blackwell and David J.C. MacKay. Dasher - a DataEntry Interface Using Continuous Gestures and Language Models. Cavendish and

Computer Laboratory, Cambridge.

[7] Byron Knoll. Text Prediction and Classi�cation Using String Matching. Department

of Computer Science, University of British Columbia.

[8] Read & Write � popis funk£nosti programu.http://www.synapseadaptive.com/texthelp/read&write_gold/.

[9] ClaroRead � popis funk£nosti programu.http://help.clarodownloads.com/manuals/ClaroRead-5.5-en-gb.pdf.

[10] T9 � popis funk£nosti programu.http://en.wikipedia.org/wiki/T9_(predictive_text).

[11] Slovní druhy � slovní druhy v lingvistice.http://cs.wikipedia.org/wiki/Slovn%C3%AD_druh.

73

Page 90: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

74 LITERATURA

Page 91: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 8

Seznam pouºitých zkratek

GUI Graphical User Interface

PPM Prediction by Partial Match

KMP Knuth-Morris-Pratt Algorithmus

R&W Read & Write GOLD Program

SMS Short Message Service

URL Uniform Resource Locator

PDF Portable Document Format

CD Compact Disc

75

Page 92: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

76 KAPITOLA 8. SEZNAM POU�ITÝCH ZKRATEK

Page 93: Moºnosti predikce textu p°i psaní osobou s omezenou … · 2011. 9. 2. · tyto systémy nazývány jako 'u£ící se' systém.y 1.2 Historie predikce textu Predikce textu z telefonní

Kapitola 9

Obsah p°iloºeného CD

Na p°iloºeném CD (Compact Disc) nosi£i je uloºena sepsaná diplomová práce ve formátuPDF (Portable Document Format) a implementovaná diplomová práce. Dal²í informaceposkytne vedoucí práce.

Obrázek 9.1: Obsah p°iloºeného CD

77