diff --git a/tkhan7.ipynb b/tkhan7.ipynb new file mode 100644 index 0000000..2215577 --- /dev/null +++ b/tkhan7.ipynb @@ -0,0 +1,540 @@ +{ + "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": "iVBORw0KGgoAAAANSUhEUgAAApMAAAGZCAYAAADVZboGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8VNX9//HXhwBhCWKVRRYVG0BRdtMAihgEBQRxqUuRKhE1ivL7ulEBayutdS1abVVqWgFbrV/br1r3FYiIgBgEZBVBQUEEEWVJZM35/XHuxGGYCZNJSGbg/Xw85jHJveeee+525jP3nHvGnHOIiIiIiCSiRnUXQERERERSl4JJEREREUmYgkkRERERSZiCSRERERFJmIJJEREREUmYgkkRERERSZiCySpmZgVmts94TGZWy8x+Z2afmtkOM3Nmdl7Y/P8xsyVm9kMw78aqLXnqM7PcYN/lVndZJHGxrqH9LOPMrOAAFanapeK5nchxTGAdOcF+GVfV604VZtYq2EeTq7ssFVVd14GZrTGzFVW5zmSjYDIBwcka/tphZt+Y2Udm9nczG2BmaeXM9hbgt8BXwHjgd8CyYH2/AB4GtgMPBfNmV9oGSaWJ9eF1KItyvewxs41mNtXMLq3u8h2Kwj50I+uxz81sspmdWN1llOQUFnyu2k86l6oBe1g9XtarVXWXM5nUrO4CpLjfBe9pwOHAScBlwJVAoZkNdc4tj1jmcqBelLwGAduAM51zO6PMAxjknPuqUkouUvVC10st4ATgXKC3mWU5524uRz6xriEpvwXAf4O/GwI5wDDgYjM7wzl3IL+0Vudx1Dkk8VgNTI4x7/uwv08HUjJwriwKJivAOTcucpqZNQX+AlwEvBN8UG4IW+aLGNk1B76NEkiG5qFAUlJZ5PViZn2At4EbzezPzrlVceYT6xqS8psfflzMzIBJ+IDyHqD3gVpxdR5HnUMSp1XRPucjOedWVkFZkpqauSuZc2498AugADgauC18fmRfnaBJyQHHAceG3UJfZWbjgnm9g7QuWtOBmZ0Q5POlme00s/Vm9i8zOz6yfKH1mdlPzez/mdnHQT/Mgoh0/czstaA5coeZrTSzP5rZ4VHyXBW86gdpvgiWWWFmo4MPqH2YWbaZPWtma4P068zsLTO7OErabmb2f2b2dbCNX5rZ42bWPMahKJOZDTSzmWZWZGbfBXm3iZG2npmNNbP5QfptZjbLzIZEpJsMTAv+vSOiSSQn2KfOzO6KWK53WLqjI+Y9GzpeEdPjPubl2YYgbWlTvZl1NrNXzex7Mys2s3fN7JT97uA4OOem4LtyGPCzYN2l/bfMrG2w/RvMrMTMcoI0sfod1zaz3wTnaqjJ9g9mlh6rDGZW08yuM7PZZrYl2MZ5ZjbSzOKuH83sZDN72MwWmNkmM9tuvv/zA2b2kyjpS/t2Bce/wMy2BmV41czaxVhPazP7T3DOFgXn8MB4y7k/zv++7mPBv9lh6x0Xdh5famYfBOfQqojyxX2dRjuOtp8+bxaj76uZNTWzJ4Lr4IfgPB8WaztjnUPBvLPM7OXgvNsRbMOLZtY3Stq468kyytLczH5rZu+H7bevgut5n+4GEddIKzP732D9282s0MwGxVhPAzN70Hz/vu1mtszMbqYK4wDbTzcgCz5LYsy7xMymhF1fq8zsGTPLimO9PzGz6UE9MrZiWxE1/336TJrZVcG2/tLM+pivO7eZ2ebg/Ir2+fxUsMzRQb20KNjWr83sr2Z2WGWXvbLozuQB4JwrMbM/4JuMhpjZTS72j6D/F1gFhB6oeSh4/x6YH/ydCxzLj82EpcysP/A8vunwZWAF0BK4ABhoZr2dcx9FWe/DwGnAq8BrwJ6wPO8AxgGbgFeADUBHYBRwtpn1cM5ticivFvAm/i7q68Bu4DzgXqBOZNnN7GpgQrDel4BPgSZAFnAd8O+wtMOBfGBHkPZLoA1wFXCOmXUv552GC4ABwAv4oL8z8HN8k+spzrlPwtZ9ODAV6AJ8BEzEV779gH+Z2UnOuduD5KHmwmHAu0HeIavw+3En0Af4ddi8PhF/Tw7WbfgvEqucc5+Flalcx7yc2xAuC7gVmAX8HTgm2E9TzKxz+H6qgNAXjcjrIxP4AFgOPA3UBSLPuR8z8fvq3/im85XAI0BtYDjQIcYyof3XD/gE+Be+X3JvfOtCN3y3lXhcDZyPP+7v4PfvycDNwAAz6+ac2xpluUFBmV8H/gqcCJwN/MzMTnTObQwrbxv8sTgySD8faI0/716Ps5zxiHVMwPftPhO/36bhm8ZD5avs6zS+wpo1AmYCPwVmBK9m+P35Vjnz+h2+7/o2/H79El+nnQL8En9sQ2kTqSej6QWMwe/P54J1twEuBAab2anOuQVRljsWmAN8BvwTOAK4BHjRzPo650JfbDH/hWoK/kvbAvw1dTjwG3wTbdIKru3Q3fKN+LrvG3yd1xt/7RaWsfwxwBv4a+Vy59xTB7rMEc7DX+Ov4T/z2uOv+9A1vinKMg/gr7NX8J+rfYBr8PXimVVR6HJzzulVzhe+knX7SZMO7ArSHhc2vSDasvhgY1WMvGIt8xPgO/wFdmLEvPb4SumjiOmTgzKtDS9X2PzewfyZwOER83KDeX+KUnaHv1jqhk1vgg+KvwdqhU0/Mdg3m4CTopShZdjfbfEB2AqgRUS6Pvhg9IU4j1uo/A7f/zR83g3B9Ckx9tetEdPr4CuoEqBz2PScIP24GGWYjg+0G4ZNm4UP8jYC/wyb3inI64lKOubl3QYH5EYsc00w/bGKXi9A32DdJcCxwbRWYeu+O97rAbg0WGYWUCds+hH44NIBBRHLjAum/wVIC5ueBjwRzDs3zm08NjyPsOlXBvmMjnEu7gb6RMy7J8bxeiuYfkPE9HNjHa84roXJEdMNeJKIayFsXxUBXaLkV+7rNMZxDJUr6nbEOI75RK+XsvixDh4Xx7rPCtJ+FrkNwfzweqnc9WQZx6IJ0CDK9E746/n1iOmtwo73HRHz+gXTX4uYflsw/TmgRtj04/D18D7nQhnlDa3/++C8iPXa57pn//XjKiI+B4G8YJk5hNWb7sdrtVms8yfYh18Bm4G+8WxfRDlXxdi2nIj0a4AVEdOuCvLYFSX9H4N5N0dMfyqY/nnE+VYrONcc0DXe7ajKV7UXIBVf0S6SGOm+DtJmh00riLZstIsojmVCAdD1MZb7UzD/xLBpk4nygRQ2/4Vg/j5BXjB/HrAhStkd0DpK+tAHU/uwaX8Jpt0Uxz4MbcPAMsq7myiVcZS0oYpmSpR5afgPQsePgc2RQd4fxsgvFOzdHzYtVAmNi7HMHcH8wcH/DYLK5j7gP8DasLQ3B2kvTfSYV3AbZkRJXysob2F5rxd+rIjvAv4vKJcDHgxL2yqY9jWQHu/1gO976YDeZRz3grBpNYBvgXVAzSjLHI4Pcv8d73bGKKvhP8imxijTU1GWOS6Y939h01ryY6ATLWgtILFgcn7YcfkT/vp2QDHQPSz9OMoIkEjgOo1xHEPlirodUY5jLXyAu4WIQCOYP5ko12OMdb8cpD0/jv1X7noywfPnJfzd8vAv46FrZFWMc2E1sDFi2qf4gD4zSvrQsZ0cZ5lC64/rFbFsTrTjETZ/FfsGkwuDZfb5ElPGeZ2Lv4O3BX/jpFM593tOrO2JcT6VFUzus1/xd54d8L8R00PB5D7nP771wwHXVvS8OhAvNXMfWGU1F1WGHsF7pxh9UNoG7+2AJRHz5pSR5y7gIjO7KMr82kBjMzvSOfdt2PTNzrlo42x9GbyH9xvrHrzH0zQX2sbTzexnUeY3wQeCbYG5ceQHvilyL865PWY2A9+M0AVfIf8syDtWH59awXvU/m0xTMVX3n3wHxSn47ubTMFXpBeaWTvn3FLgjLBlQsp7zCuyDfs0HTnndpnZevY+nvG6I5QN/q7Ge/i7rtGanRY453aUI++u+OBvRpR5BVGmtcXftfwUuN2id+v9gTiPbdBkfg2+v/SJ+Obf8L5oLWIsGq15Lto10yV4n+Gc28O+CkisubJT8AJ/3a/DN5ne65yLrDOg7HoDKvc6jccJ+Key33PObY4yvwDfPBqP7vhz84040iZaT0Zlvt/rtfi7qY3YtwtaI/yxCTc/xrnwJT8eD8ysAb6J90sX/UGRAn68NstjtXOuVayZVgnDAplZfXyLy3rn3LxyLHoh/k7zp8AAl3j3inedczkJLhsS7zVe0WWqlYLJA8TM6uA/rMD37zgQjgzer95Puowo074uI8+a7L9yycDf2Qn5Pka63cF7+Liboc7pa/ezjlB5AH4VR3nitT7G9NA+CfUDC637Z8GrMtY9G38nJdRPsg++eXAGPpgE6GNmn+L7Ui1xzoUfq/Ie84psQ1nHtLzjqOKcixqxxRDr/IylIbDJObcrzrxC+6UNZZ/r8R7bZ/F9Jj8DXgzWGQqGb8R3e4lmn33snNsdBLfh+zh0Tu7v3C2vJ51zueVIX1a9AZV7ncajMvfL4cB3zrkf4kibaD25DzO7Ad9X/jv8HfYv8HeGHb6/XSeinz9lXZ/hX2QO1LlTFcrzWRGuB/6L8gf8GIRVl2jHKdrnYkWXqVYKJg+cnvj9u97FOeRJAkLfxDs55z4u57KxvjVuxvepOSLG/MoQulBaEAzMXobQNjZ08XVmj0fTGNOPilhn6P1PrnzjIMYU3NmbAfQzs6PwweQs51wxsNzM1uD7En6EbwKfGpFFeY95pW9DFSnvXY3NwBFmVitKQHlUjPTg+/FdUO7ShQmeJj0f/3DGAOfc7rB5NfAPMVVUqLz7O3cPtLLqDaj4dVoSvO/z2WTRn5CuzP3yPXCkmdWNI6CslHrSzGriWyq+xveFWxcxv0e05copWc4dKOP4Bg5n70Aq/LOiPG7DP8h2Bf4ZniudcyX7WUYqQEMDHQDBB0joad1/HcBVhQYUPq2S8/yJmZ1UiXlGWwf4J6rjTVuZ27hPc6D5XyzqGfwbak6Zg6/8yrPuULNTWd8epwTvQ/BNOFPC5k3F99c5MyJtSHn3RyLbkIo+wtdnPaPMy4kybRn+g6p70ERdEa2D95fCA8lANv5J9IoKnZM9Lfqva+VUwjoqorKu0++C96OjzIs2BMwy/F28zmbWMMr8nHKseza+a1L/ONNWRj3ZCB9AzYwSSGbgu29UiPOjCKwAWphZZpQkORVdRznEPL5m1pqw0QEAnHNFwCKgqZl1iVymDDvwTd3/wfeffCoI3OUAUTBZycysCfC/+Av0C+DuA7i6SfgPxDvMLDtyppnVsGBsvnL4U/D+N4s+Nlx9M+seOb2cJuBv2f/Goo+j1jLs30fwfZP+ZGZto6StbWbl/QA7w/Ydi20kvr/kNOfcagDnB5t/GsgyP37hPh/iZpZpZseFTQo1aR1TxvpDdxvH4D+8IoPJhvjhkUrYt79fuY55gtuQiiYF73cFXUwAMLMjgH2GPQqCvr/gh5D5s5ntE/CZWbNo52cUq4L3nIjlmwCPxlP4/XHOrcE3gR6HP1fD13Mu1T+8S2Vdp4X48/5SMyv9hZrgON4fmTi4C/00/i7+uIh1ZgFDy7ENfwneHzCzfe6ERUyrrHpyAz4YPjkIHkPL18IP39Yo3sLvxyT85/19FjZ+anDd/08lrSMey/APxZwbXB+hctQF/hxjmdD0xyO/MAT1XbNoCwXnxhD8Qy1DgGcr4YujxKBIvQLCHmiowY8/p9gT3/l6DjDUhY0TV9mcc9+a2YX4Jwtnm9kUYDG+KepofL+RI/FDwMSb5xQzG4MfnuRTM3sNP0xBBn74k9Px/fvi+fYeax1LzOw6/Dhw88zsRXxH6SPx/fq2EAzU7pxbFoxfNxFYbGZv4McerIUP2E7D90k9oRxFeBl4wcxewH9j74y/S7oJH8SFG4nvV/d74LKgiXo9fuy5dkF5h+D3Efgxz9YCvzCzXfgHeRx+yJ/VQZp5+G/oTYCt7P1QQyiwbIJ/YnqvvjMJHvPybkMqegY/xt5gYFFwTtXC3534EP9FIdKd+P5o1+LHQZyKP3ZN8PvrVHwLQ7QHUcJ9CLwPXGBmM/HXR1P8OfUJfmiSynA9fuijh8zsLPx4ga3xTewvA+dU0nrKrbKuU+fcOjN7Gj++53wzexU4DN9kOZ0fH0QKdxu+u8iNQQAZGmfyEvxwZYPj3Ia3zI8PfDuw1MxC40w2xdfrs/F3uSqtnnR+TOI/479YLgzO29r4+u8I/NiTlfErRA/g+1/+HPjIzN7Ef2ZdjN+vce2jigq6+TyMH99yXlAH18S3xHxF9Gvl7/jz5zL8vn4Rfy41xz+kOJGILxJh69tjfvD67finq583swvL+XCfxKO6HydPxRf7DhOwAz/u31zgb/gKpEaMZQuopKGBwua3wt8Z+BR/0WzBfwP8J3BeRNrJQZlb7Wcbe+IHgf4K/4DIN/hhRB4EsspR9nHB+nKizOuBH/csNJj3V/gnKS+MkrZDUPbVwf7ehG/+eBw4I87jlsuPw0YMwn8wF+Hv9D0HtI2xXG18QDYT3/9oB/6u8xT8wxVHRqT/WTBvM/4uyz7bH6zPAa9GWd8nwbz7KuOYl3cbSGD4jniulzjTtmI/w5QQ+xqqjR9w+rNg+1bhhyFKJ2JImbBlDP8hNSU4p3biA8oZ+CDl6DjLfQT+l2NWBcdjJb5Vol60/UUC4ykG01vjh1X6Pjh3ZwED95dfGddCzP0c73Wc6HVaxnFMx4/Dt4Yfx64ciw86Yu2Xo/BBxTf4p/DnB9sY9VyOte5g3tn4emhTsA1f4r+87VPPUI56sox9VhM/DNiSoOxf46/jY4lSX7Ofa6SM/XpYUK61wTm6DD8I/U/LeS6E1l9mHUCM6x5/zY3BXyM78fXQ/cS4VsKWG4ofiWNzUP7P8Xelu4alCZ3XuVHWGRqS7k3CxkOOsa7QebPPuRYjfVlDA/0yxjF3wDsR00NDA7WMskzfYN7t8ZSpql8WFFJERKTKmNls/NiBMX/uUkRSg/pMiohIlQr67v4Uf0dHRFKcgkkREakyQV/zN4HG+CZ7EUlxauYWEZEqY2Yl+H5y/wF+45zbXs1FEpEKUjApIiIiIglTM7eIiIiIJEzBpIiIiIgkTMGkiIiIiCRMwaSIiIiIJEzBpIiIiIgkTMGkiIiIiCRMwaSIiIiIJEzBpIiIiIgkTMGkiIiIiCRMwaSIiIiIJEzBpIiIiIgkTMGkiIiIiCRMwaSIiIiIJEzBpIiIiIgkTMGkiIiIiCRMwaSIiIiIJEzBpIiIiIgkLJWCyQuBvwDvAVsABzyVYF4tgYnAV8AOYBXwEPCTCpdSRERE5BBSs7oLUA63A52AbcAa4IQE88kEZgJNgBeBZUA2cAPQHzgV+LaihRURERE5FKTSncmbgLbAYcCICuTzGD6Q/B/gPGAMcAbwJ+B44K6KFVNERETk0GHOueouQyJygGnA08Avy7FcJrAC36ydCZSEzWsArAMMH2wWVUI5RURERA5qqXRnsjL0Dt7fYu9AEmAr8D5QD+helYUSERERSVWHWjB5fPC+PMb8T4P3tlVQFhEREZGUl0oP4FSGhsH75hjzQ9MPjyezRo0auVatWlW0TCJSTqtWrWLjxo3VXQxJQKNGjVC9KVI95s6du9E517iy8z3UgslK1apVKwoLC6u7GCKHnKysrOougiRI9aZI9TGz1Qci30OtmTt057FhjPmh6d/HysDM8sys0MwKv/nmm0otnIjIwSg/P5+srCyysrJQvSly8DnUgslPgvdYfSLbBO+x+lTinMt3zmU557IaN670O8UiIgedvLw8CgsLKSwsRPWmyMHnUAsmpwXvZ7HvtjfAD1heDMyuykKJiIiIpKqDNZishf+FnMyI6SvxwwK1Aq6PmPc7oD7wTzTGpIiIiEhcUukBnPOCF8BRwXsPYHLw90ZgVPB3C2ApsBofOIa7Dv9zin8G+gTpuuHHoFwO/LrSSy4iIiJykEqlYLIzMCxi2k+DF/jAcRT7txLIAn6P/y3us/G/fPMw/u7kd5VRWBEREZFDQSoFk+OCVzxW4X8WMZYvgSsqVhwREREROVj7TIqIiIhIFVAwKSIiIiIJUzApIiIiIglTMCkiIiIiCVMwKSIiIiIJS6WnuZPOwrWbaTXm1eouhshBYdW9A6u7CFIFVG+KVK5kqDt1Z1JEREREEqZgUkREREQSpmBSRERERBJWKcGkmTkzuzDW/xXMu1WQX1Zl5FdVeYuIiIgcCg7UnclmwMsHKO+EmNlkM3ulusshInIwmTx5MhkZGdVdDBGpRgfkaW7n3NcHIl8RERERSS5x3Zk071YzW2lmP5jZQjP7ZRnpS5u5gzuCLsorN5jf38zeM7PvzGyTmb1pZu2iZNvWzGaY2XYzW2ZmZ0Ws80Qze9XMtprZBjN7xsyOCuaNA4YBA8PWnxO2+LFm9raZFZvZEjM7M579IiKS6oqKirj88svJyMigadOm3HPPPQwaNIjc3FwAvvvuO4YNG8ZPfvIT6tatS9++fVm8eDEABQUFXHHFFRQVFWFmmBnjxo2rvo0RkWoRbzP3H4ArgeuBE4F7gMfNLJ7BjW7AN3uHXr8GioHCYH594CEgG8gBNgMvm1ntiHzuB/4MdAbeBl40sxYAZtYMmA4sCvLpC2QEaWoA44F/A++ElWNmWN53BXl3Aj4E/tfM1G4jIge9W265hXfffZcXXniBqVOnsmDBAt57773S+bm5uXzwwQe8+OKLzJkzh3r16tG/f39++OEHTjnlFB566CHq1avHunXrWLduHaNGjarGrRGR6rDfZm4zqw/cDJzlnAvVMJ+bWTY+uCxz9Fnn3GZ8gIiZnQb8FhjinFsUzH8uYn1XAFvwQeGMsFkTnHP/DtLcAPQDRgC3B+8LnHOjw/K5HNgEZDnn5pjZD8CO8CZ4Mwv9+Sfn3MvBtNuAy/FBa/j6Q8vkAXkAaYc1LmvTRUSS2rZt25g4cSL/+Mc/OPNM3yDzxBNP0LJlSwA+/fRTXnrpJd5991169eoFwD//+U+OOeYYnn76aa666ioaNmyImXHUUUfFXE9+fj75+fkA7CnefIC3SkSqWjx9Jk8E6gBvmJkLm14LWBXvisysFfAc8Hvn3Ath0zOBO4FuQGP83dIawDERWcwK/eGcKzGzD4KyAZwM9DKzbVFWnQnM2U/xPg77+6vgvUm0hM65fCAfIL1ZGxctjYhIKli5ciW7du0iOzu7dFr9+vVp3749AEuXLqVGjRr06NGjdH7Dhg3p0KEDS5YsiXs9eXl55OXlAZDerE0llV5EkkU8wWSoKfwc4IuIebviWUnQZPwS8KZz7u6I2a8Aa4BrgLXAbmAJENnMvb8yvgpEa19ZH8fypdvhnHPBHUuNwSkiEkNYy46IHOLiCZiWADuAY51zKyJeq/e3cNBn8WlgK3BVxLwjgROAu51z7zjnlgINiB7kdg9bzvDN4EuDSR8BJwGro5Rxa5BmJ5AWx/aKiBwSMjMzqVWrFh9++GHptOLiYhYtWgRAu3btKCkpYdas0oYhtmzZwsKFCznxRN8wVLt2bfbs2VO1BReRpLLfYDIIxsYD481suJm1NrPOZnZt0H9wf+4AeuD7Nf7EzI4KXnWB74CNwNVBvqcDf8XfnYw0wswuNLPj8Q/sHAtMCOY9CjQEnjWzbmb2UzPra2b5ZtYgSLMKaG9mx5tZIzOrFUfZRUQOWhkZGQwfPpzRo0czZcoUlixZwlVXXUVJSQlmRps2bTj33HO55ppreO+991i4cCG//OUvOeyww7j00ksBaNWqFdu3b+ftt99m48aNFBcXV/NWiUhVi7cp9zfAOHwz8mL809Q/Bz6PY9nT8X0hFwDrwl6XOOdKgEuAjvgnsR8N1rUjSj5j8A8CLQD6A+c759YAOOe+Ak4FSoA3gjI+GuQTyutv+DuZhcA3QXoRkUPa+PHjOe200xg8eDC9e/emY8eOZGVlUadOHQAmTZpEdnY2gwcPJjs7m+LiYt544w3q1q0LwCmnnMK1117LkCFDaNy4Mffff391bo6IVANzTs+QJCq9WRvXbNhD1V0MkYPCqnvjGWnMy8rKorCwcP8Jpdx27NjBsccey69+9StuueWWSs8/vVkbVG+KVJ7y1J1mNtc5V+k/IX1AfgFHRERSw7x581i6dCnZ2dls3bqV++67j61bt3LJJZdUd9FEJEUomBQROcQ9+OCDfPLJJ9SsWZPOnTszffr00rEmRUT2R8FkBXRo0ZDCctxeFhFJNl26dKnSLgOqN0UOPhpLUUREREQSpmBSRERERBKmYFJEREREEqY+kxWwcO1mWo15tbqLIVIlyjP8hEgsqjclGal+qxjdmRQRERGRhCmYFBEREZGEKZgUERERkYQdUsGkmY0zs0X7SfOImRVUUZFERJJebm4ugwYNKjPNoEGDyM3NrZoCiUhS0QM4IiJSpocffhjnXHUXQ0SSlIJJEREpU8OGDau7CCKSxJKqmdu8W8zsUzPbYWZrzOyeYF4HM3vHzH4ws01mNtnMGoYtO9nMXonIr8xmbTNLM7PxZvZd8HoISDtgGygiUk2mT59O9+7dycjIoGHDhmRnZ7No0SK+/fZbhgwZQsuWLalbty4nnXQSkyZN2mvZyGbu4uJicnNzycjIoGnTptx9991VvTkikkSSKpgE7gZ+A9wDnARcBHxpZvWBN4FtQDZwPnAKMLGC67sFuBq4BuiBDySHVjBPEZGksnv3bs4991x69uzJggUL+OCDD7jxxhtJS0tj+/btdO3alVdeeYXFixdzww03cM011zBlypSY+Y0aNYq3336b5557jilTpjBv3jymT59ehVskIskkaZq5zSwDuAm40TkXChJXALPM7GqgPnCZc25rkD4PmGZmrZ1zKxJc7Y3A/c65fwd53gD0208584A8gLTDGie4WhGRqrNlyxa+//57zjnnHDIzMwE44YQTSuf/6le/Kv07Ly+PqVOn8swzz9CnT5998tq2bRtPPPEEEydOpF8/X11OmjSJli1bxlx/fn4++fn5AOwp3lwp2yQiySOZ7kyeCKQD0b4OtwM+DgWSgZlASbBcuQVN5M2AWaFpzrkS4IOylnPO5TvnspxzWWk9mV3ZAAAgAElEQVT11I9IRJLfEUccQW5uLv369WPgwIE8+OCDfPHFFwDs2bOHu+66i44dO3LkkUeSkZHB888/Xzo/0sqVK9m5cyc9evQonZaRkUGHDh1irj8vL4/CwkIKCwtRvSly8EmmYDJRoUcMSwCLmFerissiIpKUJk2axAcffECvXr146aWXOP7443nzzTcZP348DzzwAL/61a+YMmUK8+fP57zzzmPnzp3VXWQRSRHJFEwuBXYA+7ar+HkdzKxB2LRT8OVfGvz/Df5OY7jOsVbmnNsMrAO6h6aZmeH7ZIqIHHQ6derE6NGjKSgoICcnhyeffJIZM2ZwzjnncNlll9G5c2cyMzNZvnx5zDwyMzOpVasWs2fPLp1WVFTEokVlDuErIgexpAkmgybsh4F7zOwKM8s0s2wzGwE8DRQD/wie6u4FPA48H9ZfcirQxcyGm1lrM7sVOHU/q30YuNXMLjSz44GH2DcgFRFJaZ9//jljxoxh5syZrF69mmnTpvHxxx9z4okn0rZtW6ZMmcKMGTNYtmwZI0eO5PPPP4+ZV0ZGBldeeSWjR4/m7bffZvHixQwfPpw9e/ZU4RaJSDJJmgdwAmOB7/BPdLcE1gP/cM4Vm1k/fLA3B9gOvAjcEFrQOfemmf0OuAuohw9AHwMGl7G+B4CjgL8H//8zWK5dJW6TiEi1qlevHsuXL+eiiy5i48aNNG3alKFDhzJ69Gi2bdvG559/zoABA6hbty65ubkMHTqUJUuWxMxv/PjxFBUVcf7551OvXj3+3//7fxQVFVXhFolIMjH9qkHi0pu1cc2GPVTdxRCpEqvuHVjdRSiVlZVFYWFhdRdDEpDerA2qNyXZJFP9diCZ2VznXFZl55s0zdwiIiIiknqSrZk7pXRo0ZDCQ+TbjIhIZVC9KXLw0Z1JEREREUmYgkkRERERSZiCSRERERFJmPpMVsDCtZtpNebV6i6GyD4OlScTJfWo3pRkorqycujOpIiIiIgkLNWCyZbAROAr/E8vrsIPZP6TcubTEz/o+Sr8AOhfAK8B/SupnCIiIiKHhFQKJjOBucAV+F/B+RPwGf5XcGYBR8aZzwjgPfxvgL8X5PMucDrwOvDrSi21iIiIyEEslYLJx4AmwP8A5wFjgDPwweDx+J9RLFNaWtqTAwYM+DP+buTJwGX4n3C8DMgCdpx99tm/r1Wr1j8OyBaIiIiIHGRSJZjMBM7CN0s/GjHvDqAIHxDWLyuT+vXrp6elpdUElgOfRMxeCiyvUaNGjdq1a9eqjEKLiIiIHOxSJZjsHby/BZREzNsKvA/UA7qXlcnWrVu37969eyfQFmgTMbst0KaoqGhLcXHxjooXWUREROTgV23BpJn1N7OtZlYz+L+1mTkz+2tYmj+Y2TvA8dOnT6dly5b9zWy7ma03sz+ZWe0g6ac5OTmceuqpv4lYx2QzeyV82rJlyxbht3vu999//1SvXr0+rlOnzq4mTZosGzNmzLcfffTR3AO75SIiyWH69Ol0796djIwMGjZsSHZ2NosWLQJg5syZnH766dSrV48WLVowYsQItmzZUrqsc47777+fzMxM6tatS4cOHXjqqaeqa1NEpBpV553JGUAdfF9FgBxgY/BO2LSCJUuWNBswYADNmzf/HOgCXAkMAe4J0m0GSE9PT9/fSlevXr0O39fy+9tuu23oypUrO7z44os133rrrU2vvPLKhi1btmTtLw8RkVS3e/duzj33XHr27MmCBQv44IMPuPHGG0lLS2PhwoWcddZZDB48mAULFvD8888zf/58hg8fXrr87bffzhNPPMGjjz7KkiVLGDt2LNdccw2vvqoxJEUONdU2aLlzbpuZzcU3Yc/GB46PAGPMrBk+QPwZMObuu+++oHnz5syYMePp2rVrLwWWmtkY4HEz+41zLu71HnfccS2Ad7799tuX/vrXvx512GGH5fXr12828JvZs2df2rRp013FxcUxlzezPCAPIO2wxolsuohItduyZQvff/8955xzDpmZmQCccMIJAFx++eVccskl3HLLLaXpJ0yYQJcuXdiwYQP169fnwQcf5K233uK0004D4LjjjmPOnDk8+uijDBy490DQ+fn55OfnA7CneHNVbJ6IVKHq/gWcAnwQeQ9+aJ4/44PLHOAbYDcwZ9myZRndu3en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jilTpjBv3jymT59eoTxFJHUlRTBpZhnAlcCtzrk3nXOLgCuAklAa59xE59xrzrnPnHNzgBHAaWbWMiK7cc65t4J03wC/Af7POXe7c26Jc+5j59x451yxc24N8AYwPGz54cBc59yCGGXNM7NCMyvcU7y50vaBiEg8MjIyOPnkk5k2bRrgA8eRI0eyevVq1q1bR3FxMR9++CE5OTk89thjNG/enMcee4x27doxaNAg7r33Xh555BGKi4sTWv+2bdt44oknuP/+++nXrx/t27dn0qRJ1KgR++MkPz+frKwssrKyUL0pcvBJimASyMTfeZwVmuCc2wYsDP1vZl3N7EUzW21mW4HCYNYxEXkVRvzfBZhSxrr/BvzCzOqaWRpwGWXclXTO5TvnspxzWWn1Gu5vu0REKl1OTk7pnch3332XAQMG0K1bNwoKCpg5cyY1a9YkOzubpUuX0r17970CvZ49e7Jz505WrFiR0LpXrlzJzp076dGjR+m0jIwMOnToEHOZvLw8CgsLKSwsRPWmyMEnJX5O0czqA28C7+CDvQ34Zu738EFouKJyZv8qUIxvXt8MHA78qyLlFRE5kHJycnjkkUdYunQpW7Zs4eSTTyYnJ4dp06bRpEkTevToQe3akVXj3swMgBo1auCc22verl27DljZReTgkyx3JlcCu4DuoQlBANk++PcEfPB4m3NuunNuGdAkzrzn4ftgRuWc2w1MxjdvDweed86pHUZEklbPnj3ZsWMH999/Pz179iQtLa00mAz1lwRo164ds2fPpqSktMcQM2bMoHbt2mRmZgLQuHFj1q1bt1f+CxZE7eUDQGZmJrVq1WL27Nml04qKili0aJ9nGUXkEJEUwWTQpP0EcJ+ZnWlmJ+EfjkkLknwB7ABGmtlPzWwgcGec2d8FXGRmfzCzE83sJDO7yczqhaX5O3A6/sEePXgjIkkt1G/yqaeeonfv3gB0796dNWvWMHv27NJg8rrrruOrr77iuuuuY+nSpbz66quMGTOGkSNHUq+erwLPOOMMXn/9dV566SU++eQTbr75Zr788ssy133llVcyevRo3n77bRYvXszw4cPZs2fPAd9uEUlOSRFMBkYB04AXgvdFwHSA4EGaYcB5wBL8U903x5Opc+414HxgAP4u5bv4J7rDH+75LJj+BVBQGRsjInIg5eTksHv37tLAsU6dOnTr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", + "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": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def plot_graph(title, book_1, book_2):\n", + " fig, (book1, book2) = plt.subplots(1,2) \n", + " fig.suptitle(title)\n", + "\n", + " book1.barh([ x [0] for x in book_1 ],[ x [1] for x in book_1 ], color ='y')\n", + " book1.set_xlabel('frequency')\n", + " book1.set_ylabel('words')\n", + "\n", + " book2.set_xlabel('frequency')\n", + " book2.set_ylabel('words')\n", + "\n", + " book2.barh([ x [0] for x in book_2 ],[ x [1] for x in book_2], color ='r')\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " \n", + "(book_1, tw_ee) = get_wf('https://www.gutenberg.org/cache/epub/4676/pg4676.txt')\n", + "(book_2, tw_bu) = get_wf('https://www.gutenberg.org/cache/epub/22052/pg22052.txt')\n", + "\n", + "title = \"Difference between 'Outpost' and 'Standish of Standish: a story of the pilgrims' by Jane G. Austin\"\n", + "plot_graph(title, book_1, book_2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "like \n", + "count in Jane books = 360 \n", + "count in Gerald Cumberland books= 318 \n", + "\n", + "man \n", + "count in Jane books = 417 \n", + "count in Gerald Cumberland books= 363 \n", + "\n", + "would \n", + "count in Jane books = 436 \n", + "count in Gerald Cumberland books= 424 \n", + "\n", + "one \n", + "count in Jane books = 562 \n", + "count in Gerald Cumberland books= 598 \n", + "\n", + "said \n", + "count in Jane books = 666 \n", + "count in Gerald Cumberland books= 600 \n", + "\n", + "little \n", + "count in Jane books = 734 \n", + "count in Gerald Cumberland books= 440 \n", + "\n" + ] + } + ], + "source": [ + "stop_words = nltk.corpus.stopwords.words('english') + [\n", + " 'ut', '\\'re','.', ',', '--', '\\'s', '?', ')', '(', ':', '\\'',\n", + " '\\\"', '-', '}', '{', '&', '|', u'\\u2014', \"\", \"รข\\x80\\x9ci\" ]\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", + "def get_wf_2_books (URL, URL2):\n", + " # first get the web page\n", + " r = requests .get(URL)\n", + " r2 = requests .get(URL2)\n", + " \n", + " # Now clean\n", + " # remove html markup\n", + " t = cleanHtml (r .text + r2 .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", + "#compare works of jane g austin with gerald cumberland\n", + "(j_a, tw_ee) = get_wf_2_books('https://www.gutenberg.org/cache/epub/4676/pg4676.txt', 'https://www.gutenberg.org/cache/epub/22052/pg22052.txt')\n", + "(g_c, tw_ee) = get_wf_2_books('https://www.gutenberg.org/files/61437/61437-0.txt', 'https://www.gutenberg.org/files/60272/60272-0.txt')\n", + "\n", + "title = \"Difference between the works of Jane G. Austin and Gerald Cumberland\"\n", + "plot_graph(title, j_a, g_c)\n", + "\n", + "for i in j_a:\n", + " for j in g_c:\n", + " if i[0] == j[0]:\n", + " print(i[0], \"\\ncount in Jane G. Austin books =\", i[1], \"\\ncount in Gerald Cumberland books=\", j[1], '\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}