SLIDE 2 2
Recognition results Recognizer Architecture
88 8 68226357 4 44 61 5757 23 92 31 51 9 4720 711252 8 79 13 53 18 79 2857 6
… … …
13 81 8 2 14 3 1717 5 7 43 90 7 16 57 914415 Output Matrix dog 68 clog 57 dug 51 doom 42 divvy 37
35 cloy 34 doxy 29 client 22 dozy 13 Ink Segments Top 10 List
d 00 a 00 b 00 c 00
a 73 l 07 t 5 g 68 t 8 b 6
g 57 t 12
TDNN
a b d
a b t t c l
t Lexicon e a
… … … … …
Beam Search a b d e g h n
5 3 90 12 4 14 7
Slide from Jay Pittman, Microsoft
Recognizer Training
Collect large set of training data Samples of known inputs that can be
used to set “weights” in reco engine
Needed to build a recognizer
Dictionary Language samples
Commercial recognizers based on
massive data sets
Tablet PC Recognition API
Basic idea:
Ink In, Text Out
Recognition Code I
private Recognizers recognizers; private Recognizer recognizer; public Form1() { InitializeComponent(); this.inkCollector = new InkCollector(this.inkPanel.Handle); this.inkCollector.Enabled = true; this.recognizers = new Recognizers(); this.recognizer = recognizers.GetDefaultRecognizer(); }
Recognition Code II
private void OnRecoClick(object sender, EventArgs e) { RecognizerContext recoContext = this.recognizer.CreateRecognizerContext(); recoContext.Factoid = GetFactoid(); recoContext.Strokes = this.inkCollector.Ink.Strokes; recoContext.EndInkInput(); RecognitionStatus recoStatus; RecognitionResult recoResult = recoContext.Recognize(out recoStatus); if (recoStatus != RecognitionStatus.NoError) return; string result = recoResult.TopString; RecognitionAlternate topAlt = recoResult.TopAlternate;