Skip to content

Instantly share code, notes, and snippets.

@cmgerber
Created September 10, 2014 03:16
Show Gist options
  • Save cmgerber/0dc57bbd924a5e9ecf69 to your computer and use it in GitHub Desktop.
Save cmgerber/0dc57bbd924a5e9ecf69 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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": "%matplotlib inline",
"prompt_number": 6,
"outputs": [],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"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": 1,
"outputs": [
{
"output_type": "stream",
"text": "*** Introductory Examples for the NLTK Book ***\nLoading text1, ..., text9 and sent1, ..., sent9\nType the name of the text or sentence to view it.\nType: 'texts()' or 'sents()' to list the materials.\ntext1:",
"stream": "stdout"
},
{
"output_type": "stream",
"text": " Moby Dick by Herman Melville 1851\ntext2:",
"stream": "stdout"
},
{
"output_type": "stream",
"text": " Sense and Sensibility by Jane Austen 1811\ntext3:",
"stream": "stdout"
},
{
"output_type": "stream",
"text": " The Book of Genesis\ntext4:",
"stream": "stdout"
},
{
"output_type": "stream",
"text": " Inaugural Address Corpus\ntext5:",
"stream": "stdout"
},
{
"output_type": "stream",
"text": " Chat Corpus\ntext6: Monty Python and the Holy Grail\ntext7:",
"stream": "stdout"
},
{
"output_type": "stream",
"text": " Wall Street Journal\ntext8: Personals Corpus\ntext9:",
"stream": "stdout"
},
{
"output_type": "stream",
"text": " The Man Who Was Thursday by G . K . Chesterton 1908\n",
"stream": "stdout"
},
{
"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": 1
}
],
"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": "' '.join(text6[:500])",
"prompt_number": 2,
"outputs": [
{
"text": "\"SCENE 1 : [ wind ] [ clop clop clop ] KING ARTHUR : Whoa there ! [ clop clop clop ] SOLDIER # 1 : Halt ! Who goes there ? ARTHUR : It is I , Arthur , son of Uther Pendragon , from the castle of Camelot . King of the Britons , defeator of the Saxons , sovereign of all England ! SOLDIER # 1 : Pull the other one ! ARTHUR : I am , ... and this is my trusty servant Patsy . We have ridden the length and breadth of the land in search of knights who will join me in my court at Camelot . I must speak with your lord and master . SOLDIER # 1 : What ? Ridden on a horse ? ARTHUR : Yes ! SOLDIER # 1 : You ' re using coconuts ! ARTHUR : What ? SOLDIER # 1 : You ' ve got two empty halves of coconut and you ' re bangin ' ' em together . ARTHUR : So ? We have ridden since the snows of winter covered this land , through the kingdom of Mercea , through -- SOLDIER # 1 : Where ' d you get the coconuts ? ARTHUR : We found them . SOLDIER # 1 : Found them ? In Mercea ? The coconut ' s tropical ! ARTHUR : What do you mean ? SOLDIER # 1 : Well , this is a temperate zone . ARTHUR : The swallow may fly south with the sun or the house martin or the plover may seek warmer climes in winter , yet these are not strangers to our land ? SOLDIER # 1 : Are you suggesting coconuts migrate ? ARTHUR : Not at all . They could be carried . SOLDIER # 1 : What ? A swallow carrying a coconut ? ARTHUR : It could grip it by the husk ! SOLDIER # 1 : It ' s not a question of where he grips it ! It ' s a simple question of weight ratios ! A five ounce bird could not carry a one pound coconut . ARTHUR : Well , it doesn ' t matter . Will you go and tell your master that Arthur from the Court of Camelot is here . SOLDIER # 1 : Listen . In order to maintain air - speed velocity , a swallow needs to beat its wings forty - three times every second , right ? ARTHUR : Please ! SOLDIER # 1 : Am I right ? ARTHUR : I ' m not interested ! SOLDIER # 2 : It could be carried by an African swallow ! SOLDIER # 1 : Oh , yeah , an African swallow maybe , but not a European swallow . That ' s my point . SOLDIER # 2 : Oh , yeah , I agree with that . ARTHUR : Will you ask your\"",
"output_type": "pyout",
"metadata": {},
"prompt_number": 2
}
],
"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: It is a screen play it mentions the speakers a lot.\n* Answer 2: There are a lot of short sentences and sounds described (ie [clop clop]) that include special characters\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": "striped = [x for x in text6 if x.isalpha()] #remove all non-letter strings",
"prompt_number": 3,
"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(striped)\nmp_freqdist.items()[:50] ",
"prompt_number": 4,
"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 ('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 ('Yes', 42),\n ('ha', 42),\n ('re', 41),\n ('her', 40),\n ('ROBIN', 39)]",
"output_type": "pyout",
"metadata": {},
"prompt_number": 4
}
],
"language": "python",
"trusted": true,
"collapsed": false
},
{
"metadata": {},
"cell_type": "markdown",
"source": "**Task 5** How if at all has the output changed?\n\n*Answer: All strings were removed that did not only contain letters"
},
{
"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(50, cumulative=True)",
"prompt_number": 9,
"outputs": [
{
"png": "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\n",
"text": "<matplotlib.figure.Figure at 0x11303ca10>",
"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": "big_list = [x[0] for x in mp_freqdist.items() if x[1]>4 and len(x[0])>4]\nsorted(big_list)",
"prompt_number": 19,
"outputs": [
{
"text": "['ARTHUR',\n 'Aaaaugh',\n 'Arthur',\n 'BEDEVERE',\n 'BLACK',\n 'BRIDGEKEEPER',\n 'Bedevere',\n 'Brave',\n 'Bridge',\n 'Bring',\n 'Britons',\n 'CARTOON',\n 'CHARACTER',\n 'CONCORDE',\n 'CRONE',\n 'CROWD',\n 'CUSTOMER',\n 'Camelot',\n 'Castle',\n 'Christ',\n 'Concorde',\n 'DENNIS',\n 'DINGO',\n 'Death',\n 'English',\n 'FATHER',\n 'FRENCH',\n 'Father',\n 'French',\n 'GALAHAD',\n 'GIRLS',\n 'GREEN',\n 'GUARD',\n 'GUARDS',\n 'GUEST',\n 'GUESTS',\n 'Galahad',\n 'Grail',\n 'HEADS',\n 'HERBERT',\n 'HISTORIAN',\n 'Hello',\n 'Hurry',\n 'INSPECTOR',\n 'KNIGHT',\n 'KNIGHTS',\n 'Knight',\n 'Knights',\n 'LAUNCELOT',\n 'Launcelot',\n 'MASTER',\n 'MAYNARD',\n 'MIDDLE',\n 'MINSTREL',\n 'MONKS',\n 'NARRATOR',\n 'OFFICER',\n 'PERSON',\n 'PIGLET',\n 'Please',\n 'RANDOM',\n 'RIGHT',\n 'ROBIN',\n 'Right',\n 'Robin',\n 'Round',\n 'SCENE',\n 'SOLDIER',\n 'Sorry',\n 'Table',\n 'Thank',\n 'There',\n 'Three',\n 'VILLAGER',\n 'WOMAN',\n 'Where',\n 'about',\n 'afraid',\n 'again',\n 'angels',\n 'better',\n 'brave',\n 'built',\n 'carried',\n 'castle',\n 'chanting',\n 'chord',\n 'clang',\n 'clunk',\n 'coconut',\n 'cough',\n 'could',\n 'course',\n 'doesn',\n 'domine',\n 'dramatic',\n 'easily',\n 'escape',\n 'father',\n 'forest',\n 'found',\n 'giggle',\n 'going',\n 'grail',\n 'great',\n 'killed',\n 'knight',\n 'knights',\n 'leave',\n 'liege',\n 'master',\n 'mumble',\n 'music',\n 'nothing',\n 'other',\n 'pause',\n 'people',\n 'peril',\n 'place',\n 'please',\n 'pound',\n 'quest',\n 'questions',\n 'quiet',\n 'quite',\n 'rabbit',\n 'really',\n 'requiem',\n 'right',\n 'sacred',\n 'saying',\n 'scene',\n 'second',\n 'shall',\n 'shalt',\n 'shrubberies',\n 'shrubbery',\n 'silly',\n 'simple',\n 'singing',\n 'sorry',\n 'spanking',\n 'squeak',\n 'stops',\n 'swallow',\n 'swallows',\n 'swamp',\n 'taunting',\n 'thank',\n 'there',\n 'these',\n 'think',\n 'three',\n 'through',\n 'where',\n 'which',\n 'witch',\n 'would']",
"output_type": "pyout",
"metadata": {},
"prompt_number": 19
}
],
"language": "python",
"trusted": true,
"collapsed": false
}
],
"metadata": {}
}
],
"metadata": {
"name": "",
"signature": "sha256:cd03a96c056bfc424e3e575dad9d97473f553408de896734a2bec6111d18045c"
},
"nbformat": 3
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment