From 57691bf8482444adc1fe9a45ad3eaf5f4bf5cc2d Mon Sep 17 00:00:00 2001 From: Alex Hickman Date: Wed, 7 Sep 2022 23:32:06 +0000 Subject: [PATCH 1/4] copied og into personal --- ahickm18.ipynb | 382 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 382 insertions(+) create mode 100644 ahickm18.ipynb diff --git a/ahickm18.ipynb b/ahickm18.ipynb new file mode 100644 index 0000000..59b489b --- /dev/null +++ b/ahickm18.ipynb @@ -0,0 +1,382 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Written text as operational data\n", + "\n", + "Written text is one type of data\n", + "\n", + "### Why people write?\n", + "\n", + " - To communicate: their thoughts, feelings, urgency, needs, information\n", + "\n", + "### Why people communicate?\n", + "\n", + "1. To express emotions\n", + "1. To share information\n", + "1. To enable or elicit an action\n", + "1. ...\n", + "\n", + "### We will use written text for the purpose other than \n", + "1. To experience emotion\n", + "1. To learn something the author intended us to learn\n", + "1. To do what the author intended us to do\n", + "\n", + "### Instead, we will use written text to recognize who wrote it\n", + " - By calculating and comparing word frequencies in written documents\n", + " \n", + "See, for example, likely fictional story https://medium.com/@amuse/how-the-nsa-caught-satoshi-nakamoto-868affcef595" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1. Dictionaries in python (associative arrays)\n", + "\n", + "Plot the frequency distribution of words on a web page." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "class=\"menu-item\t54\n", + "\t38\n", + "\t35\n", + "
  • \t28\n", + "\t21\n", + "\t21\n" + ] + } + ], + "source": [ + "import requests, re\n", + "# re is a module for regular expressions: to detect various combinations of characters\n", + "import operator\n", + "\n", + "# Start from a simple document\n", + "r = requests .get('http://eecs.utk.edu')\n", + "\n", + "# What comes back includes headers and other HTTP stuff, get just the body of the response\n", + "t = r.text\n", + "\n", + "# obtain words by splitting a string using as separator one or more (+) space/like characters (\\s) \n", + "wds = re.split('\\s+',t)\n", + "\n", + "# now populate a dictionary (wf)\n", + "wf = {}\n", + "for w in wds:\n", + " if w in wf: wf [w] = wf [w] + 1\n", + " else: wf[w] = 1\n", + "\n", + "# dictionaries can not be sorted, so lets get a sorted *list* \n", + "wfs = sorted (wf .items(), key = operator .itemgetter (1), reverse=True) \n", + "\n", + "# lets just have no more than 15 words \n", + "ml = min(len(wfs),15)\n", + "for i in range(1,ml,1):\n", + " print (wfs[i][0]+\"\\t\"+str(wfs[i][1])) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2\n", + "\n", + "Lots of markup in the output, lets remove it --- \n", + "\n", + "use BeautifulSoup and nltk modules and practice some regular expressions." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import requests, re, nltk\n", + "from bs4 import BeautifulSoup\n", + "from nltk import clean_html\n", + "from collections import Counter\n", + "import operator\n", + "\n", + "# we may not care about the usage of stop words\n", + "stop_words = nltk.corpus.stopwords.words('english') + [\n", + " 'ut', '\\'re','.', ',', '--', '\\'s', '?', ')', '(', ':', '\\'',\n", + " '\\\"', '-', '}', '{', '&', '|', u'\\u2014' ]\n", + "\n", + "# We most likely would like to remove html markup\n", + "def cleanHtml (html):\n", + " from bs4 import BeautifulSoup\n", + " soup = BeautifulSoup(html, 'html.parser')\n", + " return soup .get_text()\n", + "\n", + "# We also want to remove special characters, quotes, etc. from each word\n", + "def cleanWord (w):\n", + " # r in r'[.,\"\\']' tells to treat \\ as a regular character \n", + " # but we need to escape ' with \\'\n", + " # any character between the brackets [] is to be removed \n", + " wn = re.sub('[,\"\\.\\'&\\|:@>*;/=]', \"\", w)\n", + " # get rid of numbers\n", + " return re.sub('^[0-9\\.]*$', \"\", wn)\n", + " \n", + "# define a function to get text/clean/calculate frequency\n", + "def get_wf (URL):\n", + " # first get the web page\n", + " r = requests .get(URL)\n", + " \n", + " # Now clean\n", + " # remove html markup\n", + " t = cleanHtml (r .text) .lower()\n", + " \n", + " # split string into an array of words using any sequence of spaces \"\\s+\" \n", + " wds = re .split('\\s+',t)\n", + " \n", + " # remove periods, commas, etc stuck to the edges of words\n", + " for i in range(len(wds)):\n", + " wds [i] = cleanWord (wds [i])\n", + " \n", + " # If satisfied with results, lets go to the next step: calculate frequencies\n", + " # We can write a loop to create a dictionary, but \n", + " # there is a special function for everything in python\n", + " # in particular for counting frequencies (like function table() in R)\n", + " wf = Counter (wds)\n", + " \n", + " # Remove stop words from the dictionary wf\n", + " for k in stop_words:\n", + " wf. pop(k, None)\n", + " \n", + " #how many regular words in the document?\n", + " tw = 0\n", + " for w in wf:\n", + " tw += wf[w] \n", + " \n", + " \n", + " # Get ordered list\n", + " wfs = sorted (wf .items(), key = operator.itemgetter(1), reverse=True)\n", + " ml = min(len(wfs),15)\n", + "\n", + " #Reverse the list because barh plots items from the bottom\n", + " return (wfs [ 0:ml ] [::-1], tw)\n", + " \n", + "# Now populate two lists \n", + "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/1342.txt.utf-8')\n", + "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/76.txt.utf-8')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Plot the results: are there striking differences in language?\n", + "import numpy as np\n", + "import pylab\n", + "import matplotlib.pyplot as plt\n", + "\n", + "%matplotlib inline\n", + "def plotTwoLists (wf_ee, wf_bu, title):\n", + " f = plt.figure (figsize=(10, 6))\n", + " # this is painfully tedious....\n", + " f .suptitle (title, fontsize=20)\n", + " ax = f.add_subplot(111)\n", + " ax .spines ['top'] .set_color ('none')\n", + " ax .spines ['bottom'] .set_color ('none')\n", + " ax .spines ['left'] .set_color ('none')\n", + " ax .spines ['right'] .set_color ('none')\n", + " ax .tick_params (labelcolor='w', top='off', bottom='off', left='off', right='off', labelsize=20)\n", + "\n", + " # Create two subplots, this is the first one\n", + " ax1 = f .add_subplot (121)\n", + " plt .subplots_adjust (wspace=.5)\n", + "\n", + " pos = np .arange (len(wf_ee)+1) \n", + " ax1 .tick_params (axis='both', which='major', labelsize=14)\n", + " pylab .yticks (pos, [ x [0] for x in wf_ee ])\n", + " ax1 .barh (range(len(wf_ee)), [ x [1] for x in wf_ee ], align='center')\n", + "\n", + " ax2 = f .add_subplot (122)\n", + " ax2 .tick_params (axis='both', which='major', labelsize=14)\n", + " pos = np .arange (len(wf_bu)+1) \n", + " pylab .yticks (pos, [ x [0] for x in wf_bu ])\n", + " ax2 .barh (range (len(wf_bu)), [ x [1] for x in wf_bu ], align='center')\n", + "\n", + "plotTwoLists (wf_ee, wf_bu, 'Difference between Pride and Prejudice and Huck Finn')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "and\t2836\n", + "of\t2676\n", + "to\t2646\n", + "a\t2217\n", + "in\t1422\n", + "his\t1205\n", + "he\t928\n", + "that\t920\n", + "was\t823\n", + "for\t798\n", + "with\t797\n", + "as\t672\n", + "I\t505\n", + "you\t497\n" + ] + } + ], + "source": [ + "#In case Project gutenberg is blocked you can download text to your laptop and copy to the docker container via scp\n", + "#Assuming the file name you copy is pg4680.txt here is how you change the script\n", + "# Please note the option errors='replace'\n", + "# without it python invariably runs into unicode errors\n", + "f = open ('pg4680.txt', 'r', encoding=\"ascii\", errors='replace')\n", + " \n", + "# What comes back includes headers and other HTTP stuff, get just the body of the response\n", + "t = f.read()\n", + "\n", + "# obtain words by splitting a string using as separator one or more (+) space/like characters (\\s) \n", + "wds = re.split('\\s+',t)\n", + "\n", + "# now populate a dictionary (wf)\n", + "wf = {}\n", + "for w in wds:\n", + " if w in wf: wf [w] = wf [w] + 1\n", + " else: wf [w] = 1\n", + "\n", + "# dictionaries can not be sorted, so lets get a sorted *list* \n", + "wfs = sorted (wf .items(), key = operator .itemgetter (1), reverse=True) \n", + "\n", + "# lets just have no more than 15 words \n", + "ml = min(len(wfs),15)\n", + "for i in range(1,ml,1):\n", + " print (wfs[i][0]+\"\\t\"+str(wfs[i][1])) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Assignment 1\n", + "\n", + "1. Compare word frequencies between two works of a single author.\n", + "1. Compare word frequencies between works of two authors.\n", + "1. Are there some words preferred by one author but used less frequently by another author?\n", + "\n", + "Extra credit\n", + "\n", + "1. The frequency of a specific word, e.g., \"would\" should follow a binomial distribution (each regular word in a document is a trial and with probability p that word is \"would\". The estimate for p is N(\"would\")/N(regular word)). Do these binomial distributions for your chosen word differ significantly between books of the same author or between authors? \n", + "\n", + "Project Gutenberg is a good source of for fiction and non-fiction.\n", + "\n", + "E.g below are two most popular books from Project Gutenberg:\n", + "- Pride and Prejudice at http://www.gutenberg.org/ebooks/1342.txt.utf-8\n", + "- Adventures of Huckleberry Finn at http://www.gutenberg.org/ebooks/76.txt.utf-8" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import requests, re, nltk\n", + "#In case your text is not on Project Gutenberg but at some other URL\n", + "#http://www.fullbooks.com/Our-World-or-The-Slaveholders-Daughter2.html\n", + "# that contains 12 parts\n", + "t = \"\"\n", + "for i in range(2,13):\n", + " r = requests .get('http://www.fullbooks.com/Our-World-or-The-Slaveholders-Daughter' + str(i) + '.html')\n", + " t = t + r.text" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1323653" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(t)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "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.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From a8f0e49ae82724488c05e2409eac4c65e6d11cff Mon Sep 17 00:00:00 2001 From: Alex Hickman Date: Thu, 8 Sep 2022 19:44:16 +0000 Subject: [PATCH 2/4] added Assignment1. Compare Dracula and Frankenstein. Compare Illiad and Odyssey --- ahickm18.ipynb | 1022 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 870 insertions(+), 152 deletions(-) diff --git a/ahickm18.ipynb b/ahickm18.ipynb index 59b489b..01e7733 100644 --- a/ahickm18.ipynb +++ b/ahickm18.ipynb @@ -41,27 +41,27 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "class=\"menu-item\t54\n", - "\t38\n", - "\t35\n", - "
  • \t28\n", - "\t21\n", - "\t21\n" + "\t1\n", + "\t1\n", + "403\t1\n", + "Forbidden\t1\n", + "\t1\n", + "

    Forbidden

    \t1\n", + "

    You\t1\n", + "don't\t1\n", + "have\t1\n", + "permission\t1\n", + "to\t1\n" ] } ], @@ -105,14 +105,110 @@ "use BeautifulSoup and nltk modules and practice some regular expressions." ] }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "and\t2836\n", + "of\t2676\n", + "to\t2646\n", + "a\t2217\n", + "in\t1422\n", + "his\t1205\n", + "he\t928\n", + "that\t920\n", + "was\t823\n", + "for\t798\n", + "with\t797\n", + "as\t672\n", + "I\t505\n", + "you\t497\n" + ] + } + ], + "source": [ + "#In case Project gutenberg is blocked you can download text to your laptop and copy to the docker container via scp\n", + "#Assuming the file name you copy is pg4680.txt here is how you change the script\n", + "# Please note the option errors='replace'\n", + "# without it python invariably runs into unicode errors\n", + "import requests, re, nltk\n", + "from bs4 import BeautifulSoup\n", + "from nltk import clean_html\n", + "from collections import Counter\n", + "import operator\n", + "f = open ('pg4680.txt', 'r', encoding=\"ascii\", errors='replace')\n", + " \n", + "# What comes back includes headers and other HTTP stuff, get just the body of the response\n", + "t = f.read()\n", + "\n", + "# obtain words by splitting a string using as separator one or more (+) space/like characters (\\s) \n", + "wds = re.split('\\s+',t)\n", + "\n", + "# now populate a dictionary (wf)\n", + "wf = {}\n", + "for w in wds:\n", + " if w in wf: wf [w] = wf [w] + 1\n", + " else: wf [w] = 1\n", + "\n", + "# dictionaries can not be sorted, so lets get a sorted *list* \n", + "wfs = sorted (wf .items(), key = operator .itemgetter (1), reverse=True) \n", + "\n", + "# lets just have no more than 15 words \n", + "ml = min(len(wfs),15)\n", + "for i in range(1,ml,1):\n", + " print (wfs[i][0]+\"\\t\"+str(wfs[i][1])) " + ] + }, { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15 most frequent words in Dracula \n", + "van\t322\n", + "come\t325\n", + "time\t364\n", + "know\t382\n", + "see\t385\n", + "may\t409\n", + "shall\t426\n", + "would\t428\n", + "us\t447\n", + "must\t448\n", + "said\t461\n", + "one\t489\n", + "could\t490\n", + "\t790\n", + "\n", + "15 most frequent words in Frankenstein\n", + "eyes\t103\n", + "shall\t107\n", + "might\t108\n", + "first\t108\n", + "life\t109\n", + "every\t109\n", + "father\t111\n", + "may\t113\n", + "man\t125\n", + "upon\t128\n", + "yet\t152\n", + "would\t183\n", + "could\t197\n", + "one\t203\n" + ] + } + ], "source": [ + "#compare two books from different authors\n", "import requests, re, nltk\n", "from bs4 import BeautifulSoup\n", "from nltk import clean_html\n", @@ -179,114 +275,18 @@ " return (wfs [ 0:ml ] [::-1], tw)\n", " \n", "# Now populate two lists \n", - "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/1342.txt.utf-8')\n", - "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/76.txt.utf-8')" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Plot the results: are there striking differences in language?\n", - "import numpy as np\n", - "import pylab\n", - "import matplotlib.pyplot as plt\n", - "\n", - "%matplotlib inline\n", - "def plotTwoLists (wf_ee, wf_bu, title):\n", - " f = plt.figure (figsize=(10, 6))\n", - " # this is painfully tedious....\n", - " f .suptitle (title, fontsize=20)\n", - " ax = f.add_subplot(111)\n", - " ax .spines ['top'] .set_color ('none')\n", - " ax .spines ['bottom'] .set_color ('none')\n", - " ax .spines ['left'] .set_color ('none')\n", - " ax .spines ['right'] .set_color ('none')\n", - " ax .tick_params (labelcolor='w', top='off', bottom='off', left='off', right='off', labelsize=20)\n", - "\n", - " # Create two subplots, this is the first one\n", - " ax1 = f .add_subplot (121)\n", - " plt .subplots_adjust (wspace=.5)\n", - "\n", - " pos = np .arange (len(wf_ee)+1) \n", - " ax1 .tick_params (axis='both', which='major', labelsize=14)\n", - " pylab .yticks (pos, [ x [0] for x in wf_ee ])\n", - " ax1 .barh (range(len(wf_ee)), [ x [1] for x in wf_ee ], align='center')\n", - "\n", - " ax2 = f .add_subplot (122)\n", - " ax2 .tick_params (axis='both', which='major', labelsize=14)\n", - " pos = np .arange (len(wf_bu)+1) \n", - " pylab .yticks (pos, [ x [0] for x in wf_bu ])\n", - " ax2 .barh (range (len(wf_bu)), [ x [1] for x in wf_bu ], align='center')\n", - "\n", - "plotTwoLists (wf_ee, wf_bu, 'Difference between Pride and Prejudice and Huck Finn')" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "and\t2836\n", - "of\t2676\n", - "to\t2646\n", - "a\t2217\n", - "in\t1422\n", - "his\t1205\n", - "he\t928\n", - "that\t920\n", - "was\t823\n", - "for\t798\n", - "with\t797\n", - "as\t672\n", - "I\t505\n", - "you\t497\n" - ] - } - ], - "source": [ - "#In case Project gutenberg is blocked you can download text to your laptop and copy to the docker container via scp\n", - "#Assuming the file name you copy is pg4680.txt here is how you change the script\n", - "# Please note the option errors='replace'\n", - "# without it python invariably runs into unicode errors\n", - "f = open ('pg4680.txt', 'r', encoding=\"ascii\", errors='replace')\n", - " \n", - "# What comes back includes headers and other HTTP stuff, get just the body of the response\n", - "t = f.read()\n", - "\n", - "# obtain words by splitting a string using as separator one or more (+) space/like characters (\\s) \n", - "wds = re.split('\\s+',t)\n", - "\n", - "# now populate a dictionary (wf)\n", - "wf = {}\n", - "for w in wds:\n", - " if w in wf: wf [w] = wf [w] + 1\n", - " else: wf [w] = 1\n", - "\n", - "# dictionaries can not be sorted, so lets get a sorted *list* \n", - "wfs = sorted (wf .items(), key = operator .itemgetter (1), reverse=True) \n", + "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/345.txt.utf-8')\n", + "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/84.txt.utf-8')\n", "\n", - "# lets just have no more than 15 words \n", - "ml = min(len(wfs),15)\n", + "print(\"15 most frequent words in Dracula \")\n", + "ml = min(len(wf_ee),15)\n", "for i in range(1,ml,1):\n", - " print (wfs[i][0]+\"\\t\"+str(wfs[i][1])) " + " print (wf_ee[i][0]+\"\\t\"+str(wf_ee[i][1]))\n", + " \n", + "print(\"\\n15 most frequent words in Frankenstein\")\n", + "ml = min(len(wf_bu),15)\n", + "for i in range(1,ml,1):\n", + " print (wf_bu[i][0]+\"\\t\"+str(wf_bu[i][1]))" ] }, { @@ -312,55 +312,773 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "101 most frequent words in The Illiad and The Odyssey by Homer \n", + "# 1\n", + "fields\t125 uses in The Illiad\n", + "place\t91 uses in The Odyssey\n", + "\n", + "\n", + "# 2\n", + "next\t126 uses in The Illiad\n", + "whether\t93 uses in The Odyssey\n", + "\n", + "\n", + "# 3\n", + "whole\t126 uses in The Illiad\n", + "“i\t94 uses in The Odyssey\n", + "\n", + "\n", + "# 4\n", + "fury\t126 uses in The Illiad\n", + "find\t95 uses in The Odyssey\n", + "\n", + "\n", + "# 5\n", + "beneath\t128 uses in The Illiad\n", + "return\t95 uses in The Odyssey\n", + "\n", + "\n", + "# 6\n", + "along\t128 uses in The Illiad\n", + "end\t96 uses in The Odyssey\n", + "\n", + "\n", + "# 7\n", + "power\t129 uses in The Illiad\n", + "however\t96 uses in The Odyssey\n", + "\n", + "\n", + "# 8\n", + "full\t130 uses in The Illiad\n", + "ithaca\t98 uses in The Odyssey\n", + "\n", + "\n", + "# 9\n", + "host\t130 uses in The Illiad\n", + "hand\t99 uses in The Odyssey\n", + "\n", + "\n", + "# 10\n", + "last\t130 uses in The Illiad\n", + "heard\t101 uses in The Odyssey\n", + "\n", + "\n", + "# 11\n", + "even\t130 uses in The Illiad\n", + "going\t102 uses in The Odyssey\n", + "\n", + "\n", + "# 12\n", + "spear\t130 uses in The Illiad\n", + "soon\t103 uses in The Odyssey\n", + "\n", + "\n", + "# 13\n", + "heart\t132 uses in The Illiad\n", + "gave\t104 uses in The Odyssey\n", + "\n", + "\n", + "# 14\n", + "two\t135 uses in The Illiad\n", + "well\t104 uses in The Odyssey\n", + "\n", + "\n", + "# 15\n", + "arm\t136 uses in The Illiad\n", + "work\t104 uses in The Odyssey\n", + "\n", + "\n", + "# 16\n", + "steeds\t137 uses in The Illiad\n", + "penelope\t106 uses in The Odyssey\n", + "\n", + "\n", + "# 17\n", + "flies\t138 uses in The Illiad\n", + "yet\t106 uses in The Odyssey\n", + "\n", + "\n", + "# 18\n", + "swift\t138 uses in The Illiad\n", + "country\t106 uses in The Odyssey\n", + "\n", + "\n", + "# 19\n", + "us\t140 uses in The Illiad\n", + "water\t110 uses in The Odyssey\n", + "\n", + "\n", + "# 20\n", + "hero\t141 uses in The Illiad\n", + "wine\t111 uses in The Odyssey\n", + "\n", + "\n", + "# 21\n", + "fair\t143 uses in The Illiad\n", + "brought\t112 uses in The Odyssey\n", + "\n", + "\n", + "# 22\n", + "slain\t144 uses in The Illiad\n", + "say\t112 uses in The Odyssey\n", + "\n", + "\n", + "# 23\n", + "sacred\t144 uses in The Illiad\n", + "another\t114 uses in The Odyssey\n", + "\n", + "\n", + "# 24\n", + "care\t144 uses in The Illiad\n", + "thus\t115 uses in The Odyssey\n", + "\n", + "\n", + "# 25\n", + "stood\t144 uses in The Illiad\n", + "every\t116 uses in The Odyssey\n", + "\n", + "\n", + "# 26\n", + "see\t144 uses in The Illiad\n", + "told\t117 uses in The Odyssey\n", + "\n", + "\n", + "# 27\n", + "way\t144 uses in The Illiad\n", + "might\t119 uses in The Odyssey\n", + "\n", + "\n", + "# 28\n", + "foe\t145 uses in The Illiad\n", + "without\t120 uses in The Odyssey\n", + "\n", + "\n", + "# 29\n", + "dead\t145 uses in The Illiad\n", + "first\t120 uses in The Odyssey\n", + "\n", + "\n", + "# 30\n", + "shore\t146 uses in The Illiad\n", + "time\t122 uses in The Odyssey\n", + "\n", + "\n", + "# 31\n", + "skies\t147 uses in The Illiad\n", + "left\t126 uses in The Odyssey\n", + "\n", + "\n", + "# 32\n", + "spoke\t148 uses in The Illiad\n", + "put\t126 uses in The Odyssey\n", + "\n", + "\n", + "# 33\n", + "ajax\t150 uses in The Illiad\n", + "therefore\t126 uses in The Odyssey\n", + "\n", + "\n", + "# 34\n", + "fall\t151 uses in The Illiad\n", + "saw\t128 uses in The Odyssey\n", + "\n", + "\n", + "# 35\n", + "train\t151 uses in The Illiad\n", + "never\t130 uses in The Odyssey\n", + "\n", + "\n", + "# 36\n", + "brave\t152 uses in The Illiad\n", + "must\t132 uses in The Odyssey\n", + "\n", + "\n", + "# 37\n", + "soul\t152 uses in The Illiad\n", + "day\t132 uses in The Odyssey\n", + "\n", + "\n", + "# 38\n", + "far\t152 uses in The Illiad\n", + "know\t136 uses in The Odyssey\n", + "\n", + "\n", + "# 39\n", + "men\t153 uses in The Illiad\n", + "many\t137 uses in The Odyssey\n", + "\n", + "\n", + "# 40\n", + "till\t154 uses in The Illiad\n", + "though\t138 uses in The Odyssey\n", + "\n", + "\n", + "# 41\n", + "blood\t156 uses in The Illiad\n", + "\t139 uses in The Odyssey\n", + "\n", + "\n", + "# 42\n", + "homer\t157 uses in The Illiad\n", + "give\t140 uses in The Odyssey\n", + "\n", + "\n", + "# 43\n", + "race\t159 uses in The Illiad\n", + "away\t141 uses in The Odyssey\n", + "\n", + "\n", + "# 44\n", + "head\t159 uses in The Illiad\n", + "even\t142 uses in The Odyssey\n", + "\n", + "\n", + "# 45\n", + "fierce\t160 uses in The Illiad\n", + "two\t142 uses in The Odyssey\n", + "\n", + "\n", + "# 46\n", + "grecian\t163 uses in The Illiad\n", + "hands\t143 uses in The Odyssey\n", + "\n", + "\n", + "# 47\n", + "long\t164 uses in The Illiad\n", + "round\t144 uses in The Odyssey\n", + "\n", + "\n", + "# 48\n", + "must\t165 uses in The Illiad\n", + "among\t145 uses in The Odyssey\n", + "\n", + "\n", + "# 49\n", + "death\t166 uses in The Illiad\n", + "minerva\t148 uses in The Odyssey\n", + "\n", + "\n", + "# 50\n", + "still\t169 uses in The Illiad\n", + "get\t148 uses in The Odyssey\n", + "\n", + "\n", + "# 51\n", + "every\t171 uses in The Illiad\n", + "heaven\t149 uses in The Odyssey\n", + "\n", + "\n", + "# 52\n", + "around\t172 uses in The Illiad\n", + "old\t149 uses in The Odyssey\n", + "\n", + "\n", + "# 53\n", + "bold\t172 uses in The Illiad\n", + "long\t150 uses in The Odyssey\n", + "\n", + "\n", + "# 54\n", + "man\t174 uses in The Illiad\n", + "answered\t154 uses in The Odyssey\n", + "\n", + "\n", + "# 55\n", + "breast\t179 uses in The Illiad\n", + "jove\t157 uses in The Odyssey\n", + "\n", + "\n", + "# 56\n", + "ground\t180 uses in The Illiad\n", + "till\t158 uses in The Odyssey\n", + "\n", + "\n", + "# 57\n", + "said\t180 uses in The Illiad\n", + "also\t160 uses in The Odyssey\n", + "\n", + "\n", + "# 58\n", + "rage\t185 uses in The Illiad\n", + "way\t163 uses in The Odyssey\n", + "\n", + "\n", + "# 59\n", + "round\t185 uses in The Illiad\n", + "like\t166 uses in The Odyssey\n", + "\n", + "\n", + "# 60\n", + "king\t188 uses in The Illiad\n", + "set\t167 uses in The Odyssey\n", + "\n", + "\n", + "# 61\n", + "field\t199 uses in The Illiad\n", + "still\t172 uses in The Odyssey\n", + "\n", + "\n", + "# 62\n", + "greeks\t199 uses in The Illiad\n", + "people\t175 uses in The Odyssey\n", + "\n", + "\n", + "# 63\n", + "thee\t205 uses in The Illiad\n", + "gods\t175 uses in The Odyssey\n", + "\n", + "\n", + "# 64\n", + "vain\t207 uses in The Illiad\n", + "got\t179 uses in The Odyssey\n", + "\n", + "\n", + "# 65\n", + "force\t210 uses in The Illiad\n", + "make\t181 uses in The Odyssey\n", + "\n", + "\n", + "# 66\n", + "high\t215 uses in The Illiad\n", + "great\t185 uses in The Odyssey\n", + "\n", + "\n", + "# 67\n", + "fate\t216 uses in The Illiad\n", + "father\t185 uses in The Odyssey\n", + "\n", + "\n", + "# 68\n", + "greece\t220 uses in The Illiad\n", + "[\t186 uses in The Odyssey\n", + "\n", + "\n", + "# 69\n", + "eyes\t221 uses in The Illiad\n", + "sea\t186 uses in The Odyssey\n", + "\n", + "\n", + "# 70\n", + "heaven\t222 uses in The Illiad\n", + "took\t191 uses in The Odyssey\n", + "\n", + "\n", + "# 71\n", + "trojan\t223 uses in The Illiad\n", + "let\t199 uses in The Odyssey\n", + "\n", + "\n", + "# 72\n", + "like\t234 uses in The Illiad\n", + "take\t199 uses in The Odyssey\n", + "\n", + "\n", + "# 73\n", + "whose\t237 uses in The Illiad\n", + "back\t199 uses in The Odyssey\n", + "\n", + "\n", + "# 74\n", + "may\t237 uses in The Illiad\n", + "good\t202 uses in The Odyssey\n", + "\n", + "\n", + "# 75\n", + "day\t238 uses in The Illiad\n", + "much\t204 uses in The Odyssey\n", + "\n", + "\n", + "# 76\n", + "fight\t238 uses in The Illiad\n", + "came\t211 uses in The Odyssey\n", + "\n", + "\n", + "# 77\n", + "plain\t239 uses in The Illiad\n", + "shall\t215 uses in The Odyssey\n", + "\n", + "\n", + "# 78\n", + "hand\t246 uses in The Illiad\n", + "ship\t217 uses in The Odyssey\n", + "\n", + "\n", + "# 79\n", + "chief\t247 uses in The Illiad\n", + "made\t218 uses in The Odyssey\n", + "\n", + "\n", + "# 80\n", + "let\t270 uses in The Illiad\n", + "could\t218 uses in The Odyssey\n", + "\n", + "\n", + "# 81\n", + "son\t271 uses in The Illiad\n", + "home\t222 uses in The Odyssey\n", + "\n", + "\n", + "# 82\n", + "gods\t272 uses in The Illiad\n", + "suitors\t235 uses in The Odyssey\n", + "\n", + "\n", + "# 83\n", + "troy\t275 uses in The Illiad\n", + "telemachus\t245 uses in The Odyssey\n", + "\n", + "\n", + "# 84\n", + "god\t277 uses in The Illiad\n", + "son\t256 uses in The Odyssey\n", + "\n", + "\n", + "# 85\n", + "first\t284 uses in The Illiad\n", + "see\t256 uses in The Odyssey\n", + "\n", + "\n", + "# 86\n", + "jove\t306 uses in The Illiad\n", + "tell\t261 uses in The Odyssey\n", + "\n", + "\n", + "# 87\n", + "war\t310 uses in The Illiad\n", + "may\t264 uses in The Odyssey\n", + "\n", + "\n", + "# 88\n", + "yet\t311 uses in The Illiad\n", + "go\t265 uses in The Odyssey\n", + "\n", + "\n", + "# 89\n", + "\t311 uses in The Illiad\n", + "upon\t270 uses in The Odyssey\n", + "\n", + "\n", + "# 90\n", + "achilles\t313 uses in The Illiad\n", + "come\t280 uses in The Odyssey\n", + "\n", + "\n", + "# 91\n", + "thou\t336 uses in The Illiad\n", + "went\t300 uses in The Odyssey\n", + "\n", + "\n", + "# 92\n", + "one\t342 uses in The Illiad\n", + "us\t300 uses in The Odyssey\n", + "\n", + "\n", + "# 93\n", + "hector\t347 uses in The Illiad\n", + "man\t310 uses in The Odyssey\n", + "\n", + "\n", + "# 94\n", + "o’er\t363 uses in The Illiad\n", + "men\t311 uses in The Odyssey\n", + "\n", + "\n", + "# 95\n", + "arms\t426 uses in The Illiad\n", + "would\t380 uses in The Odyssey\n", + "\n", + "\n", + "# 96\n", + "great\t462 uses in The Illiad\n", + "house\t382 uses in The Odyssey\n", + "\n", + "\n", + "# 97\n", + "shall\t504 uses in The Illiad\n", + "said\t482 uses in The Odyssey\n", + "\n", + "\n", + "# 98\n", + "thus\t606 uses in The Illiad\n", + "one\t549 uses in The Odyssey\n", + "\n", + "\n", + "# 99\n", + "thy\t931 uses in The Illiad\n", + "ulysses\t581 uses in The Odyssey\n", + "\n", + "\n" + ] + } + ], "source": [ + "#compare two books from different same author\n", "import requests, re, nltk\n", - "#In case your text is not on Project Gutenberg but at some other URL\n", - "#http://www.fullbooks.com/Our-World-or-The-Slaveholders-Daughter2.html\n", - "# that contains 12 parts\n", - "t = \"\"\n", - "for i in range(2,13):\n", - " r = requests .get('http://www.fullbooks.com/Our-World-or-The-Slaveholders-Daughter' + str(i) + '.html')\n", - " t = t + r.text" + "from bs4 import BeautifulSoup\n", + "from nltk import clean_html\n", + "from collections import Counter\n", + "import operator\n", + "\n", + "# we may not care about the usage of stop words\n", + "stop_words = nltk.corpus.stopwords.words('english') + [\n", + " 'ut', '\\'re','.', ',', '--', '\\'s', '?', ')', '(', ':', '\\'',\n", + " '\\\"', '-', '}', '{', '&', '|', u'\\u2014', '\\n' ]\n", + "\n", + "# We most likely would like to remove html markup\n", + "def cleanHtml (html):\n", + " from bs4 import BeautifulSoup\n", + " soup = BeautifulSoup(html, 'html.parser')\n", + " return soup .get_text()\n", + "\n", + "# We also want to remove special characters, quotes, etc. from each word\n", + "def cleanWord (w):\n", + " # r in r'[.,\"\\']' tells to treat \\ as a regular character \n", + " # but we need to escape ' with \\'\n", + " # any character between the brackets [] is to be removed \n", + " wn = re.sub('[,\"\\.\\'&\\|:@>*;/=]', \"\", w)\n", + " # get rid of numbers\n", + " return re.sub('^[0-9\\.]*$', \"\", wn)\n", + " \n", + "# define a function to get text/clean/calculate frequency\n", + "def get_wf (URL):\n", + " # first get the web page\n", + " r = requests .get(URL)\n", + " number_of_words = 100\n", + " # Now clean\n", + " # remove html markup\n", + " t = cleanHtml (r .text) .lower()\n", + " \n", + " # split string into an array of words using any sequence of spaces \"\\s+\" \n", + " wds = re .split('\\s+',t)\n", + " \n", + " # remove periods, commas, etc stuck to the edges of words\n", + " for i in range(len(wds)):\n", + " wds [i] = cleanWord (wds [i])\n", + " \n", + " # If satisfied with results, lets go to the next step: calculate frequencies\n", + " # We can write a loop to create a dictionary, but \n", + " # there is a special function for everything in python\n", + " # in particular for counting frequencies (like function table() in R)\n", + " wf = Counter (wds)\n", + " \n", + " # Remove stop words from the dictionary wf\n", + " for k in stop_words:\n", + " wf. pop(k, None)\n", + " \n", + " #how many regular words in the document?\n", + " tw = 0\n", + " for w in wf:\n", + " tw += wf[w] \n", + " \n", + " \n", + " # Get ordered list\n", + " wfs = sorted (wf .items(), key = operator.itemgetter(1), reverse=True)\n", + " ml = min(len(wfs),number_of_words)\n", + "\n", + " #Reverse the list because barh plots items from the bottom\n", + " return (wfs [ 0:ml ] [::-1], tw)\n", + " \n", + "# Now populate two lists \n", + "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/6130.txt.utf-8')\n", + "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/1727.txt.utf-8')\n", + "\n", + "num = 100\n", + "\n", + "print(number_of_words,\" most frequent words in The Illiad and The Odyssey by Homer \")\n", + "\n", + "\n", + "ml = min(len(wf_ee),num)\n", + "rank = 1\n", + "for i in range(1,ml,1):\n", + " print (\"#\",rank,)\n", + " print (wf_ee[i][0]+\"\\t\"+str(wf_ee[i][1]), \"uses in The Illiad\")\n", + " print (wf_bu[i][0]+\"\\t\"+str(wf_bu[i][1]), \"uses in The Odyssey\")\n", + " print('\\n')\n", + " rank+=1" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 29, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "1323653" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "15 most frequent words in Dracula and Frankenstein \n", + "# 1\n", + "van\t322 uses in Dracula\n", + "eyes\t103 uses in Frankenstein\n", + "\n", + "\n", + "# 2\n", + "come\t325 uses in Dracula\n", + "shall\t107 uses in Frankenstein\n", + "\n", + "\n", + "# 3\n", + "time\t364 uses in Dracula\n", + "might\t108 uses in Frankenstein\n", + "\n", + "\n", + "# 4\n", + "know\t382 uses in Dracula\n", + "first\t108 uses in Frankenstein\n", + "\n", + "\n", + "# 5\n", + "see\t385 uses in Dracula\n", + "life\t109 uses in Frankenstein\n", + "\n", + "\n", + "# 6\n", + "may\t409 uses in Dracula\n", + "every\t109 uses in Frankenstein\n", + "\n", + "\n", + "# 7\n", + "shall\t426 uses in Dracula\n", + "father\t111 uses in Frankenstein\n", + "\n", + "\n", + "# 8\n", + "would\t428 uses in Dracula\n", + "may\t113 uses in Frankenstein\n", + "\n", + "\n", + "# 9\n", + "us\t447 uses in Dracula\n", + "man\t125 uses in Frankenstein\n", + "\n", + "\n", + "# 10\n", + "must\t448 uses in Dracula\n", + "upon\t128 uses in Frankenstein\n", + "\n", + "\n", + "# 11\n", + "said\t461 uses in Dracula\n", + "yet\t152 uses in Frankenstein\n", + "\n", + "\n", + "# 12\n", + "one\t489 uses in Dracula\n", + "would\t183 uses in Frankenstein\n", + "\n", + "\n", + "# 13\n", + "could\t490 uses in Dracula\n", + "could\t197 uses in Frankenstein\n", + "\n", + "\n", + "# 14\n", + "\t790 uses in Dracula\n", + "one\t203 uses in Frankenstein\n", + "\n", + "\n" + ] } ], "source": [ - "len(t)" + "#compare two books from different authors\n", + "import requests, re, nltk\n", + "from bs4 import BeautifulSoup\n", + "from nltk import clean_html\n", + "from collections import Counter\n", + "import operator\n", + "\n", + "# we may not care about the usage of stop words\n", + "stop_words = nltk.corpus.stopwords.words('english') + [\n", + " 'ut', '\\'re','.', ',', '--', '\\'s', '?', ')', '(', ':', '\\'',\n", + " '\\\"', '-', '}', '{', '&', '|', u'\\u2014' ]\n", + "\n", + "# We most likely would like to remove html markup\n", + "def cleanHtml (html):\n", + " from bs4 import BeautifulSoup\n", + " soup = BeautifulSoup(html, 'html.parser')\n", + " return soup .get_text()\n", + "\n", + "# We also want to remove special characters, quotes, etc. from each word\n", + "def cleanWord (w):\n", + " # r in r'[.,\"\\']' tells to treat \\ as a regular character \n", + " # but we need to escape ' with \\'\n", + " # any character between the brackets [] is to be removed \n", + " wn = re.sub('[,\"\\.\\'&\\|:@>*;/=]', \"\", w)\n", + " # get rid of numbers\n", + " return re.sub('^[0-9\\.]*$', \"\", wn)\n", + " \n", + "# define a function to get text/clean/calculate frequency\n", + "def get_wf (URL):\n", + " # first get the web page\n", + " r = requests .get(URL)\n", + " \n", + " # Now clean\n", + " # remove html markup\n", + " t = cleanHtml (r .text) .lower()\n", + " \n", + " # split string into an array of words using any sequence of spaces \"\\s+\" \n", + " wds = re .split('\\s+',t)\n", + " \n", + " # remove periods, commas, etc stuck to the edges of words\n", + " for i in range(len(wds)):\n", + " wds [i] = cleanWord (wds [i])\n", + " \n", + " # If satisfied with results, lets go to the next step: calculate frequencies\n", + " # We can write a loop to create a dictionary, but \n", + " # there is a special function for everything in python\n", + " # in particular for counting frequencies (like function table() in R)\n", + " wf = Counter (wds)\n", + " \n", + " # Remove stop words from the dictionary wf\n", + " for k in stop_words:\n", + " wf. pop(k, None)\n", + " \n", + " #how many regular words in the document?\n", + " tw = 0\n", + " for w in wf:\n", + " tw += wf[w] \n", + " \n", + " \n", + " # Get ordered list\n", + " wfs = sorted (wf .items(), key = operator.itemgetter(1), reverse=True)\n", + " ml = min(len(wfs),15)\n", + "\n", + " #Reverse the list because barh plots items from the bottom\n", + " return (wfs [ 0:ml ] [::-1], tw)\n", + " \n", + "# Now populate two lists \n", + "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/345.txt.utf-8')\n", + "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/84.txt.utf-8')\n", + "\n", + "print(\"15 most frequent words in Dracula and Frankenstein \")" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -374,7 +1092,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.2" + "version": "3.8.10" } }, "nbformat": 4, From 1d150e9f04ec04183ca8e64785790690603d1188 Mon Sep 17 00:00:00 2001 From: Alex Hickman Date: Wed, 14 Sep 2022 14:50:34 +0000 Subject: [PATCH 3/4] Changed project topic to analyze three different books --- ahickm18.ipynb | 816 +++++++------------------------------------------ 1 file changed, 107 insertions(+), 709 deletions(-) diff --git a/ahickm18.ipynb b/ahickm18.ipynb index 01e7733..6d0e83a 100644 --- a/ahickm18.ipynb +++ b/ahickm18.ipynb @@ -164,131 +164,6 @@ " print (wfs[i][0]+\"\\t\"+str(wfs[i][1])) " ] }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "15 most frequent words in Dracula \n", - "van\t322\n", - "come\t325\n", - "time\t364\n", - "know\t382\n", - "see\t385\n", - "may\t409\n", - "shall\t426\n", - "would\t428\n", - "us\t447\n", - "must\t448\n", - "said\t461\n", - "one\t489\n", - "could\t490\n", - "\t790\n", - "\n", - "15 most frequent words in Frankenstein\n", - "eyes\t103\n", - "shall\t107\n", - "might\t108\n", - "first\t108\n", - "life\t109\n", - "every\t109\n", - "father\t111\n", - "may\t113\n", - "man\t125\n", - "upon\t128\n", - "yet\t152\n", - "would\t183\n", - "could\t197\n", - "one\t203\n" - ] - } - ], - "source": [ - "#compare two books from different authors\n", - "import requests, re, nltk\n", - "from bs4 import BeautifulSoup\n", - "from nltk import clean_html\n", - "from collections import Counter\n", - "import operator\n", - "\n", - "# we may not care about the usage of stop words\n", - "stop_words = nltk.corpus.stopwords.words('english') + [\n", - " 'ut', '\\'re','.', ',', '--', '\\'s', '?', ')', '(', ':', '\\'',\n", - " '\\\"', '-', '}', '{', '&', '|', u'\\u2014' ]\n", - "\n", - "# We most likely would like to remove html markup\n", - "def cleanHtml (html):\n", - " from bs4 import BeautifulSoup\n", - " soup = BeautifulSoup(html, 'html.parser')\n", - " return soup .get_text()\n", - "\n", - "# We also want to remove special characters, quotes, etc. from each word\n", - "def cleanWord (w):\n", - " # r in r'[.,\"\\']' tells to treat \\ as a regular character \n", - " # but we need to escape ' with \\'\n", - " # any character between the brackets [] is to be removed \n", - " wn = re.sub('[,\"\\.\\'&\\|:@>*;/=]', \"\", w)\n", - " # get rid of numbers\n", - " return re.sub('^[0-9\\.]*$', \"\", wn)\n", - " \n", - "# define a function to get text/clean/calculate frequency\n", - "def get_wf (URL):\n", - " # first get the web page\n", - " r = requests .get(URL)\n", - " \n", - " # Now clean\n", - " # remove html markup\n", - " t = cleanHtml (r .text) .lower()\n", - " \n", - " # split string into an array of words using any sequence of spaces \"\\s+\" \n", - " wds = re .split('\\s+',t)\n", - " \n", - " # remove periods, commas, etc stuck to the edges of words\n", - " for i in range(len(wds)):\n", - " wds [i] = cleanWord (wds [i])\n", - " \n", - " # If satisfied with results, lets go to the next step: calculate frequencies\n", - " # We can write a loop to create a dictionary, but \n", - " # there is a special function for everything in python\n", - " # in particular for counting frequencies (like function table() in R)\n", - " wf = Counter (wds)\n", - " \n", - " # Remove stop words from the dictionary wf\n", - " for k in stop_words:\n", - " wf. pop(k, None)\n", - " \n", - " #how many regular words in the document?\n", - " tw = 0\n", - " for w in wf:\n", - " tw += wf[w] \n", - " \n", - " \n", - " # Get ordered list\n", - " wfs = sorted (wf .items(), key = operator.itemgetter(1), reverse=True)\n", - " ml = min(len(wfs),15)\n", - "\n", - " #Reverse the list because barh plots items from the bottom\n", - " return (wfs [ 0:ml ] [::-1], tw)\n", - " \n", - "# Now populate two lists \n", - "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/345.txt.utf-8')\n", - "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/84.txt.utf-8')\n", - "\n", - "print(\"15 most frequent words in Dracula \")\n", - "ml = min(len(wf_ee),15)\n", - "for i in range(1,ml,1):\n", - " print (wf_ee[i][0]+\"\\t\"+str(wf_ee[i][1]))\n", - " \n", - "print(\"\\n15 most frequent words in Frankenstein\")\n", - "ml = min(len(wf_bu),15)\n", - "for i in range(1,ml,1):\n", - " print (wf_bu[i][0]+\"\\t\"+str(wf_bu[i][1]))" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -312,509 +187,56 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "#I am going to compare two of the most popular books written by H. G. Wells\n", + "#\"The War of the Worlds\"\n", + "#\"The First Men In The Moon\"\n", + "#Both of the above works deal with Extra terrestial sci fi adventures so they have a basis to be compared and analyzed\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "101 most frequent words in The Illiad and The Odyssey by Homer \n", - "# 1\n", - "fields\t125 uses in The Illiad\n", - "place\t91 uses in The Odyssey\n", - "\n", - "\n", - "# 2\n", - "next\t126 uses in The Illiad\n", - "whether\t93 uses in The Odyssey\n", - "\n", - "\n", - "# 3\n", - "whole\t126 uses in The Illiad\n", - "“i\t94 uses in The Odyssey\n", - "\n", - "\n", - "# 4\n", - "fury\t126 uses in The Illiad\n", - "find\t95 uses in The Odyssey\n", - "\n", - "\n", - "# 5\n", - "beneath\t128 uses in The Illiad\n", - "return\t95 uses in The Odyssey\n", - "\n", - "\n", - "# 6\n", - "along\t128 uses in The Illiad\n", - "end\t96 uses in The Odyssey\n", - "\n", - "\n", - "# 7\n", - "power\t129 uses in The Illiad\n", - "however\t96 uses in The Odyssey\n", - "\n", - "\n", - "# 8\n", - "full\t130 uses in The Illiad\n", - "ithaca\t98 uses in The Odyssey\n", - "\n", - "\n", - "# 9\n", - "host\t130 uses in The Illiad\n", - "hand\t99 uses in The Odyssey\n", - "\n", - "\n", - "# 10\n", - "last\t130 uses in The Illiad\n", - "heard\t101 uses in The Odyssey\n", - "\n", - "\n", - "# 11\n", - "even\t130 uses in The Illiad\n", - "going\t102 uses in The Odyssey\n", - "\n", - "\n", - "# 12\n", - "spear\t130 uses in The Illiad\n", - "soon\t103 uses in The Odyssey\n", - "\n", - "\n", - "# 13\n", - "heart\t132 uses in The Illiad\n", - "gave\t104 uses in The Odyssey\n", - "\n", - "\n", - "# 14\n", - "two\t135 uses in The Illiad\n", - "well\t104 uses in The Odyssey\n", - "\n", - "\n", - "# 15\n", - "arm\t136 uses in The Illiad\n", - "work\t104 uses in The Odyssey\n", - "\n", - "\n", - "# 16\n", - "steeds\t137 uses in The Illiad\n", - "penelope\t106 uses in The Odyssey\n", - "\n", - "\n", - "# 17\n", - "flies\t138 uses in The Illiad\n", - "yet\t106 uses in The Odyssey\n", - "\n", - "\n", - "# 18\n", - "swift\t138 uses in The Illiad\n", - "country\t106 uses in The Odyssey\n", - "\n", - "\n", - "# 19\n", - "us\t140 uses in The Illiad\n", - "water\t110 uses in The Odyssey\n", - "\n", - "\n", - "# 20\n", - "hero\t141 uses in The Illiad\n", - "wine\t111 uses in The Odyssey\n", - "\n", - "\n", - "# 21\n", - "fair\t143 uses in The Illiad\n", - "brought\t112 uses in The Odyssey\n", - "\n", - "\n", - "# 22\n", - "slain\t144 uses in The Illiad\n", - "say\t112 uses in The Odyssey\n", - "\n", - "\n", - "# 23\n", - "sacred\t144 uses in The Illiad\n", - "another\t114 uses in The Odyssey\n", - "\n", - "\n", - "# 24\n", - "care\t144 uses in The Illiad\n", - "thus\t115 uses in The Odyssey\n", - "\n", - "\n", - "# 25\n", - "stood\t144 uses in The Illiad\n", - "every\t116 uses in The Odyssey\n", - "\n", - "\n", - "# 26\n", - "see\t144 uses in The Illiad\n", - "told\t117 uses in The Odyssey\n", - "\n", - "\n", - "# 27\n", - "way\t144 uses in The Illiad\n", - "might\t119 uses in The Odyssey\n", - "\n", - "\n", - "# 28\n", - "foe\t145 uses in The Illiad\n", - "without\t120 uses in The Odyssey\n", - "\n", - "\n", - "# 29\n", - "dead\t145 uses in The Illiad\n", - "first\t120 uses in The Odyssey\n", - "\n", - "\n", - "# 30\n", - "shore\t146 uses in The Illiad\n", - "time\t122 uses in The Odyssey\n", - "\n", - "\n", - "# 31\n", - "skies\t147 uses in The Illiad\n", - "left\t126 uses in The Odyssey\n", - "\n", - "\n", - "# 32\n", - "spoke\t148 uses in The Illiad\n", - "put\t126 uses in The Odyssey\n", - "\n", - "\n", - "# 33\n", - "ajax\t150 uses in The Illiad\n", - "therefore\t126 uses in The Odyssey\n", - "\n", - "\n", - "# 34\n", - "fall\t151 uses in The Illiad\n", - "saw\t128 uses in The Odyssey\n", - "\n", - "\n", - "# 35\n", - "train\t151 uses in The Illiad\n", - "never\t130 uses in The Odyssey\n", - "\n", - "\n", - "# 36\n", - "brave\t152 uses in The Illiad\n", - "must\t132 uses in The Odyssey\n", - "\n", - "\n", - "# 37\n", - "soul\t152 uses in The Illiad\n", - "day\t132 uses in The Odyssey\n", - "\n", - "\n", - "# 38\n", - "far\t152 uses in The Illiad\n", - "know\t136 uses in The Odyssey\n", - "\n", - "\n", - "# 39\n", - "men\t153 uses in The Illiad\n", - "many\t137 uses in The Odyssey\n", - "\n", - "\n", - "# 40\n", - "till\t154 uses in The Illiad\n", - "though\t138 uses in The Odyssey\n", - "\n", - "\n", - "# 41\n", - "blood\t156 uses in The Illiad\n", - "\t139 uses in The Odyssey\n", - "\n", - "\n", - "# 42\n", - "homer\t157 uses in The Illiad\n", - "give\t140 uses in The Odyssey\n", - "\n", - "\n", - "# 43\n", - "race\t159 uses in The Illiad\n", - "away\t141 uses in The Odyssey\n", - "\n", - "\n", - "# 44\n", - "head\t159 uses in The Illiad\n", - "even\t142 uses in The Odyssey\n", - "\n", - "\n", - "# 45\n", - "fierce\t160 uses in The Illiad\n", - "two\t142 uses in The Odyssey\n", - "\n", - "\n", - "# 46\n", - "grecian\t163 uses in The Illiad\n", - "hands\t143 uses in The Odyssey\n", - "\n", - "\n", - "# 47\n", - "long\t164 uses in The Illiad\n", - "round\t144 uses in The Odyssey\n", - "\n", - "\n", - "# 48\n", - "must\t165 uses in The Illiad\n", - "among\t145 uses in The Odyssey\n", - "\n", - "\n", - "# 49\n", - "death\t166 uses in The Illiad\n", - "minerva\t148 uses in The Odyssey\n", - "\n", - "\n", - "# 50\n", - "still\t169 uses in The Illiad\n", - "get\t148 uses in The Odyssey\n", - "\n", - "\n", - "# 51\n", - "every\t171 uses in The Illiad\n", - "heaven\t149 uses in The Odyssey\n", - "\n", - "\n", - "# 52\n", - "around\t172 uses in The Illiad\n", - "old\t149 uses in The Odyssey\n", - "\n", - "\n", - "# 53\n", - "bold\t172 uses in The Illiad\n", - "long\t150 uses in The Odyssey\n", - "\n", - "\n", - "# 54\n", - "man\t174 uses in The Illiad\n", - "answered\t154 uses in The Odyssey\n", - "\n", - "\n", - "# 55\n", - "breast\t179 uses in The Illiad\n", - "jove\t157 uses in The Odyssey\n", - "\n", - "\n", - "# 56\n", - "ground\t180 uses in The Illiad\n", - "till\t158 uses in The Odyssey\n", - "\n", - "\n", - "# 57\n", - "said\t180 uses in The Illiad\n", - "also\t160 uses in The Odyssey\n", - "\n", - "\n", - "# 58\n", - "rage\t185 uses in The Illiad\n", - "way\t163 uses in The Odyssey\n", - "\n", - "\n", - "# 59\n", - "round\t185 uses in The Illiad\n", - "like\t166 uses in The Odyssey\n", - "\n", - "\n", - "# 60\n", - "king\t188 uses in The Illiad\n", - "set\t167 uses in The Odyssey\n", - "\n", - "\n", - "# 61\n", - "field\t199 uses in The Illiad\n", - "still\t172 uses in The Odyssey\n", - "\n", - "\n", - "# 62\n", - "greeks\t199 uses in The Illiad\n", - "people\t175 uses in The Odyssey\n", - "\n", - "\n", - "# 63\n", - "thee\t205 uses in The Illiad\n", - "gods\t175 uses in The Odyssey\n", - "\n", - "\n", - "# 64\n", - "vain\t207 uses in The Illiad\n", - "got\t179 uses in The Odyssey\n", - "\n", - "\n", - "# 65\n", - "force\t210 uses in The Illiad\n", - "make\t181 uses in The Odyssey\n", - "\n", - "\n", - "# 66\n", - "high\t215 uses in The Illiad\n", - "great\t185 uses in The Odyssey\n", - "\n", - "\n", - "# 67\n", - "fate\t216 uses in The Illiad\n", - "father\t185 uses in The Odyssey\n", - "\n", - "\n", - "# 68\n", - "greece\t220 uses in The Illiad\n", - "[\t186 uses in The Odyssey\n", - "\n", - "\n", - "# 69\n", - "eyes\t221 uses in The Illiad\n", - "sea\t186 uses in The Odyssey\n", - "\n", - "\n", - "# 70\n", - "heaven\t222 uses in The Illiad\n", - "took\t191 uses in The Odyssey\n", - "\n", - "\n", - "# 71\n", - "trojan\t223 uses in The Illiad\n", - "let\t199 uses in The Odyssey\n", - "\n", - "\n", - "# 72\n", - "like\t234 uses in The Illiad\n", - "take\t199 uses in The Odyssey\n", - "\n", - "\n", - "# 73\n", - "whose\t237 uses in The Illiad\n", - "back\t199 uses in The Odyssey\n", - "\n", - "\n", - "# 74\n", - "may\t237 uses in The Illiad\n", - "good\t202 uses in The Odyssey\n", - "\n", - "\n", - "# 75\n", - "day\t238 uses in The Illiad\n", - "much\t204 uses in The Odyssey\n", - "\n", - "\n", - "# 76\n", - "fight\t238 uses in The Illiad\n", - "came\t211 uses in The Odyssey\n", - "\n", - "\n", - "# 77\n", - "plain\t239 uses in The Illiad\n", - "shall\t215 uses in The Odyssey\n", - "\n", - "\n", - "# 78\n", - "hand\t246 uses in The Illiad\n", - "ship\t217 uses in The Odyssey\n", - "\n", - "\n", - "# 79\n", - "chief\t247 uses in The Illiad\n", - "made\t218 uses in The Odyssey\n", - "\n", - "\n", - "# 80\n", - "let\t270 uses in The Illiad\n", - "could\t218 uses in The Odyssey\n", - "\n", - "\n", - "# 81\n", - "son\t271 uses in The Illiad\n", - "home\t222 uses in The Odyssey\n", - "\n", - "\n", - "# 82\n", - "gods\t272 uses in The Illiad\n", - "suitors\t235 uses in The Odyssey\n", - "\n", - "\n", - "# 83\n", - "troy\t275 uses in The Illiad\n", - "telemachus\t245 uses in The Odyssey\n", - "\n", - "\n", - "# 84\n", - "god\t277 uses in The Illiad\n", - "son\t256 uses in The Odyssey\n", - "\n", - "\n", - "# 85\n", - "first\t284 uses in The Illiad\n", - "see\t256 uses in The Odyssey\n", - "\n", - "\n", - "# 86\n", - "jove\t306 uses in The Illiad\n", - "tell\t261 uses in The Odyssey\n", - "\n", - "\n", - "# 87\n", - "war\t310 uses in The Illiad\n", - "may\t264 uses in The Odyssey\n", - "\n", - "\n", - "# 88\n", - "yet\t311 uses in The Illiad\n", - "go\t265 uses in The Odyssey\n", - "\n", - "\n", - "# 89\n", - "\t311 uses in The Illiad\n", - "upon\t270 uses in The Odyssey\n", - "\n", - "\n", - "# 90\n", - "achilles\t313 uses in The Illiad\n", - "come\t280 uses in The Odyssey\n", - "\n", - "\n", - "# 91\n", - "thou\t336 uses in The Illiad\n", - "went\t300 uses in The Odyssey\n", - "\n", - "\n", - "# 92\n", - "one\t342 uses in The Illiad\n", - "us\t300 uses in The Odyssey\n", - "\n", - "\n", - "# 93\n", - "hector\t347 uses in The Illiad\n", - "man\t310 uses in The Odyssey\n", - "\n", - "\n", - "# 94\n", - "o’er\t363 uses in The Illiad\n", - "men\t311 uses in The Odyssey\n", - "\n", - "\n", - "# 95\n", - "arms\t426 uses in The Illiad\n", - "would\t380 uses in The Odyssey\n", - "\n", - "\n", - "# 96\n", - "great\t462 uses in The Illiad\n", - "house\t382 uses in The Odyssey\n", - "\n", - "\n", - "# 97\n", - "shall\t504 uses in The Illiad\n", - "said\t482 uses in The Odyssey\n", - "\n", - "\n", - "# 98\n", - "thus\t606 uses in The Illiad\n", - "one\t549 uses in The Odyssey\n", - "\n", - "\n", - "# 99\n", - "thy\t931 uses in The Illiad\n", - "ulysses\t581 uses in The Odyssey\n", - "\n", - "\n" + " 15 most frequent words in The War of the Worlds\n", + "us\t104\n", + "little\t112\n", + "man\t113\n", + "black\t117\n", + "could\t117\n", + "time\t119\n", + "towards\t129\n", + "saw\t130\n", + "came\t148\n", + "people\t159\n", + "martians\t159\n", + "said\t166\n", + "upon\t173\n", + "one\t191\n", + "\n", + " 15 most frequent words in The First Men In The Moon\n", + "would\t134\n", + "must\t140\n", + "like\t151\n", + "seemed\t153\n", + "upon\t157\n", + "could\t158\n", + "time\t166\n", + "came\t167\n", + "moon\t190\n", + "little\t200\n", + "cavor\t231\n", + "us\t239\n", + "one\t274\n", + "said\t313\n" ] } ], @@ -850,7 +272,7 @@ "def get_wf (URL):\n", " # first get the web page\n", " r = requests .get(URL)\n", - " number_of_words = 100\n", + " number_of_words = 15\n", " # Now clean\n", " # remove html markup\n", " t = cleanHtml (r .text) .lower()\n", @@ -886,104 +308,72 @@ " return (wfs [ 0:ml ] [::-1], tw)\n", " \n", "# Now populate two lists \n", - "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/6130.txt.utf-8')\n", - "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/1727.txt.utf-8')\n", - "\n", - "num = 100\n", - "\n", - "print(number_of_words,\" most frequent words in The Illiad and The Odyssey by Homer \")\n", + "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/36.txt.utf-8')\n", + "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/1013.txt.utf-8')\n", "\n", + "num = 15 #change to match the number_of_words variable in function***********************************************\n", "\n", "ml = min(len(wf_ee),num)\n", "rank = 1\n", + "\n", + "print(\"\", num, \"most frequent words in The War of the Worlds\")\n", + "ml = min(len(wf_ee),num)\n", "for i in range(1,ml,1):\n", - " print (\"#\",rank,)\n", - " print (wf_ee[i][0]+\"\\t\"+str(wf_ee[i][1]), \"uses in The Illiad\")\n", - " print (wf_bu[i][0]+\"\\t\"+str(wf_bu[i][1]), \"uses in The Odyssey\")\n", - " print('\\n')\n", - " rank+=1" + " print (wf_ee[i][0]+\"\\t\"+str(wf_ee[i][1]))\n", + " \n", + "print(\"\\n\", num, \"most frequent words in The First Men In The Moon\")\n", + "ml = min(len(wf_bu),num)\n", + "for i in range(1,ml,1):\n", + " print (wf_bu[i][0]+\"\\t\"+str(wf_bu[i][1]))\n", + "\n", + "#for i in range(1,ml,1):\n", + "# print (\"#\",rank,)\n", + "# print (wf_ee[i][0]+\"\\t\"+str(wf_ee[i][1]), \"uses in The War of the Worlds\")\n", + "# print (wf_bu[i][0]+\"\\t\"+str(wf_bu[i][1]), \"uses in The First Men In The Moon\")\n", + "# print('\\n')\n", + "# rank+=1" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "15 most frequent words in Dracula and Frankenstein \n", - "# 1\n", - "van\t322 uses in Dracula\n", - "eyes\t103 uses in Frankenstein\n", - "\n", - "\n", - "# 2\n", - "come\t325 uses in Dracula\n", - "shall\t107 uses in Frankenstein\n", - "\n", - "\n", - "# 3\n", - "time\t364 uses in Dracula\n", - "might\t108 uses in Frankenstein\n", - "\n", - "\n", - "# 4\n", - "know\t382 uses in Dracula\n", - "first\t108 uses in Frankenstein\n", - "\n", - "\n", - "# 5\n", - "see\t385 uses in Dracula\n", - "life\t109 uses in Frankenstein\n", - "\n", - "\n", - "# 6\n", - "may\t409 uses in Dracula\n", - "every\t109 uses in Frankenstein\n", - "\n", - "\n", - "# 7\n", - "shall\t426 uses in Dracula\n", - "father\t111 uses in Frankenstein\n", - "\n", - "\n", - "# 8\n", - "would\t428 uses in Dracula\n", - "may\t113 uses in Frankenstein\n", - "\n", - "\n", - "# 9\n", - "us\t447 uses in Dracula\n", - "man\t125 uses in Frankenstein\n", - "\n", - "\n", - "# 10\n", - "must\t448 uses in Dracula\n", - "upon\t128 uses in Frankenstein\n", - "\n", - "\n", - "# 11\n", - "said\t461 uses in Dracula\n", - "yet\t152 uses in Frankenstein\n", - "\n", - "\n", - "# 12\n", - "one\t489 uses in Dracula\n", - "would\t183 uses in Frankenstein\n", - "\n", - "\n", - "# 13\n", - "could\t490 uses in Dracula\n", - "could\t197 uses in Frankenstein\n", - "\n", - "\n", - "# 14\n", - "\t790 uses in Dracula\n", - "one\t203 uses in Frankenstein\n", - "\n", - "\n" + "15 most frequent words in \"Space Prison\" \n", + "ragnarok\t110\n", + "day\t110\n", + "two\t113\n", + "time\t114\n", + "like\t122\n", + "back\t133\n", + "came\t140\n", + "gerns\t152\n", + "lake\t156\n", + "one\t212\n", + "could\t235\n", + "said\t269\n", + "would\t367\n", + "\t511\n", + "\n", + "15 most frequent words in \"The War of the Worlds\"\n", + "us\t104\n", + "little\t112\n", + "man\t113\n", + "black\t117\n", + "could\t117\n", + "time\t119\n", + "towards\t129\n", + "saw\t130\n", + "came\t148\n", + "people\t159\n", + "martians\t159\n", + "said\t166\n", + "upon\t173\n", + "one\t191\n" ] } ], @@ -1055,10 +445,18 @@ " return (wfs [ 0:ml ] [::-1], tw)\n", " \n", "# Now populate two lists \n", - "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/345.txt.utf-8')\n", - "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/84.txt.utf-8')\n", + "(wf_ee, tw_ee) = get_wf('http://www.gutenberg.org/ebooks/22549.txt.utf-8')\n", + "(wf_bu, tw_bu) = get_wf('http://www.gutenberg.org/ebooks/36.txt.utf-8')\n", "\n", - "print(\"15 most frequent words in Dracula and Frankenstein \")" + "print(\"15 most frequent words in \\\"Space Prison\\\" \")\n", + "ml = min(len(wf_ee),15)\n", + "for i in range(1,ml,1):\n", + " print (wf_ee[i][0]+\"\\t\"+str(wf_ee[i][1]))\n", + " \n", + "print(\"\\n15 most frequent words in \\\"The War of the Worlds\\\"\")\n", + "ml = min(len(wf_bu),15)\n", + "for i in range(1,ml,1):\n", + " print (wf_bu[i][0]+\"\\t\"+str(wf_bu[i][1]))" ] }, { From 43f78ed1be79f9c988ab4ae2bd0c00a2e0066c8a Mon Sep 17 00:00:00 2001 From: Alex Hickman Date: Wed, 14 Sep 2022 14:58:56 +0000 Subject: [PATCH 4/4] Added a graph representation of the most popular words between the books --- ahickm18.ipynb | 90 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/ahickm18.ipynb b/ahickm18.ipynb index 6d0e83a..91636f9 100644 --- a/ahickm18.ipynb +++ b/ahickm18.ipynb @@ -199,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -334,6 +334,58 @@ "# rank+=1" ] }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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tmDDhg0sWLDgYeBn4FJ//vFAgp8unAerVat2+5tvvllz0aJFv1WrVm3Y7t27x5hZ2LGMnHOpzrlE51xixLdERCQCJkyYQLVq1ZgzZw5Dhw5l0KBBXHzxxbRo0YL09HSuv/56brzxRjZs2JCv/N59912efPJJxowZw4oVK/jkk0/o2LEjAKNGjaJLly707duXDRs2sGHDBho1alSYmycih29TIIbxH6nRLlBxViZGEdm3b9++ypUrA8QHT3fObTGzvdWqVYurX78+9evXX+ucyzSzP/wkG51zm8LlaWZVy5UrN/iTTz4p161bt1+B7vPmzfvRbwG/BThooFb/114KQPmj6kRuA0VEIuT4449n+PDhANx55508+uijVKxYkdtv99oZ7rvvPh577DFmzJhBYmLebQVr1qwhISGBc845h4oVK3LMMcdkLxcfH0+lSpWIjY2lfv36ueaRmppKaqr3XZ65c8sRbqGISOErEy3YW7duDdTIYftYV6tWrbr/cnl+83z66advzcrKqtSzZ8/y5cqVizezeWa2HbgJb8ztgwS3YJePjQ+XREQkqtq1a5f92syoW7cubdu2zZ5WsWJFatSowcaNG/OV3+WXX87u3btp0qQJN9xwA++88w579uwpUJlSUlJIT08nPT0d1Z0iUhKUiQD7559//sV/eY6Z5ZhXoUKF8tWrV68P7ARm5zPLPl26dHkQ4PTTT7/WOdceONF/HA+cE4Fii4gUuQOXrHjMLOy0rKwsypXzvkKcc9nz9u3blyNto0aN+PHHH3nxxRc56qijuOuuu+jQoQM7duwopC0QEYm+MhFg//7779s2b978G9D45JNPbhU8r1WrVo2AisBreONhgz/O9csvv9wyNK/jjjuuIfDv1q1b/wzs+eKLLyo551aGPNYU6gaJiBQDdep4Xd2C+2N///33B6WrXLky559/Ps888wzffvstS5YsYcaMGQBUqlSJzMzMIimviEhRKRN9sAEWLly4GDj+hBNO6FSpUqVfgUeATl26dDl2+vTpe6688soX3n777dp4t0Ff41/RPt3M6gK7nHPbmzRpUr9169btAeLj47/u3bt3888++2z0nXfeefFFF1205o8//qg0adKkmq+88spX6vwvIqVdlSpV6Ny5M4899hhNmzZly5YtDBs2LEea8ePHs3//fjp16kRcXBxvv/02FStWpHnz5gA0btyYuXPnkpGRQVxcHDVr1sxuGRcRKanKTC22bdu2nUDi+vXrV/p9ru8Cml577bWv/vDDDwvffvvtmcBvwDHOuXUPPPAA9957L8CvwHMA1apViwvKst+77757+mOPPVbls88+u/Ccc865NSUlpf+KFSsuAFYX6caJiETJ2LFjATjllFPo378/Dz74YI751atX55VXXuH000/nhBNO4N133+W9996jSZMmAAwePJhKlSrRpk0b6tSpw08//VTk2yAiEmkW3HdOik5MQnOXcP3IaBdDilDGo2FHb5QoSExMPGjsZikZYhKao7ozOlSHlW1mNk/DDOdfmWnBFhEREREpCmWmD3Zx07ZBPOlqDRARKRDVnSJSEqgFW0REREQkghRgi4iIiIhEkAJsEREREZEIUh/sKFm0bguNh06KdjEkQnR1vUjRUN1ZdFSviRw+tWCLiIiIiESQAmwRERERkQhSgC0iIoUqOTmZXr16HTJNr169SE5OLpoCiYgUMgXYIiIiIiIRpABbRERERCSCFGDnwczSzOy5kGnjzewT/3U3M5ttZtvNbIuZzTWzE6JTWhGRQ/vss8+oVq0a+/fvB2DlypWYGQMGDMhO8/e//52zzjoLgGnTptGpUycqV65MvXr1uOOOO9i7d2922qSkJAYOHJhjHXl1Cdm5cyfJycnExcVRr149Hn744UhuoohI1CnAPgJmVgH4EJgOtAc6ASOBzCgWS0QkV127dmX37t2kp6cDkJaWRu3atUlLS8tOk5aWRlJSEuvWreO8887jpJNOYv78+bzyyiu8+eabDBs27IjKMHjwYL788kveffddJk+ezPz585k2bdoR5SkiUpwowD4yRwHVgY+dc6uccz84595wzi0Ll9jMUsws3czSM3duKdKCiogAxMXF0aFDB6ZMmQJ4wfTAgQNZs2YNGzZsYOfOnXz77bckJSUxZswYjj76aMaMGUPr1q3p1asXjz76KM899xw7d+48rPVv376dV155hccff5xzzz2XE044gXHjxlGuXO5fR6mpqSQmJpKYmIjqThEpCRRgHwHn3B/AeOBzM5tkZnea2TGHSJ/qnEt0ziWWj40vsnKKiARLSkrKbrGeOnUq5513Hp06dSItLY2ZM2dSoUIFOnbsyLJly+jcuXOO4Ldr167s3buXlStXHta6V61axd69e+nSpUv2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\n", + "text/plain": [ + "

    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#Plot the results: are there striking differences in language?\n", + "import numpy as np\n", + "import pylab\n", + "import matplotlib.pyplot as plt\n", + "\n", + "%matplotlib inline\n", + "def plotTwoLists (wf_ee, wf_bu, title):\n", + " f = plt.figure (figsize=(10, 6))\n", + " # this is painfully tedious....\n", + " f .suptitle (title, fontsize=20)\n", + " ax = f.add_subplot(111)\n", + " ax .spines ['top'] .set_color ('none')\n", + " ax .spines ['bottom'] .set_color ('none')\n", + " ax .spines ['left'] .set_color ('none')\n", + " ax .spines ['right'] .set_color ('none')\n", + " ax .tick_params (labelcolor='w', top='off', bottom='off', left='off', right='off', labelsize=20)\n", + "\n", + " # Create two subplots, this is the first one\n", + " ax1 = f .add_subplot (121)\n", + " plt .subplots_adjust (wspace=.5)\n", + "\n", + " pos = np .arange (len(wf_ee)) \n", + " ax1 .tick_params (axis='both', which='major', labelsize=14)\n", + " pylab .yticks (pos, [ x [0] for x in wf_ee ])\n", + " ax1 .barh (range(len(wf_ee)), [ x [1] for x in wf_ee ], align='center')\n", + "\n", + " ax2 = f .add_subplot (122)\n", + " ax2 .tick_params (axis='both', which='major', labelsize=14)\n", + " pos = np .arange (len(wf_bu)) \n", + " pylab .yticks (pos, [ x [0] for x in wf_bu ])\n", + " ax2 .barh (range (len(wf_bu)), [ x [1] for x in wf_bu ], align='center')\n", + "\n", + "plotTwoLists (wf_ee, wf_bu, 'Difference between The War of the Worlds & The First Men in the Moon')" + ] + }, { "cell_type": "code", "execution_count": 51, @@ -464,7 +516,41 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "#Plot the results: are there striking differences in language?\n", + "import numpy as np\n", + "import pylab\n", + "import matplotlib.pyplot as plt\n", + "\n", + "%matplotlib inline\n", + "def plotTwoLists (wf_ee, wf_bu, title):\n", + " f = plt.figure (figsize=(10, 6))\n", + " # this is painfully tedious....\n", + " f .suptitle (title, fontsize=20)\n", + " ax = f.add_subplot(111)\n", + " ax .spines ['top'] .set_color ('none')\n", + " ax .spines ['bottom'] .set_color ('none')\n", + " ax .spines ['left'] .set_color ('none')\n", + " ax .spines ['right'] .set_color ('none')\n", + " ax .tick_params (labelcolor='w', top='off', bottom='off', left='off', right='off', labelsize=20)\n", + "\n", + " # Create two subplots, this is the first one\n", + " ax1 = f .add_subplot (121)\n", + " plt .subplots_adjust (wspace=.5)\n", + "\n", + " pos = np .arange (len(wf_ee)) \n", + " ax1 .tick_params (axis='both', which='major', labelsize=14)\n", + " pylab .yticks (pos, [ x [0] for x in wf_ee ])\n", + " ax1 .barh (range(len(wf_ee)), [ x [1] for x in wf_ee ], align='center')\n", + "\n", + " ax2 = f .add_subplot (122)\n", + " ax2 .tick_params (axis='both', which='major', labelsize=14)\n", + " pos = np .arange (len(wf_bu)) \n", + " pylab .yticks (pos, [ x [0] for x in wf_bu ])\n", + " ax2 .barh (range (len(wf_bu)), [ x [1] for x in wf_bu ], align='center')\n", + "\n", + "plotTwoLists (wf_ee, wf_bu, 'Difference between The War of the Worlds & The First Men in the Moon')" + ] }, { "cell_type": "code",