From e605fb545d6f725f83351635b9cef837fcf4701b Mon Sep 17 00:00:00 2001 From: icrimedkarub <79881115+icrimedkarub@users.noreply.github.com> Date: Wed, 29 Mar 2023 23:49:36 +0200 Subject: [PATCH 1/4] assignment turn in --- Assignments/EN/Assignment_5.ipynb | 842 +++++++++++++++++++++++++++--- 1 file changed, 772 insertions(+), 70 deletions(-) diff --git a/Assignments/EN/Assignment_5.ipynb b/Assignments/EN/Assignment_5.ipynb index f842b189..31406937 100644 --- a/Assignments/EN/Assignment_5.ipynb +++ b/Assignments/EN/Assignment_5.ipynb @@ -31,8 +31,10 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, + "execution_count": 157, + "metadata": { + "scrolled": false + }, "outputs": [ { "name": "stdout", @@ -100,35 +102,147 @@ "#### 1. Count words in a text\n", "\n", "a. Output a list of words in the file along with their frequency counts (ignoring case). \n", - "a. Count how many unique words there are (ignoring case). \n", + "b. Count how many unique words there are (ignoring case). \n", "c. Check how common are all different sequences of vowels (e.g. the sequences \"ieu\" or just \"e\" in \"lieutenant\")?" ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], + "execution_count": 158, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the 22\n", + "and 13\n", + "in 12\n", + "of 11\n", + "to 11\n", + "a 8\n", + "that 7\n", + "on 5\n", + "projects 5\n", + "from 5\n", + "kbr 4\n", + "said 4\n", + "could 4\n", + "is 4\n", + "customers 4\n", + "or 4\n", + "are 4\n", + "he 4\n", + "much 4\n", + "cents 4\n", + "oil 4\n", + "have 4\n", + "so 3\n", + "has 3\n", + "business 3\n" + ] + } + ], "source": [ - "# a)" + "# a)\n", + "\n", + "text_lc = text.lower()\n", + "words_lc = text_lc.split()\n", + "word_counts = {}\n", + "\n", + "for word in words_lc[:500]:\n", + " if word in word_counts:\n", + " word_counts[word] += 1\n", + " else:\n", + " word_counts[word] = 1\n", + "\n", + "word_counts_list = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)\n", + "\n", + "for word, count in word_counts_list[:25]:\n", + " print(word, count)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 159, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "326\n" + ] + } + ], "source": [ - "# b)" + "# b)\n", + "\n", + "unique_words = set()\n", + "\n", + "for word in words[:500]:\n", + " unique_words.add(word)\n", + "\n", + "num_unique_words = len(unique_words)\n", + "\n", + "print(num_unique_words)" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 149, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a 142\n", + "ai 12\n", + "au 2\n", + "e 277\n", + "ea 12\n", + "ee 6\n", + "ei 1\n", + "eo 1\n", + "i 145\n", + "ia 6\n", + "ie 4\n", + "io 15\n", + "o 128\n", + "oi 6\n", + "oo 5\n", + "ou 13\n", + "u 64\n", + "ua 3\n", + "ue 1\n", + "ui 3\n" + ] + } + ], "source": [ - "# c)" + "# c)\n", + "\n", + "import re\n", + "\n", + "vowel_regex = re.compile('[aeiou]+', re.IGNORECASE)\n", + "vowel_counts = {}\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " words = f.read().split()[:500]\n", + " data = ' '.join(words)\n", + "\n", + "for match in vowel_regex.findall(data):\n", + " vowel_sequence = match.lower()\n", + " if vowel_sequence in vowel_counts:\n", + " vowel_counts[vowel_sequence] += 1\n", + " else:\n", + " vowel_counts[vowel_sequence] = 1\n", + "\n", + "for vowel_sequence, count in sorted(vowel_counts.items()):\n", + " print(vowel_sequence, count)" ] }, { @@ -145,38 +259,137 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 150, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\"With the economic outlook remaining uncertain, it is possible\n", + "could be in jeopardy if the headwinds persist into next year.\n", + "customers may cancel or delay projects that are under way,\" said\n", + "had\n", + "KBR said Friday the global economic downturn so far has\n", + "little effect on its business but warned some projects on its books\n", + "that\n", + "Utt, chief executive of the Houston-based engineering and\n", + "William\n" + ] + } + ], "source": [ - "# a)" + "# a)\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " lines = f.readlines()[:10] # read first 10 lines\n", + "\n", + "alphabetically_sorted_lines = sorted(lines, key=lambda x: x.lower()[0])\n", + "\n", + "for line in alphabetically_sorted_lines:\n", + " print(line.strip())" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 151, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\"With the economic outlook remaining uncertain, it is possible\n", + "KBR said Friday the global economic downturn so far has\n", + "Utt, chief executive of the Houston-based engineering and\n", + "William\n", + "could be in jeopardy if the headwinds persist into next year.\n", + "customers may cancel or delay projects that are under way,\" said\n", + "had\n", + "little effect on its business but warned some projects on its books\n", + "that\n" + ] + } + ], "source": [ - "# b)" + "# b)\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " lines = f.readlines()[:10]\n", + " \n", + "numerically_sorted_lines = sorted(lines, key=lambda line: line[0])\n", + "\n", + "for line in numerically_sorted_lines:\n", + " print(line.strip())" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 154, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "William\n", + "Utt, chief executive of the Houston-based engineering and\n", + "that\n", + "little effect on its business but warned some projects on its books\n", + "KBR said Friday the global economic downturn so far has\n", + "had\n", + "could be in jeopardy if the headwinds persist into next year.\n", + "customers may cancel or delay projects that are under way,\" said\n", + "\"With the economic outlook remaining uncertain, it is possible\n", + "\n" + ] + } + ], "source": [ - "# c)" + "# c)\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " lines = f.readlines()[:10]\n", + "\n", + "alphabetically_sorted_lines_reverse = sorted(lines, key=lambda x: x.lower()[0], reverse=True)\n", + "\n", + "for line in alphabetically_sorted_lines_reverse:\n", + " print(line.strip())" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 153, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "that\n", + "little effect on its business but warned some projects on its books\n", + "had\n", + "could be in jeopardy if the headwinds persist into next year.\n", + "customers may cancel or delay projects that are under way,\" said\n", + "William\n", + "Utt, chief executive of the Houston-based engineering and\n", + "KBR said Friday the global economic downturn so far has\n", + "\"With the economic outlook remaining uncertain, it is possible\n", + "\n" + ] + } + ], "source": [ - "# d)" + "# d)\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " lines = f.readlines()[:10]\n", + "\n", + "numerically_sorted_lines_reverse = sorted(lines, key=lambda line: line[0], reverse=True)\n", + "\n", + "for line in numerically_sorted_lines_reverse:\n", + " print(line.strip())" ] }, { @@ -196,61 +409,233 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the 22\n", + "and 13\n", + "in 12\n", + "of 11\n", + "to 11\n", + "a 8\n", + "that 7\n", + "on 5\n", + "projects 5\n", + "from 5\n", + "kbr 4\n", + "said 4\n", + "could 4\n", + "is 4\n", + "customers 4\n", + "or 4\n", + "are 4\n", + "he 4\n", + "much 4\n", + "cents 4\n", + "oil 4\n", + "have 4\n", + "so 3\n", + "has 3\n", + "business 3\n", + "but 3\n", + "be 3\n", + "into 3\n", + "which 3\n", + "industry 3\n", + "more 3\n", + "prices 3\n", + "economic 2\n", + "its 2\n", + "if 2\n", + "next 2\n", + "it 2\n", + "delay 2\n", + "utt, 2\n", + "engineering 2\n", + "government 2\n", + "company's 2\n", + "kbr's 2\n", + "third-quarter 2\n", + "financial 2\n", + "period 2\n", + "2007. 2\n", + "co. 2\n", + "year, 2\n", + "analyst 2\n" + ] + } + ], "source": [ - "# a)" + "# a)\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " text = f.read().lower()\n", + "\n", + "words = text.split()\n", + "word_freq = {}\n", + "\n", + "for word in words[:500]:\n", + " if word in word_freq:\n", + " word_freq[word] += 1\n", + " else:\n", + " word_freq[word] = 1\n", + "\n", + "most_common = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:50]\n", + "\n", + "for word, count in most_common:\n", + " print(word, count)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'buzz', 'pizazz', 'jazz'}\n" + ] + } + ], "source": [ - "# b)" + "# b)\n", + "\n", + "text_lc = text.lower()\n", + "words = text_lc.split()\n", + "\n", + "unique_words_ending_in_zz = set()\n", + "\n", + "for word in words:\n", + " if word.lower().endswith(\"zz\"):\n", + " unique_words_ending_in_zz.add(word)\n", + "\n", + "print(unique_words_ending_in_zz)\n" ] }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], + "execution_count": 35, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lines: 70335\n", + "Words: 509851\n", + "Characters: 3052299\n" + ] + } + ], "source": [ - "# c)" + "# c)\n", + "\n", + "number_lines = text.count(\"\\n\") + 1\n", + "number_words = len(text.split())\n", + "number_characters = len(text)\n", + "\n", + "print(f\"Lines: {number_lines}\")\n", + "print(f\"Words: {number_words}\")\n", + "print(f\"Characters: {number_characters}\")" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6952\n" + ] + } + ], "source": [ - "# d)" + "# d)\n", + "\n", + "uppercase_counter = 0\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " for line in f:\n", + " uppercase_words = line.strip().split()\n", + " for word in uppercase_words:\n", + " if word.isupper():\n", + " uppercase_counter += 1\n", + "\n", + "print(uppercase_counter)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "79536\n" + ] + } + ], "source": [ - "# e)" + "# e)\n", + "\n", + "text_lc = text.lower()\n", + "words = text_lc.split()\n", + "four_letter_count = 0\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " for word in words:\n", + " if len(word) == 4:\n", + " four_letter_count += 1\n", + "\n", + "print(four_letter_count)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 36, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3262\n" + ] + } + ], "source": [ - "# f)" + "# f)\n", + "\n", + "no_vowels_set = set()\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " for line in f:\n", + " words = line.strip().split()\n", + " for word in words:\n", + " if all(char not in 'aeiouAEIOU' for char in word):\n", + " no_vowels_set.add(word)\n", + "\n", + "no_vowels_count = len(no_vowels_set)\n", + "\n", + "print(no_vowels_count)" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -269,20 +654,30 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 168, "metadata": {}, - "outputs": [], - "source": [ - "# a)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(('of', 'the'), 3091), (('in', 'the'), 2499), (('to', 'the'), 1171), (('on', 'the'), 1082), (('for', 'the'), 882), (('and', 'the'), 803), (('in', 'a'), 751), (('to', 'be'), 709), (('at', 'the'), 675), (('with', 'the'), 561)]\n" + ] + } + ], "source": [ - "# b)" + "# a)\n", + "\n", + "def find_bigrams(input_list):\n", + " return zip(input_list, input_list[1:])\n", + "\n", + "with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " content = f.read()\n", + " words = content.split()\n", + " bigrams = find_bigrams(words)\n", + " bigram_counts = Counter(bigrams)\n", + " top_10_bigrams = bigram_counts.most_common(10)\n", + " print(top_10_bigrams)" ] }, { @@ -298,11 +693,220 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 57, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Line 1: KBR said Friday the global economic downturn so far has\n", + "Line 6: \"With the economic outlook remaining uncertain, it is\n", + "Line 148: KBR said Friday the global economic downturn so far has\n", + "Line 153: \"With the economic outlook remaining uncertain, it is\n", + "Line 867: the new world economic disorder has been whether sovereign\n", + "Line 906: Britain, who has written an economic history of Abu\n", + "Line 1367: have more economic independence. From her very first\n", + "Line 1398: How do you deal with economic uncertainty in emerging\n", + "Line 2232: spur economic growth. \"Any use of these\n", + "Line 3587: economic issues in the Southland.\n", + "Line 3667: economic reasons - realizing that maybe\n", + "Line 5029: economic issues in the Southland.\n", + "Line 5109: economic reasons -- realizing that maybe\n", + "Line 5301: through the weighty economic theories concerning this latest\n", + "Line 5378: The world is in economic turmoil -- much of it\n", + "Line 5818: more swayed by economic and bread-and-butter issues,\" said Amandi.\n", + "Line 6452: No one disputes that Iceland's economic troubles are\n", + "Line 6473: In a volatile economic climate, in which appearance matters\n", + "Line 6619: describes himself as an economic conservative and said he had\n", + "Line 6927: decades since then, despite periodic economic\n", + "Line 7197: Political and Economic Studies in Washington, said the\n", + "Line 7362: economic turmoil. Far from being isolated\n", + "Line 7376: could freeze Germany's economic system.\n", + "Line 8949: takes on both economic and foreign affairs. What we\n", + "Line 9109: As serious as Iceland's economic situation already was,\n", + "Line 9507: moderate -- and the mounting economic crisis.\n", + "Line 9777: energetically on an economic theme, telling audiences that\n", + "Line 9786: and voters, the shift toward economic\n", + "Line 9914: the only economic bright spot (of sorts) in\n", + "Line 10042: economic turmoil. Far from being isolated\n", + "Line 10056: could freeze Germany's economic system.\n", + "Line 10177: field, but also in the economic and financial fields and especially\n", + "Line 10195: provides to Iraq in security, economic and\n", + "Line 10250: field, but also in the economic and financial fields and especially\n", + "Line 10746: decades since then, despite periodic economic\n", + "Line 10926: describes himself as an economic conservative and said he had\n", + "Line 11566: also that the economic and other crises don't overwhelm\n", + "Line 12113: economic incentive, said Ryan Lamppa, a\n", + "Line 12443: high-end collectibles may withstand the economic\n", + "Line 12739: is best able to handle economic issues.\n", + "Line 12986: the economic downturn. The attendance at Atlanta\n", + "Line 13251: is best able to handle economic issues.\n", + "Line 13766: After eight years of economic policies custom-made for the hedge\n", + "Line 13767: is great to hear the economic interests of the middle\n", + "Line 15238: conference call to extol McCain's economic plans, Sen. Mel\n", + "Line 15765: agility. But facing the worst economic crisis since\n", + "Line 16248: get a two-fer: George Bush's economic policy and Dick Cheney's\n", + "Line 16376: Although McCain's proposed economic plan offers greater tax\n", + "Line 16695: Pressing economic demands will land on the\n", + "Line 16705: \"McCain could not govern on economic or other issues from the\n", + "Line 16730: and yet can't do big economic things because\n", + "Line 17206: appointments were related to economic policy, said Martha Joynt\n", + "Line 17285: been through three years of economic\n", + "Line 17750: phenomenon and the economic crisis that sent McCain's campaign\n", + "Line 18705: most voters, economic concerns fill that slot for\n", + "Line 18791: Congress reconvenes to craft another economic stimulus package. In\n", + "Line 18798: treasury -- (and) appointing an economic\n", + "Line 18917: are deeply concerned about the economic crisis. But what's\n", + "Line 18951: the issue to economic troubles and national security concerns.\n", + "Line 18978: \"Cheap labor is economic cocaine for the business community,\"\n", + "Line 18990: the hardest hit by the economic\n", + "Line 20321: economic crisis, measuring the seconds required\n", + "Line 20900: and economic experts simply \"did not forecast\"\n", + "Line 20907: economic disaster. It's just that the\n", + "Line 20933: home prices and economic confidence, and tended to come\n", + "Line 20956: economic advisory panel of the Federal\n", + "Line 21002: economic events. Behavioral economists are still\n", + "Line 21043: consumers are weighed down with economic worries,\n", + "Line 21409: time. During periods of economic growth, such inefficiencies are\n", + "Line 21420: economic crisis. That's the reason I\n", + "Line 21493: was shriveling the economic outlook.\n", + "Line 21512: The current economic downturn comes as no surprise\n", + "Line 21517: \"Creativity doesn't care about economic downturns,\" Lieberman\n", + "Line 21519: economic downturn, both Apple and Microsoft\n", + "Line 22822: election campaign now dominated by economic\n", + "Line 22927: economic development officials scrambled to attract\n", + "Line 25019: first election during a deep economic crisis since\n", + "Line 25025: during economic slumps and only once, in\n", + "Line 25031: severe economic downturns that affect millions of\n", + "Line 25060: unpopular war, a severe economic crisis and it's unusual for\n", + "Line 26017: site. Other factors included appealing economic terms, access\n", + "Line 28569: economic\n", + "Line 28574: approach that chokes off economic growth.\n", + "Line 28597: noted that Americans want more economic\n", + "Line 28621: the economic uncertainty will lead to a\n", + "Line 28821: middle-class Republicans question their party's economic\n", + "Line 29165: economic\n", + "Line 29247: foreign rivals and the economic downturn now threatening the\n", + "Line 29254: economic engine for the country is\n", + "Line 30076: as tough economic times make it difficult to\n", + "Line 30274: as well as the current economic\n", + "Line 30293: four-decades-old economic embargo. McCain says he would\n", + "Line 31014: the brush fires of the economic crisis.\n", + "Line 31045: an economic stimulus plan for Germany that\n", + "Line 31068: the economic crisis was raising the risk\n", + "Line 31072: the government's need to promote economic growth was\n", + "Line 31667: get blamed for the world's economic\n", + "Line 31957: ECONOMIC SIGNALS\n", + "Line 32589: have contributed to the nation's economic\n", + "Line 32635: East Lansing-based Anderson Economic Group. Senior consultant Ilhan\n", + "Line 32766: economic ruin.\n", + "Line 33279: the evidence,\" arguing that Obama's economic proposals were far\n", + "Line 34060: Trying to capitalize on economic uncertainty, House Democrats\n", + "Line 34084: emphasizing Republican culpability for the economic decline, a\n", + "Line 34119: president and an economic collapse.\n", + "Line 35151: As the economic downturn forces more workers like\n", + "Line 36690: would continue his foreign and economic policies. He\n", + "Line 37376: would continue his foreign and economic policies. He\n", + "Line 37633: on Nov. 14. Given the economic downturn, the election is ending\n", + "Line 37664: the brush fires of the economic crisis.\n", + "Line 37698: an economic stimulus plan for Germany that\n", + "Line 37722: the economic crisis was raising the risk\n", + "Line 37726: the government's need to promote economic growth was\n", + "Line 39448: deftness, Republican missteps and the economic crisis.\n", + "Line 39500: President Bush's unpopularity in threatening economic times\n", + "Line 40508: economic powers need to air their\n", + "Line 40708: Given the global economic meltdown and other crises, it\n", + "Line 42209: But they no longer make economic sense flying\n", + "Line 44382: reaching agreements on transportation and economic deals.\n", + "Line 44408: economic performance has been lackluster, and\n", + "Line 44438: discuss economic cooperation as a way to\n", + "Line 44658: tightened credit markets and an economic slowdown\n", + "Line 44662: a year ago amid \"an economic gauntlet, the likes of\n", + "Line 44739: dislocation, but also from the economic downturn,\" Mamoun Tazi, a\n", + "Line 44836: Weak economic data in Australia were also\n", + "Line 45212: and toward the stability of economic\n", + "Line 45215: number of households falling into economic jeopardy\n", + "Line 45812: problems, particularly during tough economic times when the\n", + "Line 47417: The reality of the economic game is that enormous changes\n", + "Line 47418: happening. When the senators plotted economic strategy, no one\n", + "Line 48536: found that during recessions or economic\n", + "Line 48544: to help stem the local economic\n", + "Line 49666: and an economic slowdown kept consumers away from\n", + "Line 53046: juggernaut of urbanization shifts the economic and demographic\n", + "Line 53146: welcomed the new economic connections. \"It can only help\n", + "Line 53454: use part of their $600 economic stimulus check to\n", + "Line 54112: and an economic slowdown kept consumers away from\n", + "Line 54426: been hit by a sharp economic downturn. And the troubles\n", + "Line 54432: economic times the chill is shocking.\n", + "Line 54451: Madrid, the government announced an economic stimulus program\n", + "Line 54453: summer, the nation's first quarterly economic\n", + "Line 54517: something of an economic miracle for this region, which\n", + "Line 54561: But Alberto Larraz, Aragon's economic minister, said he expected\n", + "Line 54907: higher fuel costs and the economic\n", + "Line 54926: economic slowdown has lowered demand for\n", + "Line 55161: \"continue to shoulder substantial economic burdens.\"\n", + "Line 55185: commensurate with its economic importance, its leadership cannot be\n", + "Line 55805: The economic crisis, for all its pain,\n", + "Line 55811: about the economic crisis on Friday night, she\n", + "Line 55843: American and a woman, an economic\n", + "Line 56696: interaction -- the intercourse of economic life -- had nearly\n", + "Line 56733: any kind of social and economic interchange is\n", + "Line 56737: the brink of the modern economic world the issues become even\n", + "Line 56882: Baumohl, managing director of the Economic Outlook Group, wrote in\n", + "Line 59814: economic era, a political era and\n", + "Line 60077: markets suffering because of serious economic\n", + "Line 60087: The nation's economic problems did not disappear by\n", + "Line 60106: still be looking at real economic problems\n", + "Line 60128: economic ills, people will rally behind\n", + "Line 60192: departed from Washington under ideal economic circumstances.\n", + "Line 60219: are bracing for a worsening economic downturn.\n", + "Line 60229: prepared for a fairly dramatic economic slowdown,\" said\n", + "Line 60255: fallout from an economic crisis originating in the housing\n", + "Line 60393: Weak economic data in Australia were also\n", + "Line 61305: during one of the worst economic conflagrations in a\n", + "Line 61352: economic policy during perilous financial times.\n", + "Line 61354: a renewed battle over which economic\n", + "Line 61513: Weak economic data in Australia were also\n", + "Line 61536: to keep up on global economic affairs. \"After the safety\n", + "Line 61710: economic turmoil.\n", + "Line 61773: economic conditions into their new-car orders.\n", + "Line 63754: their budget even with the economic\n", + "Line 64974: economic issues with his Taiwanese counterpart,\n", + "Line 65002: economic performance has been lackluster, and\n", + "Line 65028: discuss economic cooperation as a way to\n", + "Line 65688: in the middle of an economic downturn.\n", + "Line 65693: The economic downturn is making life tougher\n", + "Line 65727: deteriorating economic outlook and the banks' more\n", + "Line 65769: economic competence between Britain's two major\n", + "Line 65794: cope with \"the economic downturn made in Britain and\n", + "Line 67315: to cope with a growing economic\n", + "Line 67438: as both struggle to overcome economic slowdowns.\n", + "Line 67453: Taiwan's economic growth has lagged behind China's\n", + "Line 67516: channels for cross-straits economic exchanges,\" Chen said on\n", + "Line 68149: economic meltdown, the course of the\n", + "Line 68190: fiscal crisis created by the economic meltdown, then, the\n", + "Line 69164: economic crisis. By Nazila Fathi.\n", + "Line 69171: ECON-RISK (Undated) -- Today's economic turmoil, it seems, is an\n" + ] + } + ], "source": [ - "# a)" + "# a)\n", + "\n", + "def concordance_display(file_path, word):\n", + " with open(\"../../Data/txt/nyt_200811.txt\", \"r\") as f:\n", + " lines = f.readlines()\n", + " for i, line in enumerate(lines):\n", + " words = line.strip().split()\n", + " for j, w in enumerate(words):\n", + " if w.lower() == word.lower():\n", + " start = max(j-5, 0)\n", + " end = min(j+6, len(words))\n", + " context = ' '.join(words[start:end])\n", + " print(f\"Line {i+1}: {context}\")\n", + "\n", + "concordance_display('example.txt', 'economic')" ] }, { @@ -334,10 +938,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 93, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the\n", + "best\n" + ] + } + ], + "source": [ + "# a)\n", + "\n", + "with open(\"../../Data/txt/secret_ec.txt\", \"r\") as secret:\n", + " secret_text = secret.read()\n", + " \n", + "e_words = re.findall(r\"\\b\\w*e\\w*\\b\", secret_text)\n", + "\n", + "word_freq = Counter(e_words)\n", + "\n", + "most_common = word_freq.most_common(2)\n", + "\n", + "for word, count in most_common:\n", + " print(f\"{word}\")" + ] }, { "cell_type": "markdown", @@ -350,10 +977,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 167, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(('part', 'about'), 6), (('unix', 'is'), 4)]\n" + ] + } + ], + "source": [ + "# b)\n", + "\n", + "def find_new_bigrams(words):\n", + " bigrams = []\n", + " for i in range(len(words)-1):\n", + " if words[i+1][-1] in string.ascii_lowercase.translate(str.maketrans('', '', 'aeiou')):\n", + " bigrams.append((words[i], words[i+1]))\n", + " return bigrams\n", + "\n", + "with open(\"../../Data/txt/secret_ec.txt\", \"r\") as secret:\n", + " words = secret.read().lower().split()\n", + "\n", + "bigram_counts = Counter(find_new_bigrams(words))\n", + "common_bigrams = bigram_counts.most_common(2)\n", + "print(common_bigrams)" + ] }, { "cell_type": "markdown", @@ -368,10 +1019,61 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 78, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['every', 'thing']\n" + ] + } + ], + "source": [ + "with open(\"../../Data/txt/secret_ec.txt\", \"r\") as secret:\n", + " words = Counter(secret.read().split())\n", + " five_letter_words = [word for word, count in words.items() if len(word) == 5 and count == 1]\n", + " print(five_letter_words)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[('the', 22), ('best', 11)]\n", + "[(('part', 'about'), 6), (('unix', 'is'), 4)]\n", + "['every', 'thing']\n" + ] + } + ], + "source": [ + " print(most_common_words)\n", + " print(most_common_bigrams)\n", + " print(five_letter_words)" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This is the secret message: \"The best part about unix is everything\".\n" + ] + } + ], + "source": [ + "print('This is the secret message: \"The best part about unix is everything\".')" + ] } ], "metadata": { @@ -390,7 +1092,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.9.13" } }, "nbformat": 4, From a088de0ae82fd56273d87cdda5d75bc2de963984 Mon Sep 17 00:00:00 2001 From: icrimedkarub <79881115+icrimedkarub@users.noreply.github.com> Date: Sat, 15 Apr 2023 22:19:02 +0200 Subject: [PATCH 2/4] assignment turn in --- Assignments/EN/Assignment_6.ipynb | 189 ++++++++++++++++++++++++++++-- 1 file changed, 180 insertions(+), 9 deletions(-) diff --git a/Assignments/EN/Assignment_6.ipynb b/Assignments/EN/Assignment_6.ipynb index effa8fa8..148ba8b6 100644 --- a/Assignments/EN/Assignment_6.ipynb +++ b/Assignments/EN/Assignment_6.ipynb @@ -39,29 +39,200 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "# a)" + "# a)\n", + "\n", + "import numpy as np\n", + "\n", + "def biased_dice():\n", + " probabilities = np.arange(1, 9)\n", + " probabilities = probabilities / probabilities.sum()\n", + " while True:\n", + " yield np.random.choice(8, p=probabilities) + 1" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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jPnYfX1z4cIF3X777Xrsscf0wAMP2D2O323btk3jx49X7969dfnyZU2fPl1Dhw7V559/rtDQULvH84ubb75Zv/vd79S+fXtJ0vLly3Xffffps88+U9euXW2ezr/S09O1aNEi9ejRw+5R/Kpr167auHGjd79x48Y2TuN/BQUFuvPOOzVw4ED97W9/U2RkpL788sta/db9upSenq6Kigrv/uHDhzVkyBA9+OCDNk7lP7///e/19ttva/ny5eratav279+vxx57TC6XS5MmTbJ7vIBDENkkISFBCQkJdo9Ra9LS0nz2ly5dqsjISGVkZOiee+6xaSr/Gj58uM/+zJkztXDhQu3Zsyeggqi4uFhjxozR4sWL9dprr9k9jl8FBQUF5KtCV/z+97+X2+3W0qVLvcfatWtn30B+1qpVK5/93/3ud7r11lvVv39/mybyr927d+u+++7TL3/5S0nf/bt77733tH//fpsnC0y8ZYY64fF4JEnh4eE2T1I7KioqtGbNGl24cEFxcXF2j+NX48eP1y9/+UsNHjzY7lH87tixY4qJiVFsbKwefvhhnThxwu6R/Oqjjz5Sr1699OCDDyoyMlJ33HGHFi9ebPdYtaK8vFwrV67U448/7tdfwG2nu+66S5s2bdIXX3whSfrHP/6hnTt36t5777V5ssDEK0SodZZlafLkybrrrrvUrVs3u8fxq0OHDikuLk6lpaX6yU9+orVr16pLly52j+U3a9as0YEDB5Senm73KH7Xp08fvfvuu7rtttt05swZvfbaa+rXr5+OHDmiiIgIu8fzixMnTmjhwoWaPHmyXnzxRe3bt08TJ06U0+nUf/3Xf9k9nl+tW7dO58+f19ixY+0exW+ef/55eTwederUSY0bN1ZFRYVmzpypRx55xO7RAhJBhFr3zDPP6ODBg9q5c6fdo/hdx44dlZmZqfPnz+vPf/6zkpOTtW3btoCIopycHE2aNEnr169X06ZN7R7H777/lnX37t0VFxenW2+9VcuXL9fkyZNtnMx/Kisr1atXL82aNUuSdMcdd+jIkSNauHBhwAXRkiVLlJCQoJiYGLtH8Zv3339fK1eu1OrVq9W1a1dlZmYqJSVFMTExSk5Otnu8gEMQoVZNmDBBH330kbZv366bb77Z7nH8rkmTJt6bqnv16qX09HT94Q9/0DvvvGPzZDcuIyNDeXl5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\n", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# b)" + "# b)\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "probabilities = np.arange(1, 9)\n", + "probabilities = probabilities / probabilities.sum()\n", + "\n", + "results = np.random.choice(8, size=10000, p=probabilities) + 1\n", + "\n", + "plt.hist(results, bins=np.arange(1, 10), density=False, edgecolor='black')\n", + "plt.xticks(np.arange(1, 9))\n", + "plt.xlabel('Face value')\n", + "plt.ylabel('Count')\n", + "plt.show()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "6\n", + "8\n", + "7\n", + "7\n", + "6\n", + "8\n", + "7\n", + "5\n", + "7\n", + "6\n", + "5\n", + "6\n", + "5\n", + "3\n", + "7\n", + "6\n", + "6\n", + "4\n", + "7\n", + "7\n", + "2\n", + "7\n", + "8\n", + "2\n", + "8\n", + "8\n", + "4\n", + "3\n", + "8\n", + "2\n", + "8\n", + "7\n", + "6\n", + "6\n", + "8\n", + "7\n", + "5\n", + "5\n", + "4\n", + "4\n", + "6\n", + "2\n", + "4\n", + "7\n", + "6\n", + "4\n", + "5\n", + "2\n", + "8\n", + "4\n", + "7\n", + "7\n", + "8\n", + "8\n", + "8\n", + "6\n", + "6\n", + "4\n", + "2\n", + "3\n", + "5\n", + "6\n", + "3\n", + "4\n", + "6\n", + "3\n", + "8\n", + "8\n", + "4\n", + "8\n", + "6\n", + "4\n", + "8\n", + "8\n", + "8\n", + "7\n", + "4\n", + "5\n", + "8\n", + "5\n", + "7\n", + "5\n", + "5\n", + "6\n", + "8\n", + "5\n", + "5\n", + "5\n", + "5\n", + "6\n", + "2\n", + "7\n", + "8\n", + "8\n", + "8\n", + "6\n", + "8\n", + "2\n", + "5\n", + "8\n", + "8\n", + "8\n", + "8\n", + "7\n", + "5\n", + "7\n", + "6\n", + "6\n", + "8\n", + "7\n", + "7\n", + "1\n", + "0.003526999999991176\n" + ] + } + ], "source": [ - "# c)" + "# c)\n", + "\n", + "import numpy as np\n", + "import time\n", + "\n", + "def modded_biased_dice():\n", + " probabilities = np.arange(1, 9)\n", + " probabilities = probabilities / probabilities.sum()\n", + " rolls = set()\n", + " start_time = time.monotonic()\n", + " while len(rolls) < 8:\n", + " roll = np.random.choice(8, p=probabilities) + 1\n", + " rolls.add(roll)\n", + " yield roll\n", + " yield time.monotonic() - start_time\n", + "\n", + "results = modded_biased_dice()\n", + "for result in results:\n", + " print(result)" ] }, { @@ -124,7 +295,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.6" + "version": "3.9.13" } }, "nbformat": 4, From 9f0fc9b7a26f2be3cbbe1ea74c6101a92aa0be3c Mon Sep 17 00:00:00 2001 From: icrimedkarub <79881115+icrimedkarub@users.noreply.github.com> Date: Sat, 15 Apr 2023 22:21:21 +0200 Subject: [PATCH 3/4] del --- Assignments/EN/Assignment_6.ipynb | 303 ------------------------------ 1 file changed, 303 deletions(-) delete mode 100644 Assignments/EN/Assignment_6.ipynb diff --git a/Assignments/EN/Assignment_6.ipynb b/Assignments/EN/Assignment_6.ipynb deleted file mode 100644 index 148ba8b6..00000000 --- a/Assignments/EN/Assignment_6.ipynb +++ /dev/null @@ -1,303 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "<img src=\"https://communications.univie.ac.at/fileadmin/_processed_/csm_Uni_Logo_2016_2f47aacf37.jpg\" \n", - " alt=\"Logo Universität Wien\" \n", - " width=\"200\"/>\n", - "\n", - "# Practical Machine Learning for Natural Language Processing - 2023 SS \n", - "\n", - "### Assigment 2 - Generators and Classes \n", - "\n", - "In this assigment we are going to play with generators and instances/classes - structures that retain state. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "***" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1. Alea Iacta Est \n", - "\n", - "(a) Using [generator functions](https://github.com/rsouza/Python_Course/blob/master/Notebooks/Python_Basic/03_Functions.ipynb), create an object that emulates an eight-sided dice (1-8) that is biased, such that the probability of this generator function returning a certain value is proportional to the value itself (i.e. the face \"6\" is 3 times more likely to come out than face \"2\"); \n", - "\n", - " <img src=\"https://cdn11.bigcommerce.com/s-70184/images/stencil/608x608/products/532/7428/d8-dice-blue__64321.1664335674.jpg\" alt=\"8-Dice\" style=\"width:250px;height:300px;\"> \n", - "\n", - "(b) Using [Matplotlib](https://matplotlib.org/) plt.plot or plt.hist commands, show graphically the result of 10000 casts of the die; \n", - "\n", - "(c) Modify this generator function so that it terminates automatically when all possible values (1,2,3,4,5,6,7,8) have been cast at least once. In this case, it will return the total absolute time that has elapsed since the first iteration. (hint: a function can have both **return** and **yield** commands) " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# a)\n", - "\n", - "import numpy as np\n", - "\n", - "def biased_dice():\n", - " probabilities = np.arange(1, 9)\n", - " probabilities = probabilities / probabilities.sum()\n", - " while True:\n", - " yield np.random.choice(8, p=probabilities) + 1" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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jPnYfX1z4cIF3X777Xrsscf0wAMP2D2O323btk3jx49X7969dfnyZU2fPl1Dhw7V559/rtDQULvH84ubb75Zv/vd79S+fXtJ0vLly3Xffffps88+U9euXW2ezr/S09O1aNEi9ejRw+5R/Kpr167auHGjd79x48Y2TuN/BQUFuvPOOzVw4ED97W9/U2RkpL788sta/db9upSenq6Kigrv/uHDhzVkyBA9+OCDNk7lP7///e/19ttva/ny5eratav279+vxx57TC6XS5MmTbJ7vIBDENkkISFBCQkJdo9Ra9LS0nz2ly5dqsjISGVkZOiee+6xaSr/Gj58uM/+zJkztXDhQu3Zsyeggqi4uFhjxozR4sWL9dprr9k9jl8FBQUF5KtCV/z+97+X2+3W0qVLvcfatWtn30B+1qpVK5/93/3ud7r11lvVv39/mybyr927d+u+++7TL3/5S0nf/bt77733tH//fpsnC0y8ZYY64fF4JEnh4eE2T1I7KioqtGbNGl24cEFxcXF2j+NX48eP1y9/+UsNHjzY7lH87tixY4qJiVFsbKwefvhhnThxwu6R/Oqjjz5Sr1699OCDDyoyMlJ33HGHFi9ebPdYtaK8vFwrV67U448/7tdfwG2nu+66S5s2bdIXX3whSfrHP/6hnTt36t5777V5ssDEK0SodZZlafLkybrrrrvUrVs3u8fxq0OHDikuLk6lpaX6yU9+orVr16pLly52j+U3a9as0YEDB5Senm73KH7Xp08fvfvuu7rtttt05swZvfbaa+rXr5+OHDmiiIgIu8fzixMnTmjhwoWaPHmyXnzxRe3bt08TJ06U0+nUf/3Xf9k9nl+tW7dO58+f19ixY+0exW+ef/55eTwederUSY0bN1ZFRYVmzpypRx55xO7RAhJBhFr3zDPP6ODBg9q5c6fdo/hdx44dlZmZqfPnz+vPf/6zkpOTtW3btoCIopycHE2aNEnr169X06ZN7R7H777/lnX37t0VFxenW2+9VcuXL9fkyZNtnMx/Kisr1atXL82aNUuSdMcdd+jIkSNauHBhwAXRkiVLlJCQoJiYGLtH8Zv3339fK1eu1OrVq9W1a1dlZmYqJSVFMTExSk5Otnu8gEMQoVZNmDBBH330kbZv366bb77Z7nH8rkmTJt6bqnv16qX09HT94Q9/0DvvvGPzZDcuIyNDeXl5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\n", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# b)\n", - "\n", - "import matplotlib.pyplot as plt\n", - "\n", - "probabilities = np.arange(1, 9)\n", - "probabilities = probabilities / probabilities.sum()\n", - "\n", - "results = np.random.choice(8, size=10000, p=probabilities) + 1\n", - "\n", - "plt.hist(results, bins=np.arange(1, 10), density=False, edgecolor='black')\n", - "plt.xticks(np.arange(1, 9))\n", - "plt.xlabel('Face value')\n", - "plt.ylabel('Count')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n", - "6\n", - "8\n", - "7\n", - "7\n", - "6\n", - "8\n", - "7\n", - "5\n", - "7\n", - "6\n", - "5\n", - "6\n", - "5\n", - "3\n", - "7\n", - "6\n", - "6\n", - "4\n", - "7\n", - "7\n", - "2\n", - "7\n", - "8\n", - "2\n", - "8\n", - "8\n", - "4\n", - "3\n", - "8\n", - "2\n", - "8\n", - "7\n", - "6\n", - "6\n", - "8\n", - "7\n", - "5\n", - "5\n", - "4\n", - "4\n", - "6\n", - "2\n", - "4\n", - "7\n", - "6\n", - "4\n", - "5\n", - "2\n", - "8\n", - "4\n", - "7\n", - "7\n", - "8\n", - "8\n", - "8\n", - "6\n", - "6\n", - "4\n", - "2\n", - "3\n", - "5\n", - "6\n", - "3\n", - "4\n", - "6\n", - "3\n", - "8\n", - "8\n", - "4\n", - "8\n", - "6\n", - "4\n", - "8\n", - "8\n", - "8\n", - "7\n", - "4\n", - "5\n", - "8\n", - "5\n", - "7\n", - "5\n", - "5\n", - "6\n", - "8\n", - "5\n", - "5\n", - "5\n", - "5\n", - "6\n", - "2\n", - "7\n", - "8\n", - "8\n", - "8\n", - "6\n", - "8\n", - "2\n", - "5\n", - "8\n", - "8\n", - "8\n", - "8\n", - "7\n", - "5\n", - "7\n", - "6\n", - "6\n", - "8\n", - "7\n", - "7\n", - "1\n", - "0.003526999999991176\n" - ] - } - ], - "source": [ - "# c)\n", - "\n", - "import numpy as np\n", - "import time\n", - "\n", - "def modded_biased_dice():\n", - " probabilities = np.arange(1, 9)\n", - " probabilities = probabilities / probabilities.sum()\n", - " rolls = set()\n", - " start_time = time.monotonic()\n", - " while len(rolls) < 8:\n", - " roll = np.random.choice(8, p=probabilities) + 1\n", - " rolls.add(roll)\n", - " yield roll\n", - " yield time.monotonic() - start_time\n", - "\n", - "results = modded_biased_dice()\n", - "for result in results:\n", - " print(result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2. A ticket to the first Class \n", - "\n", - "+ Create a Class called \"Elevator\". Each instance of this class receives as parameters the number of floors in the building and starts the elevator on the lowest floor. \n", - "+ This Class should have methods and properties to allow the elevator to:\n", - "<br></br>\n", - " + Receive a call - user(s) press a button to go to specific floor(s); \n", - " + Receive a floor as a destination - when users enter the elevator, each one may press a button to choose destination floor; \n", - " + Store and inform which floor the elevator is at each moment(consider that trips for consecutive floors takes 5 seconds, and stopping takes 10 seconds); \n", - " + Store and inform which users are in the elevator; \n", - " + Store and inform the sequence of floors yet to be visited; \n", - " + Store the number of times the elevator stopped in each floor (passing through the floor without \"stopping\" on the floor does not count); \n", - " + Refuses commands to go to inexistent floors. \n", - "<br></br>\n", - "+ Simulate the behavior of the elevator serving ten users, each one calling from a random floor, and chosing a random destination floor. \n", - "+ Graphically illustrate the current elevator position for the requested simulation. \n", - "+ (BONUS) Create a smart building simulator, controlling calls made to n > 1 elevators and routing elevator properly. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "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.9.13" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} From a1e87b2c04b50878f829b83de60259a2d7295c94 Mon Sep 17 00:00:00 2001 From: icrimedkarub <79881115+icrimedkarub@users.noreply.github.com> Date: Sat, 15 Apr 2023 22:22:29 +0200 Subject: [PATCH 4/4] assignment turn in --- Assignments/EN/Assignment_6.ipynb | 205 ++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 Assignments/EN/Assignment_6.ipynb diff --git a/Assignments/EN/Assignment_6.ipynb b/Assignments/EN/Assignment_6.ipynb new file mode 100644 index 00000000..7a826e6c --- /dev/null +++ b/Assignments/EN/Assignment_6.ipynb @@ -0,0 +1,205 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<img src=\"https://communications.univie.ac.at/fileadmin/_processed_/csm_Uni_Logo_2016_2f47aacf37.jpg\" \n", + " alt=\"Logo Universität Wien\" \n", + " width=\"200\"/>\n", + "\n", + "# Practical Machine Learning for Natural Language Processing - 2023 SS \n", + "\n", + "### Assigment 2 - Generators and Classes \n", + "\n", + "In this assigment we are going to play with generators and instances/classes - structures that retain state. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "***" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Alea Iacta Est \n", + "\n", + "(a) Using [generator functions](https://github.com/rsouza/Python_Course/blob/master/Notebooks/Python_Basic/03_Functions.ipynb), create an object that emulates an eight-sided dice (1-8) that is biased, such that the probability of this generator function returning a certain value is proportional to the value itself (i.e. the face \"6\" is 3 times more likely to come out than face \"2\"); \n", + "\n", + " <img src=\"https://cdn11.bigcommerce.com/s-70184/images/stencil/608x608/products/532/7428/d8-dice-blue__64321.1664335674.jpg\" alt=\"8-Dice\" style=\"width:250px;height:300px;\"> \n", + "\n", + "(b) Using [Matplotlib](https://matplotlib.org/) plt.plot or plt.hist commands, show graphically the result of 10000 casts of the die; \n", + "\n", + "(c) Modify this generator function so that it terminates automatically when all possible values (1,2,3,4,5,6,7,8) have been cast at least once. In this case, it will return the total absolute time that has elapsed since the first iteration. (hint: a function can have both **return** and **yield** commands) " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# a)\n", + "\n", + "import numpy as np\n", + "\n", + "def biased_dice():\n", + " probabilities = np.arange(1, 9)\n", + " probabilities = probabilities / probabilities.sum()\n", + " while True:\n", + " yield np.random.choice(8, p=probabilities) + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# b)\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "probabilities = np.arange(1, 9)\n", + "probabilities = probabilities / probabilities.sum()\n", + "\n", + "results = np.random.choice(8, size=10000, p=probabilities) + 1\n", + "\n", + "plt.hist(results, bins=np.arange(1, 10), density=False, edgecolor='black')\n", + "plt.xticks(np.arange(1, 9))\n", + "plt.xlabel('Sides')\n", + "plt.ylabel('Rolls')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6\n", + "7\n", + "6\n", + "5\n", + "5\n", + "7\n", + "8\n", + "7\n", + "7\n", + "6\n", + "4\n", + "2\n", + "1\n", + "8\n", + "3\n", + "0.000644125000007989\n" + ] + } + ], + "source": [ + "# c)\n", + "\n", + "import numpy as np\n", + "import time\n", + "\n", + "def modded_biased_dice():\n", + " probabilities = np.arange(1, 9)\n", + " probabilities = probabilities / probabilities.sum()\n", + " rolls = set()\n", + " start_time = time.monotonic()\n", + " while len(rolls) < 8:\n", + " roll = np.random.choice(8, p=probabilities) + 1\n", + " rolls.add(roll)\n", + " yield roll\n", + " yield time.monotonic() - start_time\n", + "\n", + "results = modded_biased_dice()\n", + "for result in results:\n", + " print(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. A ticket to the first Class \n", + "\n", + "+ Create a Class called \"Elevator\". Each instance of this class receives as parameters the number of floors in the building and starts the elevator on the lowest floor. \n", + "+ This Class should have methods and properties to allow the elevator to:\n", + "<br></br>\n", + " + Receive a call - user(s) press a button to go to specific floor(s); \n", + " + Receive a floor as a destination - when users enter the elevator, each one may press a button to choose destination floor; \n", + " + Store and inform which floor the elevator is at each moment(consider that trips for consecutive floors takes 5 seconds, and stopping takes 10 seconds); \n", + " + Store and inform which users are in the elevator; \n", + " + Store and inform the sequence of floors yet to be visited; \n", + " + Store the number of times the elevator stopped in each floor (passing through the floor without \"stopping\" on the floor does not count); \n", + " + Refuses commands to go to inexistent floors. \n", + "<br></br>\n", + "+ Simulate the behavior of the elevator serving ten users, each one calling from a random floor, and chosing a random destination floor. \n", + "+ Graphically illustrate the current elevator position for the requested simulation. \n", + "+ (BONUS) Create a smart building simulator, controlling calls made to n > 1 elevators and routing elevator properly. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}