Introduction

The overall goal of this project is to build a word recognizer for American Sign Language video sequences, demonstrating the power of probabalistic models. In particular, this project employs hidden Markov models (HMM's) to analyze a series of measurements taken from videos of American Sign Language (ASL) collected for research (see the RWTH-BOSTON-104 Database). In this video, the right-hand x and y locations are plotted as the speaker signs the sentence. ASLR demo

The raw data, train, and test sets are pre-defined. You will derive a variety of feature sets (explored in Part 1), as well as implement three different model selection criterion to determine the optimal number of hidden states for each word model (explored in Part 2). Finally, in Part 3 you will implement the recognizer and compare the effects the different combinations of feature sets and model selection criteria.

At the end of each Part, complete the submission cells with implementations, answer all questions, and pass the unit tests. Then submit the completed notebook for review!

PART 1: Data

Features Tutorial

Load the initial database

A data handler designed for this database is provided in the student codebase as the AslDb class in the asl_data module. This handler creates the initial pandas dataframe from the corpus of data included in the data directory as well as dictionaries suitable for extracting data in a format friendly to the hmmlearn library. We'll use those to create models in Part 2.

To start, let's set up the initial database and select an example set of features for the training set. At the end of Part 1, you will create additional feature sets for experimentation.

In [1]:
import numpy as np
import pandas as pd
from asl_data import AslDb


asl = AslDb() # initializes the database
asl.df.head() # displays the first five rows of the asl database, indexed by video and frame
Out[1]:
left-x left-y right-x right-y nose-x nose-y speaker
video frame
98 0 149 181 170 175 161 62 woman-1
1 149 181 170 175 161 62 woman-1
2 149 181 170 175 161 62 woman-1
3 149 181 170 175 161 62 woman-1
4 149 181 170 175 161 62 woman-1
In [2]:
asl.df.ix[98,1]  # look at the data available for an individual frame
Out[2]:
left-x         149
left-y         181
right-x        170
right-y        175
nose-x         161
nose-y          62
speaker    woman-1
Name: (98, 1), dtype: object

The frame represented by video 98, frame 1 is shown here: Video 98

Feature selection for training the model

The objective of feature selection when training a model is to choose the most relevant variables while keeping the model as simple as possible, thus reducing training time. We can use the raw features already provided or derive our own and add columns to the pandas dataframe asl.df for selection. As an example, in the next cell a feature named 'grnd-ry' is added. This feature is the difference between the right-hand y value and the nose y value, which serves as the "ground" right y value.

In [3]:
asl.df['grnd-ry'] = asl.df['right-y'] - asl.df['nose-y']
asl.df.head()  # the new feature 'grnd-ry' is now in the frames dictionary
Out[3]:
left-x left-y right-x right-y nose-x nose-y speaker grnd-ry
video frame
98 0 149 181 170 175 161 62 woman-1 113
1 149 181 170 175 161 62 woman-1 113
2 149 181 170 175 161 62 woman-1 113
3 149 181 170 175 161 62 woman-1 113
4 149 181 170 175 161 62 woman-1 113
Try it!
In [4]:
from asl_utils import test_features_tryit
# TODO add df columns for 'grnd-rx', 'grnd-ly', 'grnd-lx' representing differences between hand and nose locations
asl.df['grnd-rx'] = asl.df['right-x'] - asl.df['nose-x']
asl.df['grnd-ry'] = asl.df['right-y'] - asl.df['nose-y']
asl.df['grnd-lx'] = asl.df['left-x'] - asl.df['nose-x']
asl.df['grnd-ly'] = asl.df['left-y'] - asl.df['nose-y']

# test the code
test_features_tryit(asl)
asl.df sample
left-x left-y right-x right-y nose-x nose-y speaker grnd-ry grnd-rx grnd-lx grnd-ly
video frame
98 0 149 181 170 175 161 62 woman-1 113 9 -12 119
1 149 181 170 175 161 62 woman-1 113 9 -12 119
2 149 181 170 175 161 62 woman-1 113 9 -12 119
3 149 181 170 175 161 62 woman-1 113 9 -12 119
4 149 181 170 175 161 62 woman-1 113 9 -12 119
Out[4]:
Correct!
In [5]:
# collect the features into a list
features_ground = ['grnd-rx','grnd-ry','grnd-lx','grnd-ly']
 #show a single set of features for a given (video, frame) tuple
[asl.df.ix[98,1][v] for v in features_ground]
Out[5]:
[9, 113, -12, 119]
Build the training set

Now that we have a feature list defined, we can pass that list to the build_training method to collect the features for all the words in the training set. Each word in the training set has multiple examples from various videos. Below we can see the unique words that have been loaded into the training set:

In [6]:
training = asl.build_training(features_ground)
print("Training words: {}".format(training.words))
Training words: ['JOHN', 'WRITE', 'HOMEWORK', 'IX-1P', 'SEE', 'YESTERDAY', 'IX', 'LOVE', 'MARY', 'CAN', 'GO', 'GO1', 'FUTURE', 'GO2', 'PARTY', 'FUTURE1', 'HIT', 'BLAME', 'FRED', 'FISH', 'WONT', 'EAT', 'BUT', 'CHICKEN', 'VEGETABLE', 'CHINA', 'PEOPLE', 'PREFER', 'BROCCOLI', 'LIKE', 'LEAVE', 'SAY', 'BUY', 'HOUSE', 'KNOW', 'CORN', 'CORN1', 'THINK', 'NOT', 'PAST', 'LIVE', 'CHICAGO', 'CAR', 'SHOULD', 'DECIDE', 'VISIT', 'MOVIE', 'WANT', 'SELL', 'TOMORROW', 'NEXT-WEEK', 'NEW-YORK', 'LAST-WEEK', 'WILL', 'FINISH', 'ANN', 'READ', 'BOOK', 'CHOCOLATE', 'FIND', 'SOMETHING-ONE', 'POSS', 'BROTHER', 'ARRIVE', 'HERE', 'GIVE', 'MAN', 'NEW', 'COAT', 'WOMAN', 'GIVE1', 'HAVE', 'FRANK', 'BREAK-DOWN', 'SEARCH-FOR', 'WHO', 'WHAT', 'LEG', 'FRIEND', 'CANDY', 'BLUE', 'SUE', 'BUY1', 'STOLEN', 'OLD', 'STUDENT', 'VIDEOTAPE', 'BORROW', 'MOTHER', 'POTATO', 'TELL', 'BILL', 'THROW', 'APPLE', 'NAME', 'SHOOT', 'SAY-1P', 'SELF', 'GROUP', 'JANA', 'TOY1', 'MANY', 'TOY', 'ALL', 'BOY', 'TEACHER', 'GIRL', 'BOX', 'GIVE2', 'GIVE3', 'GET', 'PUTASIDE']

The training data in training is an object of class WordsData defined in the asl_data module. in addition to the words list, data can be accessed with the get_all_sequences, get_all_Xlengths, get_word_sequences, and get_word_Xlengths methods. We need the get_word_Xlengths method to train multiple sequences with the hmmlearn library. In the following example, notice that there are two lists; the first is a concatenation of all the sequences(the X portion) and the second is a list of the sequence lengths(the Lengths portion).

In [7]:
training.get_word_Xlengths('CHOCOLATE')
Out[7]:
(array([[-11,  48,   7, 120],
        [-11,  48,   8, 109],
        [ -8,  49,  11,  98],
        [ -7,  50,   7,  87],
        [ -4,  54,   7,  77],
        [ -4,  54,   6,  69],
        [ -4,  54,   6,  69],
        [-13,  52,   6,  69],
        [-13,  52,   6,  69],
        [ -8,  51,   6,  69],
        [ -8,  51,   6,  69],
        [ -8,  51,   6,  69],
        [ -8,  51,   6,  69],
        [ -8,  51,   6,  69],
        [-10,  59,   7,  71],
        [-15,  64,   9,  77],
        [-17,  75,  13,  81],
        [ -4,  48,  -4, 113],
        [ -2,  53,  -4, 113],
        [ -4,  55,   2,  98],
        [ -4,  58,   2,  98],
        [ -1,  59,   2,  89],
        [ -1,  59,  -1,  84],
        [ -1,  59,  -1,  84],
        [ -7,  63,  -1,  84],
        [ -7,  63,  -1,  84],
        [ -7,  63,   3,  83],
        [ -7,  63,   3,  83],
        [ -7,  63,   3,  83],
        [ -7,  63,   3,  83],
        [ -7,  63,   3,  83],
        [ -7,  63,   3,  83],
        [ -7,  63,   3,  83],
        [ -4,  70,   3,  83],
        [ -4,  70,   3,  83],
        [ -2,  73,   5,  90],
        [ -3,  79,  -4,  96],
        [-15,  98,  13, 135],
        [ -6,  93,  12, 128],
        [ -2,  89,  14, 118],
        [  5,  90,  10, 108],
        [  4,  86,   7, 105],
        [  4,  86,   7, 105],
        [  4,  86,  13, 100],
        [ -3,  82,  14,  96],
        [ -3,  82,  14,  96],
        [  6,  89,  16, 100],
        [  6,  89,  16, 100],
        [  7,  85,  17, 111]]), [17, 20, 12])
More feature sets

So far we have a simple feature set that is enough to get started modeling. However, we might get better results if we manipulate the raw values a bit more, so we will go ahead and set up some other options now for experimentation later. For example, we could normalize each speaker's range of motion with grouped statistics using Pandas stats functions and pandas groupby. Below is an example for finding the means of all speaker subgroups.

In [8]:
df_means = asl.df.groupby('speaker').mean()
df_means.columns
df_means['left-x']
Out[8]:
speaker
man-1      206.248203
woman-1    164.661438
woman-2    183.214509
Name: left-x, dtype: float64

To select a mean that matches by speaker, use the pandas map method:

In [9]:
asl.df['left-x-mean']= asl.df['speaker'].map(df_means['left-x'])
asl.df.sample(10)
Out[9]:
left-x left-y right-x right-y nose-x nose-y speaker grnd-ry grnd-rx grnd-lx grnd-ly left-x-mean
video frame
126 76 160 145 142 138 160 69 woman-1 69 -18 0 76 164.661438
37 16 155 188 149 92 170 61 woman-2 31 -21 -15 127 183.214509
191 31 209 239 162 90 173 64 man-1 26 -11 36 175 206.248203
116 53 216 184 144 106 169 62 man-1 44 -25 47 122 206.248203
25 18 154 186 181 181 172 61 woman-2 120 9 -18 125 183.214509
6 40 183 187 164 106 172 54 woman-2 52 -8 11 133 183.214509
69 133 177 205 163 196 170 59 woman-2 137 -7 7 146 183.214509
30 38 203 237 162 137 165 60 man-1 77 -3 38 177 206.248203
150 63 155 182 152 79 163 57 woman-1 22 -11 -8 125 164.661438
136 45 146 184 164 90 152 58 woman-1 32 12 -6 126 164.661438
Try it!
In [10]:
from asl_utils import test_std_tryit
# TODO Create a dataframe named `df_std` with standard deviations grouped by speaker
df_std = asl.df.groupby('speaker').std()


# test the code
test_std_tryit(df_std)
df_std
left-x left-y right-x right-y nose-x nose-y grnd-ry grnd-rx grnd-lx grnd-ly left-x-mean
speaker
man-1 15.154425 36.328485 18.901917 54.902340 6.654573 5.520045 53.487999 20.269032 15.080360 36.572749 0.0
woman-1 17.573442 26.594521 16.459943 34.667787 3.549392 3.538330 33.972660 16.764706 17.328941 27.117393 0.0
woman-2 15.388711 28.825025 14.890288 39.649111 4.099760 3.416167 39.128572 16.191324 15.050938 29.320655 0.0
Out[10]:
Correct!

Features Implementation Submission

Implement four feature sets and answer the question that follows.

  • normalized Cartesian coordinates

    • use mean and standard deviation statistics and the standard score equation to account for speakers with different heights and arm length
  • polar coordinates

    • calculate polar coordinates with Cartesian to polar equations
    • use the np.arctan2 function and swap the x and y axes to move the $0$ to $2\pi$ discontinuity to 12 o'clock instead of 3 o'clock; in other words, the normal break in radians value from $0$ to $2\pi$ occurs directly to the left of the speaker's nose, which may be in the signing area and interfere with results. By swapping the x and y axes, that discontinuity move to directly above the speaker's head, an area not generally used in signing.
  • delta difference

    • as described in Thad's lecture, use the difference in values between one frame and the next frames as features
    • pandas diff method and fillna method will be helpful for this one
  • custom features

    • These are your own design; combine techniques used above or come up with something else entirely. We look forward to seeing what you come up with! Some ideas to get you started:
In [11]:
# TODO add features for normalized by speaker values of left, right, x, y
# Name these 'norm-rx', 'norm-ry', 'norm-lx', and 'norm-ly'
# using Z-score scaling (X-Xmean)/Xstd
# http://sinhrks.hatenablog.com/entry/2015/06/18/221747
asl.df['left-y-mean']= asl.df['speaker'].map(df_means['left-y'])
asl.df['right-x-mean']= asl.df['speaker'].map(df_means['right-x'])
asl.df['right-y-mean']= asl.df['speaker'].map(df_means['right-y'])

asl.df['left-x-std']= asl.df['speaker'].map(df_std['left-x'])
asl.df['left-y-std']= asl.df['speaker'].map(df_std['left-y'])
asl.df['right-x-std']= asl.df['speaker'].map(df_std['right-x'])
asl.df['right-y-std']= asl.df['speaker'].map(df_std['right-y'])

asl.df['norm-rx'] = (asl.df['right-x'] - asl.df['right-x-mean']) / asl.df['right-x-std']
asl.df['norm-ry'] = (asl.df['right-y'] - asl.df['right-y-mean']) / asl.df['right-y-std']
asl.df['norm-lx'] = (asl.df['left-x'] - asl.df['left-x-mean']) / asl.df['left-x-std']
asl.df['norm-ly'] = (asl.df['left-y'] - asl.df['left-y-mean']) / asl.df['left-y-std']

features_norm = ['norm-rx', 'norm-ry', 'norm-lx','norm-ly']
asl.df.head()
Out[11]:
left-x left-y right-x right-y nose-x nose-y speaker grnd-ry grnd-rx grnd-lx ... right-x-mean right-y-mean left-x-std left-y-std right-x-std right-y-std norm-rx norm-ry norm-lx norm-ly
video frame
98 0 149 181 170 175 161 62 woman-1 113 9 -12 ... 151.017865 117.332462 17.573442 26.594521 16.459943 34.667787 1.153232 1.663433 -0.891199 0.741835
1 149 181 170 175 161 62 woman-1 113 9 -12 ... 151.017865 117.332462 17.573442 26.594521 16.459943 34.667787 1.153232 1.663433 -0.891199 0.741835
2 149 181 170 175 161 62 woman-1 113 9 -12 ... 151.017865 117.332462 17.573442 26.594521 16.459943 34.667787 1.153232 1.663433 -0.891199 0.741835
3 149 181 170 175 161 62 woman-1 113 9 -12 ... 151.017865 117.332462 17.573442 26.594521 16.459943 34.667787 1.153232 1.663433 -0.891199 0.741835
4 149 181 170 175 161 62 woman-1 113 9 -12 ... 151.017865 117.332462 17.573442 26.594521 16.459943 34.667787 1.153232 1.663433 -0.891199 0.741835

5 rows × 23 columns

In [12]:
# TODO add features for polar coordinate values where the nose is the origin
# Name these 'polar-rr', 'polar-rtheta', 'polar-lr', and 'polar-ltheta'
# Note that 'polar-rr' and 'polar-rtheta' refer to the radius and angle

asl.df['polar-rr'] = np.sqrt(asl.df['grnd-rx'] * asl.df['grnd-rx'] + asl.df['grnd-ry'] * asl.df['grnd-ry'])
asl.df['polar-rtheta'] = np.arctan2(asl.df['grnd-rx'], asl.df['grnd-ry'])
asl.df['polar-lr'] = np.sqrt(asl.df['grnd-lx'] * asl.df['grnd-lx'] + asl.df['grnd-ly'] * asl.df['grnd-ly'])
asl.df['polar-ltheta'] = np.arctan2(asl.df['grnd-lx'], asl.df['grnd-ly'])

features_polar = ['polar-rr', 'polar-rtheta', 'polar-lr', 'polar-ltheta']
In [13]:
# TODO add features for left, right, x, y differences by one time step, i.e. the "delta" values discussed in the lecture
# Name these 'delta-rx', 'delta-ry', 'delta-lx', and 'delta-ly'

asl.df['delta-rx'] = asl.df['right-x'].diff().fillna(0)
asl.df['delta-ry'] = asl.df['right-y'].diff().fillna(0)
asl.df['delta-lx'] = asl.df['left-x'].diff().fillna(0)
asl.df['delta-ly'] = asl.df['left-y'].diff().fillna(0)

features_delta = ['delta-rx', 'delta-ry', 'delta-lx', 'delta-ly']

asl.df.head(20)
Out[13]:
left-x left-y right-x right-y nose-x nose-y speaker grnd-ry grnd-rx grnd-lx ... norm-lx norm-ly polar-rr polar-rtheta polar-lr polar-ltheta delta-rx delta-ry delta-lx delta-ly
video frame
98 0 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
1 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
2 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
3 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
4 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
5 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
6 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
7 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
8 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
9 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
10 149 181 170 175 161 62 woman-1 113 9 -12 ... -0.891199 0.741835 113.357840 0.079478 119.603512 -0.100501 0.0 0.0 0.0 0.0
11 149 181 169 173 161 62 woman-1 111 8 -12 ... -0.891199 0.741835 111.287915 0.071948 119.603512 -0.100501 -1.0 -2.0 0.0 0.0
12 149 181 167 165 161 62 woman-1 103 6 -12 ... -0.891199 0.741835 103.174609 0.058187 119.603512 -0.100501 -2.0 -8.0 0.0 0.0
13 149 181 166 160 161 62 woman-1 98 5 -12 ... -0.891199 0.741835 98.127468 0.050976 119.603512 -0.100501 -1.0 -5.0 0.0 0.0
14 149 181 164 149 161 62 woman-1 87 3 -12 ... -0.891199 0.741835 87.051709 0.034469 119.603512 -0.100501 -2.0 -11.0 0.0 0.0
15 149 181 158 133 161 62 woman-1 71 -3 -12 ... -0.891199 0.741835 71.063352 -0.042228 119.603512 -0.100501 -6.0 -16.0 0.0 0.0
16 149 181 153 119 161 62 woman-1 57 -8 -12 ... -0.891199 0.741835 57.558666 -0.139440 119.603512 -0.100501 -5.0 -14.0 0.0 0.0
17 149 181 140 109 161 62 woman-1 47 -21 -12 ... -0.891199 0.741835 51.478151 -0.420197 119.603512 -0.100501 -13.0 -10.0 0.0 0.0
18 149 181 126 100 163 58 woman-1 42 -37 -14 ... -0.891199 0.741835 55.973208 -0.722191 123.794184 -0.113333 -14.0 -9.0 0.0 0.0
19 149 181 114 94 163 58 woman-1 36 -49 -14 ... -0.891199 0.741835 60.802960 -0.937163 123.794184 -0.113333 -12.0 -6.0 0.0 0.0

20 rows × 31 columns

In [14]:
# TODO add features of your own design, which may be a combination of the above or something else
# Name these whatever you would like

# TODO define a list named 'features_custom' for building the training set

asl.df['grnd-ry-mean'] = asl.df['speaker'].map(df_means['grnd-ry'])
asl.df['grnd-rx-mean'] = asl.df['speaker'].map(df_means['grnd-rx'])
asl.df['grnd-ly-mean'] = asl.df['speaker'].map(df_means['grnd-ly'])
asl.df['grnd-lx-mean'] = asl.df['speaker'].map(df_means['grnd-lx'])

asl.df['grnd-ry-std'] = asl.df['speaker'].map(df_std['grnd-ry'])
asl.df['grnd-rx-std'] = asl.df['speaker'].map(df_std['grnd-rx'])
asl.df['grnd-ly-std'] = asl.df['speaker'].map(df_std['grnd-ly'])
asl.df['grnd-lx-std'] = asl.df['speaker'].map(df_std['grnd-lx'])

asl.df['grnd-ry-norm'] = (asl.df['right-y'] - asl.df['right-y-mean']) / asl.df['right-y-std']
asl.df['grnd-rx-norm'] = (asl.df['right-x'] - asl.df['right-x-mean']) / asl.df['right-x-std']
asl.df['grnd-lx-norm'] = (asl.df['left-x'] - asl.df['left-x-mean']) / asl.df['left-x-std']
asl.df['grnd-ly-norm'] = (asl.df['left-y'] - asl.df['left-y-mean']) / asl.df['left-y-std']

features_custom = ['grnd-ry-norm', 'grnd-rx-norm', 'grnd-ly-norm', 'grnd-lx-norm']
In [15]:
asl.df.describe()
Out[15]:
left-x left-y right-x right-y nose-x nose-y grnd-ry grnd-rx grnd-lx grnd-ly ... grnd-ly-mean grnd-lx-mean grnd-ry-std grnd-rx-std grnd-ly-std grnd-lx-std grnd-ry-norm grnd-rx-norm grnd-lx-norm grnd-ly-norm
count 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 ... 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 15746.000000 1.574600e+04 1.574600e+04 1.574600e+04 1.574600e+04
mean 187.572082 189.951797 154.567065 132.052394 170.083069 59.330624 72.721771 -15.516004 17.489013 130.621174 ... 130.621174 17.489013 43.713730 18.087336 31.753146 15.727456 1.083007e-16 -5.631636e-16 -2.815818e-16 1.046907e-16
std 23.686535 40.534002 17.292290 48.200532 7.328777 4.889615 46.624446 18.526190 20.103793 39.620271 ... 23.320125 12.481441 8.611161 1.884417 4.218713 1.027351 9.999365e-01 9.999365e-01 9.999365e-01 9.999365e-01
min 134.000000 70.000000 54.000000 22.000000 140.000000 47.000000 -30.000000 -134.000000 -29.000000 8.000000 ... 104.026144 2.006318 33.972660 16.191324 27.117393 15.050938 -2.338170e+00 -5.367940e+00 -4.767466e+00 -4.092641e+00
25% 167.000000 167.000000 145.000000 96.000000 164.000000 56.000000 38.000000 -26.000000 3.000000 109.000000 ... 104.026144 2.006318 33.972660 16.191324 27.117393 15.050938 -7.717527e-01 -5.536131e-01 -4.782895e-01 -5.141819e-01
50% 190.000000 185.000000 156.000000 118.000000 171.000000 59.000000 58.000000 -15.000000 20.000000 128.000000 ... 118.505134 12.895536 39.128572 16.764706 29.320655 15.080360 -2.980422e-01 8.124309e-02 -7.892207e-02 5.043027e-01
75% 205.000000 237.000000 165.000000 165.000000 175.000000 62.000000 105.000000 -5.000000 31.000000 172.000000 ... 157.036848 31.216447 53.487999 20.269032 36.572749 17.328941 8.364446e-01 6.102899e-01 3.759568e-01 5.914285e-01
max 290.000000 251.000000 231.000000 251.000000 201.000000 84.000000 189.000000 69.000000 119.000000 190.000000 ... 157.036848 31.216447 53.487999 20.269032 36.572749 17.328941 2.374941e+00 3.996190e+00 5.526557e+00 1.473469e+00

8 rows × 42 columns

Question 1: What custom features did you choose for the features_custom set and why?

Answer 1:
Normalized grnd columns. In order to normalize the variance data by normalizing and to prevent input to the model from scaling by unit

https://stats.stackexchange.com/questions/152078/what-are-the-real-benefits-of-normalization-scaling-values-between-0-and-1-in

Features Unit Testing

Run the following unit tests as a sanity check on the defined "ground", "norm", "polar", and 'delta" feature sets. The test simply looks for some valid values but is not exhaustive. However, the project should not be submitted if these tests don't pass.

In [16]:
import unittest
# import numpy as np
class TestFeatures(unittest.TestCase):

    def test_features_ground(self):
        sample = (asl.df.ix[98, 1][features_ground]).tolist()
        self.assertEqual(sample, [9, 113, -12, 119])

    def test_features_norm(self):
#         print(asl.df.ix[98, 1])
        sample = (asl.df.ix[98, 1][features_norm]).tolist()
        np.testing.assert_almost_equal(sample, [ 1.153,  1.663, -0.891,  0.742], 3)

    def test_features_polar(self):
        sample = (asl.df.ix[98,1][features_polar]).tolist()
        np.testing.assert_almost_equal(sample, [113.3578, 0.0794, 119.603, -0.1005], 3)

    def test_features_polar(self):
        sample = (asl.df.ix[98, 0][features_delta]).tolist()
        self.assertEqual(sample, [0, 0, 0, 0])
        sample = (asl.df.ix[98, 18][features_delta]).tolist()
        self.assertTrue(sample in [[-16, -5, -2, 4], [-14, -9, 0, 0]], "Sample value found was {}".format(sample))
                         
suite = unittest.TestLoader().loadTestsFromModule(TestFeatures())
unittest.TextTestRunner().run(suite)
...
----------------------------------------------------------------------
Ran 3 tests in 0.012s

OK
Out[16]:
<unittest.runner.TextTestResult run=3 errors=0 failures=0>

PART 2: Model Selection

Model Selection Tutorial

The objective of Model Selection is to tune the number of states for each word HMM prior to testing on unseen data. In this section you will explore three methods:

  • Log likelihood using cross-validation folds (CV)
  • Bayesian Information Criterion (BIC)
  • Discriminative Information Criterion (DIC)
Train a single word

Now that we have built a training set with sequence data, we can "train" models for each word. As a simple starting example, we train a single word using Gaussian hidden Markov models (HMM). By using the fit method during training, the Baum-Welch Expectation-Maximization (EM) algorithm is invoked iteratively to find the best estimate for the model for the number of hidden states specified from a group of sample seequences. For this example, we assume the correct number of hidden states is 3, but that is just a guess. How do we know what the "best" number of states for training is? We will need to find some model selection technique to choose the best parameter.

In [18]:
import warnings
from hmmlearn.hmm import GaussianHMM

def train_a_word(word, num_hidden_states, features):
    
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    training = asl.build_training(features)  
    X, lengths = training.get_word_Xlengths(word)
    model = GaussianHMM(n_components=num_hidden_states, n_iter=1000).fit(X, lengths)
    logL = model.score(X, lengths)
    return model, logL

demoword = 'BOOK'
model, logL = train_a_word(demoword, 3, features_ground)
print("Number of states trained in model for {} is {}".format(demoword, model.n_components))
print("logL = {}".format(logL))
Number of states trained in model for BOOK is 3
logL = -2331.1138127433205

The HMM model has been trained and information can be pulled from the model, including means and variances for each feature and hidden state. The log likelihood for any individual sample or group of samples can also be calculated with the score method.

In [19]:
def show_model_stats(word, model):
    print("Number of states trained in model for {} is {}".format(word, model.n_components))    
    variance=np.array([np.diag(model.covars_[i]) for i in range(model.n_components)])    
    for i in range(model.n_components):  # for each hidden state
        print("hidden state #{}".format(i))
        print("mean = ", model.means_[i])
        print("variance = ", variance[i])
        print()
    
show_model_stats(demoword, model)
Number of states trained in model for BOOK is 3
hidden state #0
mean =  [ -3.46504869  50.66686933  14.02391587  52.04731066]
variance =  [ 49.12346305  43.04799144  39.35109609  47.24195772]

hidden state #1
mean =  [ -11.45300909   94.109178     19.03512475  102.2030162 ]
variance =  [  77.403668    203.35441965   26.68898447  156.12444034]

hidden state #2
mean =  [ -1.12415027  69.44164191  17.02866283  77.7231196 ]
variance =  [ 19.70434594  16.83041492  30.51552305  11.03678246]

Try it!

Experiment by changing the feature set, word, and/or num_hidden_states values in the next cell to see changes in values.

In [20]:
my_testword = 'BOOK'
model, logL = train_a_word(my_testword, 4, features_ground) # Experiment here with different parameters
show_model_stats(my_testword, model)
print("logL = {}".format(logL))
Number of states trained in model for BOOK is 4
hidden state #0
mean =  [ -3.46504228  50.66707078  14.02390954  52.04753805]
variance =  [ 49.1235066   43.05033359  39.35088732  47.24516329]

hidden state #1
mean =  [ -1.12290864  69.44077025  17.02839996  77.72276398]
variance =  [ 19.68754051  16.81757949  30.51980065  11.03005485]

hidden state #2
mean =  [-10.55841733  86.78828738  18.59868813  96.40777057]
variance =  [ 73.80799477  36.26780522  31.01568112  52.7305317 ]

hidden state #3
mean =  [ -13.93672327  114.42607932   20.24703657  118.28522234]
variance =  [  78.98272144  105.52761516   12.67208262   91.21104392]

logL = -2282.008210312922
Visualize the hidden states

We can plot the means and variances for each state and feature. Try varying the number of states trained for the HMM model and examine the variances. Are there some models that are "better" than others? How can you tell? We would like to hear what you think in the classroom online.

In [21]:
%matplotlib inline
/home/v_geta/anaconda3/envs/aind/lib/python3.6/site-packages/matplotlib/font_manager.py:280: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  'Matplotlib is building the font cache using fc-list. '
In [22]:
import math
from matplotlib import (cm, pyplot as plt, mlab)

def visualize(word, model):
    """ visualize the input model for a particular word """
    variance=np.array([np.diag(model.covars_[i]) for i in range(model.n_components)])
    figures = []
    for parm_idx in range(len(model.means_[0])):
        xmin = int(min(model.means_[:,parm_idx]) - max(variance[:,parm_idx]))
        xmax = int(max(model.means_[:,parm_idx]) + max(variance[:,parm_idx]))
        fig, axs = plt.subplots(model.n_components, sharex=True, sharey=False)
        colours = cm.rainbow(np.linspace(0, 1, model.n_components))
        for i, (ax, colour) in enumerate(zip(axs, colours)):
            x = np.linspace(xmin, xmax, 100)
            mu = model.means_[i,parm_idx]
            sigma = math.sqrt(np.diag(model.covars_[i])[parm_idx])
            ax.plot(x, mlab.normpdf(x, mu, sigma), c=colour)
            ax.set_title("{} feature {} hidden state #{}".format(word, parm_idx, i))

            ax.grid(True)
        figures.append(plt)
    for p in figures:
        p.show()
        
visualize(my_testword, model)
ModelSelector class

Review the ModelSelector class from the codebase found in the my_model_selectors.py module. It is designed to be a strategy pattern for choosing different model selectors. For the project submission in this section, subclass SelectorModel to implement the following model selectors. In other words, you will write your own classes/functions in the my_model_selectors.py module and run them from this notebook:

  • SelectorCV: Log likelihood with CV
  • SelectorBIC: BIC
  • SelectorDIC: DIC

You will train each word in the training set with a range of values for the number of hidden states, and then score these alternatives with the model selector, choosing the "best" according to each strategy. The simple case of training with a constant value for n_components can be called using the provided SelectorConstant subclass as follow:

In [23]:
from my_model_selectors import SelectorConstant

training = asl.build_training(features_ground)  # Experiment here with different feature sets defined in part 1
word = 'VEGETABLE' # Experiment here with different words
model = SelectorConstant(training.get_all_sequences(), training.get_all_Xlengths(), word, n_constant=3).select()
print("Number of states trained in model for {} is {}".format(word, model.n_components))
Number of states trained in model for VEGETABLE is 3
Cross-validation folds

If we simply score the model with the Log Likelihood calculated from the feature sequences it has been trained on, we should expect that more complex models will have higher likelihoods. However, that doesn't tell us which would have a better likelihood score on unseen data. The model will likely be overfit as complexity is added. To estimate which topology model is better using only the training data, we can compare scores using cross-validation. One technique for cross-validation is to break the training set into "folds" and rotate which fold is left out of training. The "left out" fold scored. This gives us a proxy method of finding the best model to use on "unseen data". In the following example, a set of word sequences is broken into three folds using the scikit-learn Kfold class object. When you implement SelectorCV, you will use this technique.

In [24]:
from sklearn.model_selection import KFold

training = asl.build_training(features_ground) # Experiment here with different feature sets
word = 'VEGETABLE' # Experiment here with different words
word_sequences = training.get_word_sequences(word)
split_method = KFold()
for cv_train_idx, cv_test_idx in split_method.split(word_sequences):
    print("Train fold indices:{} Test fold indices:{}".format(cv_train_idx, cv_test_idx))  # view indices of the folds
Train fold indices:[2 3 4 5] Test fold indices:[0 1]
Train fold indices:[0 1 4 5] Test fold indices:[2 3]
Train fold indices:[0 1 2 3] Test fold indices:[4 5]

Tip: In order to run hmmlearn training using the X,lengths tuples on the new folds, subsets must be combined based on the indices given for the folds. A helper utility has been provided in the asl_utils module named combine_sequences for this purpose.

Scoring models with other criterion

Scoring model topologies with BIC balances fit and complexity within the training set for each word. In the BIC equation, a penalty term penalizes complexity to avoid overfitting, so that it is not necessary to also use cross-validation in the selection process. There are a number of references on the internet for this criterion. These slides include a formula you may find helpful for your implementation.

The advantages of scoring model topologies with DIC over BIC are presented by Alain Biem in this reference (also found here). DIC scores the discriminant ability of a training set for one word against competing words. Instead of a penalty term for complexity, it provides a penalty if model liklihoods for non-matching words are too similar to model likelihoods for the correct word in the word set.

Model Selection Implementation Submission

Implement SelectorCV, SelectorBIC, and SelectorDIC classes in the my_model_selectors.py module. Run the selectors on the following five words. Then answer the questions about your results.

Tip: The hmmlearn library may not be able to train or score all models. Implement try/except contructs as necessary to eliminate non-viable models from consideration.

In [25]:
words_to_train = ['FISH', 'BOOK', 'VEGETABLE', 'FUTURE', 'JOHN']
import timeit
In [26]:
# autoreload for automatically reloading changes made in my_model_selectors and my_recognizer
%load_ext autoreload
%autoreload 2
In [27]:
# TODO: Implement SelectorCV in my_model_selector.py
from my_model_selectors import SelectorCV

training = asl.build_training(features_ground)  # Experiment here with different feature sets defined in part 1
sequences = training.get_all_sequences()
Xlengths = training.get_all_Xlengths()
for word in words_to_train:
    start = timeit.default_timer()
    model = SelectorCV(sequences, Xlengths, word, 
                    min_n_components=2, max_n_components=15, random_state = 14).select()
    end = timeit.default_timer()-start
    if model is not None:
        print("Training complete for {} with {} states with time {} seconds".format(word, model.n_components, end))
    else:
        print("Training failed for {}".format(word))
Training complete for FISH with 3 states with time 0.04891835600028571 seconds
Training complete for BOOK with 3 states with time 0.21130983600050968 seconds
Training complete for VEGETABLE with 3 states with time 0.06346755599952303 seconds
Training complete for FUTURE with 3 states with time 0.1578177159990446 seconds
Training complete for JOHN with 3 states with time 2.0665708520009503 seconds
In [28]:
# TODO: Implement SelectorBIC in module my_model_selectors.py
from my_model_selectors import SelectorBIC

training = asl.build_training(features_ground)  # Experiment here with different feature sets defined in part 1
sequences = training.get_all_sequences()
Xlengths = training.get_all_Xlengths()
for word in words_to_train:
    start = timeit.default_timer()
    model = SelectorBIC(sequences, Xlengths, word, 
                    min_n_components=2, max_n_components=15, random_state = 14).select()
    end = timeit.default_timer()-start
    if model is not None:
        print("Training complete for {} with {} states with time {} seconds".format(word, model.n_components, end))
    else:
        print("Training failed for {}".format(word))
Training complete for FISH with 3 states with time 0.05448404300113907 seconds
Training complete for BOOK with 3 states with time 0.21844738599975244 seconds
Training complete for VEGETABLE with 3 states with time 0.0680750050014467 seconds
Training complete for FUTURE with 3 states with time 0.14649945499877504 seconds
Training complete for JOHN with 3 states with time 2.0462545480004337 seconds
In [29]:
# TODO: Implement SelectorDIC in module my_model_selectors.py
from my_model_selectors import SelectorDIC

training = asl.build_training(features_ground)  # Experiment here with different feature sets defined in part 1
sequences = training.get_all_sequences()
Xlengths = training.get_all_Xlengths()
for word in words_to_train:
    start = timeit.default_timer()
    model = SelectorDIC(sequences, Xlengths, word, 
                    min_n_components=2, max_n_components=15, random_state = 14).select()
    end = timeit.default_timer()-start
    if model is not None:
        print("Training complete for {} with {} states with time {} seconds".format(word, model.n_components, end))
    else:
        print("Training failed for {}".format(word))
Training complete for FISH with 3 states with time 2.7962278760005574 seconds
Training complete for BOOK with 15 states with time 13.913751054000386 seconds
Training complete for VEGETABLE with 15 states with time 9.764483189999737 seconds
Training complete for FUTURE with 15 states with time 14.58867350699984 seconds
Training complete for JOHN with 15 states with time 80.90816759500012 seconds

Question 2: Compare and contrast the possible advantages and disadvantages of the various model selectors implemented.

Answer 2:

BIC One of BIC’s advantages is that it prefers simpler models than its predecessor, AIC. Furthermore, BIC has some nice theoretical backing since it is simply trying to maximize the posterior likelihood of the data, given the model. That said BIC assumes that one of the models it is using is true and that you are trying to find the model most likely to be true in the Bayesian sense (Wasserman lecture notes). If the true models doesn’t exist in comparison, if the real evaluation is non-bayesian, or if high model complexity is permissable, then it is not a good measure.

cross validation
Cross validation is useful in that, while both DIC and BIC are attempts at generalizing selector scores, cross validation should be exactly the selector score on observed data. Cross validation will be incredibly expensive to compute and the slowest selector since it will require running through the data multiple times, over each folds. This expense will result in a very slow runs and it may not be pragmatic to use with large datasets.

DIC
As discussed in “A Model Selection Criterion for Classification: Application to HMM Topology Optimization”, DIC outperforms BIC in realizing and reducing more than 18% of the relative error rate in it’s inaugural study. Furthermore, it seems to do well in a number of empirical cases. DIC is a more complex information criterion which has a more sophisicated means of finding the effective number of parameters. It uses a discriminative principle where the goal is to select the model less likely to have generated data belonging to the competing classification categories. That said DIC has some theoretical limitations, in that its penalty term is invariant to reparameterization, lacks consistency, and isn’t based on a proper predictive criterion. In “The deviance information criterion: 12 years on,” Spiegelhalter acknowledged that it has some problem.

Model Selector Unit Testing

Run the following unit tests as a sanity check on the implemented model selectors. The test simply looks for valid interfaces but is not exhaustive. However, the project should not be submitted if these tests don't pass.

In [30]:
from asl_test_model_selectors import TestSelectors
suite = unittest.TestLoader().loadTestsFromModule(TestSelectors())
unittest.TextTestRunner().run(suite)
....
----------------------------------------------------------------------
Ran 4 tests in 65.167s

OK
Out[30]:
<unittest.runner.TextTestResult run=4 errors=0 failures=0>

PART 3: Recognizer

The objective of this section is to "put it all together". Using the four feature sets created and the three model selectors, you will experiment with the models and present your results. Instead of training only five specific words as in the previous section, train the entire set with a feature set and model selector strategy.

Recognizer Tutorial

Train the full training set

The following example trains the entire set with the example features_ground and SelectorConstant features and model selector. Use this pattern for you experimentation and final submission cells.

In [31]:
from my_model_selectors import SelectorConstant

def train_all_words(features, model_selector):
    training = asl.build_training(features)  # Experiment here with different feature sets defined in part 1
    sequences = training.get_all_sequences()
    Xlengths = training.get_all_Xlengths()
    model_dict = {}
    for word in training.words:
        model = model_selector(sequences, Xlengths, word, 
                        n_constant=3).select()
        model_dict[word]=model
    return model_dict

models = train_all_words(features_ground, SelectorConstant)
print("Number of word models returned = {}".format(len(models)))
Number of word models returned = 112
Load the test set

The build_test method in ASLdb is similar to the build_training method already presented, but there are a few differences:

  • the object is type SinglesData
  • the internal dictionary keys are the index of the test word rather than the word itself
  • the getter methods are get_all_sequences, get_all_Xlengths, get_item_sequences and get_item_Xlengths
In [32]:
test_set = asl.build_test(features_ground)
print("Number of test set items: {}".format(test_set.num_items))
print("Number of test set sentences: {}".format(len(test_set.sentences_index)))
Number of test set items: 178
Number of test set sentences: 40

Recognizer Implementation Submission

For the final project submission, students must implement a recognizer following guidance in the my_recognizer.py module. Experiment with the four feature sets and the three model selection methods (that's 12 possible combinations). You can add and remove cells for experimentation or run the recognizers locally in some other way during your experiments, but retain the results for your discussion. For submission, you will provide code cells of only three interesting combinations for your discussion (see questions below). At least one of these should produce a word error rate of less than 60%, i.e. WER < 0.60 .

Tip: The hmmlearn library may not be able to train or score all models. Implement try/except contructs as necessary to eliminate non-viable models from consideration.

In [33]:
# TODO implement the recognize method in my_recognizer
from my_recognizer import recognize
from asl_utils import show_errors
In [34]:
feature_names = ['features_polar', 'features_norm', 'features_delta', 'features_custom'] 
feature_grps = [features_polar, features_norm, features_delta, features_custom]
selector_names = ["Constant", "CV", "BIC"]
model_selectors = [SelectorConstant, SelectorCV, SelectorBIC]
for name, features in zip(feature_names, feature_grps):
    for model_name, model_selector in zip(selector_names, model_selectors):
        models = train_all_words(features, model_selector)
        test_set = asl.build_test(features)
        probabilities, guesses = recognize(models, test_set)
        print('--------------------------------------\n')
        print(name,model_name,'\n')
        show_errors(guesses, test_set)
--------------------------------------

features_polar Constant 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *GO *BOOK HOMEWORK                                            JOHN WRITE HOMEWORK
    7: JOHN *WHAT *MARY *WHAT                                        JOHN CAN GO CAN
   12: JOHN *WHAT *GO1 CAN                                           JOHN CAN GO CAN
   21: *IX *HOMEWORK WONT *FUTURE *CAR *CAR *GO *TOMORROW            JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *FRANK LIKE IX *WHO IX                                        JOHN LIKE IX IX IX
   28: *IX *WHO *FUTURE *FUTURE IX                                   JOHN LIKE IX IX IX
   30: *SHOULD LIKE *GO *MARY *GO                                    JOHN LIKE IX IX IX
   36: *SOMETHING-ONE VEGETABLE *GIRL *GIVE *MARY *MARY              MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SUE *GIVE *DECIDE MARY *GO                                   JOHN IX THINK MARY LOVE
   43: *IX *GO BUY HOUSE                                             JOHN MUST BUY HOUSE
   50: *POSS *SEE BUY CAR *ARRIVE                                    FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *WHO BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: *MARY *PREFER *MARY MARY                                      JOHN DECIDE VISIT MARY
   67: *LIKE *MOTHER NOT BUY HOUSE                                   JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FINISH *GIVE1 MARY                                      JOHN WILL VISIT MARY
   74: *GO *WHO *GO *GO                                              JOHN NOT VISIT MARY
   77: *IX BLAME *LOVE                                               ANN BLAME MARY
   84: *LOVE *GIVE1 *POSS BOOK                                       IX-1P FIND SOMETHING-ONE BOOK
   89: *MAN *GIVE *WOMAN *IX IX *BUY *BOOK                           JOHN IX GIVE MAN IX NEW COAT
   90: JOHN *GIVE1 IX *GIVE3 *GIVE1 *COAT                            JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *WOMAN *WOMAN *WOMAN WOMAN BOOK                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *VEGETABLE                                             JOHN LEG
  107: *LIKE *SOMETHING-ONE *HAVE *GO *WHO                           JOHN POSS FRIEND HAVE CANDY
  108: *IX ARRIVE                                                    WOMAN ARRIVE
  113: IX CAR *SUE *SOMETHING-ONE *ARRIVE                            IX CAR BLUE SUE BUY
  119: *PREFER *BUY1 IX CAR *SOMETHING-ONE                           SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: *SHOULD *BUY1 *CAR YESTERDAY BOOK                             JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK BUY YESTERDAY WHAT BOOK                                JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY *SOMETHING-ONE *MARY LOVE *LOVE                         JOHN IX SAY LOVE MARY
  171: *SOMETHING-ONE *SOMETHING-ONE BLAME                           JOHN MARY BLAME
  174: *CAN *GIVE3 GIVE1 *GO *WHAT                                   PEOPLE GROUP GIVE1 JANA TOY
  181: *SUE ARRIVE                                                   JOHN ARRIVE
  184: *IX BOY *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *SUE *SOMETHING-ONE *YESTERDAY *ARRIVE                        JOHN GIVE GIRL BOX
  193: JOHN *SOMETHING-ONE *YESTERDAY BOX                            JOHN GIVE GIRL BOX
  199: *FRANK CHOCOLATE WHO                                          LIKE CHOCOLATE WHO
  201: JOHN *MAN *MAN *JOHN BUY HOUSE                                JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_polar CV 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *GO *BOOK HOMEWORK                                            JOHN WRITE HOMEWORK
    7: JOHN *WHAT *MARY *WHAT                                        JOHN CAN GO CAN
   12: JOHN *WHAT *GO1 CAN                                           JOHN CAN GO CAN
   21: *IX *HOMEWORK WONT *FUTURE *CAR *CAR *GO *TOMORROW            JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *FRANK LIKE IX *WHO IX                                        JOHN LIKE IX IX IX
   28: *IX *WHO *FUTURE *FUTURE IX                                   JOHN LIKE IX IX IX
   30: *SHOULD LIKE *GO *MARY *GO                                    JOHN LIKE IX IX IX
   36: *SOMETHING-ONE VEGETABLE *GIRL *GIVE *MARY *MARY              MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SUE *GIVE *DECIDE MARY *GO                                   JOHN IX THINK MARY LOVE
   43: *IX *GO BUY HOUSE                                             JOHN MUST BUY HOUSE
   50: *POSS *SEE BUY CAR *ARRIVE                                    FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *WHO BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: *MARY *PREFER *MARY MARY                                      JOHN DECIDE VISIT MARY
   67: *LIKE *MOTHER NOT BUY HOUSE                                   JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FINISH *GIVE1 MARY                                      JOHN WILL VISIT MARY
   74: *GO *WHO *GO *GO                                              JOHN NOT VISIT MARY
   77: *IX BLAME *LOVE                                               ANN BLAME MARY
   84: *LOVE *GIVE1 *POSS BOOK                                       IX-1P FIND SOMETHING-ONE BOOK
   89: *MAN *GIVE *WOMAN *IX IX *BUY *BOOK                           JOHN IX GIVE MAN IX NEW COAT
   90: JOHN *GIVE1 IX *GIVE3 *GIVE1 *COAT                            JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *WOMAN *WOMAN *WOMAN WOMAN BOOK                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *VEGETABLE                                             JOHN LEG
  107: *LIKE *SOMETHING-ONE *HAVE *GO *WHO                           JOHN POSS FRIEND HAVE CANDY
  108: *IX ARRIVE                                                    WOMAN ARRIVE
  113: IX CAR *SUE *SOMETHING-ONE *ARRIVE                            IX CAR BLUE SUE BUY
  119: *PREFER *BUY1 IX CAR *SOMETHING-ONE                           SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: *SHOULD *BUY1 *CAR YESTERDAY BOOK                             JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK BUY YESTERDAY WHAT BOOK                                JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY *SOMETHING-ONE *MARY LOVE *LOVE                         JOHN IX SAY LOVE MARY
  171: *SOMETHING-ONE *SOMETHING-ONE BLAME                           JOHN MARY BLAME
  174: *CAN *GIVE3 GIVE1 *GO *WHAT                                   PEOPLE GROUP GIVE1 JANA TOY
  181: *SUE ARRIVE                                                   JOHN ARRIVE
  184: *IX BOY *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *SUE *SOMETHING-ONE *YESTERDAY *ARRIVE                        JOHN GIVE GIRL BOX
  193: JOHN *SOMETHING-ONE *YESTERDAY BOX                            JOHN GIVE GIRL BOX
  199: *FRANK CHOCOLATE WHO                                          LIKE CHOCOLATE WHO
  201: JOHN *MAN *MAN *JOHN BUY HOUSE                                JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_polar BIC 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *GO *BOOK HOMEWORK                                            JOHN WRITE HOMEWORK
    7: JOHN *WHAT *MARY *WHAT                                        JOHN CAN GO CAN
   12: JOHN *WHAT *GO1 CAN                                           JOHN CAN GO CAN
   21: *IX *HOMEWORK WONT *FUTURE *CAR *CAR *GO *TOMORROW            JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *FRANK LIKE IX *WHO IX                                        JOHN LIKE IX IX IX
   28: *IX *WHO *FUTURE *FUTURE IX                                   JOHN LIKE IX IX IX
   30: *SHOULD LIKE *GO *MARY *GO                                    JOHN LIKE IX IX IX
   36: *SOMETHING-ONE VEGETABLE *GIRL *GIVE *MARY *MARY              MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SUE *GIVE *DECIDE MARY *GO                                   JOHN IX THINK MARY LOVE
   43: *IX *GO BUY HOUSE                                             JOHN MUST BUY HOUSE
   50: *POSS *SEE BUY CAR *ARRIVE                                    FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *WHO BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: *MARY *PREFER *MARY MARY                                      JOHN DECIDE VISIT MARY
   67: *LIKE *MOTHER NOT BUY HOUSE                                   JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FINISH *GIVE1 MARY                                      JOHN WILL VISIT MARY
   74: *GO *WHO *GO *GO                                              JOHN NOT VISIT MARY
   77: *IX BLAME *LOVE                                               ANN BLAME MARY
   84: *LOVE *GIVE1 *POSS BOOK                                       IX-1P FIND SOMETHING-ONE BOOK
   89: *MAN *GIVE *WOMAN *IX IX *BUY *BOOK                           JOHN IX GIVE MAN IX NEW COAT
   90: JOHN *GIVE1 IX *GIVE3 *GIVE1 *COAT                            JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *WOMAN *WOMAN *WOMAN WOMAN BOOK                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *VEGETABLE                                             JOHN LEG
  107: *LIKE *SOMETHING-ONE *HAVE *GO *WHO                           JOHN POSS FRIEND HAVE CANDY
  108: *IX ARRIVE                                                    WOMAN ARRIVE
  113: IX CAR *SUE *SOMETHING-ONE *ARRIVE                            IX CAR BLUE SUE BUY
  119: *PREFER *BUY1 IX CAR *SOMETHING-ONE                           SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: *SHOULD *BUY1 *CAR YESTERDAY BOOK                             JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK BUY YESTERDAY WHAT BOOK                                JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY *SOMETHING-ONE *MARY LOVE *LOVE                         JOHN IX SAY LOVE MARY
  171: *SOMETHING-ONE *SOMETHING-ONE BLAME                           JOHN MARY BLAME
  174: *CAN *GIVE3 GIVE1 *GO *WHAT                                   PEOPLE GROUP GIVE1 JANA TOY
  181: *SUE ARRIVE                                                   JOHN ARRIVE
  184: *IX BOY *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *SUE *SOMETHING-ONE *YESTERDAY *ARRIVE                        JOHN GIVE GIRL BOX
  193: JOHN *SOMETHING-ONE *YESTERDAY BOX                            JOHN GIVE GIRL BOX
  199: *FRANK CHOCOLATE WHO                                          LIKE CHOCOLATE WHO
  201: JOHN *MAN *MAN *JOHN BUY HOUSE                                JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_norm Constant 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_norm CV 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_norm BIC 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_delta Constant 


**** WER = 0.6404494382022472
Total correct: 64 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *JOHN HOMEWORK                                           JOHN WRITE HOMEWORK
    7: JOHN *HAVE *GIVE1 *TEACHER                                    JOHN CAN GO CAN
   12: JOHN CAN *GO1 CAN                                             JOHN CAN GO CAN
   21: *MARY *MARY *JOHN *MARY *CAR *GO *FUTURE *MARY                JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN *MARY *JOHN IX *MARY                                     JOHN LIKE IX IX IX
   28: JOHN *MARY *MARY IX IX                                        JOHN LIKE IX IX IX
   30: JOHN *MARY *JOHN *JOHN IX                                     JOHN LIKE IX IX IX
   36: MARY *JOHN *JOHN IX *MARY *MARY                               MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY IX *MARY MARY *MARY                                     JOHN IX THINK MARY LOVE
   43: JOHN *JOHN *FINISH HOUSE                                      JOHN MUST BUY HOUSE
   50: *JOHN JOHN BUY CAR *MARY                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *MARY *MARY BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: JOHN *JOHN *IX *JOHN                                          JOHN DECIDE VISIT MARY
   67: JOHN *JOHN *JOHN BUY HOUSE                                    JOHN FUTURE NOT BUY HOUSE
   71: JOHN *JOHN VISIT MARY                                         JOHN WILL VISIT MARY
   74: JOHN *JOHN *MARY MARY                                         JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *GO *IX *WHAT                                           IX-1P FIND SOMETHING-ONE BOOK
   89: *GIVE1 *JOHN *IX *JOHN IX *WHAT *HOUSE                        JOHN IX GIVE MAN IX NEW COAT
   90: *MARY *JOHN *JOHN *IX *IX *MARY                               JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *MARY *JOHN *JOHN WOMAN *ARRIVE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: *JOHN NEW *WHAT BREAK-DOWN                                    POSS NEW CAR BREAK-DOWN
  105: JOHN *MARY                                                    JOHN LEG
  107: JOHN POSS FRIEND *LOVE *MARY                                  JOHN POSS FRIEND HAVE CANDY
  108: *JOHN ARRIVE                                                  WOMAN ARRIVE
  113: *JOHN CAR *MARY *MARY *GIVE1                                  IX CAR BLUE SUE BUY
  119: *JOHN *BUY1 IX CAR *IX                                        SUE BUY IX CAR BLUE
  122: JOHN *VISIT *YESTERDAY                                        JOHN READ BOOK
  139: JOHN *BUY1 WHAT *MARY *ARRIVE                                 JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY *MARY *MARY *YESTERDAY                               JOHN BUY YESTERDAY WHAT BOOK
  158: *BOY *WHO *MARY                                               LOVE JOHN WHO
  167: *MARY *MARY *IX *ARRIVE *WHAT                                 JOHN IX SAY LOVE MARY
  171: JOHN *JOHN BLAME                                              JOHN MARY BLAME
  174: *GIVE1 *MARY GIVE1 *MARY *FINISH                              PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *GIVE1                                                   JOHN ARRIVE
  184: *IX *WHO *GIVE1 *HAVE *MARY                                   ALL BOY GIVE TEACHER APPLE
  189: JOHN *IX *MARY *VISIT                                         JOHN GIVE GIRL BOX
  193: JOHN *IX *IX BOX                                              JOHN GIVE GIRL BOX
  199: *JOHN *ARRIVE *MARY                                           LIKE CHOCOLATE WHO
  201: JOHN *MARY MARY *LIKE *VISIT HOUSE                            JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_delta CV 


**** WER = 0.6404494382022472
Total correct: 64 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *JOHN HOMEWORK                                           JOHN WRITE HOMEWORK
    7: JOHN *HAVE *GIVE1 *TEACHER                                    JOHN CAN GO CAN
   12: JOHN CAN *GO1 CAN                                             JOHN CAN GO CAN
   21: *MARY *MARY *JOHN *MARY *CAR *GO *FUTURE *MARY                JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN *MARY *JOHN IX *MARY                                     JOHN LIKE IX IX IX
   28: JOHN *MARY *MARY IX IX                                        JOHN LIKE IX IX IX
   30: JOHN *MARY *JOHN *JOHN IX                                     JOHN LIKE IX IX IX
   36: MARY *JOHN *JOHN IX *MARY *MARY                               MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY IX *MARY MARY *MARY                                     JOHN IX THINK MARY LOVE
   43: JOHN *JOHN *FINISH HOUSE                                      JOHN MUST BUY HOUSE
   50: *JOHN JOHN BUY CAR *MARY                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *MARY *MARY BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: JOHN *JOHN *IX *JOHN                                          JOHN DECIDE VISIT MARY
   67: JOHN *JOHN *JOHN BUY HOUSE                                    JOHN FUTURE NOT BUY HOUSE
   71: JOHN *JOHN VISIT MARY                                         JOHN WILL VISIT MARY
   74: JOHN *JOHN *MARY MARY                                         JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *GO *IX *WHAT                                           IX-1P FIND SOMETHING-ONE BOOK
   89: *GIVE1 *JOHN *IX *JOHN IX *WHAT *HOUSE                        JOHN IX GIVE MAN IX NEW COAT
   90: *MARY *JOHN *JOHN *IX *IX *MARY                               JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *MARY *JOHN *JOHN WOMAN *ARRIVE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: *JOHN NEW *WHAT BREAK-DOWN                                    POSS NEW CAR BREAK-DOWN
  105: JOHN *MARY                                                    JOHN LEG
  107: JOHN POSS FRIEND *LOVE *MARY                                  JOHN POSS FRIEND HAVE CANDY
  108: *JOHN ARRIVE                                                  WOMAN ARRIVE
  113: *JOHN CAR *MARY *MARY *GIVE1                                  IX CAR BLUE SUE BUY
  119: *JOHN *BUY1 IX CAR *IX                                        SUE BUY IX CAR BLUE
  122: JOHN *VISIT *YESTERDAY                                        JOHN READ BOOK
  139: JOHN *BUY1 WHAT *MARY *ARRIVE                                 JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY *MARY *MARY *YESTERDAY                               JOHN BUY YESTERDAY WHAT BOOK
  158: *BOY *WHO *MARY                                               LOVE JOHN WHO
  167: *MARY *MARY *IX *ARRIVE *WHAT                                 JOHN IX SAY LOVE MARY
  171: JOHN *JOHN BLAME                                              JOHN MARY BLAME
  174: *GIVE1 *MARY GIVE1 *MARY *FINISH                              PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *GIVE1                                                   JOHN ARRIVE
  184: *IX *WHO *GIVE1 *HAVE *MARY                                   ALL BOY GIVE TEACHER APPLE
  189: JOHN *IX *MARY *VISIT                                         JOHN GIVE GIRL BOX
  193: JOHN *IX *IX BOX                                              JOHN GIVE GIRL BOX
  199: *JOHN *ARRIVE *MARY                                           LIKE CHOCOLATE WHO
  201: JOHN *MARY MARY *LIKE *VISIT HOUSE                            JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_delta BIC 


**** WER = 0.6404494382022472
Total correct: 64 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *JOHN HOMEWORK                                           JOHN WRITE HOMEWORK
    7: JOHN *HAVE *GIVE1 *TEACHER                                    JOHN CAN GO CAN
   12: JOHN CAN *GO1 CAN                                             JOHN CAN GO CAN
   21: *MARY *MARY *JOHN *MARY *CAR *GO *FUTURE *MARY                JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN *MARY *JOHN IX *MARY                                     JOHN LIKE IX IX IX
   28: JOHN *MARY *MARY IX IX                                        JOHN LIKE IX IX IX
   30: JOHN *MARY *JOHN *JOHN IX                                     JOHN LIKE IX IX IX
   36: MARY *JOHN *JOHN IX *MARY *MARY                               MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY IX *MARY MARY *MARY                                     JOHN IX THINK MARY LOVE
   43: JOHN *JOHN *FINISH HOUSE                                      JOHN MUST BUY HOUSE
   50: *JOHN JOHN BUY CAR *MARY                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *MARY *MARY BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: JOHN *JOHN *IX *JOHN                                          JOHN DECIDE VISIT MARY
   67: JOHN *JOHN *JOHN BUY HOUSE                                    JOHN FUTURE NOT BUY HOUSE
   71: JOHN *JOHN VISIT MARY                                         JOHN WILL VISIT MARY
   74: JOHN *JOHN *MARY MARY                                         JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *GO *IX *WHAT                                           IX-1P FIND SOMETHING-ONE BOOK
   89: *GIVE1 *JOHN *IX *JOHN IX *WHAT *HOUSE                        JOHN IX GIVE MAN IX NEW COAT
   90: *MARY *JOHN *JOHN *IX *IX *MARY                               JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *MARY *JOHN *JOHN WOMAN *ARRIVE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: *JOHN NEW *WHAT BREAK-DOWN                                    POSS NEW CAR BREAK-DOWN
  105: JOHN *MARY                                                    JOHN LEG
  107: JOHN POSS FRIEND *LOVE *MARY                                  JOHN POSS FRIEND HAVE CANDY
  108: *JOHN ARRIVE                                                  WOMAN ARRIVE
  113: *JOHN CAR *MARY *MARY *GIVE1                                  IX CAR BLUE SUE BUY
  119: *JOHN *BUY1 IX CAR *IX                                        SUE BUY IX CAR BLUE
  122: JOHN *VISIT *YESTERDAY                                        JOHN READ BOOK
  139: JOHN *BUY1 WHAT *MARY *ARRIVE                                 JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY *MARY *MARY *YESTERDAY                               JOHN BUY YESTERDAY WHAT BOOK
  158: *BOY *WHO *MARY                                               LOVE JOHN WHO
  167: *MARY *MARY *IX *ARRIVE *WHAT                                 JOHN IX SAY LOVE MARY
  171: JOHN *JOHN BLAME                                              JOHN MARY BLAME
  174: *GIVE1 *MARY GIVE1 *MARY *FINISH                              PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *GIVE1                                                   JOHN ARRIVE
  184: *IX *WHO *GIVE1 *HAVE *MARY                                   ALL BOY GIVE TEACHER APPLE
  189: JOHN *IX *MARY *VISIT                                         JOHN GIVE GIRL BOX
  193: JOHN *IX *IX BOX                                              JOHN GIVE GIRL BOX
  199: *JOHN *ARRIVE *MARY                                           LIKE CHOCOLATE WHO
  201: JOHN *MARY MARY *LIKE *VISIT HOUSE                            JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_custom Constant 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_custom CV 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
--------------------------------------

features_custom BIC 


**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
In [35]:
# TODO Choose a feature set and model selector
features = features_polar + features_norm + features_custom # change as needed
model_selector = SelectorCV # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.5898876404494382
Total correct: 73 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *NEW HOMEWORK                                            JOHN WRITE HOMEWORK
    7: *MARY *PEOPLE *MARY *WHAT                                     JOHN CAN GO CAN
   12: JOHN *HAVE *WHAT CAN                                          JOHN CAN GO CAN
   21: *IX *STUDENT *ARRIVE *GO *CAR *CAR *READ CHICKEN              JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE IX *LIKE IX                                          JOHN LIKE IX IX IX
   28: *IX LIKE IX *LIKE IX                                          JOHN LIKE IX IX IX
   30: *SHOOT LIKE *GO *MARY *GO                                     JOHN LIKE IX IX IX
   36: MARY VEGETABLE *YESTERDAY *MARY *MARY *MARY                   MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SHOOT *MARY *CORN *VEGETABLE *MARY                           JOHN IX THINK MARY LOVE
   43: *FRANK *FUTURE BUY HOUSE                                      JOHN MUST BUY HOUSE
   50: *FRANK *SEE BUY CAR *IX                                       FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE BUY HOUSE                                 JOHN SHOULD NOT BUY HOUSE
   57: *MARY *JOHN *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *LIKE FUTURE NOT *ARRIVE HOUSE                                JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL *BLAME MARY                                         JOHN WILL VISIT MARY
   74: *GO *MARY *MARY *GO                                           JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *JOHN *STUDENT SOMETHING-ONE BOOK                             IX-1P FIND SOMETHING-ONE BOOK
   89: *MARY *POSS *GO *IX IX NEW *BREAK-DOWN                        JOHN IX GIVE MAN IX NEW COAT
   90: *SEE *GIVE1 IX *IX WOMAN *CHOCOLATE                           JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *IX IX *IX WOMAN BOOK                                    JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *SEE                                                   JOHN LEG
  107: *GO *IX *ARRIVE *MARY *JANA                                   JOHN POSS FRIEND HAVE CANDY
  108: WOMAN *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX *JOHN *ARRIVE                                      IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX *BLAME *POSS                              SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: JOHN *BUY1 *BOX YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK BUY YESTERDAY WHAT BOOK                                JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY *MARY *MARY LOVE MARY                                   JOHN IX SAY LOVE MARY
  171: *LIKE *JOHN BLAME                                             JOHN MARY BLAME
  174: *CAR *GIVE3 GIVE1 *SEE *BLAME                                 PEOPLE GROUP GIVE1 JANA TOY
  181: *SUE ARRIVE                                                   JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *YESTERDAY *ARRIVE                                 JOHN GIVE GIRL BOX
  193: JOHN *IX *YESTERDAY BOX                                       JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *MARY                                         LIKE CHOCOLATE WHO
  201: JOHN *MAN *WOMAN *WOMAN BUY HOUSE                             JOHN TELL MARY IX-1P BUY HOUSE
In [36]:
# TODO Choose a feature set and model selector
features = features_polar + features_norm + features_custom # change as needed
model_selector = SelectorConstant # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.5898876404494382
Total correct: 73 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *NEW HOMEWORK                                            JOHN WRITE HOMEWORK
    7: *MARY *PEOPLE *MARY *WHAT                                     JOHN CAN GO CAN
   12: JOHN *HAVE *WHAT CAN                                          JOHN CAN GO CAN
   21: *IX *STUDENT *ARRIVE *GO *CAR *CAR *READ CHICKEN              JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE IX *LIKE IX                                          JOHN LIKE IX IX IX
   28: *IX LIKE IX *LIKE IX                                          JOHN LIKE IX IX IX
   30: *SHOOT LIKE *GO *MARY *GO                                     JOHN LIKE IX IX IX
   36: MARY VEGETABLE *YESTERDAY *MARY *MARY *MARY                   MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SHOOT *MARY *CORN *VEGETABLE *MARY                           JOHN IX THINK MARY LOVE
   43: *FRANK *FUTURE BUY HOUSE                                      JOHN MUST BUY HOUSE
   50: *FRANK *SEE BUY CAR *IX                                       FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE BUY HOUSE                                 JOHN SHOULD NOT BUY HOUSE
   57: *MARY *JOHN *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *LIKE FUTURE NOT *ARRIVE HOUSE                                JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL *BLAME MARY                                         JOHN WILL VISIT MARY
   74: *GO *MARY *MARY *GO                                           JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *JOHN *STUDENT SOMETHING-ONE BOOK                             IX-1P FIND SOMETHING-ONE BOOK
   89: *MARY *POSS *GO *IX IX NEW *BREAK-DOWN                        JOHN IX GIVE MAN IX NEW COAT
   90: *SEE *GIVE1 IX *IX WOMAN *CHOCOLATE                           JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *IX IX *IX WOMAN BOOK                                    JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *SEE                                                   JOHN LEG
  107: *GO *IX *ARRIVE *MARY *JANA                                   JOHN POSS FRIEND HAVE CANDY
  108: WOMAN *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX *JOHN *ARRIVE                                      IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX *BLAME *POSS                              SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: JOHN *BUY1 *BOX YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK BUY YESTERDAY WHAT BOOK                                JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY *MARY *MARY LOVE MARY                                   JOHN IX SAY LOVE MARY
  171: *LIKE *JOHN BLAME                                             JOHN MARY BLAME
  174: *CAR *GIVE3 GIVE1 *SEE *BLAME                                 PEOPLE GROUP GIVE1 JANA TOY
  181: *SUE ARRIVE                                                   JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *YESTERDAY *ARRIVE                                 JOHN GIVE GIRL BOX
  193: JOHN *IX *YESTERDAY BOX                                       JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *MARY                                         LIKE CHOCOLATE WHO
  201: JOHN *MAN *WOMAN *WOMAN BUY HOUSE                             JOHN TELL MARY IX-1P BUY HOUSE
In [37]:
# TODO Choose a feature set and model selector
features = features_polar + features_norm + features_custom # change as needed
model_selector = SelectorDIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.5168539325842697
Total correct: 86 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *FUTURE *BOOK *ARRIVE                                         JOHN WRITE HOMEWORK
    7: JOHN *BOX GO CAN                                              JOHN CAN GO CAN
   12: JOHN *WHAT *WHAT CAN                                          JOHN CAN GO CAN
   21: *MARY *NEW *JOHN *GO *JOHN *CAR *FUTURE *FUTURE               JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *MARY *MARY *MARY *MARY IX                                    JOHN LIKE IX IX IX
   28: JOHN *MARY *MARY IX IX                                        JOHN LIKE IX IX IX
   30: JOHN LIKE *MARY *LIKE IX                                      JOHN LIKE IX IX IX
   36: MARY *MARY *IX IX *MARY *IX                                   MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN IX *GIRL *JOHN *MARY                                     JOHN IX THINK MARY LOVE
   43: JOHN *FUTURE BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *JOHN *SEE BUY CAR *IX                                        FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD NOT BUY HOUSE                                     JOHN SHOULD NOT BUY HOUSE
   57: *IX *JOHN *IX MARY                                            JOHN DECIDE VISIT MARY
   67: JOHN FUTURE *IX *ARRIVE HOUSE                                 JOHN FUTURE NOT BUY HOUSE
   71: JOHN *JOHN *JOHN MARY                                         JOHN WILL VISIT MARY
   74: *IX *VISIT VISIT MARY                                         JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *ARRIVE *FUTURE BOOK                                    IX-1P FIND SOMETHING-ONE BOOK
   89: *MARY *POSS *MAN MAN IX NEW *BREAK-DOWN                       JOHN IX GIVE MAN IX NEW COAT
   90: *MARY *IX IX *IX WOMAN BOOK                                   JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *MAN IX *IX WOMAN BOOK                                   JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: JOHN *POSS                                                    JOHN LEG
  107: *MARY *JOHN *CAR *MARY *JOHN                                  JOHN POSS FRIEND HAVE CANDY
  108: *IX *LOVE                                                     WOMAN ARRIVE
  113: IX CAR *IX *IX *BOX                                           IX CAR BLUE SUE BUY
  119: *VISIT *BUY1 IX *JOHN *JOHN                                   SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: JOHN *BUY1 WHAT *WHAT *LOVE                                   JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE JOHN WHO                                                 LOVE JOHN WHO
  167: JOHN IX *VISIT LOVE MARY                                      JOHN IX SAY LOVE MARY
  171: JOHN *JOHN BLAME                                              JOHN MARY BLAME
  174: *JOHN *GIVE1 GIVE1 *VISIT *JOHN                               PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX BOY *GIVE1 TEACHER *WHO                                   ALL BOY GIVE TEACHER APPLE
  189: JOHN *JOHN *VISIT BOX                                         JOHN GIVE GIRL BOX
  193: JOHN *GO *IX BOX                                              JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE WHO                                           LIKE CHOCOLATE WHO
  201: JOHN *GIVE1 *WOMAN *WOMAN BUY HOUSE                           JOHN TELL MARY IX-1P BUY HOUSE
In [38]:
# TODO Choose a feature set and model selector
features = features_delta # change as needed
model_selector = SelectorBIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6404494382022472
Total correct: 64 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *JOHN HOMEWORK                                           JOHN WRITE HOMEWORK
    7: JOHN *HAVE *GIVE1 *TEACHER                                    JOHN CAN GO CAN
   12: JOHN CAN *GO1 CAN                                             JOHN CAN GO CAN
   21: *MARY *MARY *JOHN *MARY *CAR *GO *FUTURE *MARY                JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN *MARY *JOHN IX *MARY                                     JOHN LIKE IX IX IX
   28: JOHN *MARY *MARY IX IX                                        JOHN LIKE IX IX IX
   30: JOHN *MARY *JOHN *JOHN IX                                     JOHN LIKE IX IX IX
   36: MARY *JOHN *JOHN IX *MARY *MARY                               MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY IX *MARY MARY *MARY                                     JOHN IX THINK MARY LOVE
   43: JOHN *JOHN *FINISH HOUSE                                      JOHN MUST BUY HOUSE
   50: *JOHN JOHN BUY CAR *MARY                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *MARY *MARY BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: JOHN *JOHN *IX *JOHN                                          JOHN DECIDE VISIT MARY
   67: JOHN *JOHN *JOHN BUY HOUSE                                    JOHN FUTURE NOT BUY HOUSE
   71: JOHN *JOHN VISIT MARY                                         JOHN WILL VISIT MARY
   74: JOHN *JOHN *MARY MARY                                         JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *GO *IX *WHAT                                           IX-1P FIND SOMETHING-ONE BOOK
   89: *GIVE1 *JOHN *IX *JOHN IX *WHAT *HOUSE                        JOHN IX GIVE MAN IX NEW COAT
   90: *MARY *JOHN *JOHN *IX *IX *MARY                               JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *MARY *JOHN *JOHN WOMAN *ARRIVE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: *JOHN NEW *WHAT BREAK-DOWN                                    POSS NEW CAR BREAK-DOWN
  105: JOHN *MARY                                                    JOHN LEG
  107: JOHN POSS FRIEND *LOVE *MARY                                  JOHN POSS FRIEND HAVE CANDY
  108: *JOHN ARRIVE                                                  WOMAN ARRIVE
  113: *JOHN CAR *MARY *MARY *GIVE1                                  IX CAR BLUE SUE BUY
  119: *JOHN *BUY1 IX CAR *IX                                        SUE BUY IX CAR BLUE
  122: JOHN *VISIT *YESTERDAY                                        JOHN READ BOOK
  139: JOHN *BUY1 WHAT *MARY *ARRIVE                                 JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY *MARY *MARY *YESTERDAY                               JOHN BUY YESTERDAY WHAT BOOK
  158: *BOY *WHO *MARY                                               LOVE JOHN WHO
  167: *MARY *MARY *IX *ARRIVE *WHAT                                 JOHN IX SAY LOVE MARY
  171: JOHN *JOHN BLAME                                              JOHN MARY BLAME
  174: *GIVE1 *MARY GIVE1 *MARY *FINISH                              PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *GIVE1                                                   JOHN ARRIVE
  184: *IX *WHO *GIVE1 *HAVE *MARY                                   ALL BOY GIVE TEACHER APPLE
  189: JOHN *IX *MARY *VISIT                                         JOHN GIVE GIRL BOX
  193: JOHN *IX *IX BOX                                              JOHN GIVE GIRL BOX
  199: *JOHN *ARRIVE *MARY                                           LIKE CHOCOLATE WHO
  201: JOHN *MARY MARY *LIKE *VISIT HOUSE                            JOHN TELL MARY IX-1P BUY HOUSE
In [39]:
# TODO Choose a feature set and model selector
features = features_ground # change as needed
model_selector = SelectorBIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6741573033707865
Total correct: 58 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *GO *BOOK *ARRIVE                                             JOHN WRITE HOMEWORK
    7: *SOMETHING-ONE *GO1 *IX CAN                                   JOHN CAN GO CAN
   12: JOHN *HAVE *WHAT CAN                                          JOHN CAN GO CAN
   21: JOHN *HOMEWORK *NEW *PREFER *CAR *CAR *FUTURE *EAT            JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *FRANK *TELL *LOVE *TELL *LOVE                                JOHN LIKE IX IX IX
   28: *FRANK *TELL *LOVE *TELL *LOVE                                JOHN LIKE IX IX IX
   30: *SHOULD LIKE *GO *GO *GO                                      JOHN LIKE IX IX IX
   36: *VISIT VEGETABLE *YESTERDAY *GIVE *MARY *MARY                 MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SUE *GIVE *CORN *VEGETABLE *GO                               JOHN IX THINK MARY LOVE
   43: *FRANK *GO BUY HOUSE                                          JOHN MUST BUY HOUSE
   50: *FRANK *SEE BUY CAR *SOMETHING-ONE                            FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *WHO BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: *MARY *VISIT VISIT *VISIT                                     JOHN DECIDE VISIT MARY
   67: *LIKE FUTURE NOT BUY HOUSE                                    JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FINISH VISIT MARY                                       JOHN WILL VISIT MARY
   74: *IX *VISIT *GO *GO                                            JOHN NOT VISIT MARY
   77: *JOHN BLAME *LOVE                                             ANN BLAME MARY
   84: *LOVE *ARRIVE *HOMEWORK BOOK                                  IX-1P FIND SOMETHING-ONE BOOK
   89: *GIVE *GIVE GIVE *IX IX *ARRIVE *BOOK                         JOHN IX GIVE MAN IX NEW COAT
   90: *SOMETHING-ONE *SOMETHING-ONE IX *IX WOMAN *COAT              JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: *FRANK GIVE *WOMAN *WOMAN WOMAN BOOK                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *VEGETABLE                                             JOHN LEG
  107: *SHOULD *IX FRIEND *GO *JANA                                  JOHN POSS FRIEND HAVE CANDY
  108: *GIVE *LOVE                                                   WOMAN ARRIVE
  113: IX CAR *CAR *IX *IX                                           IX CAR BLUE SUE BUY
  119: *PREFER *BUY1 IX *BLAME *IX                                   SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 *COAT                                             JOHN READ BOOK
  139: *SHOULD *BUY1 *CAR *BLAME BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK *STUDENT YESTERDAY *TEACHER BOOK                       JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY IX *VISIT *WOMAN *LOVE                                  JOHN IX SAY LOVE MARY
  171: *VISIT *VISIT BLAME                                           JOHN MARY BLAME
  174: *CAN *GIVE3 GIVE1 *APPLE *WHAT                                PEOPLE GROUP GIVE1 JANA TOY
  181: *BLAME ARRIVE                                                 JOHN ARRIVE
  184: *GIVE1 BOY *GIVE1 TEACHER APPLE                               ALL BOY GIVE TEACHER APPLE
  189: *JANA *SOMETHING-ONE *YESTERDAY *WHAT                         JOHN GIVE GIRL BOX
  193: JOHN *SOMETHING-ONE *YESTERDAY BOX                            JOHN GIVE GIRL BOX
  199: *LOVE CHOCOLATE WHO                                           LIKE CHOCOLATE WHO
  201: JOHN *GIVE *GIVE *LOVE *ARRIVE HOUSE                          JOHN TELL MARY IX-1P BUY HOUSE
In [40]:
# TODO Choose a feature set and model selector
features = features_polar # change as needed
model_selector = SelectorBIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *GO *BOOK HOMEWORK                                            JOHN WRITE HOMEWORK
    7: JOHN *WHAT *MARY *WHAT                                        JOHN CAN GO CAN
   12: JOHN *WHAT *GO1 CAN                                           JOHN CAN GO CAN
   21: *IX *HOMEWORK WONT *FUTURE *CAR *CAR *GO *TOMORROW            JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *FRANK LIKE IX *WHO IX                                        JOHN LIKE IX IX IX
   28: *IX *WHO *FUTURE *FUTURE IX                                   JOHN LIKE IX IX IX
   30: *SHOULD LIKE *GO *MARY *GO                                    JOHN LIKE IX IX IX
   36: *SOMETHING-ONE VEGETABLE *GIRL *GIVE *MARY *MARY              MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SUE *GIVE *DECIDE MARY *GO                                   JOHN IX THINK MARY LOVE
   43: *IX *GO BUY HOUSE                                             JOHN MUST BUY HOUSE
   50: *POSS *SEE BUY CAR *ARRIVE                                    FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *WHO BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: *MARY *PREFER *MARY MARY                                      JOHN DECIDE VISIT MARY
   67: *LIKE *MOTHER NOT BUY HOUSE                                   JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FINISH *GIVE1 MARY                                      JOHN WILL VISIT MARY
   74: *GO *WHO *GO *GO                                              JOHN NOT VISIT MARY
   77: *IX BLAME *LOVE                                               ANN BLAME MARY
   84: *LOVE *GIVE1 *POSS BOOK                                       IX-1P FIND SOMETHING-ONE BOOK
   89: *MAN *GIVE *WOMAN *IX IX *BUY *BOOK                           JOHN IX GIVE MAN IX NEW COAT
   90: JOHN *GIVE1 IX *GIVE3 *GIVE1 *COAT                            JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *WOMAN *WOMAN *WOMAN WOMAN BOOK                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *VEGETABLE                                             JOHN LEG
  107: *LIKE *SOMETHING-ONE *HAVE *GO *WHO                           JOHN POSS FRIEND HAVE CANDY
  108: *IX ARRIVE                                                    WOMAN ARRIVE
  113: IX CAR *SUE *SOMETHING-ONE *ARRIVE                            IX CAR BLUE SUE BUY
  119: *PREFER *BUY1 IX CAR *SOMETHING-ONE                           SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: *SHOULD *BUY1 *CAR YESTERDAY BOOK                             JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK BUY YESTERDAY WHAT BOOK                                JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY *SOMETHING-ONE *MARY LOVE *LOVE                         JOHN IX SAY LOVE MARY
  171: *SOMETHING-ONE *SOMETHING-ONE BLAME                           JOHN MARY BLAME
  174: *CAN *GIVE3 GIVE1 *GO *WHAT                                   PEOPLE GROUP GIVE1 JANA TOY
  181: *SUE ARRIVE                                                   JOHN ARRIVE
  184: *IX BOY *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *SUE *SOMETHING-ONE *YESTERDAY *ARRIVE                        JOHN GIVE GIRL BOX
  193: JOHN *SOMETHING-ONE *YESTERDAY BOX                            JOHN GIVE GIRL BOX
  199: *FRANK CHOCOLATE WHO                                          LIKE CHOCOLATE WHO
  201: JOHN *MAN *MAN *JOHN BUY HOUSE                                JOHN TELL MARY IX-1P BUY HOUSE
In [41]:
# TODO Choose a feature set and model selector
features = features_norm # change as needed
model_selector = SelectorBIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
In [42]:
features = features_custom # change as needed
model_selector = SelectorBIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
In [43]:
# TODO Choose a feature set and model selector
features = features_delta # change as needed
model_selector = SelectorDIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6573033707865169
Total correct: 61 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *GIVE1 *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *GIVE1 *GIVE1 *ARRIVE                                    JOHN CAN GO CAN
   12: JOHN *BOX *JOHN CAN                                           JOHN CAN GO CAN
   21: JOHN *MARY *LOVE *MARY *HOUSE *FUTURE *FUTURE *MARY           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN *IX *JOHN IX IX                                          JOHN LIKE IX IX IX
   28: JOHN *MARY *JOHN IX *SHOULD                                   JOHN LIKE IX IX IX
   30: JOHN *IX *SHOULD *JOHN IX                                     JOHN LIKE IX IX IX
   36: *JOHN *JOHN *JOHN *GIVE *MARY *MARY                           MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY IX *JOHN MARY *MARY                                     JOHN IX THINK MARY LOVE
   43: JOHN *IX BUY HOUSE                                            JOHN MUST BUY HOUSE
   50: *JOHN JOHN BUY CAR *MARY                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *JOHN *JOHN BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: *MARY *JOHN *IX *IX                                           JOHN DECIDE VISIT MARY
   67: JOHN *JOHN *MARY BUY HOUSE                                    JOHN FUTURE NOT BUY HOUSE
   71: JOHN *MARY VISIT *CAR                                         JOHN WILL VISIT MARY
   74: JOHN *JOHN *IX MARY                                           JOHN NOT VISIT MARY
   77: *JOHN *ARRIVE MARY                                            ANN BLAME MARY
   84: *GO *CAR *IX *LOVE                                            IX-1P FIND SOMETHING-ONE BOOK
   89: *MARY *JOHN *IX *IX *JOHN *WHAT *CAN                          JOHN IX GIVE MAN IX NEW COAT
   90: JOHN *JOHN *JOHN *IX *IX *MARY                                JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *IX *JOHN *IX *IX *MARY                                  JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: *JOHN *ARRIVE CAR *HOUSE                                      POSS NEW CAR BREAK-DOWN
  105: JOHN *JOHN                                                    JOHN LEG
  107: JOHN *JOHN *ARRIVE *MARY *JOHN                                JOHN POSS FRIEND HAVE CANDY
  108: *JOHN *LOVE                                                   WOMAN ARRIVE
  113: *JOHN CAR *MARY *MARY *GIVE1                                  IX CAR BLUE SUE BUY
  119: *JOHN *GIVE1 IX CAR *MARY                                     SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 *WHAT                                             JOHN READ BOOK
  139: JOHN *GIVE1 WHAT *JOHN *WHAT                                  JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY *FUTURE WHAT *WHAT                                   JOHN BUY YESTERDAY WHAT BOOK
  158: *ARRIVE JOHN *JOHN                                            LOVE JOHN WHO
  167: JOHN IX *IX *WHAT MARY                                        JOHN IX SAY LOVE MARY
  171: JOHN *JOHN BLAME                                              JOHN MARY BLAME
  174: *GIVE1 *LOVE GIVE1 *JOHN *CAR                                 PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN ARRIVE                                                   JOHN ARRIVE
  184: *IX *JOHN *GIVE1 TEACHER *MARY                                ALL BOY GIVE TEACHER APPLE
  189: JOHN *JOHN *JOHN *ARRIVE                                      JOHN GIVE GIRL BOX
  193: JOHN *IX *IX BOX                                              JOHN GIVE GIRL BOX
  199: *JOHN *WHAT *MARY                                             LIKE CHOCOLATE WHO
  201: JOHN *IX *JOHN *JOHN BUY HOUSE                                JOHN TELL MARY IX-1P BUY HOUSE
In [44]:
# TODO Choose a feature set and model selector
features = features_norm # change as needed
model_selector = SelectorDIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.5449438202247191
Total correct: 81 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *NEW *GIVE1                                              JOHN WRITE HOMEWORK
    7: JOHN CAN GO CAN                                               JOHN CAN GO CAN
   12: JOHN *WHAT *JOHN CAN                                          JOHN CAN GO CAN
   21: JOHN *NEW *JOHN *WHO *GIVE1 *WHAT *FUTURE *WHO                JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN *IX IX *WHO IX                                           JOHN LIKE IX IX IX
   28: JOHN *FUTURE IX *FUTURE IX                                    JOHN LIKE IX IX IX
   30: JOHN LIKE *MARY *MARY *MARY                                   JOHN LIKE IX IX IX
   36: *IX *VISIT *GIVE *GIVE *MARY *MARY                            MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *GO *GIVE *JOHN *MARY                                    JOHN IX THINK MARY LOVE
   43: JOHN *IX BUY HOUSE                                            JOHN MUST BUY HOUSE
   50: *JOHN *SEE BUY CAR *JOHN                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD NOT BUY HOUSE                                     JOHN SHOULD NOT BUY HOUSE
   57: *MARY *GO *GO MARY                                            JOHN DECIDE VISIT MARY
   67: *SHOULD FUTURE *MARY BUY HOUSE                                JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FUTURE *GIVE1 MARY                                      JOHN WILL VISIT MARY
   74: *IX *GO *GO MARY                                              JOHN NOT VISIT MARY
   77: *JOHN *GIVE1 MARY                                             ANN BLAME MARY
   84: *JOHN *GIVE1 *GIVE1 *COAT                                     IX-1P FIND SOMETHING-ONE BOOK
   89: *GIVE *GIVE *WOMAN *IX IX *ARRIVE *BOOK                       JOHN IX GIVE MAN IX NEW COAT
   90: JOHN GIVE IX SOMETHING-ONE WOMAN *ARRIVE                      JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *WOMAN IX *IX *IX BOOK                                   JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: JOHN *SEE                                                     JOHN LEG
  107: JOHN POSS *HAVE *GO *MARY                                     JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *LOVE                                                   WOMAN ARRIVE
  113: IX CAR *IX *MARY *JOHN                                        IX CAR BLUE SUE BUY
  119: *MARY *BUY1 IX *BLAME *IX                                     SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: JOHN *ARRIVE WHAT *MARY *ARRIVE                               JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE JOHN WHO                                                 LOVE JOHN WHO
  167: JOHN *MARY *VISIT LOVE MARY                                   JOHN IX SAY LOVE MARY
  171: *IX MARY BLAME                                                JOHN MARY BLAME
  174: *JOHN *JOHN GIVE1 *YESTERDAY *JOHN                            PEOPLE GROUP GIVE1 JANA TOY
  181: *EAT ARRIVE                                                   JOHN ARRIVE
  184: *GO BOY *GIVE1 TEACHER *YESTERDAY                             ALL BOY GIVE TEACHER APPLE
  189: *MARY *GO *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  193: JOHN *GO *YESTERDAY BOX                                       JOHN GIVE GIRL BOX
  199: *JOHN *STUDENT *GO                                            LIKE CHOCOLATE WHO
  201: JOHN *MAN *WOMAN *JOHN BUY HOUSE                              JOHN TELL MARY IX-1P BUY HOUSE
In [45]:
# TODO Choose a feature set and model selector
features = features_norm # change as needed
model_selector = SelectorDIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *ARRIVE *ARRIVE                                          JOHN WRITE HOMEWORK
    7: *MARY *CAR GO CAN                                             JOHN CAN GO CAN
   12: JOHN *WHAT *ARRIVE CAN                                        JOHN CAN GO CAN
   21: *MARY *JOHN *JOHN *BLAME *CAR *CAR *FUTURE *JOHN              JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN LIKE IX *LIKE IX                                         JOHN LIKE IX IX IX
   28: *ANN *ANN *ANN *ANN *ANN                                      JOHN LIKE IX IX IX
   30: *IX-1P *CHOCOLATE *MARY *LOVE *LOVE                           JOHN LIKE IX IX IX
   36: MARY *MARY *YESTERDAY *SHOOT LIKE *IX                         MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY *JOHN *FUTURE1 *VEGETABLE *MARY                         JOHN IX THINK MARY LOVE
   43: JOHN *FUTURE BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *POSS *SEE *JOHN CAR *IX                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *FUTURE *SHOULD *ARRIVE HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *SHOOT *IX *JOHN MARY                                         JOHN DECIDE VISIT MARY
   67: *MARY *IX *JOHN *ARRIVE HOUSE                                 JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FUTURE VISIT MARY                                       JOHN WILL VISIT MARY
   74: *LIKE *VISIT VISIT MARY                                       JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *BOX *VISIT BOOK                                        IX-1P FIND SOMETHING-ONE BOOK
   89: *MARY *POSS *IX *IX IX *ARRIVE *BOOK                          JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *IX IX *IX WOMAN BOOK                                   JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *IX IX *IX *LOVE BOOK                                    JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: JOHN *POSS                                                    JOHN LEG
  107: *MARY POSS *CAR *MARY *TOY1                                   JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *JOHN                                                   WOMAN ARRIVE
  113: IX CAR *IX *JOHN *BOX                                         IX CAR BLUE SUE BUY
  119: SUE *BUY1 IX *JOHN *GO                                        SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: JOHN *BUY1 *CAR *JOHN BOOK                                    JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE JOHN WHO                                                 LOVE JOHN WHO
  167: JOHN IX *SAY-1P LOVE *IX                                      JOHN IX SAY LOVE MARY
  171: *MARY *JOHN BLAME                                             JOHN MARY BLAME
  174: *CAR *GIVE1 GIVE1 *YESTERDAY *CAR                             PEOPLE GROUP GIVE1 JANA TOY
  181: *MARY *BOX                                                    JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *MARY *MARY *YESTERDAY BOX                                    JOHN GIVE GIRL BOX
  193: *LEAVE *YESTERDAY *YESTERDAY BOX                              JOHN GIVE GIRL BOX
  199: *JOHN *ARRIVE *JOHN                                           LIKE CHOCOLATE WHO
  201: JOHN *GIVE1 *IX *WOMAN *ARRIVE HOUSE                          JOHN TELL MARY IX-1P BUY HOUSE
In [46]:
# TODO Choose a feature set and model selector
features = features_custom # change as needed
model_selector = SelectorDIC # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *ARRIVE *ARRIVE                                          JOHN WRITE HOMEWORK
    7: *MARY *CAR GO CAN                                             JOHN CAN GO CAN
   12: JOHN *WHAT *ARRIVE CAN                                        JOHN CAN GO CAN
   21: *MARY *JOHN *JOHN *BLAME *CAR *CAR *FUTURE *JOHN              JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN LIKE IX *LIKE IX                                         JOHN LIKE IX IX IX
   28: *ANN *ANN *ANN *ANN *ANN                                      JOHN LIKE IX IX IX
   30: *IX-1P *CHOCOLATE *MARY *LOVE *LOVE                           JOHN LIKE IX IX IX
   36: MARY *MARY *YESTERDAY *SHOOT LIKE *IX                         MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY *JOHN *FUTURE1 *VEGETABLE *MARY                         JOHN IX THINK MARY LOVE
   43: JOHN *FUTURE BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *POSS *SEE *JOHN CAR *IX                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *FUTURE *SHOULD *ARRIVE HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *SHOOT *IX *JOHN MARY                                         JOHN DECIDE VISIT MARY
   67: *MARY *IX *JOHN *ARRIVE HOUSE                                 JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FUTURE VISIT MARY                                       JOHN WILL VISIT MARY
   74: *LIKE *VISIT VISIT MARY                                       JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *BOX *VISIT BOOK                                        IX-1P FIND SOMETHING-ONE BOOK
   89: *MARY *POSS *IX *IX IX *ARRIVE *BOOK                          JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *IX IX *IX WOMAN BOOK                                   JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *IX IX *IX *LOVE BOOK                                    JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: JOHN *POSS                                                    JOHN LEG
  107: *MARY POSS *CAR *MARY *TOY1                                   JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *JOHN                                                   WOMAN ARRIVE
  113: IX CAR *IX *JOHN *BOX                                         IX CAR BLUE SUE BUY
  119: SUE *BUY1 IX *JOHN *GO                                        SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: JOHN *BUY1 *CAR *JOHN BOOK                                    JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE JOHN WHO                                                 LOVE JOHN WHO
  167: JOHN IX *SAY-1P LOVE *IX                                      JOHN IX SAY LOVE MARY
  171: *MARY *JOHN BLAME                                             JOHN MARY BLAME
  174: *CAR *GIVE1 GIVE1 *YESTERDAY *CAR                             PEOPLE GROUP GIVE1 JANA TOY
  181: *MARY *BOX                                                    JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *MARY *MARY *YESTERDAY BOX                                    JOHN GIVE GIRL BOX
  193: *LEAVE *YESTERDAY *YESTERDAY BOX                              JOHN GIVE GIRL BOX
  199: *JOHN *ARRIVE *JOHN                                           LIKE CHOCOLATE WHO
  201: JOHN *GIVE1 *IX *WOMAN *ARRIVE HOUSE                          JOHN TELL MARY IX-1P BUY HOUSE
In [47]:
# TODO Choose a feature set and model selector
features = features_delta # change as needed
model_selector = SelectorCV # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6404494382022472
Total correct: 64 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: JOHN *JOHN HOMEWORK                                           JOHN WRITE HOMEWORK
    7: JOHN *HAVE *GIVE1 *TEACHER                                    JOHN CAN GO CAN
   12: JOHN CAN *GO1 CAN                                             JOHN CAN GO CAN
   21: *MARY *MARY *JOHN *MARY *CAR *GO *FUTURE *MARY                JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: JOHN *MARY *JOHN IX *MARY                                     JOHN LIKE IX IX IX
   28: JOHN *MARY *MARY IX IX                                        JOHN LIKE IX IX IX
   30: JOHN *MARY *JOHN *JOHN IX                                     JOHN LIKE IX IX IX
   36: MARY *JOHN *JOHN IX *MARY *MARY                               MARY VEGETABLE KNOW IX LIKE CORN1
   40: *MARY IX *MARY MARY *MARY                                     JOHN IX THINK MARY LOVE
   43: JOHN *JOHN *FINISH HOUSE                                      JOHN MUST BUY HOUSE
   50: *JOHN JOHN BUY CAR *MARY                                      FUTURE JOHN BUY CAR SHOULD
   54: JOHN *MARY *MARY BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: JOHN *JOHN *IX *JOHN                                          JOHN DECIDE VISIT MARY
   67: JOHN *JOHN *JOHN BUY HOUSE                                    JOHN FUTURE NOT BUY HOUSE
   71: JOHN *JOHN VISIT MARY                                         JOHN WILL VISIT MARY
   74: JOHN *JOHN *MARY MARY                                         JOHN NOT VISIT MARY
   77: *JOHN BLAME MARY                                              ANN BLAME MARY
   84: *JOHN *GO *IX *WHAT                                           IX-1P FIND SOMETHING-ONE BOOK
   89: *GIVE1 *JOHN *IX *JOHN IX *WHAT *HOUSE                        JOHN IX GIVE MAN IX NEW COAT
   90: *MARY *JOHN *JOHN *IX *IX *MARY                               JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *MARY *JOHN *JOHN WOMAN *ARRIVE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: *JOHN NEW *WHAT BREAK-DOWN                                    POSS NEW CAR BREAK-DOWN
  105: JOHN *MARY                                                    JOHN LEG
  107: JOHN POSS FRIEND *LOVE *MARY                                  JOHN POSS FRIEND HAVE CANDY
  108: *JOHN ARRIVE                                                  WOMAN ARRIVE
  113: *JOHN CAR *MARY *MARY *GIVE1                                  IX CAR BLUE SUE BUY
  119: *JOHN *BUY1 IX CAR *IX                                        SUE BUY IX CAR BLUE
  122: JOHN *VISIT *YESTERDAY                                        JOHN READ BOOK
  139: JOHN *BUY1 WHAT *MARY *ARRIVE                                 JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY *MARY *MARY *YESTERDAY                               JOHN BUY YESTERDAY WHAT BOOK
  158: *BOY *WHO *MARY                                               LOVE JOHN WHO
  167: *MARY *MARY *IX *ARRIVE *WHAT                                 JOHN IX SAY LOVE MARY
  171: JOHN *JOHN BLAME                                              JOHN MARY BLAME
  174: *GIVE1 *MARY GIVE1 *MARY *FINISH                              PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *GIVE1                                                   JOHN ARRIVE
  184: *IX *WHO *GIVE1 *HAVE *MARY                                   ALL BOY GIVE TEACHER APPLE
  189: JOHN *IX *MARY *VISIT                                         JOHN GIVE GIRL BOX
  193: JOHN *IX *IX BOX                                              JOHN GIVE GIRL BOX
  199: *JOHN *ARRIVE *MARY                                           LIKE CHOCOLATE WHO
  201: JOHN *MARY MARY *LIKE *VISIT HOUSE                            JOHN TELL MARY IX-1P BUY HOUSE
In [48]:
# TODO Choose a feature set and model selector
features = features_polar # change as needed
model_selector = SelectorCV # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *GO *BOOK HOMEWORK                                            JOHN WRITE HOMEWORK
    7: JOHN *WHAT *MARY *WHAT                                        JOHN CAN GO CAN
   12: JOHN *WHAT *GO1 CAN                                           JOHN CAN GO CAN
   21: *IX *HOMEWORK WONT *FUTURE *CAR *CAR *GO *TOMORROW            JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *FRANK LIKE IX *WHO IX                                        JOHN LIKE IX IX IX
   28: *IX *WHO *FUTURE *FUTURE IX                                   JOHN LIKE IX IX IX
   30: *SHOULD LIKE *GO *MARY *GO                                    JOHN LIKE IX IX IX
   36: *SOMETHING-ONE VEGETABLE *GIRL *GIVE *MARY *MARY              MARY VEGETABLE KNOW IX LIKE CORN1
   40: *SUE *GIVE *DECIDE MARY *GO                                   JOHN IX THINK MARY LOVE
   43: *IX *GO BUY HOUSE                                             JOHN MUST BUY HOUSE
   50: *POSS *SEE BUY CAR *ARRIVE                                    FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *WHO BUY HOUSE                                    JOHN SHOULD NOT BUY HOUSE
   57: *MARY *PREFER *MARY MARY                                      JOHN DECIDE VISIT MARY
   67: *LIKE *MOTHER NOT BUY HOUSE                                   JOHN FUTURE NOT BUY HOUSE
   71: JOHN *FINISH *GIVE1 MARY                                      JOHN WILL VISIT MARY
   74: *GO *WHO *GO *GO                                              JOHN NOT VISIT MARY
   77: *IX BLAME *LOVE                                               ANN BLAME MARY
   84: *LOVE *GIVE1 *POSS BOOK                                       IX-1P FIND SOMETHING-ONE BOOK
   89: *MAN *GIVE *WOMAN *IX IX *BUY *BOOK                           JOHN IX GIVE MAN IX NEW COAT
   90: JOHN *GIVE1 IX *GIVE3 *GIVE1 *COAT                            JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *WOMAN *WOMAN *WOMAN WOMAN BOOK                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *FRANK *VEGETABLE                                             JOHN LEG
  107: *LIKE *SOMETHING-ONE *HAVE *GO *WHO                           JOHN POSS FRIEND HAVE CANDY
  108: *IX ARRIVE                                                    WOMAN ARRIVE
  113: IX CAR *SUE *SOMETHING-ONE *ARRIVE                            IX CAR BLUE SUE BUY
  119: *PREFER *BUY1 IX CAR *SOMETHING-ONE                           SUE BUY IX CAR BLUE
  122: JOHN *GIVE1 BOOK                                              JOHN READ BOOK
  139: *SHOULD *BUY1 *CAR YESTERDAY BOOK                             JOHN BUY WHAT YESTERDAY BOOK
  142: *FRANK BUY YESTERDAY WHAT BOOK                                JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY WHO                                                LOVE JOHN WHO
  167: *MARY *SOMETHING-ONE *MARY LOVE *LOVE                         JOHN IX SAY LOVE MARY
  171: *SOMETHING-ONE *SOMETHING-ONE BLAME                           JOHN MARY BLAME
  174: *CAN *GIVE3 GIVE1 *GO *WHAT                                   PEOPLE GROUP GIVE1 JANA TOY
  181: *SUE ARRIVE                                                   JOHN ARRIVE
  184: *IX BOY *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *SUE *SOMETHING-ONE *YESTERDAY *ARRIVE                        JOHN GIVE GIRL BOX
  193: JOHN *SOMETHING-ONE *YESTERDAY BOX                            JOHN GIVE GIRL BOX
  199: *FRANK CHOCOLATE WHO                                          LIKE CHOCOLATE WHO
  201: JOHN *MAN *MAN *JOHN BUY HOUSE                                JOHN TELL MARY IX-1P BUY HOUSE
In [49]:
# TODO Choose a feature set and model selector
features = features_norm # change as needed
model_selector = SelectorCV # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE
In [50]:
# TODO Choose a feature set and model selector
features = features_custom # change as needed
model_selector = SelectorCV # change as needed

# TODO Recognize the test set and display the result with the show_errors method
models = train_all_words(features, model_selector)
test_set = asl.build_test(features)
probabilities, guesses = recognize(models, test_set)
show_errors(guesses, test_set)
**** WER = 0.6235955056179775
Total correct: 67 out of 178
Video  Recognized                                                    Correct
=====================================================================================================
    2: *MARY WRITE *ARRIVE                                           JOHN WRITE HOMEWORK
    7: JOHN *NEW *JOHN CAN                                           JOHN CAN GO CAN
   12: *SHOULD *HAVE *GO1 CAN                                        JOHN CAN GO CAN
   21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE           JOHN FISH WONT EAT BUT CAN EAT CHICKEN
   25: *IX LIKE *LIKE *LIKE IX                                       JOHN LIKE IX IX IX
   28: *ANN LIKE *ANN *LIKE *ANN                                     JOHN LIKE IX IX IX
   30: *SHOOT LIKE *LOVE *LIKE *MARY                                 JOHN LIKE IX IX IX
   36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN                      MARY VEGETABLE KNOW IX LIKE CORN1
   40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE                          JOHN IX THINK MARY LOVE
   43: JOHN *SHOULD BUY HOUSE                                        JOHN MUST BUY HOUSE
   50: *FRANK *SEE *ARRIVE CAR *CAR                                  FUTURE JOHN BUY CAR SHOULD
   54: JOHN SHOULD *FUTURE *STUDENT HOUSE                            JOHN SHOULD NOT BUY HOUSE
   57: *MARY *MARY *MARY MARY                                        JOHN DECIDE VISIT MARY
   67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE                             JOHN FUTURE NOT BUY HOUSE
   71: JOHN WILL VISIT MARY                                          JOHN WILL VISIT MARY
   74: *WOMAN *VISIT VISIT *FRANK                                    JOHN NOT VISIT MARY
   77: *IX BLAME MARY                                                ANN BLAME MARY
   84: *IX *ARRIVE *NEW BOOK                                         IX-1P FIND SOMETHING-ONE BOOK
   89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN           JOHN IX GIVE MAN IX NEW COAT
   90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE                          JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
   92: JOHN *GIVE1 IX *IX WOMAN BOOK                                 JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  100: POSS NEW CAR BREAK-DOWN                                       POSS NEW CAR BREAK-DOWN
  105: *WHO *SEE                                                     JOHN LEG
  107: *TELL *IX *BOX *LIKE *JANA                                    JOHN POSS FRIEND HAVE CANDY
  108: *LOVE *HOMEWORK                                               WOMAN ARRIVE
  113: IX CAR *IX SUE *HAVE                                          IX CAR BLUE SUE BUY
  119: *VEGETABLE *BUY1 IX CAR *GO                                   SUE BUY IX CAR BLUE
  122: JOHN *HOUSE *COAT                                             JOHN READ BOOK
  139: JOHN *BUY1 *CAR YESTERDAY BOOK                                JOHN BUY WHAT YESTERDAY BOOK
  142: JOHN BUY YESTERDAY WHAT BOOK                                  JOHN BUY YESTERDAY WHAT BOOK
  158: LOVE *MARY *CORN                                              LOVE JOHN WHO
  167: JOHN *JOHN *SAY-1P LOVE MARY                                  JOHN IX SAY LOVE MARY
  171: *SHOOT *JOHN BLAME                                            JOHN MARY BLAME
  174: *NEW *GIVE1 GIVE1 *WHO *CAR                                   PEOPLE GROUP GIVE1 JANA TOY
  181: JOHN *BOX                                                     JOHN ARRIVE
  184: *IX *IX *GIVE1 TEACHER APPLE                                  ALL BOY GIVE TEACHER APPLE
  189: *JANA *SEE *PREFER *ARRIVE                                    JOHN GIVE GIRL BOX
  193: JOHN *SEE *YESTERDAY BOX                                      JOHN GIVE GIRL BOX
  199: *JOHN CHOCOLATE *JOHN                                         LIKE CHOCOLATE WHO
  201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE                      JOHN TELL MARY IX-1P BUY HOUSE

Question 3: Summarize the error results from three combinations of features and model selectors. What was the "best" combination and why? What additional information might we use to improve our WER? For more insight on improving WER, take a look at the introduction to Part 4.

Answer 3:
I searched all possible choices like a grid search and selected feature selection and selecter from the results that were good from among them.The best result is that SelectorDIC has the feature amount of features_polar + featuresnorm + features customer.Finally, the best result was obtained by making selector DIC. Basically, DIC is superior to BIC as is the following article, the result appeared vividly this time.

paper
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.58.6208&rep=rep1&type=pdf it's clear to see that BIC Selector and DIC Selector are very close in WER. This may be true due to the fact that both of these selectors leverage all samples when training models. These examples display the power of mean normalisation. CV Selector appears to have scored worst for WER; this may be due to the fact of generalization and that CV does not use the entire training set to train models. Leveraging CV Selector will often avoid overfitting during training.DIC uses more comparisons and works greats for classification problems. To improve WER, I'd recommend leveraging N-Grams and transition probabilities. With sufficient training data it's possible to improve the WER by eliminating improbable word transitions.

In [ ]:
 
In [ ]:
 
In [ ]:
 

Recognizer Unit Tests

Run the following unit tests as a sanity check on the defined recognizer. The test simply looks for some valid values but is not exhaustive. However, the project should not be submitted if these tests don't pass.

In [51]:
from asl_test_recognizer import TestRecognize
suite = unittest.TestLoader().loadTestsFromModule(TestRecognize())
unittest.TextTestRunner().run(suite)
..
----------------------------------------------------------------------
Ran 2 tests in 37.017s

OK
Out[51]:
<unittest.runner.TextTestResult run=2 errors=0 failures=0>

PART 4: (OPTIONAL) Improve the WER with Language Models

We've squeezed just about as much as we can out of the model and still only get about 50% of the words right! Surely we can do better than that. Probability to the rescue again in the form of statistical language models (SLM). The basic idea is that each word has some probability of occurrence within the set, and some probability that it is adjacent to specific other words. We can use that additional information to make better choices.

Additional reading and resources
Optional challenge

The recognizer you implemented in Part 3 is equivalent to a "0-gram" SLM. Improve the WER with the SLM data provided with the data set in the link above using "1-gram", "2-gram", and/or "3-gram" statistics. The probabilities data you've already calculated will be useful and can be turned into a pandas DataFrame if desired (see next cell).
Good luck! Share your results with the class!

In [ ]:
# create a DataFrame of log likelihoods for the test word items
df_probs = pd.DataFrame(data=probabilities)
df_probs.head()