From 8bf206100410c24d2092bb82348248190521f978 Mon Sep 17 00:00:00 2001 From: Badr Ghazlane Date: Sun, 26 Sep 2021 16:14:57 +0200 Subject: [PATCH] feat: structure day 5 --- .../week03/day05/ex01/audit/readme.md | 12 +++++++ .../week03/day05/ex01/readme.md | 5 +++ .../week03/day05/ex02/audit/readme.md | 13 +++++++ .../week03/day05/ex02/readme.md | 11 ++++++ .../week03/day05/ex03/audit/readme.md | 15 ++++++++ .../day05/ex03/images/w3day05ex1_plot.png | Bin 0 -> 34046 bytes .../week03/day05/ex03/readme.md | 17 +++++++++ .../week03/day05/ex04/audit/readme.md | 8 +++++ .../week03/day05/ex04/readme.md | 13 +++++++ .../week03/day05/ex05/audit/readme.md | 34 ++++++++++++++++++ .../week03/day05/ex05/readme.md | 17 +++++++++ .../week03/day05/ex06/audit/readme.md | 18 ++++++++++ .../week03/day05/ex06/readme.md | 18 ++++++++++ one_exercise_per_file/week03/day05/readme.md | 20 +++++++++++ .../piscine/Week3/w3day05.md | 2 +- 15 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 one_exercise_per_file/week03/day05/ex01/audit/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex01/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex02/audit/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex02/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex03/audit/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex03/images/w3day05ex1_plot.png create mode 100644 one_exercise_per_file/week03/day05/ex03/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex04/audit/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex04/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex05/audit/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex05/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex06/audit/readme.md create mode 100644 one_exercise_per_file/week03/day05/ex06/readme.md create mode 100644 one_exercise_per_file/week03/day05/readme.md diff --git a/one_exercise_per_file/week03/day05/ex01/audit/readme.md b/one_exercise_per_file/week03/day05/ex01/audit/readme.md new file mode 100644 index 0000000..282f620 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex01/audit/readme.md @@ -0,0 +1,12 @@ +1. This question is validated if the embedding's shape is `(96,)` +and the vector 20 first values are: + +``` +array([ 1.0522802e+00, 1.4806499e+00, 7.7402556e-01, 1.0373484e+00, + 4.1474584e-01, -5.7604712e-01, 3.0856287e+00, 1.4814860e-01, + -3.0170975e+00, 3.4453702e+00, 6.3330579e-01, 1.1655847e+00, + 3.8489954e+00, 2.3469532e+00, 5.0532556e-01, -1.9386177e+00, + 9.7954911e-01, 2.3573284e+00, -1.9812435e-03, 5.5679207e+00], + dtype=float32) + +``` diff --git a/one_exercise_per_file/week03/day05/ex01/readme.md b/one_exercise_per_file/week03/day05/ex01/readme.md new file mode 100644 index 0000000..5a360b0 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex01/readme.md @@ -0,0 +1,5 @@ +# Exercise 1 Embedding 1 + +The goal of this exercise is to learn to load an embedding on SpaCy. + +1. Install and load `en_core_web_sm` embedding. Compute the embedding of `car`. \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/ex02/audit/readme.md b/one_exercise_per_file/week03/day05/ex02/audit/readme.md new file mode 100644 index 0000000..38e68a1 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex02/audit/readme.md @@ -0,0 +1,13 @@ +1. The question is validated if the tokens printed are: + + ``` + Tokenize + this + sentence + . + And + this + one + too + . + ``` \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/ex02/readme.md b/one_exercise_per_file/week03/day05/ex02/readme.md new file mode 100644 index 0000000..1122b14 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex02/readme.md @@ -0,0 +1,11 @@ +# Exercise 2: Tokenization + + +The goal of this exercise is to learn to tokenize a document using Spacy. We did this using NLTK yesterday. + +1. Tokenize the text below and print the tokens + + ``` + text = "Tokenize this sentence. And this one too." + + ``` \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/ex03/audit/readme.md b/one_exercise_per_file/week03/day05/ex03/audit/readme.md new file mode 100644 index 0000000..3369119 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex03/audit/readme.md @@ -0,0 +1,15 @@ +1. This question is validated if the embeddings of each word has a shape of `(300,)` and if the first 20 values of the embedding of laptop are: + + ``` + array([-0.37639 , -0.075521, 0.4908 , 0.19863 , -0.11088 , -0.076145, + -0.30367 , -0.69663 , 0.87048 , 0.54388 , 0.42523 , 0.18045 , + -0.4358 , -0.32606 , -0.70702 , -0.069127, -0.42674 , 2.4147 , + 0.26806 , 0.46584 ], dtype=float32) + + ``` + +2. This question is validated if the output is + +![alt text][logo] + +[logo]: w3day05ex1_plot.png "Plot" diff --git a/one_exercise_per_file/week03/day05/ex03/images/w3day05ex1_plot.png b/one_exercise_per_file/week03/day05/ex03/images/w3day05ex1_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..24610a0c069889d2ff690fe7f184329feaab33a9 GIT binary patch literal 34046 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 z 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 sentence 2 : 0.7073220863266589 + sentence_1 <=> sentence 3: 0.42663743263528325 + sentence_2 <=> sentence 3: 0.3336274235605957 + + ``` diff --git a/one_exercise_per_file/week03/day05/ex04/readme.md b/one_exercise_per_file/week03/day05/ex04/readme.md new file mode 100644 index 0000000..c734e53 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex04/readme.md @@ -0,0 +1,13 @@ +# Exercise 4 Sentences' similarity + +The goal of this exerice is to learn to compute the similarity between two sentences. As explained in the documentation: **The word embedding of a full sentence is simply the average over all different words**. This is how `similarity` works in SpaCy. This small use case is very interesting because if we build a corpus of sentences that express an intention as **buy shoes**, then we can detect this intention and use it to propose shoes advertisement for customers. The language model used in this exercise is `en_core_web_sm`. + + +1. Compute the similarities (3 in total) between these sentences: + + ``` + sentence_1 = "I want to buy shoes" + sentence_2 = "I would love to purchase running shoes" + sentence_3 = "I am in my room" + + ``` \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/ex05/audit/readme.md b/one_exercise_per_file/week03/day05/ex05/audit/readme.md new file mode 100644 index 0000000..d91d833 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex05/audit/readme.md @@ -0,0 +1,34 @@ +1. This question is validated if the ouptut of the NER is + + ``` + Apple Inc. ORG + American NORP + Cupertino GPE + California GPE + Five CARDINAL + U.S. GPE + Amazon ORG + Google ORG + Microsoft ORG + Facebook ORG + Apple ORG + Steve Jobs PERSON + Steve Wozniak PERSON + Ronald Wayne PERSON + April 1976 DATE + Wozniak PERSON + Apple ORG + Wayne PERSON + 12 days DATE + Apple Computer, Inc. ORG + January 1977 DATE + Apple ORG + Apple II ORG + ``` +2. This question is validated if the output shows that the first occurence of apple is not a named entity. In my case here is what the NER returns: + + ``` + Paul 1 5 PERSON + Apple 50 55 ORG + + ``` \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/ex05/readme.md b/one_exercise_per_file/week03/day05/ex05/readme.md new file mode 100644 index 0000000..1636376 --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex05/readme.md @@ -0,0 +1,17 @@ +# Exercise 5: NER + +The goal of this exercise is to learn to use a Named entity recognition algorithm to detect entities. + +``` +Apple Inc. is an American multinational technology company headquartered in Cupertino, California, that designs, develops, and sells consumer electronics, computer software, and online services. It is considered one of the Big Five companies in the U.S. information technology industry, along with Amazon, Google, Microsoft, and Facebook. +Apple was founded by Steve Jobs, Steve Wozniak, and Ronald Wayne in April 1976 to develop and sell Wozniak's Apple I personal computer, though Wayne sold his share back within 12 days. It was incorporated as Apple Computer, Inc., in January 1977, and sales of its computers, including the Apple I and Apple II, grew quickly. + ``` + +1. Extract all named entities in the text as well as the label of the named entity. + +2. The NER is also useful to remove ambigous entities. From a conceptual standpoint, disambiguation is the process of determining the most probable meaning of a specific phrase. For example in the sentence below, the word `apple` is present twice in the sentence. The first time to mention the fruit and the second to mention a company. Run the NER on this sentence and print the named entity, the `start_char`, the `end_char` and the label of the named entity. + +``` +Paul eats an apple while watching a movie on his Apple device. +``` +https://en.wikipedia.org/wiki/Named-entity_recognition \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/ex06/audit/readme.md b/one_exercise_per_file/week03/day05/ex06/audit/readme.md new file mode 100644 index 0000000..0543abe --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex06/audit/readme.md @@ -0,0 +1,18 @@ +1. This question is validated if the sentences outputed are: + + ``` + INFO: Bezos PROPN NNP + Sentence: Amazon (AMZN) enters 2021 with plenty of big opportunities, but is losing its lauded Chief Executive Jeff Bezos, who announced his plan to step aside in the third quarter. + + + INFO: Bezos PROPN NNP + Sentence: Bezos will hand off his role as chief executive to Andy Jassy, the CEO of its cloud computing unit. + + + INFO: Bezos PROPN NNP + Sentence: He's not leaving, as Bezos will transition to the role of Executive Chairman and remain active. + + + INFO: Bezos PROPN NNP + Sentence: "When you look at our financial results, what you're actually seeing are the long-run cumulative results of invention," Bezos said in written remarks with the Amazon earnings release. + ``` \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/ex06/readme.md b/one_exercise_per_file/week03/day05/ex06/readme.md new file mode 100644 index 0000000..f369ebf --- /dev/null +++ b/one_exercise_per_file/week03/day05/ex06/readme.md @@ -0,0 +1,18 @@ +# Exercise 6 Part-of-speech tags + +The goal od this exercise is to learn to use the Part-of-speech tags (**POS TAG**) using Spacy. As explained in wikipedia, the POS TAG is the process of marking up a word in a text (corpus) as corresponding to a particular part of speech, based on both its definition and its context. + +Example + +The sentence: **"Heat water in a large vessel"** is tagged this way after the POS TAG: +- heat verb (noun) +- water noun (verb) +- in prep (noun, adv) +- a det (noun) +- large adj (noun) +- vessel noun + + +The data `news_amazon.txt` used is a news paper about Amazon. + +1. Return all sentences mentioning **Bezos** as a NNP (tag). \ No newline at end of file diff --git a/one_exercise_per_file/week03/day05/readme.md b/one_exercise_per_file/week03/day05/readme.md new file mode 100644 index 0000000..5ad72b9 --- /dev/null +++ b/one_exercise_per_file/week03/day05/readme.md @@ -0,0 +1,20 @@ +# W3D2 Piscine AI - Data Science + + +# Table of Contents: + + +# Introduction + +Embeddings ... + +Library: Spacy is a natural language processing (NLP) library for Python designed to have fast performance, and with word embedding models built in, it’s perfect for a quick and easy start. + +There are many type of language models pre-trained in Spacy. Each has its specificities depending on the hypothesis taken. +## Historical + + + +## Rules + +## Ressources \ No newline at end of file diff --git a/one_md_per_day_format/piscine/Week3/w3day05.md b/one_md_per_day_format/piscine/Week3/w3day05.md index d7d1a8a..fd86d89 100644 --- a/one_md_per_day_format/piscine/Week3/w3day05.md +++ b/one_md_per_day_format/piscine/Week3/w3day05.md @@ -122,7 +122,7 @@ The goal of this exerice is to learn to compute the similarity between two sente ## Correction -2. This question is validated if the similarities between the sentences are: +1. This question is validated if the similarities between the sentences are: ``` sentence_1 <=> sentence 2 : 0.7073220863266589