diff --git a/spate118.ipynb b/spate118.ipynb new file mode 100644 index 0000000..ee9a25d --- /dev/null +++ b/spate118.ipynb @@ -0,0 +1,539 @@ +{ + "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": "markdown", + "metadata": {}, + "source": [ + "1. Single Author" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt \n", + "import requests, re\n", + "from bs4 import BeautifulSoup\n", + "from collections import Counter\n", + "\n", + "def frequency (all_articles):\n", + " freqs = [] \n", + " for i in range(len(all_articles)):\n", + " c = Counter(all_articles[i])\n", + " freqs.append(c)\n", + " return freqs\n", + "\n", + "def parse(articles):\n", + " articles_words = [] \n", + " remove = {\n", + " \"with\": 0,\"the\": 0,\"a\": 0,\"on\": 0,\"of\": 0,\"to\": 0,\"and\": 0,\"an\": 0,\"for\": 0,\n", + " }\n", + "\n", + " for book in articles:\n", + " r = requests.get(book)\n", + " soup = BeautifulSoup(r.text, 'html.parser')\n", + " text = soup.get_text().lower()\n", + " words = re.split('\\s+', text)\n", + "\n", + " for i in range(len(words)):\n", + "\n", + " words[i] = words[i].strip()\n", + "\n", + " f_words = [word for word in words if word not in remove]\n", + " \n", + " articles_words.append(f_words)\n", + " return articles_words\n", + "\n", + "def graph(a_1, a_2): \n", + " fig, (ax1, ax2) = plt.subplots(1,2) \n", + " fig.suptitle(\"iPhone 14 vs iPhone 14 Pro\")\n", + " ax1.barh([wordCount[0] for wordCount in a_1], [wordCount[1] for wordCount in a_1], color='red')\n", + " ax2.barh([wordCount[0] for wordCount in a_2], [wordCount[1] for wordCount in a_2], color='blue')\n", + " ax1.set_title('iPhone 14')\n", + " ax2.set_title('iPhone 14 Pro') \n", + " ax1.set(xlabel='Words', ylabel='Frequency')\n", + " ax2.set(xlabel='Words', ylabel='Frequency')\n", + " plt.show()\n", + "\n", + "if __name__ == \"__main__\":\n", + " articles = []\n", + " a_1 = 'https://www.techradar.com/reviews/iphone-14-hands-on'\n", + " a_2 = 'https://www.techradar.com/reviews/iphone-14-pro' \n", + " articles.append(a_1)\n", + " articles.append(a_2)\n", + " all_words = parse(articles)\n", + " freqs = frequency(all_words)\n", + " graph(freqs[0].most_common(25), freqs[1].most_common(25))" + ] + }, + { + "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": [ + "2. Different Author" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt \n", + "import requests, re\n", + "from bs4 import BeautifulSoup\n", + "from collections import Counter\n", + "\n", + "def frequency (all_articles):\n", + " freqs = [] \n", + " for i in range(len(all_articles)):\n", + " c = Counter(all_articles[i])\n", + " freqs.append(c)\n", + " return freqs\n", + "\n", + "def parse(articles):\n", + " articles_words = [] \n", + " remove = {\n", + " \"with\": 0,\"the\": 0,\"a\": 0,\"on\": 0,\"of\": 0,\"to\": 0,\"and\": 0,\"an\": 0,\"for\": 0,\n", + " }\n", + "\n", + " for book in articles:\n", + " r = requests.get(book)\n", + " soup = BeautifulSoup(r.text, 'html.parser')\n", + " text = soup.get_text().lower()\n", + " words = re.split('\\s+', text)\n", + "\n", + " for i in range(len(words)):\n", + "\n", + " words[i] = words[i].strip()\n", + "\n", + " f_words = [word for word in words if word not in remove]\n", + " \n", + " articles_words.append(f_words)\n", + " return articles_words\n", + "\n", + "def graph(a_1, a_2): \n", + " fig, (ax1, ax2) = plt.subplots(1,2) \n", + " fig.suptitle(\"iPhone 14 Pro vs iPhone 14 Pro\")\n", + " ax1.barh([wordCount[0] for wordCount in a_1], [wordCount[1] for wordCount in a_1], color='red')\n", + " ax2.barh([wordCount[0] for wordCount in a_2], [wordCount[1] for wordCount in a_2], color='blue')\n", + " ax1.set_title('iPhone 14 Pro (Tom)')\n", + " ax2.set_title('iPhone 14 Pro (Tech)') \n", + " ax1.set(xlabel='Words', ylabel='Frequency')\n", + " ax2.set(xlabel='Words', ylabel='Frequency')\n", + " plt.show()\n", + "\n", + "if __name__ == \"__main__\":\n", + " articles = []\n", + " a_1 = 'https://www.tomsguide.com/opinion/iphone-14-pro-and-iphone-14-pro-max-reasons-to-buy-and-skip'\n", + " a_2 = 'https://www.techradar.com/reviews/iphone-14-pro' \n", + " articles.append(a_1)\n", + " articles.append(a_2)\n", + " all_words = parse(articles)\n", + " freqs = frequency(all_words)\n", + " graph(freqs[0].most_common(25), freqs[1].most_common(25))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "3. Are there some words preferred by one author but used less frequently by another author?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "There are not some words that are preferred by one author but not the other since the topic is the same - iPhone 14 Pro. Most of the words are similar since the iPhone 14 Pro has the same specifications and functions regardless of who reviews the device." + ] + } + ], + "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 +}