{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Artificial Intelligence Engineer Nanodegree - Probabilistic Models\n",
"## Project: Sign Language Recognition System\n",
"- [Introduction](#intro)\n",
"- [Part 1 Feature Selection](#part1_tutorial)\n",
" - [Tutorial](#part1_tutorial)\n",
" - [Features Submission](#part1_submission)\n",
" - [Features Unittest](#part1_test)\n",
"- [Part 2 Train the models](#part2_tutorial)\n",
" - [Tutorial](#part2_tutorial)\n",
" - [Model Selection Score Submission](#part2_submission)\n",
" - [Model Score Unittest](#part2_test)\n",
"- [Part 3 Build a Recognizer](#part3_tutorial)\n",
" - [Tutorial](#part3_tutorial)\n",
" - [Recognizer Submission](#part3_submission)\n",
" - [Recognizer Unittest](#part3_test)\n",
"- [Part 4 (OPTIONAL) Improve the WER with Language Models](#part4_info)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Introduction\n",
"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)](https://en.wikipedia.org/wiki/Hidden_Markov_model) to analyze a series of measurements taken from videos of American Sign Language (ASL) collected for research (see the [RWTH-BOSTON-104 Database](http://www-i6.informatik.rwth-aachen.de/~dreuw/database-rwth-boston-104.php)). In this video, the right-hand x and y locations are plotted as the speaker signs the sentence.\n",
"[](https://drive.google.com/open?id=0B_5qGuFe-wbhUXRuVnNZVnMtam8)\n",
"\n",
"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. \n",
"\n",
"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!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## PART 1: Data\n",
"\n",
"### Features Tutorial\n",
"##### Load the initial database\n",
"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](http://pandas.pydata.org/pandas-docs/stable/) 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](https://hmmlearn.readthedocs.io/en/latest/) library. We'll use those to create models in Part 2.\n",
"\n",
"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. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" left-x | \n",
" left-y | \n",
" right-x | \n",
" right-y | \n",
" nose-x | \n",
" nose-y | \n",
" speaker | \n",
"
\n",
" \n",
" video | \n",
" frame | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 98 | \n",
" 0 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
"
\n",
" \n",
" 1 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
"
\n",
" \n",
" 2 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
"
\n",
" \n",
" 3 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
"
\n",
" \n",
" 4 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" left-x left-y right-x right-y nose-x nose-y speaker\n",
"video frame \n",
"98 0 149 181 170 175 161 62 woman-1\n",
" 1 149 181 170 175 161 62 woman-1\n",
" 2 149 181 170 175 161 62 woman-1\n",
" 3 149 181 170 175 161 62 woman-1\n",
" 4 149 181 170 175 161 62 woman-1"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"from asl_data import AslDb\n",
"\n",
"\n",
"asl = AslDb() # initializes the database\n",
"asl.df.head() # displays the first five rows of the asl database, indexed by video and frame"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Ayshine\\Anaconda2\\envs\\aind\\lib\\site-packages\\ipykernel_launcher.py:1: DeprecationWarning: \n",
".ix is deprecated. Please use\n",
".loc for label based indexing or\n",
".iloc for positional indexing\n",
"\n",
"See the documentation here:\n",
"http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n",
" \"\"\"Entry point for launching an IPython kernel.\n"
]
},
{
"data": {
"text/plain": [
"left-x 149\n",
"left-y 181\n",
"right-x 170\n",
"right-y 175\n",
"nose-x 161\n",
"nose-y 62\n",
"speaker woman-1\n",
"Name: (98, 1), dtype: object"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"asl.df.ix[98,1] # look at the data available for an individual frame"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The frame represented by video 98, frame 1 is shown here:\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Feature selection for training the model\n",
"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. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" left-x | \n",
" left-y | \n",
" right-x | \n",
" right-y | \n",
" nose-x | \n",
" nose-y | \n",
" speaker | \n",
" grnd-ry | \n",
"
\n",
" \n",
" video | \n",
" frame | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 98 | \n",
" 0 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
"
\n",
" \n",
" 1 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
"
\n",
" \n",
" 2 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
"
\n",
" \n",
" 3 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
"
\n",
" \n",
" 4 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" left-x left-y right-x right-y nose-x nose-y speaker \\\n",
"video frame \n",
"98 0 149 181 170 175 161 62 woman-1 \n",
" 1 149 181 170 175 161 62 woman-1 \n",
" 2 149 181 170 175 161 62 woman-1 \n",
" 3 149 181 170 175 161 62 woman-1 \n",
" 4 149 181 170 175 161 62 woman-1 \n",
"\n",
" grnd-ry \n",
"video frame \n",
"98 0 113 \n",
" 1 113 \n",
" 2 113 \n",
" 3 113 \n",
" 4 113 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"asl.df['grnd-ry'] = asl.df['right-y'] - asl.df['nose-y']\n",
"asl.df.head() # the new feature 'grnd-ry' is now in the frames dictionary"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Try it!"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"asl.df sample\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" left-x | \n",
" left-y | \n",
" right-x | \n",
" right-y | \n",
" nose-x | \n",
" nose-y | \n",
" speaker | \n",
" grnd-ry | \n",
" grnd-rx | \n",
" grnd-ly | \n",
" grnd-lx | \n",
"
\n",
" \n",
" video | \n",
" frame | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 98 | \n",
" 0 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
"
\n",
" \n",
" 1 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
"
\n",
" \n",
" 2 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
"
\n",
" \n",
" 3 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
"
\n",
" \n",
" 4 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" left-x left-y right-x right-y nose-x nose-y speaker \\\n",
"video frame \n",
"98 0 149 181 170 175 161 62 woman-1 \n",
" 1 149 181 170 175 161 62 woman-1 \n",
" 2 149 181 170 175 161 62 woman-1 \n",
" 3 149 181 170 175 161 62 woman-1 \n",
" 4 149 181 170 175 161 62 woman-1 \n",
"\n",
" grnd-ry grnd-rx grnd-ly grnd-lx \n",
"video frame \n",
"98 0 113 9 119 -12 \n",
" 1 113 9 119 -12 \n",
" 2 113 9 119 -12 \n",
" 3 113 9 119 -12 \n",
" 4 113 9 119 -12 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Correct!
"
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from asl_utils import test_features_tryit\n",
"\n",
"# TODO add df columns for 'grnd-rx', 'grnd-ly', 'grnd-lx' representing differences between hand and nose locations\n",
"asl.df['grnd-rx'] = asl.df['right-x'] - asl.df['nose-x']\n",
"asl.df['grnd-ly'] = asl.df['left-y'] - asl.df['nose-y']\n",
"asl.df['grnd-lx'] = asl.df['left-x'] - asl.df['nose-x']\n",
"\n",
"# test the code\n",
"test_features_tryit(asl)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[9, 113, -12, 119]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# collect the features into a list\n",
"features_ground = ['grnd-rx','grnd-ry','grnd-lx','grnd-ly']\n",
" #show a single set of features for a given (video, frame) tuple\n",
"[asl.df.ix[98,1][v] for v in features_ground]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Build the training set\n",
"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:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"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']\n"
]
}
],
"source": [
"training = asl.build_training(features_ground)\n",
"print(\"Training words: {}\".format(training.words))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([[-11, 48, 7, 120],\n",
" [-11, 48, 8, 109],\n",
" [ -8, 49, 11, 98],\n",
" [ -7, 50, 7, 87],\n",
" [ -4, 54, 7, 77],\n",
" [ -4, 54, 6, 69],\n",
" [ -4, 54, 6, 69],\n",
" [-13, 52, 6, 69],\n",
" [-13, 52, 6, 69],\n",
" [ -8, 51, 6, 69],\n",
" [ -8, 51, 6, 69],\n",
" [ -8, 51, 6, 69],\n",
" [ -8, 51, 6, 69],\n",
" [ -8, 51, 6, 69],\n",
" [-10, 59, 7, 71],\n",
" [-15, 64, 9, 77],\n",
" [-17, 75, 13, 81],\n",
" [ -4, 48, -4, 113],\n",
" [ -2, 53, -4, 113],\n",
" [ -4, 55, 2, 98],\n",
" [ -4, 58, 2, 98],\n",
" [ -1, 59, 2, 89],\n",
" [ -1, 59, -1, 84],\n",
" [ -1, 59, -1, 84],\n",
" [ -7, 63, -1, 84],\n",
" [ -7, 63, -1, 84],\n",
" [ -7, 63, 3, 83],\n",
" [ -7, 63, 3, 83],\n",
" [ -7, 63, 3, 83],\n",
" [ -7, 63, 3, 83],\n",
" [ -7, 63, 3, 83],\n",
" [ -7, 63, 3, 83],\n",
" [ -7, 63, 3, 83],\n",
" [ -4, 70, 3, 83],\n",
" [ -4, 70, 3, 83],\n",
" [ -2, 73, 5, 90],\n",
" [ -3, 79, -4, 96],\n",
" [-15, 98, 13, 135],\n",
" [ -6, 93, 12, 128],\n",
" [ -2, 89, 14, 118],\n",
" [ 5, 90, 10, 108],\n",
" [ 4, 86, 7, 105],\n",
" [ 4, 86, 7, 105],\n",
" [ 4, 86, 13, 100],\n",
" [ -3, 82, 14, 96],\n",
" [ -3, 82, 14, 96],\n",
" [ 6, 89, 16, 100],\n",
" [ 6, 89, 16, 100],\n",
" [ 7, 85, 17, 111]], dtype=int64), [17, 20, 12])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"training.get_word_Xlengths('CHOCOLATE')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###### More feature sets\n",
"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](http://pandas.pydata.org/pandas-docs/stable/api.html#api-dataframe-stats) functions and [pandas groupby](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html). Below is an example for finding the means of all speaker subgroups."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" left-x | \n",
" left-y | \n",
" right-x | \n",
" right-y | \n",
" nose-x | \n",
" nose-y | \n",
" grnd-ry | \n",
" grnd-rx | \n",
" grnd-ly | \n",
" grnd-lx | \n",
"
\n",
" \n",
" speaker | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" man-1 | \n",
" 206.248203 | \n",
" 218.679449 | \n",
" 155.464350 | \n",
" 150.371031 | \n",
" 175.031756 | \n",
" 61.642600 | \n",
" 88.728430 | \n",
" -19.567406 | \n",
" 157.036848 | \n",
" 31.216447 | \n",
"
\n",
" \n",
" woman-1 | \n",
" 164.661438 | \n",
" 161.271242 | \n",
" 151.017865 | \n",
" 117.332462 | \n",
" 162.655120 | \n",
" 57.245098 | \n",
" 60.087364 | \n",
" -11.637255 | \n",
" 104.026144 | \n",
" 2.006318 | \n",
"
\n",
" \n",
" woman-2 | \n",
" 183.214509 | \n",
" 176.527232 | \n",
" 156.866295 | \n",
" 119.835714 | \n",
" 170.318973 | \n",
" 58.022098 | \n",
" 61.813616 | \n",
" -13.452679 | \n",
" 118.505134 | \n",
" 12.895536 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" left-x left-y right-x right-y nose-x \\\n",
"speaker \n",
"man-1 206.248203 218.679449 155.464350 150.371031 175.031756 \n",
"woman-1 164.661438 161.271242 151.017865 117.332462 162.655120 \n",
"woman-2 183.214509 176.527232 156.866295 119.835714 170.318973 \n",
"\n",
" nose-y grnd-ry grnd-rx grnd-ly grnd-lx \n",
"speaker \n",
"man-1 61.642600 88.728430 -19.567406 157.036848 31.216447 \n",
"woman-1 57.245098 60.087364 -11.637255 104.026144 2.006318 \n",
"woman-2 58.022098 61.813616 -13.452679 118.505134 12.895536 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_means = asl.df.groupby('speaker').mean()\n",
"df_means"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To select a mean that matches by speaker, use the pandas [map](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html) method:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" left-x | \n",
" left-y | \n",
" right-x | \n",
" right-y | \n",
" nose-x | \n",
" nose-y | \n",
" speaker | \n",
" grnd-ry | \n",
" grnd-rx | \n",
" grnd-ly | \n",
" grnd-lx | \n",
" left-x-mean | \n",
"
\n",
" \n",
" video | \n",
" frame | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 98 | \n",
" 0 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
" 164.661438 | \n",
"
\n",
" \n",
" 1 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
" 164.661438 | \n",
"
\n",
" \n",
" 2 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
" 164.661438 | \n",
"
\n",
" \n",
" 3 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
" 164.661438 | \n",
"
\n",
" \n",
" 4 | \n",
" 149 | \n",
" 181 | \n",
" 170 | \n",
" 175 | \n",
" 161 | \n",
" 62 | \n",
" woman-1 | \n",
" 113 | \n",
" 9 | \n",
" 119 | \n",
" -12 | \n",
" 164.661438 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" left-x left-y right-x right-y nose-x nose-y speaker \\\n",
"video frame \n",
"98 0 149 181 170 175 161 62 woman-1 \n",
" 1 149 181 170 175 161 62 woman-1 \n",
" 2 149 181 170 175 161 62 woman-1 \n",
" 3 149 181 170 175 161 62 woman-1 \n",
" 4 149 181 170 175 161 62 woman-1 \n",
"\n",
" grnd-ry grnd-rx grnd-ly grnd-lx left-x-mean \n",
"video frame \n",
"98 0 113 9 119 -12 164.661438 \n",
" 1 113 9 119 -12 164.661438 \n",
" 2 113 9 119 -12 164.661438 \n",
" 3 113 9 119 -12 164.661438 \n",
" 4 113 9 119 -12 164.661438 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"asl.df['left-x-mean']= asl.df['speaker'].map(df_means['left-x'])\n",
"asl.df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Try it!"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"df_std\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" left-x | \n",
" left-y | \n",
" right-x | \n",
" right-y | \n",
" nose-x | \n",
" nose-y | \n",
" grnd-ry | \n",
" grnd-rx | \n",
" grnd-ly | \n",
" grnd-lx | \n",
" left-x-mean | \n",
"
\n",
" \n",
" speaker | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" man-1 | \n",
" 15.154425 | \n",
" 36.328485 | \n",
" 18.901917 | \n",
" 54.902340 | \n",
" 6.654573 | \n",
" 5.520045 | \n",
" 53.487999 | \n",
" 20.269032 | \n",
" 36.572749 | \n",
" 15.080360 | \n",
" 0.0 | \n",
"
\n",
" \n",
" woman-1 | \n",
" 17.573442 | \n",
" 26.594521 | \n",
" 16.459943 | \n",
" 34.667787 | \n",
" 3.549392 | \n",
" 3.538330 | \n",
" 33.972660 | \n",
" 16.764706 | \n",
" 27.117393 | \n",
" 17.328941 | \n",
" 0.0 | \n",
"
\n",
" \n",
" woman-2 | \n",
" 15.388711 | \n",
" 28.825025 | \n",
" 14.890288 | \n",
" 39.649111 | \n",
" 4.099760 | \n",
" 3.416167 | \n",
" 39.128572 | \n",
" 16.191324 | \n",
" 29.320655 | \n",
" 15.050938 | \n",
" 0.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" left-x left-y right-x right-y nose-x nose-y \\\n",
"speaker \n",
"man-1 15.154425 36.328485 18.901917 54.902340 6.654573 5.520045 \n",
"woman-1 17.573442 26.594521 16.459943 34.667787 3.549392 3.538330 \n",
"woman-2 15.388711 28.825025 14.890288 39.649111 4.099760 3.416167 \n",
"\n",
" grnd-ry grnd-rx grnd-ly grnd-lx left-x-mean \n",
"speaker \n",
"man-1 53.487999 20.269032 36.572749 15.080360 0.0 \n",
"woman-1 33.972660 16.764706 27.117393 17.328941 0.0 \n",
"woman-2 39.128572 16.191324 29.320655 15.050938 0.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Correct!
"
],
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from asl_utils import test_std_tryit\n",
"# TODO Create a dataframe named `df_std` with standard deviations grouped by speaker\n",
"\n",
"df_std = asl.df.groupby('speaker', 0, None, True, True, True, False).std()\n",
"\n",
"asl.df['left-x-mean'] = asl.df['speaker'].map(df_means['left-x'], na_action=None)\n",
"asl.df['left-x-std'] = asl.df['speaker'].map(df_std['left-x'], na_action=None)\n",
"asl.df['left-y-mean'] = asl.df['speaker'].map(df_means['left-y'], na_action=None)\n",
"asl.df['left-y-std'] = asl.df['speaker'].map(df_std['left-y'], na_action=None)\n",
"\n",
"asl.df['right-x-mean'] = asl.df['speaker'].map(df_means['right-x'], na_action=None)\n",
"asl.df['right-x-std'] = asl.df['speaker'].map(df_std['right-x'], na_action=None)\n",
"asl.df['right-y-mean'] = asl.df['speaker'].map(df_means['right-y'], na_action=None)\n",
"asl.df['right-y-std'] = asl.df['speaker'].map(df_std['right-y'], na_action=None)\n",
"\n",
"asl.df['nose-x-mean'] = asl.df['speaker'].map(df_means['nose-x'], na_action=None)\n",
"asl.df['nose-x-std'] = asl.df['speaker'].map(df_std['nose-x'], na_action=None)\n",
"asl.df['nose-y-mean'] = asl.df['speaker'].map(df_means['nose-y'], na_action=None)\n",
"asl.df['nose-y-std'] = asl.df['speaker'].map(df_std['nose-y'], na_action=None)\n",
"\n",
"# test the code\n",
"test_std_tryit(df_std)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Features Implementation Submission\n",
"Implement four feature sets and answer the question that follows.\n",
"- normalized Cartesian coordinates\n",
" - use *mean* and *standard deviation* statistics and the [standard score](https://en.wikipedia.org/wiki/Standard_score) equation to account for speakers with different heights and arm length\n",
" \n",
"- polar coordinates\n",
" - calculate polar coordinates with [Cartesian to polar equations](https://en.wikipedia.org/wiki/Polar_coordinate_system#Converting_between_polar_and_Cartesian_coordinates)\n",
" - use the [np.arctan2](https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.arctan2.html) 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.\n",
"\n",
"- delta difference\n",
" - as described in Thad's lecture, use the difference in values between one frame and the next frames as features\n",
" - pandas [diff method](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.diff.html) and [fillna method](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html) will be helpful for this one\n",
"\n",
"- custom features\n",
" - 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! \n",
" Some ideas to get you started:\n",
" - normalize using a [feature scaling equation](https://en.wikipedia.org/wiki/Feature_scaling)\n",
" - normalize the polar coordinates\n",
" - adding additional deltas\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# TODO add features for normalized by speaker values of left, right, x, y\n",
"# Name these 'norm-rx', 'norm-ry', 'norm-lx', and 'norm-ly'\n",
"# using Z-score scaling (X-Xmean)/Xstd\n",
"\n",
"def standard_score(x, m, std):\n",
" return (x - m) / std\n",
"\n",
"features_r_l = ['right-x', 'right-y', 'left-x', 'left-y']\n",
"\n",
"features_norm = ['norm-rx', 'norm-ry', 'norm-lx', 'norm-ly']\n",
"\n",
"for f_index, f_val in enumerate(features_norm):\n",
" f_mean = asl.df['speaker'].map(df_means[features_r_l[f_index]], na_action=None)\n",
" f_std = asl.df['speaker'].map(df_std[features_r_l[f_index]], na_action=None)\n",
" asl.df[f_val] = standard_score(asl.df[features_r_l[f_index]], f_mean, f_std)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# TODO add features for polar coordinate values where the nose is the origin\n",
"# Name these 'polar-rr', 'polar-rtheta', 'polar-lr', and 'polar-ltheta'\n",
"# Note that 'polar-rr' and 'polar-rtheta' refer to the radius and angle\n",
"\n",
"# Convert Cartesian coordinates x and y to radius (Euclidean Norm) in Polar Coordinates \n",
"def radius(x, y):\n",
" return np.sqrt(x**2 + y**2)\n",
"\n",
"# Convert Cartesian coordinates x and y to angle (theta) in Polar Coordinates \n",
"def angle(x, y):\n",
" # Swap the x and y axes in the calculation\n",
" # (i.e. instead of `np.arctan2(y, x)`)\n",
" return np.arctan2(x, y)\n",
"\n",
"# Differences between hand and nose locations (see previous task where calculated)\n",
"features_ground = ['grnd-rx', 'grnd-ry', 'grnd-lx', 'grnd-ly']\n",
"\n",
"features_polar = ['polar-rr', 'polar-rtheta', 'polar-lr', 'polar-ltheta']\n",
"\n",
"for f_index, f_val in enumerate(features_polar):\n",
" if f_index % 2 == 0: # even indexes (i.e. 0, 2)\n",
" asl.df[f_val] = radius(asl.df[features_ground[f_index]], \n",
" asl.df[features_ground[f_index + 1]])\n",
" else: # odd indexes\n",
" asl.df[f_val] = angle(asl.df[features_ground[f_index - 1]], \n",
" asl.df[features_ground[f_index]])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# TODO add features for left, right, x, y differences by one time step, i.e. the \"delta\" values discussed in the lecture\n",
"# Name these 'delta-rx', 'delta-ry', 'delta-lx', and 'delta-ly'\n",
"\n",
"def frame_difference(f):\n",
" return f.diff().fillna(0, None, 0, False, None, None)\n",
"\n",
"features_r_l = ['right-x', 'right-y', 'left-x', 'left-y']\n",
"\n",
"# Features representing the difference in values between one frame and the next frames \n",
"features_delta = ['delta-rx', 'delta-ry', 'delta-lx', 'delta-ly']\n",
"\n",
"for f_index, f_val in enumerate(features_delta):\n",
" asl.df[f_val] = frame_difference(asl.df[features_r_l[f_index]])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"# TODO add features of your own design, which may be a combination of the above or something else\n",
"# Name these whatever you would like\n",
"\n",
"# Feature Scaling\n",
"def rescale(orig, min, max, mean):\n",
" return (orig - mean) / (max - min)\n",
"\n",
"df_max = asl.df.groupby('speaker').max()\n",
"df_min = asl.df.groupby('speaker').min()\n",
"df_mean = asl.df.groupby('speaker').mean()\n",
"\n",
"# Differences between hand and nose locations (see previous task where calculated)\n",
"features_ground = ['grnd-rx', 'grnd-ry', 'grnd-lx', 'grnd-ly']\n",
"\n",
"# Features representing the Max and Min \n",
"features_max = ['right-x-max', 'right-y-max', 'left-x-max', 'left-y-max']\n",
"features_min = ['right-x-min', 'right-y-min', 'left-x-min', 'left-y-min']\n",
"features_mean = ['right-x-mean', 'right-y-mean', 'left-x-mean', 'left-y-mean']\n",
"\n",
"features_rescaled = ['right-x-rescaled', 'right-y-rescaled', 'left-x-rescaled', 'left-y-rescaled']\n",
"\n",
"for f_index, f_val in enumerate(features_ground):\n",
"\n",
" # Map the Max and Min onto the data\n",
" asl.df[features_max[f_index]] = asl.df['speaker'].map(df_max[f_val], na_action=None)\n",
" asl.df[features_min[f_index]] = asl.df['speaker'].map(df_min[f_val], na_action=None)\n",
" asl.df[features_mean[f_index]] = asl.df['speaker'].map(df_mean[f_val], na_action=None)\n",
" \n",
" # Normalise by rescaling using the Feature Scaling equation\n",
" asl.df[features_rescaled[f_index]] = rescale(asl.df[f_val],\n",
" asl.df[features_min[f_index]],\n",
" asl.df[features_max[f_index]],\n",
" asl.df[features_mean[f_index]])\n",
"\n",
"# DONE define list named 'features_custom' for building the training set\n",
"features_custom = ['right-x-rescaled', 'right-y-rescaled', 'left-x-rescaled', 'left-y-rescaled']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question 1:** What custom features did you choose for the features_custom set and why?\n",
"\n",
"**Answer 1:** I used mean normalization ([formula given here](https://en.wikipedia.org/wiki/Feature_scaling)) to standardize the range of independent variables or features of data.Since the range of values of raw data varies widely, in some machine learning algorithms, objective functions will not work properly without normalization. Thus I used normalization. I chose mean normalization because it is computationally cheaper to calculate and statistically to use mean is more efficient than using min or max because min or max can give results that are not very useful if we have outliers."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Features Unit Testing\n",
"Run the following unit tests as a sanity check on the defined \"ground\", \"norm\", \"polar\", and 'delta\"\n",
"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."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"....\n",
"----------------------------------------------------------------------\n",
"Ran 4 tests in 0.031s\n",
"\n",
"OK\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import unittest\n",
"# import numpy as np\n",
"\n",
"class TestFeatures(unittest.TestCase):\n",
"\n",
" def test_features_ground(self):\n",
" sample = (asl.df.ix[98, 1][features_ground]).tolist()\n",
" self.assertEqual(sample, [9, 113, -12, 119])\n",
"\n",
" def test_features_norm(self):\n",
" sample = (asl.df.ix[98, 1][features_norm]).tolist()\n",
" np.testing.assert_almost_equal(sample, [ 1.153, 1.663, -0.891, 0.742], 3)\n",
"\n",
" def test_features_polar(self):\n",
" sample = (asl.df.ix[98,1][features_polar]).tolist()\n",
" np.testing.assert_almost_equal(sample, [113.3578, 0.0794, 119.603, -0.1005], 3)\n",
"\n",
" def test_features_delta(self):\n",
" sample = (asl.df.ix[98, 0][features_delta]).tolist()\n",
" self.assertEqual(sample, [0, 0, 0, 0])\n",
" sample = (asl.df.ix[98, 18][features_delta]).tolist()\n",
" self.assertTrue(sample in [[-16, -5, -2, 4], [-14, -9, 0, 0]], \"Sample value found was {}\".format(sample))\n",
" \n",
"suite = unittest.TestLoader().loadTestsFromModule(TestFeatures())\n",
"unittest.TextTestRunner().run(suite)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"\n",
"## PART 2: Model Selection\n",
"### Model Selection Tutorial\n",
"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: \n",
"- Log likelihood using cross-validation folds (CV)\n",
"- Bayesian Information Criterion (BIC)\n",
"- Discriminative Information Criterion (DIC) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Train a single word\n",
"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](https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm) (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."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of states trained in model for BOOK is 3\n",
"logL = -2331.1138127433223\n"
]
}
],
"source": [
"import warnings\n",
"from hmmlearn.hmm import GaussianHMM\n",
"\n",
"def train_a_word(word, num_hidden_states, features):\n",
" \n",
" warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n",
" training = asl.build_training(features) \n",
" X, lengths = training.get_word_Xlengths(word)\n",
" model = GaussianHMM(n_components=num_hidden_states, n_iter=1000).fit(X, lengths)\n",
" logL = model.score(X, lengths)\n",
" return model, logL\n",
"\n",
"demoword = 'BOOK'\n",
"model, logL = train_a_word(demoword, 3, features_ground)\n",
"print(\"Number of states trained in model for {} is {}\".format(demoword, model.n_components))\n",
"print(\"logL = {}\".format(logL))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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](http://math.stackexchange.com/questions/892832/why-we-consider-log-likelihood-instead-of-likelihood-in-gaussian-distribution) for any individual sample or group of samples can also be calculated with the `score` method."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of states trained in model for BOOK is 3\n",
"hidden state #0\n",
"mean = [ -3.46504869 50.66686933 14.02391587 52.04731066]\n",
"variance = [ 49.12346305 43.04799144 39.35109609 47.24195772]\n",
"\n",
"hidden state #1\n",
"mean = [ -11.45300909 94.109178 19.03512475 102.2030162 ]\n",
"variance = [ 77.403668 203.35441965 26.68898447 156.12444034]\n",
"\n",
"hidden state #2\n",
"mean = [ -1.12415027 69.44164191 17.02866283 77.7231196 ]\n",
"variance = [ 19.70434594 16.83041492 30.51552305 11.03678246]\n",
"\n"
]
}
],
"source": [
"def show_model_stats(word, model):\n",
" print(\"Number of states trained in model for {} is {}\".format(word, model.n_components)) \n",
" variance=np.array([np.diag(model.covars_[i]) for i in range(model.n_components)]) \n",
" for i in range(model.n_components): # for each hidden state\n",
" print(\"hidden state #{}\".format(i))\n",
" print(\"mean = \", model.means_[i])\n",
" print(\"variance = \", variance[i])\n",
" print()\n",
" \n",
"show_model_stats(demoword, model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Try it!\n",
"Experiment by changing the feature set, word, and/or num_hidden_states values in the next cell to see changes in values. "
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of states trained in model for CHOCOLATE is 15\n",
"hidden state #0\n",
"mean = [ -4. 61. -1. 84.]\n",
"variance = [ 9.00250000e+00 4.00250000e+00 2.50000000e-03 2.50000000e-03]\n",
"\n",
"hidden state #1\n",
"mean = [ -15. 98. 13. 135.]\n",
"variance = [ 0.01 0.01 0.01 0.01]\n",
"\n",
"hidden state #2\n",
"mean = [ 4.24999999 86.99999997 9.24999999 104.49999997]\n",
"variance = [ 0.19 3.00249995 6.19000005 8.25249996]\n",
"\n",
"hidden state #3\n",
"mean = [ -9.99999574 48.3333357 8.6666643 108.99996876]\n",
"variance = [ 2.00334327 0.22555918 2.89222206 80.67057272]\n",
"\n",
"hidden state #4\n",
"mean = [ -8.4 52.6 6.1 69.2]\n",
"variance = [ 8.441 5.84099999 0.091 0.361 ]\n",
"\n",
"hidden state #5\n",
"mean = [ -7. 63. 3. 83.]\n",
"variance = [ 0.00142857 0.00142857 0.00142857 0.00142857]\n",
"\n",
"hidden state #6\n",
"mean = [ -3. 82. 14. 96.]\n",
"variance = [ 0.005 0.005 0.005 0.005]\n",
"\n",
"hidden state #7\n",
"mean = [ -3. 50.5 -4. 113. ]\n",
"variance = [ 1.00500000e+00 6.25500000e+00 5.00000000e-03 5.00000000e-03]\n",
"\n",
"hidden state #8\n",
"mean = [ -3. 57.33333333 2. 95. ]\n",
"variance = [ 2.00333333e+00 2.89222222e+00 3.33333333e-03 1.80033333e+01]\n",
"\n",
"hidden state #9\n",
"mean = [-15.99999999 69.49999999 11. 78.99999999]\n",
"variance = [ 1.00500004 30.25500009 4.00500001 4.00500007]\n",
"\n",
"hidden state #10\n",
"mean = [ 6.33333333 87.66666667 16.33333333 103.66666667]\n",
"variance = [ 0.22555556 3.55888889 0.22555556 26.89222222]\n",
"\n",
"hidden state #11\n",
"mean = [ -3.99999984 90.99999998 12.99999995 122.99999974]\n",
"variance = [ 4.00500135 4.00499995 1.00500014 25.00500351]\n",
"\n",
"hidden state #12\n",
"mean = [ -2.5 76.00000001 0.50000002 93. ]\n",
"variance = [ 0.255 9.00500004 20.25500022 9.005 ]\n",
"\n",
"hidden state #13\n",
"mean = [ -5.49999681 52.00000426 7. 81.99998935]\n",
"variance = [ 2.25500001e+00 4.00500001e+00 5.00001065e-03 2.50050000e+01]\n",
"\n",
"hidden state #14\n",
"mean = [ -4. 70. 3. 83.]\n",
"variance = [ 0.005 0.005 0.005 0.005]\n",
"\n",
"logL = -136.46743534287512\n"
]
}
],
"source": [
"my_testword = 'CHOCOLATE'\n",
"model, logL = train_a_word(my_testword, 15, features_ground) # Experiment here with different parameters\n",
"show_model_stats(my_testword, model)\n",
"print(\"logL = {}\".format(logL))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Visualize the hidden states\n",
"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."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\ncs0SEhLIysoiMDAQDw+Pe7r+9wMBHRcXp86VCA4OplatWkXi2MJfl0YVEX9tenb1er1df3fnz5/H\n39+fgICAe877ypUrBAQE4OHhwa+//mqxxG5+fj6xsbHcuXMHMLqF16lTR3WXLY3u9zvFlu4r/hro\nBpwHLgFvWwl/EjgO6DG2Cv5y+Ot58+ZJjRo1ZPPmzZKRkSG5ubmydetW+cc//iEi9s1UvnTpkvj4\n+MiUKVMkJSVF7ty5I5988om4u7vLzz//rNrXs2dPefTRR+XIkSOSl5cnqampMn/+fPniiy9ERGTj\nxo3i6ekpq1atkqysLElISJCRI0dKWFiY3Lp1S0SKzlQ2iEH2y0X5P9khM2SbrM44IFoPd/H085aB\nc1+XGbJNFkiU3JQ/FrYvi5nKo0aNspipfC+6VwS0vWU217Jly+Tbb7+VXr16lRp/XRpV468tVb9+\nfUlOTpYjR45I586dLcJeffVV6dq1q6SlpUlqaqp07tzZ6kxme1TZvYzuizspRmTFw8AKoK+9aVeV\nCqGy0071YpBv5LTMkG2yXo7KTblThHZ6SW7Kf+R7+T/ZIafluk2bqmmnRWWNdurh4SFNmzaVo0eP\nqvGqaadlQzvt1q2bfPbZZ+r+/PnzJSIiosR0ramyVwjl4cOkupOKSC5gcic1b5VcE5HTYDaz5i+k\nykw7zUfPJo5xnFja0YB+tKQGnkVop2nHf2cMTxCMN19xkkNYzgi+G/2Vaaepqan06tVLpYEWVjXt\ntKjspZ2+9tprbNu2jdu3b3P79m02b97MM888Y+cdqloqjwrBmjvpn79OXwVWSkoKAQEBODoWP6a/\nYcMGfHx8LDZzJScnExwcXOS84OBgDAYD6enppKSkWI1jnobpHGvpmMLBOF6wmiOcI5GnaUpnmqCg\nEBsby969exk8eDCBgYF07tyZ5cuX44krw3icBwjie84SQ4rNcgQEBFjYWRyOwFyLFi1izpw51K5d\nGxcXF6ZPn86mTZvUxWteeuklPD091bBTp06Rlnb3boEODg7MmDEDFxcX3NzcWLx4MWPGjOHxxx9H\no9EwfPhwXFxcOHTo0F3nYa727dvTvXt3NBoNw4YN49SpU1bjbdiwgalTp+Ln50doaCgTJkxQww4d\nOkReXh6TJk3CycmJvn370rp1azXcHhsmTJhArVq18PPzo2fPnpw8edJqOZycnIiJiSE+Ph5XV1fa\n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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nJjEx0eqpsWTtDl+3MNxzO9KsWRhXC05yOHUJKXlHrNb2sMcGy3Z4eXmRk5Nj07Z33nkHEaFHjx60\na9eOpUuXlvs+5OXlMXHiRCIiIvDz86NPnz5kZGRgMBhs5o+Pj2fPnj1W7fz888/LEH1L1Lx5cwIC\nAli9ejXR0dE0adKE+Ph4mjVrZjfkz8fHh6ysLKtjWVlZ+PrWbER0fVGtdxROXVN9w4o3b97cYbDi\nGRkZVljx3377zYwVj4uLA8rHVkPtYsU/+M9c4rN+4kjKUnKLkmnpN4h2QaPxcq06Xb8irHhYszBS\nLmfSLigaD20jzmV+x4mzf1Cgz7wuGyqSLaz4mTNnbOatL1jxitSuXTsOHz5sbhPA4cOHbcIEHVHO\njqIOVd+w4u+9954VVjw9Pb3BYsVTUlKssOKurq5mrPirr75qVbY0thpqByvu7uHK//sgmsOpn3A5\n9w+CPNvSsfFfCPHujFLX99G0Byu+ZNFqWvtHcTzGg6MHz5GqO8bxtNWMGDOwRrHiWq0WqL9YcYPB\nYH5SMxqN6HQ689Nwv3790Gq1LFiwgIKCAhYuXAhg03XbIWXPjHd1bsBg4CRwBvi7jXR3YE1x+h6g\nZWV1NlSvpxKtXLlSunbtKl5eXhISEiJDhgyR3377TUTs83oSETly5Ig89NBD4uvrK97e3tK3b1/Z\nuXOnVZmCggJ5/fXXpVWrVuLl5SXh4eEybtw4iY+PN+fZtGmTdOvWTby8vMTX11eioqKsPKU+++wz\nAcps48aNk8cff7xMO/fs2SNubm5WHkgVeT15e3tbbXPnzrX5npV26zQYDDJ37lxp3bq1+Pj4SGRk\npLzyyisiIpKdnS133323+Pj4SHh4uCxfvtzq/Tt16pTZ06dkbeZ9+/ZJ27ZtxcfHR0aPHm218luJ\n11Npff/999KtWzfx9/eXpk2byrBhwyQrK8v6GuizZOP3Hwsg7h6u4unlJl7eHuLt7S2//PKLTVtL\nv1+rV68ud0W73NxcGTNmjPj7+8sdd9wh77zzjlVb9+3bJ506dTJ7PQ0fMVymTB9rdqf9YNVk6dC5\njfj7+5WxoSor2k2fPl2aNWsm3t7eEhkZKYsXLzanLVq0SJo2bSre3t6yZs0aSUhIkL59+4q3t7fc\ndttt8tFHH1nZ9/vvv8ttt90mAQEB8vzzz4uIyIkTJ2TIkCESHBwsgYGB0r9/fzl48KDNtoiIjB07\n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\nTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n166sWbOm0PPVq1fTrl07vL296dq1KwcOHDAPgdiifv36VKtWrVA6RqORdevW0aVLl2L1WLJkCWfO\nnKFy5cpUrlyZ1157jZSUFKtJ49JC9erV2bRpk5Uz0ev1REREsGLFCjZv/YphnltJ+/MK8QnxACTs\n1DZj2puY9vb2Jjv7OgO6bWNjG6d69epMnjzZKv/s7Gyefvppp/TPz8+3O5R3o6hSpQrnz18/DuHc\nuXNWYRcuXCjolRcKv9UyWKJy5crMnz+fpKQk5s6dy8svv8zvv/9uV3bmzJmcPHmS/fv3c/XqVXbs\n2AFg1tOerTt27GilZ2ZmJp9++qnd9BMTE9m8eTNdu3YlPT2dl156if/+97+kp6cza9Ysu3HudZRl\nDyEc7RD3I2jH820Ukc1lqM9tQ0BAAFOnTuWVV15h/fr1ZGdnk5eXx6ZNm3j99dedTic6Opo9e/Yw\nefJk0tLSyMjI4KOPPmLJkiX861//AjSn8cgjj9C3b19iY2PJz88nIyODOXPmsHDhQpRS/Oc//2Ha\ntGmsWLGCnJwcLl68yIsvvsjVq1f561//as5PRLh27Rp6vd587d27l9OnT3PgwAHi4uKIi4vj6NGj\nDB48mMWLF5e47WwxatQoJk+eTEKCdt7Ln3/+aV6plZGRgTHbi/s6hJAn2Uz+xyQAzu0CMWpzUmfO\nnLFKr3nz5qxYsQKDwcDmzZvZvr1oZuoRI0YwZ84c9u/fj4iQlZXFxo0bycgofL7KiRMn2LRpEzk5\nOeTl5bFs2TJ27NhBx47FMWwXjwEDBvDuu+9y+fJlEhMT+eijj8xh7dq1w93dnQ8//JD8/Hy++OIL\nDhw4cFNlKA5r1qwxv3wEBQWhlDLPDdnaOyMjg4oVKxIYGEhaWhpvvfWWVVq28o899hinTp1i6dKl\n5OXlkZeXx8GDBzl+3PFZSgWriwB++uknWrUqvJjRYDCYe15GoxG9Xn9Dvdu7CWXmEETkDBpnfwU0\n+tkbX8NXjvHaa68xa9Yspk2bRlhYGNWrV+fjjz/miSecPzOnXr167Nq1iyNHjlCzZk2qVKnCunXr\n2LJlC+3btzfLrV27lp49ezJw4EACAgJo3Lgxhw4domvXrgAMHDiQpUuX8v777xMaGkrDhg3Jyclh\n9+7dhISEmNPZs2cP3bt3p2LFiuZrwYIFPP744zRp0sTcQ6hcuTJjx45lw4YNpKWlFdLbHgIDA/H1\n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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import math\n",
"from matplotlib import (cm, pyplot as plt, mlab)\n",
"\n",
"def visualize(word, model):\n",
" \"\"\" visualize the input model for a particular word \"\"\"\n",
" variance=np.array([np.diag(model.covars_[i]) for i in range(model.n_components)])\n",
" figures = []\n",
" for parm_idx in range(len(model.means_[0])):\n",
" xmin = int(min(model.means_[:,parm_idx]) - max(variance[:,parm_idx]))\n",
" xmax = int(max(model.means_[:,parm_idx]) + max(variance[:,parm_idx]))\n",
" fig, axs = plt.subplots(model.n_components, sharex=True, sharey=False)\n",
" colours = cm.rainbow(np.linspace(0, 1, model.n_components))\n",
" for i, (ax, colour) in enumerate(zip(axs, colours)):\n",
" x = np.linspace(xmin, xmax, 100)\n",
" mu = model.means_[i,parm_idx]\n",
" sigma = math.sqrt(np.diag(model.covars_[i])[parm_idx])\n",
" ax.plot(x, mlab.normpdf(x, mu, sigma), c=colour)\n",
" ax.set_title(\"{} feature {} hidden state #{}\".format(word, parm_idx, i))\n",
"\n",
" ax.grid(True)\n",
" figures.append(plt)\n",
" for p in figures:\n",
" p.show()\n",
" \n",
"visualize(my_testword, model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### ModelSelector class\n",
"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:\n",
"\n",
"- `SelectorCV `: Log likelihood with CV\n",
"- `SelectorBIC`: BIC \n",
"- `SelectorDIC`: DIC\n",
"\n",
"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:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of states trained in model for VEGETABLE is 3\n"
]
}
],
"source": [
"from my_model_selectors import SelectorConstant\n",
"\n",
"training = asl.build_training(features_ground) # Experiment here with different feature sets defined in part 1\n",
"word = 'VEGETABLE' # Experiment here with different words\n",
"model = SelectorConstant(training.get_all_sequences(), training.get_all_Xlengths(), word, n_constant=3).select()\n",
"print(\"Number of states trained in model for {} is {}\".format(word, model.n_components))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Cross-validation folds\n",
"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](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html) class object. When you implement `SelectorCV`, you will use this technique."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train fold indices:[2 3 4 5] Test fold indices:[0 1]\n",
"Train fold indices:[0 1 4 5] Test fold indices:[2 3]\n",
"Train fold indices:[0 1 2 3] Test fold indices:[4 5]\n"
]
}
],
"source": [
"from sklearn.model_selection import KFold\n",
"\n",
"training = asl.build_training(features_ground) # Experiment here with different feature sets\n",
"word = 'VEGETABLE' # Experiment here with different words\n",
"word_sequences = training.get_word_sequences(word)\n",
"split_method = KFold()\n",
"for cv_train_idx, cv_test_idx in split_method.split(word_sequences):\n",
" print(\"Train fold indices:{} Test fold indices:{}\".format(cv_train_idx, cv_test_idx)) # view indices of the folds"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Scoring models with other criterion\n",
"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](http://www2.imm.dtu.dk/courses/02433/doc/ch6_slides.pdf) include a formula you may find helpful for your implementation.\n",
"\n",
"The advantages of scoring model topologies with **DIC** over BIC are presented by Alain Biem in this [reference](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.58.6208&rep=rep1&type=pdf) (also found [here](https://pdfs.semanticscholar.org/ed3d/7c4a5f607201f3848d4c02dd9ba17c791fc2.pdf)). 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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Model Selection Implementation Submission\n",
"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.\n",
"\n",
"**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."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"words_to_train = ['FISH', 'BOOK', 'VEGETABLE', 'FUTURE', 'JOHN']\n",
"import timeit"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"# autoreload for automatically reloading changes made in my_model_selectors and my_recognizer\n",
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training complete for FISH with 3 states with time 0.17769731102786473 seconds\n",
"Training complete for BOOK with 15 states with time 3.3459787294093495 seconds\n",
"Training complete for VEGETABLE with 3 states with time 0.7541809924565093 seconds\n",
"Training complete for FUTURE with 15 states with time 3.1593690665571925 seconds\n",
"Training complete for JOHN with 13 states with time 36.2632466516139 seconds\n"
]
}
],
"source": [
"# TODO: Implement SelectorCV in my_model_selector.py\n",
"from my_model_selectors import SelectorCV\n",
"\n",
"training = asl.build_training(features_ground) # Experiment here with different feature sets defined in part 1\n",
"sequences = training.get_all_sequences()\n",
"Xlengths = training.get_all_Xlengths()\n",
"for word in words_to_train:\n",
" start = timeit.default_timer()\n",
" model = SelectorCV(sequences, Xlengths, word, \n",
" min_n_components=2, max_n_components=15, random_state = 14).select()\n",
" end = timeit.default_timer()-start\n",
" if model is not None:\n",
" print(\"Training complete for {} with {} states with time {} seconds\".format(word, model.n_components, end))\n",
" else:\n",
" print(\"Training failed for {}\".format(word))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training complete for FISH with 3 states with time 0.1950191153076446 seconds\n",
"Training complete for BOOK with 8 states with time 3.4903063580848794 seconds\n",
"Training complete for VEGETABLE with 9 states with time 1.3422602247652264 seconds\n",
"Training complete for FUTURE with 9 states with time 3.810381279827581 seconds\n",
"Training complete for JOHN with 13 states with time 33.51932506286242 seconds\n"
]
}
],
"source": [
"# TODO: Implement SelectorBIC in module my_model_selectors.py\n",
"from my_model_selectors import SelectorBIC\n",
"\n",
"training = asl.build_training(features_ground) # Experiment here with different feature sets defined in part 1\n",
"sequences = training.get_all_sequences()\n",
"Xlengths = training.get_all_Xlengths()\n",
"for word in words_to_train:\n",
" start = timeit.default_timer()\n",
" model = SelectorBIC(sequences, Xlengths, word, \n",
" min_n_components=2, max_n_components=15, random_state = 14).select()\n",
" end = timeit.default_timer()-start\n",
" if model is not None:\n",
" print(\"Training complete for {} with {} states with time {} seconds\".format(word, model.n_components, end))\n",
" else:\n",
" print(\"Training failed for {}\".format(word))"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training complete for FISH with 3 states with time 1.1220031302920006 seconds\n",
"Training complete for BOOK with 15 states with time 7.039764971519389 seconds\n",
"Training complete for VEGETABLE with 15 states with time 5.176395802329807 seconds\n",
"Training complete for FUTURE with 15 states with time 7.322522707445955 seconds\n",
"Training complete for JOHN with 15 states with time 36.65509762918862 seconds\n"
]
}
],
"source": [
"# TODO: Implement SelectorDIC in module my_model_selectors.py\n",
"from my_model_selectors import SelectorDIC\n",
"\n",
"training = asl.build_training(features_ground) # Experiment here with different feature sets defined in part 1\n",
"sequences = training.get_all_sequences()\n",
"Xlengths = training.get_all_Xlengths()\n",
"for word in words_to_train:\n",
" start = timeit.default_timer()\n",
" model = SelectorDIC(sequences, Xlengths, word, \n",
" min_n_components=2, max_n_components=15, random_state = 14).select()\n",
" end = timeit.default_timer()-start\n",
" if model is not None:\n",
" print(\"Training complete for {} with {} states with time {} seconds\".format(word, model.n_components, end))\n",
" else:\n",
" print(\"Training failed for {}\".format(word))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question 2:** Compare and contrast the possible advantages and disadvantages of the various model selectors implemented.\n",
"\n",
"**Answer 2:**\n",
"Below table summarizes the results above. \n",
"\n",
"| WORD | CV |BIC| DIC| \n",
"| ------ | ------ | ------ |------|\n",
"|FISH | 3 states 0.17769 seconds|3 states 0.1950 seconds| 3 states 1.1220 seconds|\n",
"|BOOK| 15 states 3.3459 seconds|8 states 3.49030 seconds|15 states 7.0397 seconds|\n",
"|VEGETABLE| 3 states 0.7541seconds|9 states 1.3422 seconds|15 states 5.1763 seconds|\n",
"|FUTURE| 15 states 3.1593 seconds|9 states 3.8103 seconds|15 states 7.3225 seconds|\n",
"|JOHN |13 states 36.2632 seconds|13 states 33.5193 seconds|15 states 36.6550 seconds|\n",
"\n",
"Let us compare our selectors looking at the state time results. Overall results show that CV completes training at least state or least time. For the word \"FISH\" CV completes training at least amount of time and for the word \"VEGETABLE\" least state. These results seems too good to be true for CV and it tends to overfit as complexity added, so we may suspect that our CV Selector overfits.\n",
"\n",
"**Advantages and Disadvantages of CV**\n",
"* Advantage of CV is that it avoids limit over-validation. \n",
"* A disadvantage of CV is it overfits as complexity is added. CV estimates the \"best\" fit of 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. \n",
"\n",
"**Advantages of BIC**\n",
"*\tBIC is faster than CV and DIC\n",
"*\tBIC finds more states than CV and DIC\n",
"*\tBIC system size is less than DIC\n",
"*\tBIC avoids using CV by using a penalty term that increases with higher complexity (number of free parameters) to avoid over-fitting\n",
"\n",
"**Advantages of DIC**\n",
"*\tDIC performance of resulting models is usually higher than BIC, since DIC is a model selection criterion focused more on goal of classification than BIC,\n",
"*\tDIC determines discriminant models and therefore replaces Occam's Razor Principle with the Discriminative Principle, where the goal is to select the model less likely to have generated data belonging to competing classification categories.\n",
"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.\n",
"[Reference Paper](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.58.6208&rep=rep1&type=pdf)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Model Selector Unit Testing\n",
"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."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"....\n",
"----------------------------------------------------------------------\n",
"Ran 4 tests in 67.043s\n",
"\n",
"OK\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from asl_test_model_selectors import TestSelectors\n",
"suite = unittest.TestLoader().loadTestsFromModule(TestSelectors())\n",
"unittest.TextTestRunner().run(suite)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## PART 3: Recognizer\n",
"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. \n",
"### Recognizer Tutorial\n",
"##### Train the full training set\n",
"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.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of word models returned = 112\n"
]
}
],
"source": [
"from my_model_selectors import SelectorConstant\n",
"\n",
"def train_all_words(features, model_selector):\n",
" training = asl.build_training(features) # Experiment here with different feature sets defined in part 1\n",
" sequences = training.get_all_sequences()\n",
" Xlengths = training.get_all_Xlengths()\n",
" model_dict = {}\n",
" for word in training.words:\n",
" model = model_selector(sequences, Xlengths, word, \n",
" n_constant=3).select()\n",
" model_dict[word]=model\n",
" return model_dict\n",
"\n",
"models = train_all_words(features_ground, SelectorConstant)\n",
"print(\"Number of word models returned = {}\".format(len(models)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Load the test set\n",
"The `build_test` method in `ASLdb` is similar to the `build_training` method already presented, but there are a few differences:\n",
"- the object is type `SinglesData` \n",
"- the internal dictionary keys are the index of the test word rather than the word itself\n",
"- the getter methods are `get_all_sequences`, `get_all_Xlengths`, `get_item_sequences` and `get_item_Xlengths`"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of test set items: 178\n",
"Number of test set sentences: 40\n"
]
}
],
"source": [
"test_set = asl.build_test(features_ground)\n",
"print(\"Number of test set items: {}\".format(test_set.num_items))\n",
"print(\"Number of test set sentences: {}\".format(len(test_set.sentences_index)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Recognizer Implementation Submission\n",
"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 . \n",
"\n",
"**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."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# TODO implement the recognize method in my_recognizer\n",
"from my_recognizer import recognize\n",
"from asl_utils import show_errors"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"WER results for Feature Set: 'features_ground'\n",
"\n",
"**** WER = 0.6685393258426966\n",
"Total correct: 59 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *GO WRITE *ARRIVE JOHN WRITE HOMEWORK\n",
" 7: *SOMETHING-ONE *GO1 *IX CAN JOHN CAN GO CAN\n",
" 12: JOHN *HAVE *WHAT CAN JOHN CAN GO CAN\n",
" 21: JOHN *HOMEWORK *NEW *PREFER *CAR *CAR *FUTURE *EAT JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *FRANK *TELL *LOVE *TELL *LOVE JOHN LIKE IX IX IX\n",
" 28: *FRANK *TELL *LOVE *TELL *LOVE JOHN LIKE IX IX IX\n",
" 30: *SHOULD LIKE *GO *GO *GO JOHN LIKE IX IX IX\n",
" 36: *VISIT VEGETABLE *YESTERDAY *GIVE *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *SUE *GIVE *CORN *VEGETABLE *GO JOHN IX THINK MARY LOVE\n",
" 43: *FRANK *GO BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *FRANK *SEE BUY CAR *SOMETHING-ONE FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD *WHO BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *VISIT VISIT *VISIT JOHN DECIDE VISIT MARY\n",
" 67: *LIKE FUTURE NOT BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *FINISH VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *IX *VISIT *GO *GO JOHN NOT VISIT MARY\n",
" 77: *JOHN BLAME *LOVE ANN BLAME MARY\n",
" 84: *LOVE *ARRIVE *HOMEWORK BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *GIVE *GIVE GIVE *IX IX *ARRIVE *BOOK JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SOMETHING-ONE *SOMETHING-ONE IX *IX WOMAN *COAT JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: *FRANK GIVE *WOMAN *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: *FRANK *VEGETABLE JOHN LEG\n",
" 107: *SHOULD *IX FRIEND *GO *JANA JOHN POSS FRIEND HAVE CANDY\n",
" 108: *GIVE *LOVE WOMAN ARRIVE\n",
" 113: IX CAR *CAR *IX *IX IX CAR BLUE SUE BUY\n",
" 119: *PREFER *BUY1 IX *BLAME *IX SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 *COAT JOHN READ BOOK\n",
" 139: *SHOULD *BUY1 *CAR *BLAME BOOK JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: *FRANK *STUDENT YESTERDAY *TEACHER BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *MARY WHO LOVE JOHN WHO\n",
" 167: *MARY IX *VISIT *WOMAN *LOVE JOHN IX SAY LOVE MARY\n",
" 171: *VISIT *VISIT BLAME JOHN MARY BLAME\n",
" 174: *CAN *GIVE3 GIVE1 *APPLE *WHAT PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *BLAME ARRIVE JOHN ARRIVE\n",
" 184: *GIVE1 BOY *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: *JANA *SOMETHING-ONE *YESTERDAY *WHAT JOHN GIVE GIRL BOX\n",
" 193: JOHN *SOMETHING-ONE *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 199: *LOVE CHOCOLATE WHO LIKE CHOCOLATE WHO\n",
" 201: JOHN *GIVE *GIVE *LOVE *ARRIVE HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_norm'\n",
"\n",
"**** WER = 0.6235955056179775\n",
"Total correct: 67 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *MARY WRITE *ARRIVE JOHN WRITE HOMEWORK\n",
" 7: JOHN *NEW *JOHN CAN JOHN CAN GO CAN\n",
" 12: *SHOULD *HAVE *GO1 CAN JOHN CAN GO CAN\n",
" 21: *LIKE *NEW *HAVE *IX-1P *CAR *BLAME *CHICKEN *WRITE JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *IX LIKE *LIKE *LIKE IX JOHN LIKE IX IX IX\n",
" 28: *ANN LIKE *ANN *LIKE *ANN JOHN LIKE IX IX IX\n",
" 30: *SHOOT LIKE *LOVE *LIKE *MARY JOHN LIKE IX IX IX\n",
" 36: *LEAVE *NOT *YESTERDAY *VISIT LIKE *JOHN MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: JOHN *LEAVE *FUTURE1 *VEGETABLE LOVE JOHN IX THINK MARY LOVE\n",
" 43: JOHN *SHOULD BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *FRANK *SEE *ARRIVE CAR *CAR FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD *FUTURE *STUDENT HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *MARY *MARY MARY JOHN DECIDE VISIT MARY\n",
" 67: *IX-1P FUTURE *JOHN *ARRIVE HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN WILL VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *WOMAN *VISIT VISIT *FRANK JOHN NOT VISIT MARY\n",
" 77: *IX BLAME MARY ANN BLAME MARY\n",
" 84: *IX *ARRIVE *NEW BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *FUTURE *THROW *JOHN *JOHN *WOMAN *BOOK *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SELF *GIVE1 IX *IX WOMAN *CHOCOLATE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *GIVE1 IX *IX WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: *WHO *SEE JOHN LEG\n",
" 107: *TELL *IX *BOX *LIKE *JANA JOHN POSS FRIEND HAVE CANDY\n",
" 108: *LOVE *HOMEWORK WOMAN ARRIVE\n",
" 113: IX CAR *IX SUE *HAVE IX CAR BLUE SUE BUY\n",
" 119: *VEGETABLE *BUY1 IX CAR *GO SUE BUY IX CAR BLUE\n",
" 122: JOHN *HOUSE *COAT JOHN READ BOOK\n",
" 139: JOHN *BUY1 *CAR YESTERDAY BOOK JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *MARY *CORN LOVE JOHN WHO\n",
" 167: JOHN *JOHN *SAY-1P LOVE MARY JOHN IX SAY LOVE MARY\n",
" 171: *SHOOT *JOHN BLAME JOHN MARY BLAME\n",
" 174: *NEW *GIVE1 GIVE1 *WHO *CAR PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN *BOX JOHN ARRIVE\n",
" 184: *IX *IX *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: *JANA *SEE *PREFER *ARRIVE JOHN GIVE GIRL BOX\n",
" 193: JOHN *SEE *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN CHOCOLATE *JOHN LIKE CHOCOLATE WHO\n",
" 201: JOHN *THINK *WOMAN *WOMAN *STUDENT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_polar'\n",
"\n",
"**** WER = 0.6179775280898876\n",
"Total correct: 68 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *GO WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *WHAT *MARY *WHAT JOHN CAN GO CAN\n",
" 12: JOHN *WHAT *GO1 CAN JOHN CAN GO CAN\n",
" 21: *IX *HOMEWORK WONT *FUTURE *CAR *CAR *GO *TOMORROW JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *FRANK LIKE IX *WHO IX JOHN LIKE IX IX IX\n",
" 28: *IX *WHO *FUTURE *FUTURE IX JOHN LIKE IX IX IX\n",
" 30: *SHOULD LIKE *GO *MARY *GO JOHN LIKE IX IX IX\n",
" 36: *SOMETHING-ONE VEGETABLE *GIRL *GIVE *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *SUE *GIVE *DECIDE MARY *GO JOHN IX THINK MARY LOVE\n",
" 43: *IX *GO BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *POSS *SEE BUY CAR *ARRIVE FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD *WHO BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *PREFER *MARY MARY JOHN DECIDE VISIT MARY\n",
" 67: *LIKE *MOTHER NOT BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *FINISH *GIVE1 MARY JOHN WILL VISIT MARY\n",
" 74: *GO *WHO *GO *GO JOHN NOT VISIT MARY\n",
" 77: *IX BLAME *LOVE ANN BLAME MARY\n",
" 84: *HOMEWORK *GIVE1 *POSS BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MAN *GIVE *WOMAN *IX IX *BUY *BOOK JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN *GIVE1 IX *GIVE3 *GIVE1 *COAT JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *WOMAN *WOMAN *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: *FRANK *VEGETABLE JOHN LEG\n",
" 107: *LIKE *SOMETHING-ONE *HAVE *GO *WHO JOHN POSS FRIEND HAVE CANDY\n",
" 108: *IX ARRIVE WOMAN ARRIVE\n",
" 113: IX CAR *SUE *SOMETHING-ONE *ARRIVE IX CAR BLUE SUE BUY\n",
" 119: *PREFER *BUY1 IX CAR *SOMETHING-ONE SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: *SHOULD *BUY1 *CAR YESTERDAY BOOK JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: *FRANK BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *MARY WHO LOVE JOHN WHO\n",
" 167: *MARY *SOMETHING-ONE *MARY LOVE *LOVE JOHN IX SAY LOVE MARY\n",
" 171: *SOMETHING-ONE *SOMETHING-ONE BLAME JOHN MARY BLAME\n",
" 174: *CAN *GIVE3 GIVE1 *GO *WHAT PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *SUE ARRIVE JOHN ARRIVE\n",
" 184: *IX BOY *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: *SUE *SOMETHING-ONE *YESTERDAY *ARRIVE JOHN GIVE GIRL BOX\n",
" 193: JOHN *SOMETHING-ONE *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 199: *HOMEWORK CHOCOLATE WHO LIKE CHOCOLATE WHO\n",
" 201: JOHN *MAN *MAN *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_delta'\n",
"\n",
"**** WER = 0.6404494382022472\n",
"Total correct: 64 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN *JOHN HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *HAVE *GIVE1 *TEACHER JOHN CAN GO CAN\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 12: JOHN CAN *GO1 CAN JOHN CAN GO CAN\n",
" 21: *MARY *MARY *JOHN *MARY *CAR *GO *FUTURE *MARY JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *MARY *JOHN IX *MARY JOHN LIKE IX IX IX\n",
" 28: JOHN *MARY *MARY IX IX JOHN LIKE IX IX IX\n",
" 30: JOHN *MARY *JOHN *JOHN IX JOHN LIKE IX IX IX\n",
" 36: MARY *JOHN *JOHN IX *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *MARY IX *MARY MARY *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *JOHN *FINISH HOUSE JOHN MUST BUY HOUSE\n",
" 50: *JOHN JOHN BUY CAR *MARY FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *MARY *MARY BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: JOHN *JOHN *IX *JOHN JOHN DECIDE VISIT MARY\n",
" 67: JOHN *JOHN *JOHN BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *JOHN VISIT MARY JOHN WILL VISIT MARY\n",
" 74: JOHN *JOHN *MARY MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN BLAME MARY ANN BLAME MARY\n",
" 84: *JOHN *GO *IX *WHAT IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *GIVE1 *JOHN *IX *JOHN IX *WHAT *HOUSE JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *MARY *JOHN *JOHN *IX *IX *MARY JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *MARY *JOHN *JOHN WOMAN *ARRIVE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: *JOHN NEW *WHAT BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *MARY JOHN LEG\n",
" 107: JOHN POSS FRIEND *LOVE *MARY JOHN POSS FRIEND HAVE CANDY\n",
" 108: *JOHN ARRIVE WOMAN ARRIVE\n",
" 113: *JOHN CAR *MARY *MARY *GIVE1 IX CAR BLUE SUE BUY\n",
" 119: *JOHN *BUY1 IX CAR *IX SUE BUY IX CAR BLUE\n",
" 122: JOHN *VISIT *YESTERDAY JOHN READ BOOK\n",
" 139: JOHN *BUY1 WHAT *MARY *ARRIVE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY *MARY *MARY *YESTERDAY JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: *BOY *WHO *MARY LOVE JOHN WHO\n",
" 167: *MARY *MARY *IX *ARRIVE *WHAT JOHN IX SAY LOVE MARY\n",
" 171: JOHN *JOHN BLAME JOHN MARY BLAME\n",
" 174: *GIVE1 *MARY GIVE1 *MARY *FINISH PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN *GIVE1 JOHN ARRIVE\n",
" 184: *IX *WHO *GIVE1 *HAVE *MARY ALL BOY GIVE TEACHER APPLE\n",
" 189: JOHN *IX *MARY *VISIT JOHN GIVE GIRL BOX\n",
" 193: JOHN *IX *IX BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *ARRIVE *MARY LIKE CHOCOLATE WHO\n",
" 201: JOHN *MARY MARY *LIKE *VISIT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_custom'\n",
"\n",
"**** WER = 0.6235955056179775\n",
"Total correct: 67 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *OLD WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *PEOPLE GO *TOY JOHN CAN GO CAN\n",
" 12: *SHOOT *HAVE *NEXT-WEEK *HOUSE JOHN CAN GO CAN\n",
" 21: *ANN FISH WONT *IX-1P BUT *PARTY *MOTHER *WHO JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *ANN LIKE *MARY *MARY *ANN JOHN LIKE IX IX IX\n",
" 28: *ANN *MARY *MARY *ANN *MARY JOHN LIKE IX IX IX\n",
" 30: *SHOOT LIKE *LOVE *GO *LOVE JOHN LIKE IX IX IX\n",
" 36: *TOMORROW *EAT *THINK *BILL *LOVE *LIKE MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *SUE *TELL *DECIDE *SUE *NOT JOHN IX THINK MARY LOVE\n",
" 43: *FRANK *PAST BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *POSS *SEE BUY CAR *WHAT FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *THINK *SAY *WRITE HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *SHOOT *TOMORROW *TOMORROW *GIVE2 JOHN DECIDE VISIT MARY\n",
" 67: *FRANK *MAN *CANDY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN WILL VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *SHOOT *VEGETABLE *NOT *LOVE JOHN NOT VISIT MARY\n",
" 77: ANN BLAME MARY ANN BLAME MARY\n",
" 84: *HOMEWORK *STUDENT *HOMEWORK BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *THINK *PAST *THROW *SOMETHING-ONE IX NEW *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SEE *ALL IX *ALL *OLD *BORROW JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: *FRANK GIVE IX *IX WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: *FRANK *SEE JOHN LEG\n",
" 107: *LIKE *SHOULD FRIEND *GO CANDY JOHN POSS FRIEND HAVE CANDY\n",
" 108: *THINK *HOMEWORK WOMAN ARRIVE\n",
" 113: *SHOULD CAR *SUE SUE *BUY1 IX CAR BLUE SUE BUY\n",
" 119: *VEGETABLE *BUY1 *WONT CAR *SELF SUE BUY IX CAR BLUE\n",
" 122: JOHN READ BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 *TOY YESTERDAY *CHOCOLATE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: *ANN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *MARY WHO LOVE JOHN WHO\n",
" 167: JOHN *TOY1 *VEGETABLE *PUTASIDE *LOVE JOHN IX SAY LOVE MARY\n",
" 171: *MAN *SUE BLAME JOHN MARY BLAME\n",
" 174: *NEW GROUP GIVE1 *GIRL TOY PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *SUE ARRIVE JOHN ARRIVE\n",
" 184: ALL BOY *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: *JANA *SELF *FUTURE1 *TOY JOHN GIVE GIRL BOX\n",
" 193: JOHN *GIVE3 *FUTURE1 BOX JOHN GIVE GIRL BOX\n",
" 199: *HOMEWORK *STUDENT WHO LIKE CHOCOLATE WHO\n",
" 201: JOHN *THINK *TELL *LIKE *STUDENT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n"
]
}
],
"source": [
"# TODO Choose a feature set and model selector\n",
"features_all = {\n",
" 'features_ground': features_ground, \n",
" 'features_norm': features_norm,\n",
" 'features_polar': features_polar, \n",
" 'features_delta': features_delta,\n",
" 'features_custom': features_custom\n",
"}\n",
"\n",
"model_selector = SelectorConstant # change as needed\n",
"\n",
"# TODO Recognize the test set and display the result with the show_errors method\n",
"\n",
"for features_name, features in features_all.items():\n",
" models = train_all_words(features, model_selector)\n",
" test_set = asl.build_test(features)\n",
" probabilities, guesses = recognize(models, test_set)\n",
" print(\"\\nWER results for Feature Set: %r\" % features_name)\n",
" show_errors(guesses, test_set)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"WER results for Feature Set: 'features_ground'\n",
"\n",
"**** WER = 0.6404494382022472\n",
"Total correct: 64 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *VISIT *JOHN *WHAT JOHN CAN GO CAN\n",
" 12: JOHN CAN *WHAT CAN JOHN CAN GO CAN\n",
" 21: JOHN *HOMEWORK *JOHN *MARY *CAR *HOUSE *FUTURE *FUTURE JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *MARY *JOHN *LOVE *TELL *JOHN JOHN LIKE IX IX IX\n",
" 28: JOHN *TELL *JOHN *JOHN *LOVE JOHN LIKE IX IX IX\n",
" 30: JOHN LIKE *MARY *LIKE *SHOOT JOHN LIKE IX IX IX\n",
" 36: MARY *VISIT *JOHN *SHOOT *MARY *JOHN MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: JOHN *VISIT *JOHN *JOHN *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *POSS BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *MARY *FRANK BUY CAR *JOHN FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *MARY NOT BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: JOHN *VISIT VISIT *VISIT JOHN DECIDE VISIT MARY\n",
" 67: JOHN *JOHN *WOMAN BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *JOHN *JOHN MARY JOHN WILL VISIT MARY\n",
" 74: JOHN *IX *SHOOT MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN *BUY MARY ANN BLAME MARY\n",
" 84: *JOHN *LOVE *HOMEWORK BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY *JOHN GIVE *JOHN *JOHN *BUY *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN *JOHN *JOHN *JOHN *JOHN *ARRIVE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN GIVE *JOHN *JOHN *JOHN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS *BUY CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *VEGETABLE JOHN LEG\n",
" 107: *LIKE *SHOULD FRIEND *MARY *SHOOT JOHN POSS FRIEND HAVE CANDY\n",
" 108: WOMAN *LOVE WOMAN ARRIVE\n",
" 113: *JOHN *VISIT *MARY *MARY *JOHN IX CAR BLUE SUE BUY\n",
" 119: *VISIT *BUY1 *MARY *JOHN *MARY SUE BUY IX CAR BLUE\n",
" 122: JOHN *JOHN BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 WHAT *JOHN *ARRIVE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY *CAR *HOUSE BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE JOHN *IX LOVE JOHN WHO\n",
" 167: JOHN *MARY *VISIT LOVE MARY JOHN IX SAY LOVE MARY\n",
" 171: *MARY MARY *MARY JOHN MARY BLAME\n",
" 174: *CAN *CAR GIVE1 *SHOOT *WHAT PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *MARY *BOX JOHN ARRIVE\n",
" 184: *JOHN *JOHN *CAR *HOUSE *JOHN ALL BOY GIVE TEACHER APPLE\n",
" 189: JOHN *JOHN *JOHN *WHAT JOHN GIVE GIRL BOX\n",
" 193: JOHN *JOHN *WHO BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *LOVE *TELL LIKE CHOCOLATE WHO\n",
" 201: JOHN *MARY *JOHN *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_norm'\n",
"\n",
"**** WER = 0.6292134831460674\n",
"Total correct: 66 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN CAN GO CAN JOHN CAN GO CAN\n",
" 12: JOHN CAN *WHAT CAN JOHN CAN GO CAN\n",
" 21: JOHN *WRITE *SHOULD *JOHN *CAR *CAR *YESTERDAY *WRITE JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *JOHN *JOHN *MARY *JOHN JOHN LIKE IX IX IX\n",
" 28: *ANN *ANN *ANN *ANN *ANN JOHN LIKE IX IX IX\n",
" 30: *SHOOT *IX *MARY IX IX JOHN LIKE IX IX IX\n",
" 36: MARY *IX *SOMETHING-ONE *GO *MARY *IX MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *IX IX *SEE *IX *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *JOHN *HAVE HOUSE JOHN MUST BUY HOUSE\n",
" 50: *POSS *FRANK BUY CAR SHOULD FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD *WILL *WRITE HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *IX *IX *IX *VISIT JOHN DECIDE VISIT MARY\n",
" 67: JOHN *GIVE *JOHN *WHAT *WHAT JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN WILL VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *GO *VISIT VISIT MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN BLAME MARY ANN BLAME MARY\n",
" 84: *IX *WHAT *HOMEWORK BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY *THROW GIVE *GIVE *GIVE *BOOK *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SHOOT *SOMETHING-ONE *SOMETHING-ONE SOMETHING-ONE WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *MARY *GIVE *GIVE WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS *ARRIVE *HOUSE BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *FRANK JOHN LEG\n",
" 107: *TELL *GIVE FRIEND *JOHN *JANA JOHN POSS FRIEND HAVE CANDY\n",
" 108: *JOHN *HOMEWORK WOMAN ARRIVE\n",
" 113: IX *CAN *SHOULD *JOHN *BOX IX CAR BLUE SUE BUY\n",
" 119: *VISIT *LOVE *GIVE *CAN *MARY SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 *CAR *GO *BORROW JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY *POSS *ARRIVE BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE JOHN *VISIT LOVE JOHN WHO\n",
" 167: *IX IX *SAY-1P LOVE *JOHN JOHN IX SAY LOVE MARY\n",
" 171: *SHOOT MARY *MARY JOHN MARY BLAME\n",
" 174: *CAR *GIVE3 GIVE1 *TELL TOY PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *MARY *BOX JOHN ARRIVE\n",
" 184: *GIVE *GIVE *GIVE3 TEACHER *WHO ALL BOY GIVE TEACHER APPLE\n",
" 189: *JANA *GIVE2 *HAVE *WHAT JOHN GIVE GIRL BOX\n",
" 193: *IX *IX *GO BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN CHOCOLATE *JOHN LIKE CHOCOLATE WHO\n",
" 201: JOHN *MARY MARY *CHOCOLATE BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_polar'\n",
"\n",
"**** WER = 0.6685393258426966\n",
"Total correct: 59 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *VISIT *JOHN *WHAT JOHN CAN GO CAN\n",
" 12: *BROCCOLI CAN *WHAT CAN JOHN CAN GO CAN\n",
" 21: *IX *HOMEWORK *JOHN *WHO *BUY *CAR *FUTURE *WHO JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *MARY *IX IX *MARY IX JOHN LIKE IX IX IX\n",
" 28: *IX *MARY IX IX *LOVE JOHN LIKE IX IX IX\n",
" 30: *IX *IX *MARY IX IX JOHN LIKE IX IX IX\n",
" 36: MARY *SEE *GIVE *SHOOT *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *MARY *SHOOT *GIRL MARY *IX JOHN IX THINK MARY LOVE\n",
" 43: *IX *IX BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *MARY *SEE BUY CAR *JOHN FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD NOT BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *IX *SEE *JOHN *VISIT JOHN DECIDE VISIT MARY\n",
" 67: *IX *THROW *WHO BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN WILL *GO MARY JOHN WILL VISIT MARY\n",
" 74: JOHN *SHOOT *SHOOT *VISIT JOHN NOT VISIT MARY\n",
" 77: *IX *JOHN MARY ANN BLAME MARY\n",
" 84: *HOMEWORK *JOHN *HOMEWORK *COAT IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY *SHOULD GIVE *JOHN *GIVE *ARRIVE *BOOK JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SEE GIVE *GIVE1 *WOMAN *JOHN *ARRIVE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN GIVE *GIVE *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS *HOMEWORK CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: *IX *SEE JOHN LEG\n",
" 107: JOHN *JOHN *HAVE HAVE *SHOOT JOHN POSS FRIEND HAVE CANDY\n",
" 108: *JOHN *HOMEWORK WOMAN ARRIVE\n",
" 113: *JOHN *JOHN *JOHN *IX *JOHN IX CAR BLUE SUE BUY\n",
" 119: *SEE *JOHN *JOHN *JOHN *SEE SUE BUY IX CAR BLUE\n",
" 122: JOHN *BREAK-DOWN BOOK JOHN READ BOOK\n",
" 139: JOHN *LAST-WEEK WHAT *BLAME *ARRIVE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: *IX *HOMEWORK *POSS *ARRIVE BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: *JOHN JOHN WHO LOVE JOHN WHO\n",
" 167: JOHN IX *IX *JOHN *JOHN JOHN IX SAY LOVE MARY\n",
" 171: *MARY MARY *JOHN JOHN MARY BLAME\n",
" 174: *CAN GROUP GIVE1 *GO *WHAT PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *EAT *JOHN JOHN ARRIVE\n",
" 184: *JOHN *GIVE *CAR *HOUSE *GO ALL BOY GIVE TEACHER APPLE\n",
" 189: *MARY GIVE *SEE *TOY JOHN GIVE GIRL BOX\n",
" 193: JOHN *HAVE *SEE BOX JOHN GIVE GIRL BOX\n",
" 199: *HOMEWORK *HOMEWORK *MARY LIKE CHOCOLATE WHO\n",
" 201: JOHN *MARY *WOMAN *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_delta'\n",
"\n",
"**** WER = 0.7415730337078652\n",
"Total correct: 46 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN *JOHN HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *NEW *JOHN *HOUSE JOHN CAN GO CAN\n",
" 12: JOHN CAN *JOHN *HOUSE JOHN CAN GO CAN\n",
" 21: *MARY *MARY *HOMEWORK *MARY *WHAT *HOMEWORK *FUTURE *MARY JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *MARY *MARY *JOHN *MARY JOHN LIKE IX IX IX\n",
" 28: JOHN *IX *JOHN *JOHN *JOHN JOHN LIKE IX IX IX\n",
" 30: JOHN *IX *MARY *JOHN IX JOHN LIKE IX IX IX\n",
" 36: *IX *JOHN *JOHN *GIVE *MARY *JOHN MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *MARY IX *IX *IX *IX JOHN IX THINK MARY LOVE\n",
" 43: JOHN *JOHN *GO *BOOK JOHN MUST BUY HOUSE\n",
" 50: *JOHN *MARY BUY CAR *FUTURE FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *JOHN *JOHN *WRITE *BOOK JOHN SHOULD NOT BUY HOUSE\n",
" 57: JOHN *JOHN *NOT *JOHN JOHN DECIDE VISIT MARY\n",
" 67: JOHN *JOHN *MARY *BLAME HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *MARY VISIT MARY JOHN WILL VISIT MARY\n",
" 74: JOHN *JOHN *JOHN *JOHN JOHN NOT VISIT MARY\n",
" 77: *JOHN *NEW MARY ANN BLAME MARY\n",
" 84: *JOHN *JOHN *JOHN BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: JOHN *JOHN GIVE *JOHN *JOHN *JOHN *HOUSE JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *IX *JOHN *JOHN *GIVE WOMAN *MARY JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *IX *JOHN *JOHN *JOHN *MARY JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: *JOHN NEW CAR *BOOK POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *IX JOHN LEG\n",
" 107: JOHN *JOHN FRIEND *JOHN *MARY JOHN POSS FRIEND HAVE CANDY\n",
" 108: *JOHN *BOOK WOMAN ARRIVE\n",
" 113: *JOHN *JOHN *MARY *MARY *JOHN IX CAR BLUE SUE BUY\n",
" 119: *JOHN *NEW *JOHN *NEW *MARY SUE BUY IX CAR BLUE\n",
" 122: JOHN *JOHN *MARY JOHN READ BOOK\n",
" 139: JOHN *BOOK *MARY *JOHN *MARY JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN *NEW *JOHN *MARY *MARY JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: *JOHN *MARY *JOHN LOVE JOHN WHO\n",
" 167: JOHN IX *LOVE *MARY MARY JOHN IX SAY LOVE MARY\n",
" 171: JOHN *JOHN *NEW JOHN MARY BLAME\n",
" 174: *JOHN *MARY *JOHN *MARY *NEW PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN *BOOK JOHN ARRIVE\n",
" 184: *GIVE *JOHN *JOHN *FUTURE *MARY ALL BOY GIVE TEACHER APPLE\n",
" 189: JOHN *JOHN *JOHN *BOOK JOHN GIVE GIRL BOX\n",
" 193: JOHN *JOHN *JOHN BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *MARY *MARY LIKE CHOCOLATE WHO\n",
" 201: JOHN *IX MARY *JOHN *WHAT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_custom'\n",
"\n",
"**** WER = 0.6292134831460674\n",
"Total correct: 66 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *WOMAN WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: *IX *FRIEND GO *TOY JOHN CAN GO CAN\n",
" 12: *SHOOT *WANT *NEXT-WEEK CAN JOHN CAN GO CAN\n",
" 21: *ANN FISH WONT *MARY BUT *CAR *YESTERDAY CHICKEN JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *ANN *MARY *GO *MARY *ANN JOHN LIKE IX IX IX\n",
" 28: *ANN *GO *GO *ANN *LOVE JOHN LIKE IX IX IX\n",
" 30: *SHOOT LIKE *LOVE *LIKE IX JOHN LIKE IX IX IX\n",
" 36: *VISIT VEGETABLE *GIRL *TELL *LOVE *IX MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *IX *GIVE2 *YESTERDAY *EAT LOVE JOHN IX THINK MARY LOVE\n",
" 43: JOHN *SHOULD BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *IX-1P *FRANK BUY CAR SHOULD FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *FRANK *WHO *WRITE HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *IX *SUE VISIT *LOVE JOHN DECIDE VISIT MARY\n",
" 67: JOHN *MAN *CANDY *LIVE HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *SEE VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *SHOOT *EAT *NOT *LOVE JOHN NOT VISIT MARY\n",
" 77: ANN BLAME MARY ANN BLAME MARY\n",
" 84: *IX *BUT *HOMEWORK BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *WHO *PAST GIVE *WOMAN *SOMETHING-ONE NEW COAT JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *TOY1 *GIVE1 *POSS SOMETHING-ONE WOMAN *VIDEOTAPE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: *FRANK GIVE *THROW *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *FRANK JOHN LEG\n",
" 107: *LIKE *SUE FRIEND HAVE CANDY JOHN POSS FRIEND HAVE CANDY\n",
" 108: *THINK *HOMEWORK WOMAN ARRIVE\n",
" 113: IX *TOY *SUE SUE *BUY1 IX CAR BLUE SUE BUY\n",
" 119: *VEGETABLE *BUY1 *CHINA *VISIT *SELF SUE BUY IX CAR BLUE\n",
" 122: JOHN READ BOOK JOHN READ BOOK\n",
" 139: *LEAVE *CHOCOLATE *TOY YESTERDAY *NEW JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN *SELL *CHICAGO WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *JANA WHO LOVE JOHN WHO\n",
" 167: *IX IX *EAT *PUTASIDE *LOVE JOHN IX SAY LOVE MARY\n",
" 171: *TOY1 *SUE *BORROW JOHN MARY BLAME\n",
" 174: *NEW GROUP GIVE1 *CORN TOY PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *CHINA *FISH JOHN ARRIVE\n",
" 184: *MAN BOY *MANY TEACHER *GIRL ALL BOY GIVE TEACHER APPLE\n",
" 189: *SUE *SELF *YESTERDAY *TOY JOHN GIVE GIRL BOX\n",
" 193: *IX *GIVE1 *CORN BOX JOHN GIVE GIRL BOX\n",
" 199: *LOVE *STUDENT *IX LIKE CHOCOLATE WHO\n",
" 201: JOHN *THINK *GIVE *WOMAN *BUT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n"
]
}
],
"source": [
"# TODO Choose a feature set and model selector\n",
"features_all = {\n",
" 'features_ground': features_ground, \n",
" 'features_norm': features_norm,\n",
" 'features_polar': features_polar, \n",
" 'features_delta': features_delta,\n",
" 'features_custom': features_custom\n",
"}\n",
"\n",
"model_selector = SelectorCV # change as needed\n",
"\n",
"# TODO Recognize the test set and display the result with the show_errors method\n",
"\n",
"for features_name, features in features_all.items():\n",
" models = train_all_words(features, model_selector)\n",
" test_set = asl.build_test(features)\n",
" probabilities, guesses = recognize(models, test_set)\n",
" print(\"\\nWER results for Feature Set: %r\" % features_name)\n",
" show_errors(guesses, test_set)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"WER results for Feature Set: 'features_ground'\n",
"\n",
"**** WER = 0.5449438202247191\n",
"Total correct: 81 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: *SOMETHING-ONE *GO1 GO *ARRIVE JOHN CAN GO CAN\n",
" 12: *IX *WHAT *CAN CAN JOHN CAN GO CAN\n",
" 21: JOHN *HOMEWORK *JOHN *FUTURE *CAR *TEACHER *VISIT *WHO JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *IX IX *LIKE IX JOHN LIKE IX IX IX\n",
" 28: JOHN *WHO IX *LIKE *LOVE JOHN LIKE IX IX IX\n",
" 30: JOHN LIKE *MARY *MARY *MARY JOHN LIKE IX IX IX\n",
" 36: *VISIT *VISIT *IX *GIVE *MARY *IX MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *SUE *GO *GIVE MARY *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *IX BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *FRANK *SEE BUY CAR *NEW FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD NOT BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *VISIT VISIT MARY JOHN DECIDE VISIT MARY\n",
" 67: *SHOULD *JOHN *WHO BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *FUTURE VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *IX *VISIT VISIT MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN BLAME *LOVE ANN BLAME MARY\n",
" 84: *JOHN *ARRIVE *HOMEWORK BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY *POSS *IX *IX IX *ARRIVE *BOOK JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN *ALL IX *IX *VISIT *HERE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *SHOULD IX *IX *IX BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: *IX NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *SEE JOHN LEG\n",
" 107: JOHN *GO *ARRIVE HAVE *JANA JOHN POSS FRIEND HAVE CANDY\n",
" 108: *WHO *LOVE WOMAN ARRIVE\n",
" 113: IX CAR *CAR *MARY *BOX IX CAR BLUE SUE BUY\n",
" 119: *VISIT *BUY1 IX *BOX *GO SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 WHAT *GIVE1 BOOK JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN *STUDENT YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE JOHN WHO LOVE JOHN WHO\n",
" 167: JOHN *MARY *VISIT LOVE MARY JOHN IX SAY LOVE MARY\n",
" 171: JOHN MARY BLAME JOHN MARY BLAME\n",
" 174: *CAN *GIVE1 GIVE1 *YESTERDAY *WHAT PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN *BOX JOHN ARRIVE\n",
" 184: *GIVE BOY *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: JOHN *SOMETHING-ONE *VISIT BOX JOHN GIVE GIRL BOX\n",
" 193: JOHN *SOMETHING-ONE *VISIT BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN CHOCOLATE *GO LIKE CHOCOLATE WHO\n",
" 201: JOHN *MARY *LOVE *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_norm'\n",
"\n",
"**** WER = 0.6123595505617978\n",
"Total correct: 69 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN WRITE *ARRIVE JOHN WRITE HOMEWORK\n",
" 7: *MARY *NEW GO *WHAT JOHN CAN GO CAN\n",
" 12: *MARY *HAVE *GO1 CAN JOHN CAN GO CAN\n",
" 21: *MARY *BOX *HAVE *GO *CAR *CAR *CHICKEN *WRITE JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN LIKE *LOVE *LIKE IX JOHN LIKE IX IX IX\n",
" 28: *ANN *ANN *ANN *ANN *ANN JOHN LIKE IX IX IX\n",
" 30: *IX-1P *IX *MARY IX IX JOHN LIKE IX IX IX\n",
" 36: MARY *MARY *YESTERDAY *SHOOT LIKE *IX MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *MARY *JOHN *FUTURE1 *VEGETABLE *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *FUTURE BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *POSS *SEE *WRITE CAR *CAR FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *FUTURE *FUTURE *STUDENT HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *IX *IX *IX MARY JOHN DECIDE VISIT MARY\n",
" 67: *MARY *IX *JOHN *ARRIVE HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN WILL VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *IX *BILL VISIT MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN BLAME MARY ANN BLAME MARY\n",
" 84: *JOHN *HAVE *VISIT BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *FUTURE *THROW *IX *IX IX *ARRIVE *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SELF *YESTERDAY IX *IX WOMAN *CHOCOLATE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *WOMAN *WOMAN *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *FUTURE JOHN LEG\n",
" 107: *MARY POSS *BOX *MARY *TOY1 JOHN POSS FRIEND HAVE CANDY\n",
" 108: *IX *HOMEWORK WOMAN ARRIVE\n",
" 113: IX CAR *IX *JOHN *BOX IX CAR BLUE SUE BUY\n",
" 119: SUE *BUY1 IX CAR *FINISH SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 *CAR YESTERDAY BOOK JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *IX WHO LOVE JOHN WHO\n",
" 167: *MARY IX *SAY-1P LOVE *IX JOHN IX SAY LOVE MARY\n",
" 171: *MARY *IX BLAME JOHN MARY BLAME\n",
" 174: *NEW *GIVE1 GIVE1 *VISIT *CAR PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN *BOX JOHN ARRIVE\n",
" 184: *IX BOY *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: *JANA *MARY *PREFER *ARRIVE JOHN GIVE GIRL BOX\n",
" 193: *IX *YESTERDAY *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN CHOCOLATE *JOHN LIKE CHOCOLATE WHO\n",
" 201: JOHN *GIVE1 *WOMAN *WOMAN *STUDENT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_polar'\n",
"\n",
"**** WER = 0.5449438202247191\n",
"Total correct: 81 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *GO WRITE *NEW JOHN WRITE HOMEWORK\n",
" 7: JOHN *PEOPLE GO *ARRIVE JOHN CAN GO CAN\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 12: JOHN *WHAT *GO1 CAN JOHN CAN GO CAN\n",
" 21: JOHN *HOMEWORK WONT *NOT *GIVE1 *TEACHER *FUTURE *WHO JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN LIKE *LOVE *WHO IX JOHN LIKE IX IX IX\n",
" 28: JOHN *WHO *FUTURE *WHO IX JOHN LIKE IX IX IX\n",
" 30: JOHN LIKE *MARY *MARY *MARY JOHN LIKE IX IX IX\n",
" 36: *VISIT VEGETABLE *GIRL *GIVE *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: JOHN *VISIT *FUTURE1 *JOHN *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *FUTURE BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *JOHN *SEE *STUDENT CAR *JOHN FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD *WHO BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *VISIT VISIT MARY JOHN DECIDE VISIT MARY\n",
" 67: *SHOULD FUTURE *MARY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *FINISH *GIVE1 MARY JOHN WILL VISIT MARY\n",
" 74: *IX *VISIT *GIVE MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN BLAME *LOVE ANN BLAME MARY\n",
" 84: *HOMEWORK *GIVE1 *GIVE1 BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *GIVE *GIVE *WOMAN *WOMAN IX *ARRIVE *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN *HAVE IX SOMETHING-ONE *VISIT *BREAK-DOWN JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *WOMAN IX *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *VEGETABLE JOHN LEG\n",
" 107: JOHN *IX *HAVE *GO *JANA JOHN POSS FRIEND HAVE CANDY\n",
" 108: *JOHN *HOMEWORK WOMAN ARRIVE\n",
" 113: IX CAR *IX *IX *BUY1 IX CAR BLUE SUE BUY\n",
" 119: *PREFER *BUY1 *CAR CAR *GO SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 WHAT *BLAME *CHOCOLATE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE JOHN WHO LOVE JOHN WHO\n",
" 167: JOHN IX *VISIT LOVE MARY JOHN IX SAY LOVE MARY\n",
" 171: JOHN *IX BLAME JOHN MARY BLAME\n",
" 174: *JOHN *GIVE3 GIVE1 *YESTERDAY *JOHN PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *EAT ARRIVE JOHN ARRIVE\n",
" 184: ALL BOY *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: *MARY *VISIT *VISIT BOX JOHN GIVE GIRL BOX\n",
" 193: JOHN *POSS *VISIT BOX JOHN GIVE GIRL BOX\n",
" 199: *HOMEWORK *VIDEOTAPE *JOHN LIKE CHOCOLATE WHO\n",
" 201: JOHN *MAN *MAN *LIKE BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_delta'\n",
"\n",
"**** WER = 0.6235955056179775\n",
"Total correct: 67 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN *LOVE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *STUDENT *GIVE1 *STUDENT JOHN CAN GO CAN\n",
" 12: JOHN CAN *GO1 CAN JOHN CAN GO CAN\n",
" 21: *MARY *MARY *HOMEWORK *MARY *CAR *TOMORROW *FUTURE *MARY JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *IX *MARY IX IX JOHN LIKE IX IX IX\n",
" 28: JOHN *MARY *JOHN IX IX JOHN LIKE IX IX IX\n",
" 30: JOHN *IX IX *JOHN IX JOHN LIKE IX IX IX\n",
" 36: *JOHN *JOHN *JOHN IX *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *MARY IX *JOHN MARY *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *IX *FINISH HOUSE JOHN MUST BUY HOUSE\n",
" 50: *JOHN *FUTURE BUY CAR *MARY FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *JOHN *JOHN BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *JOHN *IX *IX JOHN DECIDE VISIT MARY\n",
" 67: JOHN *JOHN *MARY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *MARY VISIT MARY JOHN WILL VISIT MARY\n",
" 74: JOHN *JOHN *IX MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN *CAR MARY ANN BLAME MARY\n",
" 84: *JOHN *GIVE1 *IX BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY *JOHN *IX *IX *JOHN *WHAT *CAN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN *JOHN *JOHN *IX *IX *JOHN JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *IX *JOHN *IX *IX BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: *JOHN NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *JOHN JOHN LEG\n",
" 107: JOHN *JOHN FRIEND *JOHN *MARY JOHN POSS FRIEND HAVE CANDY\n",
" 108: *JOHN *BOOK WOMAN ARRIVE\n",
" 113: *JOHN CAR *MARY *MARY *GIVE1 IX CAR BLUE SUE BUY\n",
" 119: *JOHN *BUY1 IX CAR *MARY SUE BUY IX CAR BLUE\n",
" 122: JOHN *ARRIVE *WHAT JOHN READ BOOK\n",
" 139: JOHN *BUY1 WHAT *JOHN *MARY JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY *JOHN WHAT *MARY JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: *ARRIVE JOHN *JOHN LOVE JOHN WHO\n",
" 167: JOHN IX *IX *CAR *WHAT JOHN IX SAY LOVE MARY\n",
" 171: JOHN *JOHN BLAME JOHN MARY BLAME\n",
" 174: *GIVE1 *MARY GIVE1 *MARY *FINISH PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN *GIVE1 JOHN ARRIVE\n",
" 184: *IX *JOHN *GIVE1 *WHO *MARY ALL BOY GIVE TEACHER APPLE\n",
" 189: JOHN *JOHN *JOHN *ARRIVE JOHN GIVE GIRL BOX\n",
" 193: JOHN *IX *WOMAN BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *WHAT *MARY LIKE CHOCOLATE WHO\n",
" 201: JOHN *IX MARY *IX BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_custom'\n",
"\n",
"**** WER = 0.5898876404494382\n",
"Total correct: 73 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *OLD WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *PEOPLE GO *TOY JOHN CAN GO CAN\n",
" 12: *SHOOT *HAVE *NEXT-WEEK *HOUSE JOHN CAN GO CAN\n",
" 21: *ANN FISH WONT *MARY BUT *CAR *MOTHER CHICKEN JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *ANN *ANN *GO *ANN *ANN JOHN LIKE IX IX IX\n",
" 28: *ANN *ANN *GO *ANN *LOVE JOHN LIKE IX IX IX\n",
" 30: *IX *MARY *MARY *MARY *GO JOHN LIKE IX IX IX\n",
" 36: MARY *EAT *THINK *TELL *MARY *LEAVE MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *SUE *GIVE2 *SELF *SUE LOVE JOHN IX THINK MARY LOVE\n",
" 43: JOHN *PAST BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *FRANK *SEE BUY CAR SHOULD FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *FRANK NOT *STUDENT HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *FUTURE1 *GIVE2 *GIVE2 JOHN DECIDE VISIT MARY\n",
" 67: *SHOULD *MAN *CANDY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN WILL VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *IX *SAY *NOT MARY JOHN NOT VISIT MARY\n",
" 77: ANN BLAME MARY ANN BLAME MARY\n",
" 84: *HOMEWORK *TOY *HOMEWORK *COAT IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *FUTURE *PAST *IX *IX IX NEW *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *TOY1 *ALL IX *IX WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: *FRANK *IX IX *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: *FRANK *SEE JOHN LEG\n",
" 107: *IX *IX FRIEND *LOVE CANDY JOHN POSS FRIEND HAVE CANDY\n",
" 108: *THINK *HOMEWORK WOMAN ARRIVE\n",
" 113: *JOHN CAR *SUE *JOHN *BUY1 IX CAR BLUE SUE BUY\n",
" 119: *VEGETABLE *BUY1 IX CAR *FUTURE SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 *TOY YESTERDAY *CHOCOLATE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: *FRANK BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *MARY WHO LOVE JOHN WHO\n",
" 167: JOHN *LEAVE SAY *PUTASIDE MARY JOHN IX SAY LOVE MARY\n",
" 171: JOHN *JOHN BLAME JOHN MARY BLAME\n",
" 174: *NEW GROUP GIVE1 *GIRL TOY PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *SUE ARRIVE JOHN ARRIVE\n",
" 184: ALL BOY *GIVE1 TEACHER *GIRL ALL BOY GIVE TEACHER APPLE\n",
" 189: *JANA *SELF *FUTURE1 *ARRIVE JOHN GIVE GIRL BOX\n",
" 193: JOHN *GIVE3 *FUTURE1 BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *STUDENT WHO LIKE CHOCOLATE WHO\n",
" 201: JOHN *THINK *IX *LIKE *STUDENT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n"
]
}
],
"source": [
"# TODO Choose a feature set and model selector\n",
"features_all = {\n",
" 'features_ground': features_ground, \n",
" 'features_norm': features_norm,\n",
" 'features_polar': features_polar, \n",
" 'features_delta': features_delta,\n",
" 'features_custom': features_custom\n",
"}\n",
"\n",
"model_selector = SelectorBIC # change as needed\n",
"\n",
"# TODO Recognize the test set and display the result with the show_errors method\n",
"\n",
"for features_name, features in features_all.items():\n",
" models = train_all_words(features, model_selector)\n",
" test_set = asl.build_test(features)\n",
" probabilities, guesses = recognize(models, test_set)\n",
" print(\"\\nWER results for Feature Set: %r\" % features_name)\n",
" show_errors(guesses, test_set)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"WER results for Feature Set: 'features_ground'\n",
"\n",
"**** WER = 0.5617977528089888\n",
"Total correct: 78 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN *NEW HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: *SOMETHING-ONE *CAR *ARRIVE *ARRIVE JOHN CAN GO CAN\n",
" 12: *IX *WHAT *WHAT *CAR JOHN CAN GO CAN\n",
" 21: JOHN *HOMEWORK *JOHN *FUTURE *CAR *CAR *FUTURE *MARY JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *IX IX *WHO IX JOHN LIKE IX IX IX\n",
" 28: JOHN *WHO IX IX *LOVE JOHN LIKE IX IX IX\n",
" 30: JOHN *MARY *MARY *MARY *MARY JOHN LIKE IX IX IX\n",
" 36: *VISIT *VISIT *GIVE *GO *MARY *IX MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *SUE *GO *GIVE MARY *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *IX BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *FRANK *FUTURE *GIVE1 CAR *JOHN FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD NOT BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *VISIT VISIT MARY JOHN DECIDE VISIT MARY\n",
" 67: JOHN FUTURE *MARY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *FINISH VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *IX *GO *MARY MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN BLAME *LOVE ANN BLAME MARY\n",
" 84: *JOHN *GIVE1 *HOMEWORK BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY IX *IX *IX IX *ARRIVE *BOOK JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN *ALL IX *IX *VISIT *HERE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *IX IX *IX *IX BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: *IX NEW CAR *ARRIVE POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *FRANK JOHN LEG\n",
" 107: JOHN *IX *HAVE *ARRIVE *JANA JOHN POSS FRIEND HAVE CANDY\n",
" 108: *IX ARRIVE WOMAN ARRIVE\n",
" 113: IX CAR *IX *MARY *BOX IX CAR BLUE SUE BUY\n",
" 119: *VISIT *BUY1 IX *BOX *IX SUE BUY IX CAR BLUE\n",
" 122: JOHN *BUY BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 WHAT *MARY BOOK JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE JOHN WHO LOVE JOHN WHO\n",
" 167: JOHN *MARY *GO LOVE MARY JOHN IX SAY LOVE MARY\n",
" 171: JOHN MARY BLAME JOHN MARY BLAME\n",
" 174: *CAR *GIVE1 GIVE1 *YESTERDAY *WHAT PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN ARRIVE JOHN ARRIVE\n",
" 184: ALL BOY *GIVE1 TEACHER *YESTERDAY ALL BOY GIVE TEACHER APPLE\n",
" 189: JOHN *SOMETHING-ONE *VISIT BOX JOHN GIVE GIRL BOX\n",
" 193: JOHN *SOMETHING-ONE *VISIT BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *ARRIVE *GO LIKE CHOCOLATE WHO\n",
" 201: JOHN *MARY *LOVE *JOHN *GIVE1 HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_norm'\n",
"\n",
"**** WER = 0.5955056179775281\n",
"Total correct: 72 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN WRITE *ARRIVE JOHN WRITE HOMEWORK\n",
" 7: *MARY *CAR GO CAN JOHN CAN GO CAN\n",
" 12: JOHN *WHAT *ARRIVE CAN JOHN CAN GO CAN\n",
" 21: *MARY *JOHN *JOHN *BLAME *CAR *CAR *FUTURE CHICKEN JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN LIKE IX *LIKE IX JOHN LIKE IX IX IX\n",
" 28: *ANN *ANN IX *MARY IX JOHN LIKE IX IX IX\n",
" 30: *IX-1P *CHOCOLATE *MARY *LOVE *LOVE JOHN LIKE IX IX IX\n",
" 36: MARY *MARY *YESTERDAY *SHOOT LIKE *IX MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *MARY *JOHN *FUTURE1 *VEGETABLE *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *FUTURE BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *POSS *SEE *JOHN CAR *IX FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *FUTURE *SHOULD *ARRIVE HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *SHOOT *IX *JOHN *VISIT JOHN DECIDE VISIT MARY\n",
" 67: *MARY *IX *JOHN *ARRIVE HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *FUTURE VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *GO *VISIT VISIT MARY JOHN NOT VISIT MARY\n",
" 77: ANN BLAME MARY ANN BLAME MARY\n",
" 84: *JOHN *ARRIVE *VISIT BOOK IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY *POSS *IX *IX IX *ARRIVE *BREAK-DOWN JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SELF *IX IX *IX WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *IX IX *IX *LOVE BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *POSS JOHN LEG\n",
" 107: *MARY POSS *BOX *MARY *TOY1 JOHN POSS FRIEND HAVE CANDY\n",
" 108: *LOVE *JOHN WOMAN ARRIVE\n",
" 113: *SHOULD CAR *IX *JOHN *BOX IX CAR BLUE SUE BUY\n",
" 119: SUE *BUY1 IX *JOHN *GO SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 *CAR *JOHN BOOK JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE JOHN WHO LOVE JOHN WHO\n",
" 167: JOHN IX *SAY-1P LOVE *IX JOHN IX SAY LOVE MARY\n",
" 171: *MARY *JOHN BLAME JOHN MARY BLAME\n",
" 174: *CAR *GIVE1 GIVE1 *YESTERDAY *CAR PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN *BOX JOHN ARRIVE\n",
" 184: *IX BOY *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE\n",
" 189: *MARY *MARY *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 193: *LEAVE *YESTERDAY *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *ARRIVE *JOHN LIKE CHOCOLATE WHO\n",
" 201: JOHN *GIVE1 *IX *WOMAN *ARRIVE HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_polar'\n",
"\n",
"**** WER = 0.5280898876404494\n",
"Total correct: 84 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" 2: JOHN *NEW HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN CAN GO CAN JOHN CAN GO CAN\n",
" 12: JOHN *WHAT *JOHN CAN JOHN CAN GO CAN\n",
" 21: JOHN *HOMEWORK *JOHN *PREFER *GIVE1 *WHAT *FUTURE *WHO JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *IX IX *WHO IX JOHN LIKE IX IX IX\n",
" 28: JOHN *FUTURE IX *FUTURE *LOVE JOHN LIKE IX IX IX\n",
" 30: JOHN LIKE *MARY *MARY *MARY JOHN LIKE IX IX IX\n",
" 36: *IX *EAT *GIVE *GIVE *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: JOHN *GO *GIVE *JOHN *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *IX BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *JOHN *SEE BUY CAR *JOHN FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN SHOULD NOT BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *GO *GO MARY JOHN DECIDE VISIT MARY\n",
" 67: *SHOULD FUTURE *MARY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *FUTURE *GIVE1 MARY JOHN WILL VISIT MARY\n",
" 74: *IX *GO *GO *VISIT JOHN NOT VISIT MARY\n",
" 77: *JOHN *GIVE1 MARY ANN BLAME MARY\n",
" 84: *HOMEWORK *GIVE1 *HOMEWORK *COAT IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *GIVE *GIVE *WOMAN *WOMAN IX *ARRIVE *BOOK JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN GIVE IX SOMETHING-ONE WOMAN *ARRIVE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *WOMAN IX *WOMAN WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *SEE JOHN LEG\n",
" 107: JOHN POSS *HAVE HAVE *MARY JOHN POSS FRIEND HAVE CANDY\n",
" 108: *LOVE *HOMEWORK WOMAN ARRIVE\n",
" 113: IX CAR *IX *MARY *JOHN IX CAR BLUE SUE BUY\n",
" 119: *MARY *BUY1 IX *BLAME *IX SUE BUY IX CAR BLUE\n",
" 122: JOHN *GIVE1 BOOK JOHN READ BOOK\n",
" 139: JOHN *ARRIVE WHAT *MARY *ARRIVE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE JOHN WHO LOVE JOHN WHO\n",
" 167: JOHN *MARY *VISIT LOVE MARY JOHN IX SAY LOVE MARY\n",
" 171: *IX MARY BLAME JOHN MARY BLAME\n",
" 174: *JOHN GROUP GIVE1 *YESTERDAY *JOHN PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *EAT ARRIVE JOHN ARRIVE\n",
" 184: ALL BOY *GIVE1 TEACHER *YESTERDAY ALL BOY GIVE TEACHER APPLE\n",
" 189: *MARY *GO *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 193: JOHN *GO *YESTERDAY BOX JOHN GIVE GIRL BOX\n",
" 199: *HOMEWORK *STUDENT *GO LIKE CHOCOLATE WHO\n",
" 201: JOHN *MAN *LOVE *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_delta'\n",
"\n",
"**** WER = 0.6179775280898876\n",
"Total correct: 68 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: JOHN *GIVE1 HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *DECIDE *GIVE1 *ARRIVE JOHN CAN GO CAN\n",
" 12: JOHN *BOX *JOHN CAN JOHN CAN GO CAN\n",
" 21: JOHN *MARY *LOVE *MARY *HOUSE *FUTURE *FUTURE *MARY JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: JOHN *IX *JOHN IX IX JOHN LIKE IX IX IX\n",
" 28: JOHN *MARY *JOHN IX IX JOHN LIKE IX IX IX\n",
" 30: JOHN *IX *SEE *JOHN IX JOHN LIKE IX IX IX\n",
" 36: *JOHN *JOHN *JOHN IX *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *MARY IX *JOHN MARY *MARY JOHN IX THINK MARY LOVE\n",
" 43: JOHN *IX BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *JOHN JOHN BUY CAR *MARY FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *JOHN *JOHN BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *MARY *JOHN *IX *IX JOHN DECIDE VISIT MARY\n",
" 67: JOHN *JOHN *MARY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN *MARY VISIT MARY JOHN WILL VISIT MARY\n",
" 74: JOHN *JOHN *IX MARY JOHN NOT VISIT MARY\n",
" 77: *JOHN *ARRIVE MARY ANN BLAME MARY\n",
" 84: *GO *CAR *IX *LOVE IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *MARY *JOHN *IX *IX *JOHN *WHAT COAT JOHN IX GIVE MAN IX NEW COAT\n",
" 90: JOHN *JOHN *JOHN *IX *IX *MARY JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *IX *JOHN *IX WOMAN *MARY JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: *JOHN *ARRIVE CAR *HOUSE POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *JOHN JOHN LEG\n",
" 107: JOHN POSS *ARRIVE *MARY *JOHN JOHN POSS FRIEND HAVE CANDY\n",
" 108: *JOHN *LOVE WOMAN ARRIVE\n",
" 113: *JOHN CAR *MARY *IX *GIVE1 IX CAR BLUE SUE BUY\n",
" 119: *JOHN *GIVE1 IX CAR *MARY SUE BUY IX CAR BLUE\n",
" 122: JOHN *BOY *WHAT JOHN READ BOOK\n",
" 139: JOHN *GIVE1 WHAT *JOHN *WHAT JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY *JOHN WHAT *WHAT JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: *BOY JOHN *JOHN LOVE JOHN WHO\n",
" 167: JOHN IX *IX *WHAT MARY JOHN IX SAY LOVE MARY\n",
" 171: JOHN *JOHN BLAME JOHN MARY BLAME\n",
" 174: *GIVE1 *LOVE GIVE1 *JOHN *CAR PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: JOHN ARRIVE JOHN ARRIVE\n",
" 184: *IX *JOHN *GIVE1 TEACHER *MARY ALL BOY GIVE TEACHER APPLE\n",
" 189: JOHN *JOHN *JOHN *ARRIVE JOHN GIVE GIRL BOX\n",
" 193: JOHN *IX *LIKE BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *WHAT *MARY LIKE CHOCOLATE WHO\n",
" 201: JOHN *IX *IX *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n",
"\n",
"WER results for Feature Set: 'features_custom'\n",
"\n",
"**** WER = 0.5280898876404494\n",
"Total correct: 84 out of 178\n",
"Video Recognized Correct\n",
"=====================================================================================================\n",
" 2: *OLD WRITE HOMEWORK JOHN WRITE HOMEWORK\n",
" 7: JOHN *PEOPLE GO *TOY JOHN CAN GO CAN\n",
" 12: *SHOULD *WHAT *NEXT-WEEK *HOUSE JOHN CAN GO CAN\n",
" 21: *ANN FISH WONT *MARY BUT *PARTY *MOTHER CHICKEN JOHN FISH WONT EAT BUT CAN EAT CHICKEN\n",
" 25: *ANN *ANN *LOVE *ANN *ANN JOHN LIKE IX IX IX\n",
" 28: *ANN *ANN *LOVE *ANN *LOVE JOHN LIKE IX IX IX\n",
" 30: *IX *MARY *MARY *MARY *NOT JOHN LIKE IX IX IX\n",
" 36: MARY *EAT *THINK *TELL *MARY *LEAVE MARY VEGETABLE KNOW IX LIKE CORN1\n",
" 40: *JANA *VISIT *SELF *JOHN LOVE JOHN IX THINK MARY LOVE\n",
" 43: JOHN *FUTURE BUY HOUSE JOHN MUST BUY HOUSE\n",
" 50: *JOHN *SEE BUY CAR *NEW FUTURE JOHN BUY CAR SHOULD\n",
" 54: JOHN *FUTURE *SAY BUY HOUSE JOHN SHOULD NOT BUY HOUSE\n",
" 57: *IX *FUTURE1 VISIT *GIVE2 JOHN DECIDE VISIT MARY\n",
" 67: *FRANK *MAN *CANDY BUY HOUSE JOHN FUTURE NOT BUY HOUSE\n",
" 71: JOHN WILL VISIT MARY JOHN WILL VISIT MARY\n",
" 74: *IX *SAY *NOT MARY JOHN NOT VISIT MARY\n",
" 77: ANN BLAME MARY ANN BLAME MARY\n",
" 84: *LOVE *STUDENT *HOMEWORK *VIDEOTAPE IX-1P FIND SOMETHING-ONE BOOK\n",
" 89: *THINK *PAST *THROW *IX IX NEW COAT JOHN IX GIVE MAN IX NEW COAT\n",
" 90: *SOMETHING-ONE *ALL IX *IX WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 92: JOHN *IX IX SOMETHING-ONE WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK\n",
" 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN\n",
" 105: JOHN *SEE JOHN LEG\n",
" 107: *LIKE *SHOULD FRIEND *LOVE CANDY JOHN POSS FRIEND HAVE CANDY\n",
" 108: WOMAN ARRIVE WOMAN ARRIVE\n",
" 113: IX CAR BLUE *JOHN *NEW IX CAR BLUE SUE BUY\n",
" 119: *VEGETABLE *BUY1 *BLAME CAR *FUTURE SUE BUY IX CAR BLUE\n",
" 122: JOHN READ BOOK JOHN READ BOOK\n",
" 139: JOHN *BUY1 *TOY YESTERDAY *CHOCOLATE JOHN BUY WHAT YESTERDAY BOOK\n",
" 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK\n",
" 158: LOVE *MARY WHO LOVE JOHN WHO\n",
" 167: JOHN IX SAY LOVE MARY JOHN IX SAY LOVE MARY\n",
" 171: JOHN *JOHN BLAME JOHN MARY BLAME\n",
" 174: *NEW GROUP GIVE1 *GIRL TOY PEOPLE GROUP GIVE1 JANA TOY\n",
" 181: *SUE ARRIVE JOHN ARRIVE\n",
" 184: ALL BOY *GIVE1 TEACHER *GIRL ALL BOY GIVE TEACHER APPLE\n",
" 189: *JANA *SELF *FUTURE1 *NEW JOHN GIVE GIRL BOX\n",
" 193: JOHN *GIVE3 *FUTURE1 BOX JOHN GIVE GIRL BOX\n",
" 199: *JOHN *STUDENT WHO LIKE CHOCOLATE WHO\n",
" 201: JOHN *THINK *IX *LIKE *STUDENT HOUSE JOHN TELL MARY IX-1P BUY HOUSE\n"
]
}
],
"source": [
"# TODO Choose a feature set and model selector\n",
"features_all = {\n",
" 'features_ground': features_ground, \n",
" 'features_norm': features_norm,\n",
" 'features_polar': features_polar, \n",
" 'features_delta': features_delta,\n",
" 'features_custom': features_custom\n",
"}\n",
"features = features_all # change as needed\n",
"model_selector = SelectorDIC # change as needed\n",
"\n",
"# TODO Recognize the test set and display the result with the show_errors method\n",
"\n",
"for features_name, features in features_all.items():\n",
" models = train_all_words(features, model_selector)\n",
" test_set = asl.build_test(features)\n",
" probabilities, guesses = recognize(models, test_set)\n",
" print(\"\\nWER results for Feature Set: %r\" % features_name)\n",
" show_errors(guesses, test_set)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**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.\n",
"\n",
"**Answer 3:** The following Table summarizes all WER (Word Error Rate) percentage results for all possible selector method.\n",
"features_custom and SelectorDIC or features_polar and SelectorDIC combinations gave the best result because they have the lowest WER percentage and highest total correct results.We already calculated unigram model here(We can extend to Bigram, trigrams...). The additional information that we may obtain to make better choices and improve our WER is through applying SLM on our data using \"1-gram\", \"2-gram\", and \"3-gram\" statistics.\n",
"\n",
"| Features | Selector |WER| Total correct|\n",
"| ------ | ------ | ------ |------ |\n",
"| features_ground | SelectorConstant |0.6685|59 out of 178|\n",
"| features_norm | SelectorConstant |0.6235|67 out of 178|\n",
"| features_polar | SelectorConstant |0.6179|68 out of 178|\n",
"| features_delta | SelectorConstant |0.6404|64 out of 178|\n",
"| features_custom | SelectorConstant |0.6235|67 out of 178|\n",
"| | | | |\n",
"| features_ground | SelectorCV |0.6404|64 out of 178|\n",
"| features_norm | SelectorCV |0.6292|66 out of 178|\n",
"| features_polar | SelectorCV |0.6685|59 out of 178|\n",
"| features_delta | SelectorCV |0.7415|46 out of 178|\n",
"| features_custom | SelectorCV |0.6292|66 out of 178|\n",
"| | | | |\n",
"| features_ground | SelectorBIC |0.5449|81 out of 178|\n",
"| features_norm | SelectorBIC |0.6123|69 out of 178|\n",
"| features_polar | SelectorBIC |0.5449|81 out of 178|\n",
"| features_delta | SelectorBIC |0.6235|67 out of 178|\n",
"| features_custom | SelectorBIC |0.5898|73 out of 178|\n",
"| | | | |\n",
"| features_ground | SelectorDIC |0.5617|78 out of 178|\n",
"| features_norm | SelectorDIC |0.5955|72 out of 178|\n",
"| features_polar | SelectorDIC |0.5280|84 out of 178|\n",
"| features_delta | SelectorDIC |0.6179|68 out of 178|\n",
"| features_custom | SelectorDIC |0.5280|84 out of 178|"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"### Recognizer Unit Tests\n",
"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."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"..\n",
"----------------------------------------------------------------------\n",
"Ran 2 tests in 67.038s\n",
"\n",
"OK\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from asl_test_recognizer import TestRecognize\n",
"suite = unittest.TestLoader().loadTestsFromModule(TestRecognize())\n",
"unittest.TextTestRunner().run(suite)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## PART 4: (OPTIONAL) Improve the WER with Language Models\n",
"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)](https://en.wikipedia.org/wiki/Language_model). 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.\n",
"\n",
"##### Additional reading and resources\n",
"- [Introduction to N-grams (Stanford Jurafsky slides)](https://web.stanford.edu/class/cs124/lec/languagemodeling.pdf)\n",
"- [Speech Recognition Techniques for a Sign Language Recognition System, Philippe Dreuw et al](https://www-i6.informatik.rwth-aachen.de/publications/download/154/Dreuw--2007.pdf) see the improved results of applying LM on *this* data!\n",
"- [SLM data for *this* ASL dataset](ftp://wasserstoff.informatik.rwth-aachen.de/pub/rwth-boston-104/lm/)\n",
"\n",
"##### Optional challenge\n",
"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). \n",
"Good luck! Share your results with the class!"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ALL | \n",
" ANN | \n",
" APPLE | \n",
" ARRIVE | \n",
" BILL | \n",
" BLAME | \n",
" BLUE | \n",
" BOOK | \n",
" BORROW | \n",
" BOX | \n",
" ... | \n",
" VIDEOTAPE | \n",
" VISIT | \n",
" WANT | \n",
" WHAT | \n",
" WHO | \n",
" WILL | \n",
" WOMAN | \n",
" WONT | \n",
" WRITE | \n",
" YESTERDAY | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" -27.268310 | \n",
" -2.532679 | \n",
" -179.681526 | \n",
" -162.235296 | \n",
" -166.961547 | \n",
" -48.561984 | \n",
" -86.468795 | \n",
" -575.187195 | \n",
" -101.774756 | \n",
" -337.061248 | \n",
" ... | \n",
" -627.936348 | \n",
" 13.873871 | \n",
" -292.253705 | \n",
" -571.167180 | \n",
" -41.610490 | \n",
" 35.475049 | \n",
" 27.472082 | \n",
" -75.310687 | \n",
" -291.521928 | \n",
" -6.422409 | \n",
"
\n",
" \n",
" 1 | \n",
" -1068.265693 | \n",
" -1110.915657 | \n",
" -1292.660553 | \n",
" 69.148734 | \n",
" -2025.055926 | \n",
" -5.566540 | \n",
" -149.618628 | \n",
" 63.562757 | \n",
" 24.351456 | \n",
" 3.107084 | \n",
" ... | \n",
" 66.685037 | \n",
" 58.507974 | \n",
" -167.876295 | \n",
" -154.372107 | \n",
" -21.889375 | \n",
" -685.179353 | \n",
" -252.846948 | \n",
" -168.361623 | \n",
" 97.161438 | \n",
" -182.200491 | \n",
"
\n",
" \n",
" 2 | \n",
" -1075.404287 | \n",
" -1113.640379 | \n",
" -1516.728035 | \n",
" 44.317372 | \n",
" -2172.955228 | \n",
" -55.554643 | \n",
" -229.519179 | \n",
" -161.925518 | \n",
" 32.831739 | \n",
" -50.431867 | \n",
" ... | \n",
" -94.736354 | \n",
" -3.117225 | \n",
" -357.877562 | \n",
" -266.616692 | \n",
" -118.715528 | \n",
" -757.652946 | \n",
" -326.851653 | \n",
" -162.559622 | \n",
" -360.385991 | \n",
" -263.920440 | \n",
"
\n",
" \n",
" 3 | \n",
" -24.194081 | \n",
" -44.365482 | \n",
" -166.164452 | \n",
" -17.953428 | \n",
" 64.209559 | \n",
" 11.976261 | \n",
" 62.731892 | \n",
" -548.103243 | \n",
" -119.884036 | \n",
" -297.311395 | \n",
" ... | \n",
" -578.611588 | \n",
" 68.017796 | \n",
" -294.693960 | \n",
" -97.095185 | \n",
" 12.774970 | \n",
" 106.624593 | \n",
" 33.167073 | \n",
" 69.687843 | \n",
" -411.095149 | \n",
" -52.152258 | \n",
"
\n",
" \n",
" 4 | \n",
" -311.052663 | \n",
" -273.177932 | \n",
" -362.140879 | \n",
" 22.087956 | \n",
" -484.710893 | \n",
" 13.678045 | \n",
" 6.192473 | \n",
" -23.538931 | \n",
" 9.268158 | \n",
" 23.074228 | \n",
" ... | \n",
" -17.338235 | \n",
" 24.854087 | \n",
" -23.102113 | \n",
" 7.786225 | \n",
" -2.485238 | \n",
" -168.008812 | \n",
" -79.493251 | \n",
" 8.057477 | \n",
" 12.211875 | \n",
" -18.172617 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 112 columns
\n",
"
"
],
"text/plain": [
" ALL ANN APPLE ARRIVE BILL BLAME \\\n",
"0 -27.268310 -2.532679 -179.681526 -162.235296 -166.961547 -48.561984 \n",
"1 -1068.265693 -1110.915657 -1292.660553 69.148734 -2025.055926 -5.566540 \n",
"2 -1075.404287 -1113.640379 -1516.728035 44.317372 -2172.955228 -55.554643 \n",
"3 -24.194081 -44.365482 -166.164452 -17.953428 64.209559 11.976261 \n",
"4 -311.052663 -273.177932 -362.140879 22.087956 -484.710893 13.678045 \n",
"\n",
" BLUE BOOK BORROW BOX ... VIDEOTAPE \\\n",
"0 -86.468795 -575.187195 -101.774756 -337.061248 ... -627.936348 \n",
"1 -149.618628 63.562757 24.351456 3.107084 ... 66.685037 \n",
"2 -229.519179 -161.925518 32.831739 -50.431867 ... -94.736354 \n",
"3 62.731892 -548.103243 -119.884036 -297.311395 ... -578.611588 \n",
"4 6.192473 -23.538931 9.268158 23.074228 ... -17.338235 \n",
"\n",
" VISIT WANT WHAT WHO WILL WOMAN \\\n",
"0 13.873871 -292.253705 -571.167180 -41.610490 35.475049 27.472082 \n",
"1 58.507974 -167.876295 -154.372107 -21.889375 -685.179353 -252.846948 \n",
"2 -3.117225 -357.877562 -266.616692 -118.715528 -757.652946 -326.851653 \n",
"3 68.017796 -294.693960 -97.095185 12.774970 106.624593 33.167073 \n",
"4 24.854087 -23.102113 7.786225 -2.485238 -168.008812 -79.493251 \n",
"\n",
" WONT WRITE YESTERDAY \n",
"0 -75.310687 -291.521928 -6.422409 \n",
"1 -168.361623 97.161438 -182.200491 \n",
"2 -162.559622 -360.385991 -263.920440 \n",
"3 69.687843 -411.095149 -52.152258 \n",
"4 8.057477 12.211875 -18.172617 \n",
"\n",
"[5 rows x 112 columns]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a DataFrame of log likelihoods for the test word items\n",
"df_probs = pd.DataFrame(data=probabilities)\n",
"df_probs.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
},
"nbpresent": {
"slides": {
"0a2d4faf-9fb8-4cee-853b-ed68b90f3f8a": {
"id": "0a2d4faf-9fb8-4cee-853b-ed68b90f3f8a",
"prev": null,
"regions": {
"3fb9ce83-fbb2-4995-832a-f8f400734ad3": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "1dbb9346-179b-4835-b430-6369d88f1a1b",
"part": "whole"
},
"id": "3fb9ce83-fbb2-4995-832a-f8f400734ad3"
}
}
},
"1519a4fa-1588-4644-98de-9c43bf0aceb5": {
"id": "1519a4fa-1588-4644-98de-9c43bf0aceb5",
"prev": "8a712017-49b7-449f-8264-43a032ace902",
"regions": {
"29546121-ed11-44b7-8144-0c44e874098f": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "365590a4-6963-4812-a1cf-688f7b6bb9ff",
"part": "whole"
},
"id": "29546121-ed11-44b7-8144-0c44e874098f"
}
}
},
"176eaccb-15dd-455d-bf07-504213e7aa01": {
"id": "176eaccb-15dd-455d-bf07-504213e7aa01",
"prev": "de6b30f4-2463-4901-92ed-aabad78e5e0f",
"regions": {
"1542aa9e-dc55-4b90-adef-bf5181872b42": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "5c242050-c1f7-4b3b-8103-2ea9d71a40dc",
"part": "whole"
},
"id": "1542aa9e-dc55-4b90-adef-bf5181872b42"
}
}
},
"19091b36-b0e7-49b1-b501-ec05937e0da9": {
"id": "19091b36-b0e7-49b1-b501-ec05937e0da9",
"prev": "1983c02e-fb99-4c05-a728-e0c0ad7c06d8",
"regions": {
"6529a31c-8d45-425c-b1d7-d0ac6fca6a32": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "e766909d-9421-4aaf-9fb1-bc90d27e49e3",
"part": "whole"
},
"id": "6529a31c-8d45-425c-b1d7-d0ac6fca6a32"
}
}
},
"1983c02e-fb99-4c05-a728-e0c0ad7c06d8": {
"id": "1983c02e-fb99-4c05-a728-e0c0ad7c06d8",
"prev": "176eaccb-15dd-455d-bf07-504213e7aa01",
"regions": {
"1c4e605d-7f22-4f30-b3fb-74b2937e7a4a": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "4d217204-e5c0-4568-bd30-12c2e41b681d",
"part": "whole"
},
"id": "1c4e605d-7f22-4f30-b3fb-74b2937e7a4a"
}
}
},
"212b111f-4527-459c-8297-1db5580ee5c9": {
"id": "212b111f-4527-459c-8297-1db5580ee5c9",
"prev": "76898529-e49e-4663-8d02-8261dfe1d94b",
"regions": {
"2e4bd280-3cd6-47d0-9c81-17737b24053b": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "0c316996-9933-4b3d-82ec-259518dc8bc9",
"part": "whole"
},
"id": "2e4bd280-3cd6-47d0-9c81-17737b24053b"
}
}
},
"23a7337f-a0cf-4ed4-baa9-ec06bfdc0579": {
"id": "23a7337f-a0cf-4ed4-baa9-ec06bfdc0579",
"prev": "e76e9a02-54c1-4ec9-80fb-c611ed398122",
"regions": {
"b5721d20-d6f8-4ddb-a5aa-eb16f0cc8893": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "313015a2-b5a9-4136-a8ea-5d011e47d840",
"part": "whole"
},
"id": "b5721d20-d6f8-4ddb-a5aa-eb16f0cc8893"
}
}
},
"732f1952-ee54-46fb-8067-099512824296": {
"id": "732f1952-ee54-46fb-8067-099512824296",
"prev": "0a2d4faf-9fb8-4cee-853b-ed68b90f3f8a",
"regions": {
"f31d4597-08ad-4c46-ad52-4bd2d775c624": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "aadfec52-27ca-4541-8920-fa9253d51827",
"part": "whole"
},
"id": "f31d4597-08ad-4c46-ad52-4bd2d775c624"
}
}
},
"76898529-e49e-4663-8d02-8261dfe1d94b": {
"id": "76898529-e49e-4663-8d02-8261dfe1d94b",
"prev": "19091b36-b0e7-49b1-b501-ec05937e0da9",
"regions": {
"ec1746fc-aec9-4a7c-8225-9e9ac8d45889": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "b3e539be-84e2-49ce-a183-31cfc5c7ce7c",
"part": "whole"
},
"id": "ec1746fc-aec9-4a7c-8225-9e9ac8d45889"
}
}
},
"8a712017-49b7-449f-8264-43a032ace902": {
"id": "8a712017-49b7-449f-8264-43a032ace902",
"prev": "bed9e696-630e-4747-be1c-bc3737ba992f",
"regions": {
"1faab517-cd16-4c63-bb01-a67246749d7a": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "3f14ddf0-4145-4687-9c33-712c3c32520f",
"part": "whole"
},
"id": "1faab517-cd16-4c63-bb01-a67246749d7a"
}
}
},
"90af992d-eb6d-4496-b2d2-6aa9a95b6a61": {
"id": "90af992d-eb6d-4496-b2d2-6aa9a95b6a61",
"prev": "732f1952-ee54-46fb-8067-099512824296",
"regions": {
"4f448bec-5be9-4553-88ae-e35ed7612f25": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "c445fbfb-b8ab-4e9a-8d13-12231a1c588f",
"part": "whole"
},
"id": "4f448bec-5be9-4553-88ae-e35ed7612f25"
}
}
},
"bed9e696-630e-4747-be1c-bc3737ba992f": {
"id": "bed9e696-630e-4747-be1c-bc3737ba992f",
"prev": "23a7337f-a0cf-4ed4-baa9-ec06bfdc0579",
"regions": {
"ac1513f0-404f-492b-8b42-0313e9a753b0": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "18dd2eee-8b6c-4a5e-9539-132d00a7c7e1",
"part": "whole"
},
"id": "ac1513f0-404f-492b-8b42-0313e9a753b0"
}
}
},
"de6b30f4-2463-4901-92ed-aabad78e5e0f": {
"id": "de6b30f4-2463-4901-92ed-aabad78e5e0f",
"prev": "e36b4639-be8c-46f7-a8c9-bcfb134f9fd0",
"regions": {
"55ec36e0-362f-4fd3-8060-7cee056039aa": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "c3cf461e-4c9e-4dec-99d2-07bfa79cbe23",
"part": "whole"
},
"id": "55ec36e0-362f-4fd3-8060-7cee056039aa"
}
}
},
"e36b4639-be8c-46f7-a8c9-bcfb134f9fd0": {
"id": "e36b4639-be8c-46f7-a8c9-bcfb134f9fd0",
"prev": "1519a4fa-1588-4644-98de-9c43bf0aceb5",
"regions": {
"4c1e9714-9ba0-45fd-8a2f-ef80a5c85c2e": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "6534d4dc-125f-47e6-a022-cf1e0d277174",
"part": "whole"
},
"id": "4c1e9714-9ba0-45fd-8a2f-ef80a5c85c2e"
}
}
},
"e76e9a02-54c1-4ec9-80fb-c611ed398122": {
"id": "e76e9a02-54c1-4ec9-80fb-c611ed398122",
"prev": "90af992d-eb6d-4496-b2d2-6aa9a95b6a61",
"regions": {
"9491b84d-193b-40ff-9321-d21eb1ba88d4": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "b64ec10e-fa9d-4f3f-907f-6799611ed6b1",
"part": "whole"
},
"id": "9491b84d-193b-40ff-9321-d21eb1ba88d4"
}
}
}
},
"themes": {}
}
},
"nbformat": 4,
"nbformat_minor": 1
}