Created
September 10, 2014 03:56
-
-
Save hisnipes/7a786bbf266e8563bd2d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "worksheets": [ | |
| { | |
| "cells": [ | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "#Introduction\n\n(Be sure to start this notebook with the command \"ipython notebook --pylab inline\".)\n\nSection 1.1 of the NLTK book describes some pre-loaded books and pre-defined functions that come with them. Section 1.2 reviews fundamental concepts abßout python lists and strings -- if you need to brush up on these concepts, then study this subsection carefully. Be sure you know the difference between a *set* and a *list* and that you can work easily with python slices.\n\nThe part that I am most interested in having you focus on is Section 1.3, which introduces NLTK's frequency distribution data structure. You need to have the books loaded and accessible from section 1.1 for this part to work.\n\n##NLTK's Frequency Distribution Object\n\nThis data structure makes it easy to tally up frequencies across words and other items, and incorporate them into list comprehensions (and later we'll see the conditional frequency distribution as well).\n\nThe code below counts up all of the words in *Monty Python and the Holy Grail* (text6 in the nltk.book collection) and the final line shows the top 50 most frequent." | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "code", | |
| "input": "import nltk\nfrom nltk.book import * # loads in pre-defined texts\nmp_freqdist = FreqDist(text6) # compute the frequency distribution\nmp_freqdist.items()[:50] # show the top 50 (word, frequency) pairs", | |
| "prompt_number": 37, | |
| "outputs": [ | |
| { | |
| "text": "[(':', 1197),\n ('.', 816),\n ('!', 801),\n (',', 731),\n (\"'\", 421),\n ('[', 319),\n (']', 312),\n ('the', 299),\n ('I', 255),\n ('ARTHUR', 225),\n ('?', 207),\n ('you', 204),\n ('a', 188),\n ('of', 158),\n ('--', 148),\n ('to', 144),\n ('s', 141),\n ('and', 135),\n ('#', 127),\n ('...', 118),\n ('Oh', 110),\n ('it', 107),\n ('is', 106),\n ('-', 88),\n ('in', 86),\n ('that', 84),\n ('t', 77),\n ('1', 76),\n ('LAUNCELOT', 76),\n ('No', 76),\n ('your', 75),\n ('not', 70),\n ('GALAHAD', 69),\n ('KNIGHT', 68),\n ('What', 65),\n ('FATHER', 63),\n ('we', 62),\n ('BEDEVERE', 61),\n ('You', 61),\n ('We', 60),\n ('this', 59),\n ('no', 55),\n ('HEAD', 54),\n ('Well', 54),\n ('GUARD', 53),\n ('have', 53),\n ('Sir', 52),\n ('are', 52),\n ('A', 50),\n ('And', 50)]", | |
| "output_type": "pyout", | |
| "metadata": {}, | |
| "prompt_number": 37 | |
| } | |
| ], | |
| "language": "python", | |
| "trusted": true, | |
| "collapsed": false | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "**Task 1** Wow, those are some weird results. It might make some sense to look at the actual text itself. In the line below, write a line of code that pulls out the first 500 words of the text and shows them to you (hint: the text object is simply a list of strings)." | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "code", | |
| "input": "first500 = [word for word in text6[:500]]\nfirst500", | |
| "prompt_number": 38, | |
| "outputs": [ | |
| { | |
| "text": "['SCENE',\n '1',\n ':',\n '[',\n 'wind',\n ']',\n '[',\n 'clop',\n 'clop',\n 'clop',\n ']',\n 'KING',\n 'ARTHUR',\n ':',\n 'Whoa',\n 'there',\n '!',\n '[',\n 'clop',\n 'clop',\n 'clop',\n ']',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Halt',\n '!',\n 'Who',\n 'goes',\n 'there',\n '?',\n 'ARTHUR',\n ':',\n 'It',\n 'is',\n 'I',\n ',',\n 'Arthur',\n ',',\n 'son',\n 'of',\n 'Uther',\n 'Pendragon',\n ',',\n 'from',\n 'the',\n 'castle',\n 'of',\n 'Camelot',\n '.',\n 'King',\n 'of',\n 'the',\n 'Britons',\n ',',\n 'defeator',\n 'of',\n 'the',\n 'Saxons',\n ',',\n 'sovereign',\n 'of',\n 'all',\n 'England',\n '!',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Pull',\n 'the',\n 'other',\n 'one',\n '!',\n 'ARTHUR',\n ':',\n 'I',\n 'am',\n ',',\n '...',\n 'and',\n 'this',\n 'is',\n 'my',\n 'trusty',\n 'servant',\n 'Patsy',\n '.',\n 'We',\n 'have',\n 'ridden',\n 'the',\n 'length',\n 'and',\n 'breadth',\n 'of',\n 'the',\n 'land',\n 'in',\n 'search',\n 'of',\n 'knights',\n 'who',\n 'will',\n 'join',\n 'me',\n 'in',\n 'my',\n 'court',\n 'at',\n 'Camelot',\n '.',\n 'I',\n 'must',\n 'speak',\n 'with',\n 'your',\n 'lord',\n 'and',\n 'master',\n '.',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'What',\n '?',\n 'Ridden',\n 'on',\n 'a',\n 'horse',\n '?',\n 'ARTHUR',\n ':',\n 'Yes',\n '!',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'You',\n \"'\",\n 're',\n 'using',\n 'coconuts',\n '!',\n 'ARTHUR',\n ':',\n 'What',\n '?',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'You',\n \"'\",\n 've',\n 'got',\n 'two',\n 'empty',\n 'halves',\n 'of',\n 'coconut',\n 'and',\n 'you',\n \"'\",\n 're',\n 'bangin',\n \"'\",\n \"'\",\n 'em',\n 'together',\n '.',\n 'ARTHUR',\n ':',\n 'So',\n '?',\n 'We',\n 'have',\n 'ridden',\n 'since',\n 'the',\n 'snows',\n 'of',\n 'winter',\n 'covered',\n 'this',\n 'land',\n ',',\n 'through',\n 'the',\n 'kingdom',\n 'of',\n 'Mercea',\n ',',\n 'through',\n '--',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Where',\n \"'\",\n 'd',\n 'you',\n 'get',\n 'the',\n 'coconuts',\n '?',\n 'ARTHUR',\n ':',\n 'We',\n 'found',\n 'them',\n '.',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Found',\n 'them',\n '?',\n 'In',\n 'Mercea',\n '?',\n 'The',\n 'coconut',\n \"'\",\n 's',\n 'tropical',\n '!',\n 'ARTHUR',\n ':',\n 'What',\n 'do',\n 'you',\n 'mean',\n '?',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Well',\n ',',\n 'this',\n 'is',\n 'a',\n 'temperate',\n 'zone',\n '.',\n 'ARTHUR',\n ':',\n 'The',\n 'swallow',\n 'may',\n 'fly',\n 'south',\n 'with',\n 'the',\n 'sun',\n 'or',\n 'the',\n 'house',\n 'martin',\n 'or',\n 'the',\n 'plover',\n 'may',\n 'seek',\n 'warmer',\n 'climes',\n 'in',\n 'winter',\n ',',\n 'yet',\n 'these',\n 'are',\n 'not',\n 'strangers',\n 'to',\n 'our',\n 'land',\n '?',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Are',\n 'you',\n 'suggesting',\n 'coconuts',\n 'migrate',\n '?',\n 'ARTHUR',\n ':',\n 'Not',\n 'at',\n 'all',\n '.',\n 'They',\n 'could',\n 'be',\n 'carried',\n '.',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'What',\n '?',\n 'A',\n 'swallow',\n 'carrying',\n 'a',\n 'coconut',\n '?',\n 'ARTHUR',\n ':',\n 'It',\n 'could',\n 'grip',\n 'it',\n 'by',\n 'the',\n 'husk',\n '!',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'It',\n \"'\",\n 's',\n 'not',\n 'a',\n 'question',\n 'of',\n 'where',\n 'he',\n 'grips',\n 'it',\n '!',\n 'It',\n \"'\",\n 's',\n 'a',\n 'simple',\n 'question',\n 'of',\n 'weight',\n 'ratios',\n '!',\n 'A',\n 'five',\n 'ounce',\n 'bird',\n 'could',\n 'not',\n 'carry',\n 'a',\n 'one',\n 'pound',\n 'coconut',\n '.',\n 'ARTHUR',\n ':',\n 'Well',\n ',',\n 'it',\n 'doesn',\n \"'\",\n 't',\n 'matter',\n '.',\n 'Will',\n 'you',\n 'go',\n 'and',\n 'tell',\n 'your',\n 'master',\n 'that',\n 'Arthur',\n 'from',\n 'the',\n 'Court',\n 'of',\n 'Camelot',\n 'is',\n 'here',\n '.',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Listen',\n '.',\n 'In',\n 'order',\n 'to',\n 'maintain',\n 'air',\n '-',\n 'speed',\n 'velocity',\n ',',\n 'a',\n 'swallow',\n 'needs',\n 'to',\n 'beat',\n 'its',\n 'wings',\n 'forty',\n '-',\n 'three',\n 'times',\n 'every',\n 'second',\n ',',\n 'right',\n '?',\n 'ARTHUR',\n ':',\n 'Please',\n '!',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Am',\n 'I',\n 'right',\n '?',\n 'ARTHUR',\n ':',\n 'I',\n \"'\",\n 'm',\n 'not',\n 'interested',\n '!',\n 'SOLDIER',\n '#',\n '2',\n ':',\n 'It',\n 'could',\n 'be',\n 'carried',\n 'by',\n 'an',\n 'African',\n 'swallow',\n '!',\n 'SOLDIER',\n '#',\n '1',\n ':',\n 'Oh',\n ',',\n 'yeah',\n ',',\n 'an',\n 'African',\n 'swallow',\n 'maybe',\n ',',\n 'but',\n 'not',\n 'a',\n 'European',\n 'swallow',\n '.',\n 'That',\n \"'\",\n 's',\n 'my',\n 'point',\n '.',\n 'SOLDIER',\n '#',\n '2',\n ':',\n 'Oh',\n ',',\n 'yeah',\n ',',\n 'I',\n 'agree',\n 'with',\n 'that',\n '.',\n 'ARTHUR',\n ':',\n 'Will',\n 'you',\n 'ask',\n 'your']", | |
| "output_type": "pyout", | |
| "metadata": {}, | |
| "prompt_number": 38 | |
| } | |
| ], | |
| "language": "python", | |
| "trusted": true, | |
| "collapsed": false | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "**Task 2** Now that you've looked at the text, what are two reasons for these strange results?\n* Answer 1: The code does not differentiate punctuation or numbers from words.\n* Answer 2: For contractions, the code sees the part of the word before the apostrophe as one word, the apostrophe as the second word, and the letters after the apostrophe as the third word. So for one contraction, that's three different words counted.\n" | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "**Task 3** Address one of the problems by modifying the text of Monty Python and rerunning the frequency distribution calculation. In the box below write your code to modify the text:" | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "code", | |
| "input": "text_wo_punc = [word for word in text6 if word not in('!','.',',',':','?','#','[',']',\"'\",'--','...','-')]", | |
| "prompt_number": 39, | |
| "outputs": [], | |
| "language": "python", | |
| "trusted": true, | |
| "collapsed": false | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "**Task 4** In the box below, show the output after applying this version of the text to a FreqDist." | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "code", | |
| "input": "mp_freqdist = FreqDist(text_wo_punc)\nmp_freqdist.items()[:50]", | |
| "prompt_number": 40, | |
| "outputs": [ | |
| { | |
| "text": "[('the', 299),\n ('I', 255),\n ('ARTHUR', 225),\n ('you', 204),\n ('a', 188),\n ('of', 158),\n ('to', 144),\n ('s', 141),\n ('and', 135),\n ('Oh', 110),\n ('it', 107),\n ('is', 106),\n ('in', 86),\n ('that', 84),\n ('t', 77),\n ('1', 76),\n ('LAUNCELOT', 76),\n ('No', 76),\n ('your', 75),\n ('not', 70),\n ('GALAHAD', 69),\n ('KNIGHT', 68),\n ('What', 65),\n ('FATHER', 63),\n ('we', 62),\n ('BEDEVERE', 61),\n ('You', 61),\n ('We', 60),\n ('this', 59),\n ('no', 55),\n ('HEAD', 54),\n ('Well', 54),\n ('GUARD', 53),\n ('have', 53),\n ('Sir', 52),\n ('are', 52),\n ('A', 50),\n ('And', 50),\n ('Ni', 47),\n ('VILLAGER', 47),\n ('on', 47),\n ('He', 46),\n ('me', 46),\n ('boom', 45),\n ('be', 43),\n ('he', 43),\n ('2', 42),\n ('Yes', 42),\n ('ha', 42),\n ('re', 41)]", | |
| "output_type": "pyout", | |
| "metadata": {}, | |
| "prompt_number": 40 | |
| } | |
| ], | |
| "language": "python", | |
| "trusted": true, | |
| "collapsed": false | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "**Task 5** How if at all has the output changed?\n* Answer: The list now does not contain any punctuation marks. It's more in line with just displaying words, though it doesn't solve the issue of the letters coming after the apostrophes." | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "**Task 6** Following the example from the book, show a cumulative frequency plot for the words in Monty Python as newly computed, in the box below." | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "code", | |
| "input": "mp_freqdist.plot(cumulative=True)", | |
| "prompt_number": 41, | |
| "outputs": [ | |
| { | |
| "png": "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\nRK5CYII=\n", | |
| "text": "<matplotlib.figure.Figure at 0x10824cc50>", | |
| "output_type": "display_data", | |
| "metadata": {} | |
| } | |
| ], | |
| "language": "python", | |
| "trusted": true, | |
| "collapsed": false | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "**Task 7** In the box below, write a list comprehension that users the FreqDist you computed above to find all words in *Monty Python* that are longer than 5 characters long and occur at least 5 times (hint: the text shows how to do a variation of this). \nShow the output sorted in alphabetical order." | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "code", | |
| "input": "long_words = [word for word in set(text6) if len(word) > 5 and mp_freqdist[word] >= 5]\nsorted(long_words, key=lambda v: v.upper())", | |
| "prompt_number": 62, | |
| "outputs": [ | |
| { | |
| "text": "['Aaaaugh',\n 'afraid',\n 'angels',\n 'Arthur',\n 'ARTHUR',\n 'Bedevere',\n 'BEDEVERE',\n 'better',\n 'Bridge',\n 'BRIDGEKEEPER',\n 'Britons',\n 'Camelot',\n 'carried',\n 'CARTOON',\n 'Castle',\n 'castle',\n 'chanting',\n 'CHARACTER',\n 'Christ',\n 'coconut',\n 'CONCORDE',\n 'Concorde',\n 'course',\n 'CUSTOMER',\n 'DENNIS',\n 'domine',\n 'dramatic',\n 'easily',\n 'English',\n 'escape',\n 'father',\n 'Father',\n 'FATHER',\n 'forest',\n 'FRENCH',\n 'French',\n 'Galahad',\n 'GALAHAD',\n 'giggle',\n 'GUARDS',\n 'GUESTS',\n 'HERBERT',\n 'HISTORIAN',\n 'INSPECTOR',\n 'killed',\n 'Knight',\n 'KNIGHT',\n 'knight',\n 'knights',\n 'KNIGHTS',\n 'Knights',\n 'LAUNCELOT',\n 'Launcelot',\n 'master',\n 'MASTER',\n 'MAYNARD',\n 'MIDDLE',\n 'MINSTREL',\n 'mumble',\n 'NARRATOR',\n 'nothing',\n 'OFFICER',\n 'people',\n 'PERSON',\n 'PIGLET',\n 'Please',\n 'please',\n 'questions',\n 'rabbit',\n 'RANDOM',\n 'really',\n 'requiem',\n 'sacred',\n 'saying',\n 'second',\n 'shrubberies',\n 'shrubbery',\n 'simple',\n 'singing',\n 'SOLDIER',\n 'spanking',\n 'squeak',\n 'swallow',\n 'swallows',\n 'taunting',\n 'through',\n 'VILLAGER']", | |
| "output_type": "pyout", | |
| "metadata": {}, | |
| "prompt_number": 62 | |
| } | |
| ], | |
| "language": "python", | |
| "trusted": true, | |
| "collapsed": false | |
| } | |
| ], | |
| "metadata": {} | |
| } | |
| ], | |
| "metadata": { | |
| "name": "", | |
| "signature": "sha256:2222887c602c2874cddb0b69033523e0ed933604ab673258ed94fa56e3e075cf" | |
| }, | |
| "nbformat": 3 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment