Skip to content

Instantly share code, notes, and snippets.

@jasonost
Last active August 29, 2015 14:07
Show Gist options
  • Save jasonost/6311cd77cc05968acde8 to your computer and use it in GitHub Desktop.
Save jasonost/6311cd77cc05968acde8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"worksheets": [
{
"cells": [
{
"metadata": {},
"cell_type": "code",
"input": "import nltk\nfrom nltk.corpus import names\nimport random",
"prompt_number": 4,
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** A feature recognition function **"
},
{
"metadata": {},
"cell_type": "code",
"input": "def gender_features(word):\n return {'last_letter': word[-1]}\ngender_features('Samantha')",
"prompt_number": 5,
"outputs": [
{
"text": "{'last_letter': 'a'}",
"output_type": "pyout",
"metadata": {},
"prompt_number": 5
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Create name datasets ** "
},
{
"metadata": {},
"cell_type": "code",
"input": "def create_name_data():\n male_names = [(name, 'male') for name in names.words('male.txt')]\n female_names = [(name, 'female') for name in names.words('female.txt')]\n allnames = male_names + female_names\n \n # Randomize the order of male and female names, and de-alphabatize\n random.shuffle(allnames)\n return allnames\n\nnames_data = create_name_data()",
"prompt_number": 6,
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** First Pass at Training and Testing Data **"
},
{
"metadata": {},
"cell_type": "code",
"input": "\n# This function allows experimentation with different feature definitions\n# items is a list of (key, value) pairs from which features are extracted and training sets are made\ndef create_training_sets (feature_function, items):\n # Create the features sets. Call the function that was passed in.\n # For names, key is the name, and value is the gender\n featuresets = [(feature_function(key), value) for (key, value) in items]\n \n # Divided training and testing in half. Could divide in other proportions instead.\n halfsize = int(float(len(featuresets)) / 2.0)\n train_set, test_set = featuresets[halfsize:], featuresets[:halfsize]\n return train_set, test_set",
"prompt_number": 7,
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Train the classifier on the training data, with the first definition of features **"
},
{
"metadata": {},
"cell_type": "code",
"input": "# pass in a function name\ntrain_set, test_set = create_training_sets(gender_features, names_data)\ncl = nltk.NaiveBayesClassifier.train(train_set)",
"prompt_number": 8,
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Test the classifier on some examples **"
},
{
"metadata": {},
"cell_type": "code",
"input": "print cl.classify(gender_features('Carl'))\nprint cl.classify(gender_features('Carla'))\nprint cl.classify(gender_features('Carly'))\nprint cl.classify(gender_features('Carlo'))\nprint cl.classify(gender_features('Carlos'))\n",
"prompt_number": 9,
"outputs": [
{
"output_type": "stream",
"text": "female\nfemale\nfemale\nmale\nmale\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "code",
"input": "print cl.classify(gender_features('Carli'))\nprint cl.classify(gender_features('Carle'))\nprint cl.classify(gender_features('Charles'))\nprint cl.classify(gender_features('Carlie'))\nprint cl.classify(gender_features('Charlie'))",
"prompt_number": 10,
"outputs": [
{
"output_type": "stream",
"text": "female\nfemale\nmale\nfemale\nfemale\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Run the NLTK evaluation function on the test set **"
},
{
"metadata": {},
"cell_type": "code",
"input": "print \"%.3f\" % nltk.classify.accuracy(cl, test_set)",
"prompt_number": 11,
"outputs": [
{
"output_type": "stream",
"text": "0.758\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Run the NLTK feature inspection function on the classifier **"
},
{
"metadata": {},
"cell_type": "code",
"input": "cl.show_most_informative_features(15)",
"prompt_number": 12,
"outputs": [
{
"output_type": "stream",
"text": "Most Informative Features\n last_letter = 'a' female : male = 37.3 : 1.0\n last_letter = 'k' male : female = 37.1 : 1.0\n last_letter = 'm' male : female = 14.5 : 1.0\n last_letter = 'p' male : female = 13.4 : 1.0\n last_letter = 'f' male : female = 13.4 : 1.0\n last_letter = 'v' male : female = 11.3 : 1.0\n last_letter = 'o' male : female = 10.2 : 1.0\n last_letter = 'z' male : female = 9.1 : 1.0\n last_letter = 'd' male : female = 8.1 : 1.0\n last_letter = 'g' male : female = 7.7 : 1.0\n last_letter = 'r' male : female = 5.9 : 1.0\n last_letter = 'i' female : male = 4.6 : 1.0\n last_letter = 't' male : female = 4.0 : 1.0\n last_letter = 'b' male : female = 4.0 : 1.0\n last_letter = 's' male : female = 3.9 : 1.0\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Let's add some more features to improve results **"
},
{
"metadata": {},
"cell_type": "code",
"input": "def gender_features2(word):\n features = {}\n word = word.lower()\n features['last'] = word[-1]\n features['first'] = word[:1]\n features['second'] = word[1:2] # get the 'h' in Charlie?\n return features\ngender_features2('Samantha') ",
"prompt_number": 13,
"outputs": [
{
"text": "{'first': 's', 'last': 'a', 'second': 'a'}",
"output_type": "pyout",
"metadata": {},
"prompt_number": 13
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** We wrote the code so that we can easily pass in the new feature function. **"
},
{
"metadata": {},
"cell_type": "code",
"input": "train_set2, test_set2 = create_training_sets(gender_features2, names_data)\ncl2 = nltk.NaiveBayesClassifier.train(train_set2)\nprint \"%.3f\" % nltk.classify.accuracy(cl2, test_set2)",
"prompt_number": 14,
"outputs": [
{
"output_type": "stream",
"text": "0.776\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Let's hand check some of the harder cases ... oops some are right but some are now wrong. **"
},
{
"metadata": {},
"cell_type": "code",
"input": "print cl2.classify(gender_features2('Carli'))\nprint cl2.classify(gender_features2('Carle'))\nprint cl2.classify(gender_features2('Charles')) \nprint cl2.classify(gender_features2('Carlie'))\nprint cl2.classify(gender_features2('Charlie'))",
"prompt_number": 15,
"outputs": [
{
"output_type": "stream",
"text": "female\nfemale\nmale\nfemale\nfemale\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** We can see the influence of some of the new features **"
},
{
"metadata": {},
"cell_type": "code",
"input": "cl2.show_most_informative_features(15)",
"prompt_number": 16,
"outputs": [
{
"output_type": "stream",
"text": "Most Informative Features\n last = 'a' female : male = 37.3 : 1.0\n last = 'k' male : female = 37.1 : 1.0\n last = 'm' male : female = 14.5 : 1.0\n last = 'p' male : female = 13.4 : 1.0\n last = 'f' male : female = 13.4 : 1.0\n second = 'k' male : female = 12.4 : 1.0\n last = 'v' male : female = 11.3 : 1.0\n last = 'o' male : female = 10.2 : 1.0\n last = 'z' male : female = 9.1 : 1.0\n last = 'd' male : female = 8.1 : 1.0\n last = 'g' male : female = 7.7 : 1.0\n last = 'r' male : female = 5.9 : 1.0\n first = 'w' male : female = 4.7 : 1.0\n last = 'i' female : male = 4.6 : 1.0\n last = 't' male : female = 4.0 : 1.0\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** We really need a development set to test our features on before testing on the real test set. So let's redo our division of the data. In this case we do the dividing up before applying the feature selection so we can keep track of the names. **"
},
{
"metadata": {},
"cell_type": "code",
"input": "def create_training_sets3 (feature_function, items):\n # Create the features sets. Call the function that was passed in.\n # For names, key is the name, and value is the gender\n featuresets = [(feature_function(key), value) for (key, value) in items]\n \n # Divide data into thirds\n third = int(float(len(featuresets)) / 3.0)\n return items[0:third], items[third:third*2], items[third*2:], featuresets[0:third], featuresets[third:third*2], featuresets[third*2:]\n \ntrain_items, dev_items, test_items, train_features, dev_features, test_features = create_training_sets3(gender_features2, names_data)\n",
"prompt_number": 17,
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "code",
"input": "cl3 = nltk.NaiveBayesClassifier.train(train_features)\n# This is code from the NLTK chapter\nerrors = []\nfor (name, tag) in dev_items:\n guess = cl3.classify(gender_features2(name))\n if guess != tag:\n errors.append( (tag, guess, name) )",
"prompt_number": 18,
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Print out the correct vs. the guessed answer for the errors, in order to inspect those that were wrong. **"
},
{
"metadata": {},
"cell_type": "code",
"input": "for (tag, guess, name) in sorted(errors): \n print 'correct=%-8s guess=%-8s name=%-30s' % (tag, guess, name)",
"prompt_number": 19,
"outputs": [
{
"output_type": "stream",
"text": "correct=female guess=male name=Abigail \ncorrect=female guess=male name=Addis \ncorrect=female guess=male name=Adelind \ncorrect=female guess=male name=Adriaens \ncorrect=female guess=male name=Allis \ncorrect=female guess=male name=Amber \ncorrect=female guess=male name=Ambur \ncorrect=female guess=male name=April \ncorrect=female guess=male name=Ardis \ncorrect=female guess=male name=Ardys \ncorrect=female guess=male name=Ashlen \ncorrect=female guess=male name=Astrix \ncorrect=female guess=male name=Aurel \ncorrect=female guess=male name=Austin \ncorrect=female guess=male name=Beatriz \ncorrect=female guess=male name=Beau \ncorrect=female guess=male name=Beret \ncorrect=female guess=male name=Berget \ncorrect=female guess=male name=Bridget \ncorrect=female guess=male name=Brier \ncorrect=female guess=male name=Brit \ncorrect=female guess=male name=Buffy \ncorrect=female guess=male name=Bunny \ncorrect=female guess=male name=Calypso \ncorrect=female guess=male name=Cam \ncorrect=female guess=male name=Cameo \ncorrect=female guess=male name=Cass \ncorrect=female guess=male name=Cat \ncorrect=female guess=male name=Chantal \ncorrect=female guess=male name=Charil \ncorrect=female guess=male name=Charis \ncorrect=female guess=male name=Charlott \ncorrect=female guess=male name=Charmain \ncorrect=female guess=male name=Charo \ncorrect=female guess=male name=Cher \ncorrect=female guess=male name=Chris \ncorrect=female guess=male name=Christan \ncorrect=female guess=male name=Christean \ncorrect=female guess=male name=Christel \ncorrect=female guess=male name=Chrysler \ncorrect=female guess=male name=Chrystal \ncorrect=female guess=male name=Chrystel \ncorrect=female guess=male name=Clovis \ncorrect=female guess=male name=Daloris \ncorrect=female guess=male name=Damaris \ncorrect=female guess=male name=Danell \ncorrect=female guess=male name=Danit \ncorrect=female guess=male name=Dareen \ncorrect=female guess=male name=Darryl \ncorrect=female guess=male name=Debor \ncorrect=female guess=male name=Deeann \ncorrect=female guess=male name=Del \ncorrect=female guess=male name=Denys \ncorrect=female guess=male name=Devan \ncorrect=female guess=male name=Dian \ncorrect=female guess=male name=Dolores \ncorrect=female guess=male name=Doloritas \ncorrect=female guess=male name=Drew \ncorrect=female guess=male name=Eilis \ncorrect=female guess=male name=Ester \ncorrect=female guess=male name=Ethel \ncorrect=female guess=male name=Ethelin \ncorrect=female guess=male name=Ethelind \ncorrect=female guess=male name=Farrand \ncorrect=female guess=male name=Fleur \ncorrect=female guess=male name=Floris \ncorrect=female guess=male name=Frances \ncorrect=female guess=male name=Frank \ncorrect=female guess=male name=Fred \ncorrect=female guess=male name=Gael \ncorrect=female guess=male name=Gail \ncorrect=female guess=male name=Gale \ncorrect=female guess=male name=Garnet \ncorrect=female guess=male name=Gaynor \ncorrect=female guess=male name=Gennifer \ncorrect=female guess=male name=Gilligan \ncorrect=female guess=male name=Ginger \ncorrect=female guess=male name=Glad \ncorrect=female guess=male name=Glen \ncorrect=female guess=male name=Glennis \ncorrect=female guess=male name=Grethel \ncorrect=female guess=male name=Gwen \ncorrect=female guess=male name=Gwendolen \ncorrect=female guess=male name=Gwendolin \ncorrect=female guess=male name=Gwendolyn \ncorrect=female guess=male name=Gweneth \ncorrect=female guess=male name=Gwenn \ncorrect=female guess=male name=Gwenneth \ncorrect=female guess=male name=Gwyneth \ncorrect=female guess=male name=Haily \ncorrect=female guess=male name=Halley \ncorrect=female guess=male name=Hannibal \ncorrect=female guess=male name=Hanny \ncorrect=female guess=male name=Happy \ncorrect=female guess=male name=Harley \ncorrect=female guess=male name=Harriet \ncorrect=female guess=male name=Harriett \ncorrect=female guess=male name=Hayley \ncorrect=female guess=male name=Hedy \ncorrect=female guess=male name=Hester \ncorrect=female guess=male name=Hesther \ncorrect=female guess=male name=Hetty \ncorrect=female guess=male name=Hildagard \ncorrect=female guess=male name=Hillary \ncorrect=female guess=male name=Holley \ncorrect=female guess=male name=Honey \ncorrect=female guess=male name=Inez \ncorrect=female guess=male name=Isador \ncorrect=female guess=male name=Jacklin \ncorrect=female guess=male name=Jacquelin \ncorrect=female guess=male name=Jan \ncorrect=female guess=male name=Janeen \ncorrect=female guess=male name=Janel \ncorrect=female guess=male name=Jannel \ncorrect=female guess=male name=Janot \ncorrect=female guess=male name=Jasmin \ncorrect=female guess=male name=Jaynell \ncorrect=female guess=male name=Jenifer \ncorrect=female guess=male name=Jess \ncorrect=female guess=male name=Jessamyn \ncorrect=female guess=male name=Jewel \ncorrect=female guess=male name=Jo-Ann \ncorrect=female guess=male name=JoAnn \ncorrect=female guess=male name=Joan \ncorrect=female guess=male name=Joann \ncorrect=female guess=male name=Jocelin \ncorrect=female guess=male name=Jocelyn \ncorrect=female guess=male name=Joellen \ncorrect=female guess=male name=Joelynn \ncorrect=female guess=male name=Jolynn \ncorrect=female guess=male name=Jonell \ncorrect=female guess=male name=Joscelin \ncorrect=female guess=male name=Joslyn \ncorrect=female guess=male name=Jourdan \ncorrect=female guess=male name=Joyan \ncorrect=female guess=male name=Joyann \ncorrect=female guess=male name=Joycelin \ncorrect=female guess=male name=Juliann \ncorrect=female guess=male name=Kaster \ncorrect=female guess=male name=Kim \ncorrect=female guess=male name=Kip \ncorrect=female guess=male name=Kris \ncorrect=female guess=male name=Leann \ncorrect=female guess=male name=Leanor \ncorrect=female guess=male name=Leeann \ncorrect=female guess=male name=Lilas \ncorrect=female guess=male name=Lillis \ncorrect=female guess=male name=Lind \ncorrect=female guess=male name=Liz \ncorrect=female guess=male name=Lust \ncorrect=female guess=male name=Mab \ncorrect=female guess=male name=Mair \ncorrect=female guess=male name=Margaret \ncorrect=female guess=male name=Margaux \ncorrect=female guess=male name=Margret \ncorrect=female guess=male name=Mariam \ncorrect=female guess=male name=Marijo \ncorrect=female guess=male name=Marit \ncorrect=female guess=male name=Marlo \ncorrect=female guess=male name=Marris \ncorrect=female guess=male name=Maryjo \ncorrect=female guess=male name=Marylou \ncorrect=female guess=male name=Marys \ncorrect=female guess=male name=Max \ncorrect=female guess=male name=Meaghan \ncorrect=female guess=male name=Meg \ncorrect=female guess=male name=Megen \ncorrect=female guess=male name=Mehetabel \ncorrect=female guess=male name=Melicent \ncorrect=female guess=male name=Mellicent \ncorrect=female guess=male name=Mercedes \ncorrect=female guess=male name=Merilyn \ncorrect=female guess=male name=Mildred \ncorrect=female guess=male name=Miriam \ncorrect=female guess=male name=Murial \ncorrect=female guess=male name=Nadeen \ncorrect=female guess=male name=Nert \ncorrect=female guess=male name=Nicol \ncorrect=female guess=male name=Ninon \ncorrect=female guess=male name=Noel \ncorrect=female guess=male name=Noelyn \ncorrect=female guess=male name=Norean \ncorrect=female guess=male name=Olwen \ncorrect=female guess=male name=Orel \ncorrect=female guess=male name=Ottilie \ncorrect=female guess=male name=Pen \ncorrect=female guess=male name=Phil \ncorrect=female guess=male name=Philis \ncorrect=female guess=male name=Phyllis \ncorrect=female guess=male name=Pier \ncorrect=female guess=male name=Pris \ncorrect=female guess=male name=Queenie \ncorrect=female guess=male name=Quentin \ncorrect=female guess=male name=Rachael \ncorrect=female guess=male name=Raychel \ncorrect=female guess=male name=Raynell \ncorrect=female guess=male name=Renell \ncorrect=female guess=male name=Rhianon \ncorrect=female guess=male name=Robbin \ncorrect=female guess=male name=Robinett \ncorrect=female guess=male name=Rochell \ncorrect=female guess=male name=Rosabel \ncorrect=female guess=male name=Rosalynd \ncorrect=female guess=male name=Rosamond \ncorrect=female guess=male name=Rosamund \ncorrect=female guess=male name=Roslyn \ncorrect=female guess=male name=Roz \ncorrect=female guess=male name=Ruth \ncorrect=female guess=male name=Ruthann \ncorrect=female guess=male name=Ruthy \ncorrect=female guess=male name=Sam \ncorrect=female guess=male name=Saraann \ncorrect=female guess=male name=Scarlett \ncorrect=female guess=male name=Scotty \ncorrect=female guess=male name=Shamit \ncorrect=female guess=male name=Shannen \ncorrect=female guess=male name=Shannon \ncorrect=female guess=male name=Sharity \ncorrect=female guess=male name=Sharleen \ncorrect=female guess=male name=Shaylyn \ncorrect=female guess=male name=Sheilakathryn \ncorrect=female guess=male name=Shelagh \ncorrect=female guess=male name=Shelby \ncorrect=female guess=male name=Shelly \ncorrect=female guess=male name=Sher \ncorrect=female guess=male name=Sheril \ncorrect=female guess=male name=Sheryl \ncorrect=female guess=male name=Shir \ncorrect=female guess=male name=Shirah \ncorrect=female guess=male name=Shirl \ncorrect=female guess=male name=Shirley \ncorrect=female guess=male name=Sibeal \ncorrect=female guess=male name=Sileas \ncorrect=female guess=male name=Sioux \ncorrect=female guess=male name=Starlin \ncorrect=female guess=male name=Suellen \ncorrect=female guess=male name=Sunny \ncorrect=female guess=male name=Susann \ncorrect=female guess=male name=Susannah \ncorrect=female guess=male name=Susy \ncorrect=female guess=male name=Tamiko \ncorrect=female guess=male name=Taryn \ncorrect=female guess=male name=Ted \ncorrect=female guess=male name=Teriann \ncorrect=female guess=male name=Terri-Jo \ncorrect=female guess=male name=Teryl \ncorrect=female guess=male name=Tess \ncorrect=female guess=male name=Theo \ncorrect=female guess=male name=Van \ncorrect=female guess=male name=Velvet \ncorrect=female guess=male name=Venus \ncorrect=female guess=male name=Viv \ncorrect=female guess=male name=Vivian \ncorrect=female guess=male name=Vivien \ncorrect=female guess=male name=Vivyan \ncorrect=female guess=male name=Wallis \ncorrect=female guess=male name=Whitney \ncorrect=female guess=male name=Wilie \ncorrect=female guess=male name=Willow \ncorrect=female guess=male name=Windy \ncorrect=female guess=male name=Winifred \ncorrect=female guess=male name=Winne \ncorrect=female guess=male name=Winnie \ncorrect=female guess=male name=Winny \ncorrect=female guess=male name=Winonah \ncorrect=female guess=male name=Wrennie \ncorrect=female guess=male name=Wynn \ncorrect=male guess=female name=Abby \ncorrect=male guess=female name=Aditya \ncorrect=male guess=female name=Adolph \ncorrect=male guess=female name=Agamemnon \ncorrect=male guess=female name=Alain \ncorrect=male guess=female name=Alex \ncorrect=male guess=female name=Alfonse \ncorrect=male guess=female name=Ali \ncorrect=male guess=female name=Alley \ncorrect=male guess=female name=Allin \ncorrect=male guess=female name=Allyn \ncorrect=male guess=female name=Alvin \ncorrect=male guess=female name=Amadeus \ncorrect=male guess=female name=Ambrose \ncorrect=male guess=female name=Amory \ncorrect=male guess=female name=Amos \ncorrect=male guess=female name=Anatoly \ncorrect=male guess=female name=Andie \ncorrect=male guess=female name=Andre \ncorrect=male guess=female name=Andrey \ncorrect=male guess=female name=Andri \ncorrect=male guess=female name=Andy \ncorrect=male guess=female name=Anton \ncorrect=male guess=female name=Antone \ncorrect=male guess=female name=Antonius \ncorrect=male guess=female name=Antony \ncorrect=male guess=female name=Anurag \ncorrect=male guess=female name=Archie \ncorrect=male guess=female name=Ariel \ncorrect=male guess=female name=Arne \ncorrect=male guess=female name=Arvin \ncorrect=male guess=female name=Averill \ncorrect=male guess=female name=Avi \ncorrect=male guess=female name=Barnabe \ncorrect=male guess=female name=Barnaby \ncorrect=male guess=female name=Barri \ncorrect=male guess=female name=Barry \ncorrect=male guess=female name=Bartie \ncorrect=male guess=female name=Bary \ncorrect=male guess=female name=Bay \ncorrect=male guess=female name=Bealle \ncorrect=male guess=female name=Benjy \ncorrect=male guess=female name=Billy \ncorrect=male guess=female name=Blare \ncorrect=male guess=female name=Blayne \ncorrect=male guess=female name=Boyce \ncorrect=male guess=female name=Brody \ncorrect=male guess=female name=Cal \ncorrect=male guess=female name=Carey \ncorrect=male guess=female name=Carl \ncorrect=male guess=female name=Carleigh \ncorrect=male guess=female name=Carlin \ncorrect=male guess=female name=Carroll \ncorrect=male guess=female name=Chance \ncorrect=male guess=female name=Chauncey \ncorrect=male guess=female name=Chevy \ncorrect=male guess=female name=Christoph \ncorrect=male guess=female name=Clarke \ncorrect=male guess=female name=Clay \ncorrect=male guess=female name=Clayborn \ncorrect=male guess=female name=Clement \ncorrect=male guess=female name=Clemente \ncorrect=male guess=female name=Clemmie \ncorrect=male guess=female name=Clinten \ncorrect=male guess=female name=Cody \ncorrect=male guess=female name=Cole \ncorrect=male guess=female name=Coleman \ncorrect=male guess=female name=Collin \ncorrect=male guess=female name=Connolly \ncorrect=male guess=female name=Constantin \ncorrect=male guess=female name=Constantine \ncorrect=male guess=female name=Corey \ncorrect=male guess=female name=Costa \ncorrect=male guess=female name=Creighton \ncorrect=male guess=female name=Curtice \ncorrect=male guess=female name=Daffy \ncorrect=male guess=female name=Dale \ncorrect=male guess=female name=Dannie \ncorrect=male guess=female name=Davie \ncorrect=male guess=female name=Davy \ncorrect=male guess=female name=Deane \ncorrect=male guess=female name=Demetri \ncorrect=male guess=female name=Dennie \ncorrect=male guess=female name=Derby \ncorrect=male guess=female name=Dimitri \ncorrect=male guess=female name=Donal \ncorrect=male guess=female name=Donovan \ncorrect=male guess=female name=Dory \ncorrect=male guess=female name=Doyle \ncorrect=male guess=female name=Duffy \ncorrect=male guess=female name=Dwaine \ncorrect=male guess=female name=Earl \ncorrect=male guess=female name=Easton \ncorrect=male guess=female name=Elden \ncorrect=male guess=female name=Elijah \ncorrect=male guess=female name=Ellsworth \ncorrect=male guess=female name=Elmore \ncorrect=male guess=female name=Elroy \ncorrect=male guess=female name=Elvin \ncorrect=male guess=female name=Elwin \ncorrect=male guess=female name=Ely \ncorrect=male guess=female name=Emilio \ncorrect=male guess=female name=Emmanuel \ncorrect=male guess=female name=Emmery \ncorrect=male guess=female name=Emmet \ncorrect=male guess=female name=Emmit \ncorrect=male guess=female name=Engelbert \ncorrect=male guess=female name=Enrique \ncorrect=male guess=female name=Ernie \ncorrect=male guess=female name=Erny \ncorrect=male guess=female name=Erwin \ncorrect=male guess=female name=Etienne \ncorrect=male guess=female name=Eugene \ncorrect=male guess=female name=Eustace \ncorrect=male guess=female name=Fabian \ncorrect=male guess=female name=Ferguson \ncorrect=male guess=female name=Fran \ncorrect=male guess=female name=Franky \ncorrect=male guess=female name=Freddie \ncorrect=male guess=female name=Freddy \ncorrect=male guess=female name=Frederich \ncorrect=male guess=female name=Freeman \ncorrect=male guess=female name=Freemon \ncorrect=male guess=female name=French \ncorrect=male guess=female name=Friedrich \ncorrect=male guess=female name=Gary \ncorrect=male guess=female name=Gay \ncorrect=male guess=female name=Gayle \ncorrect=male guess=female name=Geoffry \ncorrect=male guess=female name=Georgie \ncorrect=male guess=female name=Germaine \ncorrect=male guess=female name=Gerome \ncorrect=male guess=female name=Gerri \ncorrect=male guess=female name=Giavani \ncorrect=male guess=female name=Giorgi \ncorrect=male guess=female name=Giovanne \ncorrect=male guess=female name=Godfree \ncorrect=male guess=female name=Godfry \ncorrect=male guess=female name=Gordie \ncorrect=male guess=female name=Grace \ncorrect=male guess=female name=Graehme \ncorrect=male guess=female name=Graeme \ncorrect=male guess=female name=Granville \ncorrect=male guess=female name=Griffith \ncorrect=male guess=female name=Gustave \ncorrect=male guess=female name=Hale \ncorrect=male guess=female name=Hari \ncorrect=male guess=female name=Henri \ncorrect=male guess=female name=Henrie \ncorrect=male guess=female name=Herbie \ncorrect=male guess=female name=Herculie \ncorrect=male guess=female name=Herve \ncorrect=male guess=female name=Hewie \ncorrect=male guess=female name=Hymie \ncorrect=male guess=female name=Iggie \ncorrect=male guess=female name=Ignace \ncorrect=male guess=female name=Ignazio \ncorrect=male guess=female name=Ikey \ncorrect=male guess=female name=Inigo \ncorrect=male guess=female name=Isa \ncorrect=male guess=female name=Isaiah \ncorrect=male guess=female name=Izzy \ncorrect=male guess=female name=Jae \ncorrect=male guess=female name=Jaime \ncorrect=male guess=female name=Jean-Christophe \ncorrect=male guess=female name=Jefferey \ncorrect=male guess=female name=Jephthah \ncorrect=male guess=female name=Jeremiah \ncorrect=male guess=female name=Jeremy \ncorrect=male guess=female name=Jerome \ncorrect=male guess=female name=Jeromy \ncorrect=male guess=female name=Jerrome \ncorrect=male guess=female name=Jerzy \ncorrect=male guess=female name=Jimmie \ncorrect=male guess=female name=Jodi \ncorrect=male guess=female name=Jodie \ncorrect=male guess=female name=Joe \ncorrect=male guess=female name=Joey \ncorrect=male guess=female name=Johnnie \ncorrect=male guess=female name=Jonny \ncorrect=male guess=female name=Jordy \ncorrect=male guess=female name=Joseph \ncorrect=male guess=female name=Josh \ncorrect=male guess=female name=Josiah \ncorrect=male guess=female name=Judah \ncorrect=male guess=female name=Judy \ncorrect=male guess=female name=Julie \ncorrect=male guess=female name=Kaleb \ncorrect=male guess=female name=Kalle \ncorrect=male guess=female name=Kalman \ncorrect=male guess=female name=Karsten \ncorrect=male guess=female name=Kelley \ncorrect=male guess=female name=Kelly \ncorrect=male guess=female name=Kelsey \ncorrect=male guess=female name=Kenton \ncorrect=male guess=female name=Kevin \ncorrect=male guess=female name=Konstantin \ncorrect=male guess=female name=Kory \ncorrect=male guess=female name=Langston \ncorrect=male guess=female name=Lanny \ncorrect=male guess=female name=Laurence \ncorrect=male guess=female name=Laurie \ncorrect=male guess=female name=Leigh \ncorrect=male guess=female name=Lemmy \ncorrect=male guess=female name=Lennie \ncorrect=male guess=female name=Lesley \ncorrect=male guess=female name=Leslie \ncorrect=male guess=female name=Levi \ncorrect=male guess=female name=Lin \ncorrect=male guess=female name=Lonnie \ncorrect=male guess=female name=Louie \ncorrect=male guess=female name=Luigi \ncorrect=male guess=female name=Lyn \ncorrect=male guess=female name=Lynn \ncorrect=male guess=female name=Mace \ncorrect=male guess=female name=Mahesh \ncorrect=male guess=female name=Manish \ncorrect=male guess=female name=Manny \ncorrect=male guess=female name=Manuel \ncorrect=male guess=female name=Marlin \ncorrect=male guess=female name=Marlowe \ncorrect=male guess=female name=Marmaduke \ncorrect=male guess=female name=Marsh \ncorrect=male guess=female name=Martyn \ncorrect=male guess=female name=Marve \ncorrect=male guess=female name=Marven \ncorrect=male guess=female name=Matty \ncorrect=male guess=female name=Maurice \ncorrect=male guess=female name=Maurie \ncorrect=male guess=female name=Meade \ncorrect=male guess=female name=Mendie \ncorrect=male guess=female name=Merry \ncorrect=male guess=female name=Michail \ncorrect=male guess=female name=Michal \ncorrect=male guess=female name=Michale \ncorrect=male guess=female name=Micky \ncorrect=male guess=female name=Miguel \ncorrect=male guess=female name=Mika \ncorrect=male guess=female name=Mikael \ncorrect=male guess=female name=Mikel \ncorrect=male guess=female name=Mikhail \ncorrect=male guess=female name=Milton \ncorrect=male guess=female name=Mitchel \ncorrect=male guess=female name=Moe \ncorrect=male guess=female name=Moishe \ncorrect=male guess=female name=Monty \ncorrect=male guess=female name=Mordecai \ncorrect=male guess=female name=Morgan \ncorrect=male guess=female name=Morlee \ncorrect=male guess=female name=Morly \ncorrect=male guess=female name=Morrie \ncorrect=male guess=female name=Morse \ncorrect=male guess=female name=Mose \ncorrect=male guess=female name=Munroe \ncorrect=male guess=female name=Murray \ncorrect=male guess=female name=Myles \ncorrect=male guess=female name=Myron \ncorrect=male guess=female name=Nealy \ncorrect=male guess=female name=Neddy \ncorrect=male guess=female name=Nickey \ncorrect=male guess=female name=Niki \ncorrect=male guess=female name=Noble \ncorrect=male guess=female name=Noe \ncorrect=male guess=female name=Obie \ncorrect=male guess=female name=Odie \ncorrect=male guess=female name=Orbadiah \ncorrect=male guess=female name=Orville \ncorrect=male guess=female name=Osbourne \ncorrect=male guess=female name=Ozzy \ncorrect=male guess=female name=Page \ncorrect=male guess=female name=Partha \ncorrect=male guess=female name=Pasquale \ncorrect=male guess=female name=Patrice \ncorrect=male guess=female name=Pattie \ncorrect=male guess=female name=Pennie \ncorrect=male guess=female name=Percy \ncorrect=male guess=female name=Pierce \ncorrect=male guess=female name=Pooh \ncorrect=male guess=female name=Price \ncorrect=male guess=female name=Rabi \ncorrect=male guess=female name=Raleigh \ncorrect=male guess=female name=Ralph \ncorrect=male guess=female name=Ramsey \ncorrect=male guess=female name=Randi \ncorrect=male guess=female name=Randie \ncorrect=male guess=female name=Randy \ncorrect=male guess=female name=Ravi \ncorrect=male guess=female name=Rawley \ncorrect=male guess=female name=Ray \ncorrect=male guess=female name=Reube \ncorrect=male guess=female name=Rey \ncorrect=male guess=female name=Rice \ncorrect=male guess=female name=Rich \ncorrect=male guess=female name=Rickie \ncorrect=male guess=female name=Rikki \ncorrect=male guess=female name=Riley \ncorrect=male guess=female name=Ritch \ncorrect=male guess=female name=Robbie \ncorrect=male guess=female name=Rocky \ncorrect=male guess=female name=Rodney \ncorrect=male guess=female name=Rodrique \ncorrect=male guess=female name=Roice \ncorrect=male guess=female name=Rolph \ncorrect=male guess=female name=Roni \ncorrect=male guess=female name=Ronny \ncorrect=male guess=female name=Rory \ncorrect=male guess=female name=Rudie \ncorrect=male guess=female name=Rufe \ncorrect=male guess=female name=Ryan \ncorrect=male guess=female name=Salvatore \ncorrect=male guess=female name=Sammie \ncorrect=male guess=female name=Sandy \ncorrect=male guess=female name=Sasha \ncorrect=male guess=female name=Sayre \ncorrect=male guess=female name=Sergei \ncorrect=male guess=female name=Siffre \ncorrect=male guess=female name=Sloane \ncorrect=male guess=female name=Sly \ncorrect=male guess=female name=Sterne \ncorrect=male guess=female name=Tabby \ncorrect=male guess=female name=Tally \ncorrect=male guess=female name=Tammie \ncorrect=male guess=female name=Tanney \ncorrect=male guess=female name=Tanny \ncorrect=male guess=female name=Tarrance \ncorrect=male guess=female name=Teddy \ncorrect=male guess=female name=Tedie \ncorrect=male guess=female name=Terence \ncorrect=male guess=female name=Terrance \ncorrect=male guess=female name=Timothee \ncorrect=male guess=female name=Timothy \ncorrect=male guess=female name=Tobiah \ncorrect=male guess=female name=Toby \ncorrect=male guess=female name=Toddie \ncorrect=male guess=female name=Toddy \ncorrect=male guess=female name=Tome \ncorrect=male guess=female name=Tommy \ncorrect=male guess=female name=Tonnie \ncorrect=male guess=female name=Tony \ncorrect=male guess=female name=Tore \ncorrect=male guess=female name=Torey \ncorrect=male guess=female name=Torrey \ncorrect=male guess=female name=Towney \ncorrect=male guess=female name=Towny \ncorrect=male guess=female name=Troy \ncorrect=male guess=female name=Tuckie \ncorrect=male guess=female name=Tymon \ncorrect=male guess=female name=Tymothy \ncorrect=male guess=female name=Tyrone \ncorrect=male guess=female name=Vassily \ncorrect=male guess=female name=Vince \ncorrect=male guess=female name=Vinnie \ncorrect=male guess=female name=Willi \ncorrect=male guess=female name=Wylie \ncorrect=male guess=female name=Yale \ncorrect=male guess=female name=Yehudi \ncorrect=male guess=female name=Zach \ncorrect=male guess=female name=Zacharie \ncorrect=male guess=female name=Zacherie \ncorrect=male guess=female name=Zippy \n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "** Exercise** Rewrite the functions above to add some additional features, and then rerun the classifier to evaluate if they improve or degrade results. But don't overfit!\n\nIdeas for features:\n* name length\n* pairs of characters\n* number of syllables\n\nI also tried share of letters that are vowels and presence of a double letter (both of which seemed like they may be more feminine), but only the number of syllables (set to the mode of 2 if the name is unknown) seemed to improve over the simple model using length, first two, and last two characters."
},
{
"metadata": {},
"cell_type": "code",
"input": "from nltk.corpus import cmudict \nd = cmudict.dict()\n\ndef gender_features3(word):\n features = {}\n word = word.lower()\n features['length'] = len(word)\n features['firsttwo'] = word[:2]\n features['lasttwo'] = word[-2:]\n # features['numvowel'] = float(sum([1 for w in word if w in 'aeiou'])) / len(word)\n # features['doubleletter'] = max([word[i] == word[i+1] for i in range(len(word)-1)])\n features['syllables'] = sum([1 for s in d[word][0] if s[-1] in '1234567890']) if word in d else 2\n return features\n\ngender_features3('Samantha')",
"prompt_number": 34,
"outputs": [
{
"text": "{'firsttwo': 'sa', 'lasttwo': 'ha', 'length': 8, 'syllables': 3}",
"output_type": "pyout",
"metadata": {},
"prompt_number": 34
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "code",
"input": "train_items3, dev_items3, test_items3, train_features3, dev_features3, test_features3 = create_training_sets3(gender_features3, names_data)\ncl3 = nltk.NaiveBayesClassifier.train(train_features3)\n# This is code from the NLTK chapter\nerrors = []\nfor (name, tag) in dev_items3:\n guess = cl3.classify(gender_features3(name))\n if guess != tag:\n errors.append( (tag, guess, name) )\n\nfor (tag, guess, name) in sorted(errors): \n print 'correct=%-8s guess=%-8s name=%-30s' % (tag, guess, name)",
"prompt_number": 35,
"outputs": [
{
"output_type": "stream",
"text": "correct=female guess=male name=Adelind \ncorrect=female guess=male name=Adriaens \ncorrect=female guess=male name=Aeriell \ncorrect=female guess=male name=Ag \ncorrect=female guess=male name=Allison \ncorrect=female guess=male name=Allyson \ncorrect=female guess=male name=Alyson \ncorrect=female guess=male name=Amber \ncorrect=female guess=male name=Angy \ncorrect=female guess=male name=Annabell \ncorrect=female guess=male name=April \ncorrect=female guess=male name=Austin \ncorrect=female guess=male name=Averil \ncorrect=female guess=male name=Bambie \ncorrect=female guess=male name=Bamby \ncorrect=female guess=male name=Beau \ncorrect=female guess=male name=Bebe \ncorrect=female guess=male name=Brier \ncorrect=female guess=male name=Brit \ncorrect=female guess=male name=Buffy \ncorrect=female guess=male name=Bunny \ncorrect=female guess=male name=Cam \ncorrect=female guess=male name=Cat \ncorrect=female guess=male name=Charlott \ncorrect=female guess=male name=Charmain \ncorrect=female guess=male name=Charo \ncorrect=female guess=male name=Cher \ncorrect=female guess=male name=Chris \ncorrect=female guess=male name=Christan \ncorrect=female guess=male name=Christean \ncorrect=female guess=male name=Christel \ncorrect=female guess=male name=Chrysler \ncorrect=female guess=male name=Chrystel \ncorrect=female guess=male name=Cloe \ncorrect=female guess=male name=Con \ncorrect=female guess=male name=Dacy \ncorrect=female guess=male name=Danell \ncorrect=female guess=male name=Debor \ncorrect=female guess=male name=Del \ncorrect=female guess=male name=Dian \ncorrect=female guess=male name=Drew \ncorrect=female guess=male name=Dulcy \ncorrect=female guess=male name=Ebba \ncorrect=female guess=male name=Em \ncorrect=female guess=male name=Esme \ncorrect=female guess=male name=Ester \ncorrect=female guess=male name=Ethel \ncorrect=female guess=male name=Ethelin \ncorrect=female guess=male name=Ethelind \ncorrect=female guess=male name=Eve \ncorrect=female guess=male name=Fallon \ncorrect=female guess=male name=Fan \ncorrect=female guess=male name=Fleur \ncorrect=female guess=male name=France \ncorrect=female guess=male name=Frances \ncorrect=female guess=male name=Frank \ncorrect=female guess=male name=Fred \ncorrect=female guess=male name=Gabbey \ncorrect=female guess=male name=Gabbie \ncorrect=female guess=male name=Gabey \ncorrect=female guess=male name=Gabie \ncorrect=female guess=male name=Gael \ncorrect=female guess=male name=Gail \ncorrect=female guess=male name=Gale \ncorrect=female guess=male name=Garnet \ncorrect=female guess=male name=Gayle \ncorrect=female guess=male name=Gaynor \ncorrect=female guess=male name=Gennifer \ncorrect=female guess=male name=Ginger \ncorrect=female guess=male name=Glad \ncorrect=female guess=male name=Glen \ncorrect=female guess=male name=Grethel \ncorrect=female guess=male name=Gwen \ncorrect=female guess=male name=Halley \ncorrect=female guess=male name=Harley \ncorrect=female guess=male name=Harriett \ncorrect=female guess=male name=Hayley \ncorrect=female guess=male name=Hester \ncorrect=female guess=male name=Hesther \ncorrect=female guess=male name=Hilarie \ncorrect=female guess=male name=Hildagard \ncorrect=female guess=male name=Hilde \ncorrect=female guess=male name=Hillary \ncorrect=female guess=male name=Holley \ncorrect=female guess=male name=Holli \ncorrect=female guess=male name=Hollie \ncorrect=female guess=male name=Holly-Anne \ncorrect=female guess=male name=Hollyanne \ncorrect=female guess=male name=Honey \ncorrect=female guess=male name=Hope \ncorrect=female guess=male name=Isador \ncorrect=female guess=male name=Jan \ncorrect=female guess=male name=Jaynell \ncorrect=female guess=male name=Jenifer \ncorrect=female guess=male name=Jewel \ncorrect=female guess=male name=Joan \ncorrect=female guess=male name=Jocelin \ncorrect=female guess=male name=Joice \ncorrect=female guess=male name=Jonell \ncorrect=female guess=male name=Joscelin \ncorrect=female guess=male name=Josefa \ncorrect=female guess=male name=Jourdan \ncorrect=female guess=male name=Joyan \ncorrect=female guess=male name=Joyce \ncorrect=female guess=male name=Joycelin \ncorrect=female guess=male name=Kaster \ncorrect=female guess=male name=Kerstin \ncorrect=female guess=male name=Ki \ncorrect=female guess=male name=Kim \ncorrect=female guess=male name=Kip \ncorrect=female guess=male name=Lacy \ncorrect=female guess=male name=Laural \ncorrect=female guess=male name=Leanor \ncorrect=female guess=male name=Leigh \ncorrect=female guess=male name=Lilas \ncorrect=female guess=male name=Lind \ncorrect=female guess=male name=Linell \ncorrect=female guess=male name=Liz \ncorrect=female guess=male name=Love \ncorrect=female guess=male name=Luce \ncorrect=female guess=male name=Lust \ncorrect=female guess=male name=Mab \ncorrect=female guess=male name=Madelon \ncorrect=female guess=male name=Mair \ncorrect=female guess=male name=Mame \ncorrect=female guess=male name=Manon \ncorrect=female guess=male name=Margy \ncorrect=female guess=male name=Mariam \ncorrect=female guess=male name=Marion \ncorrect=female guess=male name=Marylou \ncorrect=female guess=male name=Max \ncorrect=female guess=male name=Meg \ncorrect=female guess=male name=Melicent \ncorrect=female guess=male name=Mellicent \ncorrect=female guess=male name=Mercedes \ncorrect=female guess=male name=Mignon \ncorrect=female guess=male name=Mildred \ncorrect=female guess=male name=Miriam \ncorrect=female guess=male name=Moll \ncorrect=female guess=male name=Morgan \ncorrect=female guess=male name=Murial \ncorrect=female guess=male name=Nert \ncorrect=female guess=male name=Nicky \ncorrect=female guess=male name=Nicol \ncorrect=female guess=male name=Ninon \ncorrect=female guess=male name=Noel \ncorrect=female guess=male name=Norean \ncorrect=female guess=male name=Olive \ncorrect=female guess=male name=Oliy \ncorrect=female guess=male name=Orel \ncorrect=female guess=male name=Peggy \ncorrect=female guess=male name=Pen \ncorrect=female guess=male name=Phebe \ncorrect=female guess=male name=Phil \ncorrect=female guess=male name=Phoebe \ncorrect=female guess=male name=Pier \ncorrect=female guess=male name=Pooh \ncorrect=female guess=male name=Pris \ncorrect=female guess=male name=Quentin \ncorrect=female guess=male name=Rachael \ncorrect=female guess=male name=Rae \ncorrect=female guess=male name=Rafa \ncorrect=female guess=male name=Raychel \ncorrect=female guess=male name=Raynell \ncorrect=female guess=male name=Remy \ncorrect=female guess=male name=Renell \ncorrect=female guess=male name=Rhianon \ncorrect=female guess=male name=Robbin \ncorrect=female guess=male name=Rochell \ncorrect=female guess=male name=Rosalynd \ncorrect=female guess=male name=Rosamond \ncorrect=female guess=male name=Rosamund \ncorrect=female guess=male name=Roz \ncorrect=female guess=male name=Ruth \ncorrect=female guess=male name=Ruthann \ncorrect=female guess=male name=Ruthie \ncorrect=female guess=male name=Ruthy \ncorrect=female guess=male name=Sam \ncorrect=female guess=male name=Scarlett \ncorrect=female guess=male name=Scotty \ncorrect=female guess=male name=Shannon \ncorrect=female guess=male name=Sharai \ncorrect=female guess=male name=Shelby \ncorrect=female guess=male name=Sher \ncorrect=female guess=male name=Shir \ncorrect=female guess=male name=Shirl \ncorrect=female guess=male name=Sibeal \ncorrect=female guess=male name=Sileas \ncorrect=female guess=male name=Sioux \ncorrect=female guess=male name=Starlin \ncorrect=female guess=male name=Tabby \ncorrect=female guess=male name=Taffy \ncorrect=female guess=male name=Tammy \ncorrect=female guess=male name=Ted \ncorrect=female guess=male name=Theo \ncorrect=female guess=male name=Tracey \ncorrect=female guess=male name=Trixy \ncorrect=female guess=male name=Ulrike \ncorrect=female guess=male name=Van \ncorrect=female guess=male name=Velvet \ncorrect=female guess=male name=Venus \ncorrect=female guess=male name=Vernice \ncorrect=female guess=male name=Vi \ncorrect=female guess=male name=Vicky \ncorrect=female guess=male name=Viv \ncorrect=female guess=male name=Vivyan \ncorrect=female guess=male name=Wallis \ncorrect=female guess=male name=Whitney \ncorrect=female guess=male name=Wilie \ncorrect=female guess=male name=Willow \ncorrect=female guess=male name=Winifred \ncorrect=female guess=male name=Winne \ncorrect=female guess=male name=Winnie \ncorrect=female guess=male name=Winny \ncorrect=male guess=female name=Abdullah \ncorrect=male guess=female name=Adams \ncorrect=male guess=female name=Aditya \ncorrect=male guess=female name=Agamemnon \ncorrect=male guess=female name=Alec \ncorrect=male guess=female name=Alfonse \ncorrect=male guess=female name=Ali \ncorrect=male guess=female name=Alley \ncorrect=male guess=female name=Allyn \ncorrect=male guess=female name=Alphonso \ncorrect=male guess=female name=Ambrose \ncorrect=male guess=female name=Amory \ncorrect=male guess=female name=Anatollo \ncorrect=male guess=female name=Anatoly \ncorrect=male guess=female name=Andie \ncorrect=male guess=female name=Andre \ncorrect=male guess=female name=Andrey \ncorrect=male guess=female name=Andri \ncorrect=male guess=female name=Andy \ncorrect=male guess=female name=Angelo \ncorrect=male guess=female name=Antone \ncorrect=male guess=female name=Antony \ncorrect=male guess=female name=Anurag \ncorrect=male guess=female name=Archie \ncorrect=male guess=female name=Ariel \ncorrect=male guess=female name=Arne \ncorrect=male guess=female name=Artur \ncorrect=male guess=female name=Bealle \ncorrect=male guess=female name=Benedict \ncorrect=male guess=female name=Benjamen \ncorrect=male guess=female name=Benjy \ncorrect=male guess=female name=Billy \ncorrect=male guess=female name=Blare \ncorrect=male guess=female name=Blayne \ncorrect=male guess=female name=Brody \ncorrect=male guess=female name=Bryn \ncorrect=male guess=female name=Carey \ncorrect=male guess=female name=Carl \ncorrect=male guess=female name=Carleigh \ncorrect=male guess=female name=Carlin \ncorrect=male guess=female name=Carlo \ncorrect=male guess=female name=Carroll \ncorrect=male guess=female name=Cass \ncorrect=male guess=female name=Chanderjit \ncorrect=male guess=female name=Chariot \ncorrect=male guess=female name=Chauncey \ncorrect=male guess=female name=Chevy \ncorrect=male guess=female name=Claudio \ncorrect=male guess=female name=Clemente \ncorrect=male guess=female name=Clemmie \ncorrect=male guess=female name=Clinten \ncorrect=male guess=female name=Cody \ncorrect=male guess=female name=Cole \ncorrect=male guess=female name=Connolly \ncorrect=male guess=female name=Constantin \ncorrect=male guess=female name=Constantine \ncorrect=male guess=female name=Corey \ncorrect=male guess=female name=Costa \ncorrect=male guess=female name=Creighton \ncorrect=male guess=female name=Cristopher \ncorrect=male guess=female name=Daffy \ncorrect=male guess=female name=Dale \ncorrect=male guess=female name=Dannie \ncorrect=male guess=female name=Darien \ncorrect=male guess=female name=Darren \ncorrect=male guess=female name=Darryl \ncorrect=male guess=female name=Davie \ncorrect=male guess=female name=Davy \ncorrect=male guess=female name=Deane \ncorrect=male guess=female name=Demetri \ncorrect=male guess=female name=Dennie \ncorrect=male guess=female name=Dennis \ncorrect=male guess=female name=Derby \ncorrect=male guess=female name=Dimitri \ncorrect=male guess=female name=Domenico \ncorrect=male guess=female name=Donal \ncorrect=male guess=female name=Donovan \ncorrect=male guess=female name=Dory \ncorrect=male guess=female name=Doyle \ncorrect=male guess=female name=Earl \ncorrect=male guess=female name=Elden \ncorrect=male guess=female name=Elijah \ncorrect=male guess=female name=Eliot \ncorrect=male guess=female name=Ellsworth \ncorrect=male guess=female name=Elmore \ncorrect=male guess=female name=Elroy \ncorrect=male guess=female name=Elvin \ncorrect=male guess=female name=Elwin \ncorrect=male guess=female name=Ely \ncorrect=male guess=female name=Emilio \ncorrect=male guess=female name=Emmanuel \ncorrect=male guess=female name=Emmery \ncorrect=male guess=female name=Emmet \ncorrect=male guess=female name=Emmit \ncorrect=male guess=female name=Enrique \ncorrect=male guess=female name=Ernie \ncorrect=male guess=female name=Erny \ncorrect=male guess=female name=Erwin \ncorrect=male guess=female name=Etienne \ncorrect=male guess=female name=Euclid \ncorrect=male guess=female name=Eugen \ncorrect=male guess=female name=Eugene \ncorrect=male guess=female name=Eustace \ncorrect=male guess=female name=Fabian \ncorrect=male guess=female name=Federico \ncorrect=male guess=female name=Ferguson \ncorrect=male guess=female name=Francois \ncorrect=male guess=female name=Freddie \ncorrect=male guess=female name=Freddy \ncorrect=male guess=female name=Geoffry \ncorrect=male guess=female name=Georgie \ncorrect=male guess=female name=Germaine \ncorrect=male guess=female name=Gerome \ncorrect=male guess=female name=Gerri \ncorrect=male guess=female name=Gerrit \ncorrect=male guess=female name=Giavani \ncorrect=male guess=female name=Giorgi \ncorrect=male guess=female name=Giovanne \ncorrect=male guess=female name=Glenn \ncorrect=male guess=female name=Godfree \ncorrect=male guess=female name=Gordie \ncorrect=male guess=female name=Graehme \ncorrect=male guess=female name=Granville \ncorrect=male guess=female name=Griffith \ncorrect=male guess=female name=Gustavo \ncorrect=male guess=female name=Hamlet \ncorrect=male guess=female name=Henri \ncorrect=male guess=female name=Henrie \ncorrect=male guess=female name=Herbie \ncorrect=male guess=female name=Herculie \ncorrect=male guess=female name=Hewet \ncorrect=male guess=female name=Hewie \ncorrect=male guess=female name=Hezekiah \ncorrect=male guess=female name=Huntlee \ncorrect=male guess=female name=Hymie \ncorrect=male guess=female name=Ingamar \ncorrect=male guess=female name=Isa \ncorrect=male guess=female name=Isaiah \ncorrect=male guess=female name=Izak \ncorrect=male guess=female name=Izzy \ncorrect=male guess=female name=Jabez \ncorrect=male guess=female name=Jae \ncorrect=male guess=female name=Jaime \ncorrect=male guess=female name=Jarrett \ncorrect=male guess=female name=Jarvis \ncorrect=male guess=female name=Jean-Christophe \ncorrect=male guess=female name=Jefferey \ncorrect=male guess=female name=Jephthah \ncorrect=male guess=female name=Jeremiah \ncorrect=male guess=female name=Jeremy \ncorrect=male guess=female name=Jerome \ncorrect=male guess=female name=Jerrome \ncorrect=male guess=female name=Jervis \ncorrect=male guess=female name=Jerzy \ncorrect=male guess=female name=Jess \ncorrect=male guess=female name=Jimmie \ncorrect=male guess=female name=Jodi \ncorrect=male guess=female name=Jodie \ncorrect=male guess=female name=Joey \ncorrect=male guess=female name=Johnnie \ncorrect=male guess=female name=Jonny \ncorrect=male guess=female name=Jordy \ncorrect=male guess=female name=Josiah \ncorrect=male guess=female name=Judah \ncorrect=male guess=female name=Judy \ncorrect=male guess=female name=Julie \ncorrect=male guess=female name=Justis \ncorrect=male guess=female name=Kaleb \ncorrect=male guess=female name=Kalle \ncorrect=male guess=female name=Kalman \ncorrect=male guess=female name=Karsten \ncorrect=male guess=female name=Kaspar \ncorrect=male guess=female name=Kelley \ncorrect=male guess=female name=Kelly \ncorrect=male guess=female name=Kelsey \ncorrect=male guess=female name=Kincaid \ncorrect=male guess=female name=Konstantin \ncorrect=male guess=female name=Kory \ncorrect=male guess=female name=Kraig \ncorrect=male guess=female name=Kristopher \ncorrect=male guess=female name=Lanny \ncorrect=male guess=female name=Laurence \ncorrect=male guess=female name=Laurie \ncorrect=male guess=female name=Lemmy \ncorrect=male guess=female name=Lennie \ncorrect=male guess=female name=Leonid \ncorrect=male guess=female name=Lesley \ncorrect=male guess=female name=Leslie \ncorrect=male guess=female name=Levi \ncorrect=male guess=female name=Lonnie \ncorrect=male guess=female name=Lothar \ncorrect=male guess=female name=Louie \ncorrect=male guess=female name=Luigi \ncorrect=male guess=female name=Luis \ncorrect=male guess=female name=Lyn \ncorrect=male guess=female name=Lynn \ncorrect=male guess=female name=Mahmoud \ncorrect=male guess=female name=Manny \ncorrect=male guess=female name=Manuel \ncorrect=male guess=female name=Marcello \ncorrect=male guess=female name=Marilu \ncorrect=male guess=female name=Marlo \ncorrect=male guess=female name=Martyn \ncorrect=male guess=female name=Marve \ncorrect=male guess=female name=Marven \ncorrect=male guess=female name=Matty \ncorrect=male guess=female name=Maurice \ncorrect=male guess=female name=Maurie \ncorrect=male guess=female name=Maurits \ncorrect=male guess=female name=Meade \ncorrect=male guess=female name=Mendie \ncorrect=male guess=female name=Merry \ncorrect=male guess=female name=Meryl \ncorrect=male guess=female name=Michail \ncorrect=male guess=female name=Michal \ncorrect=male guess=female name=Michale \ncorrect=male guess=female name=Micky \ncorrect=male guess=female name=Miguel \ncorrect=male guess=female name=Mika \ncorrect=male guess=female name=Mikael \ncorrect=male guess=female name=Mikel \ncorrect=male guess=female name=Mikhail \ncorrect=male guess=female name=Mitchel \ncorrect=male guess=female name=Moishe \ncorrect=male guess=female name=Monty \ncorrect=male guess=female name=Morlee \ncorrect=male guess=female name=Morly \ncorrect=male guess=female name=Morrie \ncorrect=male guess=female name=Moss \ncorrect=male guess=female name=Mylo \ncorrect=male guess=female name=Myron \ncorrect=male guess=female name=Nahum \ncorrect=male guess=female name=Nealy \ncorrect=male guess=female name=Neddy \ncorrect=male guess=female name=Nevil \ncorrect=male guess=female name=Noble \ncorrect=male guess=female name=Odie \ncorrect=male guess=female name=Oral \ncorrect=male guess=female name=Orbadiah \ncorrect=male guess=female name=Orren \ncorrect=male guess=female name=Orville \ncorrect=male guess=female name=Ozzy \ncorrect=male guess=female name=Parsifal \ncorrect=male guess=female name=Partha \ncorrect=male guess=female name=Pasquale \ncorrect=male guess=female name=Paten \ncorrect=male guess=female name=Patrice \ncorrect=male guess=female name=Pattie \ncorrect=male guess=female name=Pennie \ncorrect=male guess=female name=Perceval \ncorrect=male guess=female name=Percy \ncorrect=male guess=female name=Praneetf \ncorrect=male guess=female name=Price \ncorrect=male guess=female name=Quigly \ncorrect=male guess=female name=Rabi \ncorrect=male guess=female name=Ramsey \ncorrect=male guess=female name=Randi \ncorrect=male guess=female name=Randie \ncorrect=male guess=female name=Randy \ncorrect=male guess=female name=Ravi \ncorrect=male guess=female name=Ravil \ncorrect=male guess=female name=Rawley \ncorrect=male guess=female name=Rickie \ncorrect=male guess=female name=Rikki \ncorrect=male guess=female name=Riley \ncorrect=male guess=female name=Robbie \ncorrect=male guess=female name=Rocky \ncorrect=male guess=female name=Rodney \ncorrect=male guess=female name=Rodrique \ncorrect=male guess=female name=Roice \ncorrect=male guess=female name=Roni \ncorrect=male guess=female name=Ronny \ncorrect=male guess=female name=Rory \ncorrect=male guess=female name=Royal \ncorrect=male guess=female name=Ryan \ncorrect=male guess=female name=Salvatore \ncorrect=male guess=female name=Sammie \ncorrect=male guess=female name=Sandy \ncorrect=male guess=female name=Sasha \ncorrect=male guess=female name=Sebastian \ncorrect=male guess=female name=Sergei \ncorrect=male guess=female name=Shadow \ncorrect=male guess=female name=Sheffy \ncorrect=male guess=female name=Shumeet \ncorrect=male guess=female name=Sigfrid \ncorrect=male guess=female name=Sutherland \ncorrect=male guess=female name=Tally \ncorrect=male guess=female name=Tammie \ncorrect=male guess=female name=Tanney \ncorrect=male guess=female name=Tanny \ncorrect=male guess=female name=Tarrance \ncorrect=male guess=female name=Teddy \ncorrect=male guess=female name=Tedie \ncorrect=male guess=female name=Terence \ncorrect=male guess=female name=Terrance \ncorrect=male guess=female name=Timothee \ncorrect=male guess=female name=Timothy \ncorrect=male guess=female name=Tobiah \ncorrect=male guess=female name=Toddie \ncorrect=male guess=female name=Toddy \ncorrect=male guess=female name=Tommy \ncorrect=male guess=female name=Tonnie \ncorrect=male guess=female name=Tony \ncorrect=male guess=female name=Torey \ncorrect=male guess=female name=Torrey \ncorrect=male guess=female name=Towney \ncorrect=male guess=female name=Towny \ncorrect=male guess=female name=Tymothy \ncorrect=male guess=female name=Tyrone \ncorrect=male guess=female name=Valentin \ncorrect=male guess=female name=Vassily \ncorrect=male guess=female name=Vincents \ncorrect=male guess=female name=Vinnie \ncorrect=male guess=female name=Waine \ncorrect=male guess=female name=Willi \ncorrect=male guess=female name=Wyatan \ncorrect=male guess=female name=Wyatt \ncorrect=male guess=female name=Wylie \ncorrect=male guess=female name=Wyn \ncorrect=male guess=female name=Wynn \ncorrect=male guess=female name=Yehudi \ncorrect=male guess=female name=Zechariah \ncorrect=male guess=female name=Zippy \n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "code",
"input": "print \"%.3f\" % nltk.classify.accuracy(cl3, test_features3)",
"prompt_number": 36,
"outputs": [
{
"output_type": "stream",
"text": "0.790\n",
"stream": "stdout"
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "code",
"input": "",
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
}
],
"metadata": {}
}
],
"metadata": {
"name": "",
"signature": "sha256:dab819b8c358935ef236ef2b7a54e11fbfd9956d52defe651594734e152f3ce3",
"gist_id": "6311cd77cc05968acde8"
},
"nbformat": 3
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment