From d5c64b2a136422d858e4d1a227941b128448d38f Mon Sep 17 00:00:00 2001 From: Ryszard Staruch Date: Wed, 13 Nov 2024 13:27:23 +0100 Subject: [PATCH] Add & update files --- 05_analiza_morfologiczna.ipynb | 4 +- examples.ipynb | 234 ++++++++++++++++++++++++++++++++- wyklad_debugowanie.ipynb | 112 ++++++++++++++++ 3 files changed, 347 insertions(+), 3 deletions(-) create mode 100644 wyklad_debugowanie.ipynb diff --git a/05_analiza_morfologiczna.ipynb b/05_analiza_morfologiczna.ipynb index 1d53b26..0c64f14 100644 --- a/05_analiza_morfologiczna.ipynb +++ b/05_analiza_morfologiczna.ipynb @@ -19,7 +19,7 @@ "source": [ "### Zadanie 1 \n", "\n", - "Zaimplementuj algorytm Portera dla języka angielskiego (dokładne kroki są opisane tutaj https://vijinimallawaarachchi.com/2017/05/09/porter-stemming-algorithm/). Funkcja musi przyjmować słowo i zwracać jego rdzeń (stem). Przetestuj program na podanych przkładowych słowach oraz na minimum własnoręcznie wybranych słowach. Funkcja musi uwzględniać wielkość liter w podanym słowie.\n", + "Zaimplementuj algorytm Portera dla języka angielskiego (dokładne kroki są opisane tutaj https://vijinimallawaarachchi.com/2017/05/09/porter-stemming-algorithm/). Funkcja musi przyjmować słowo i zwracać jego rdzeń (stem). Przetestuj program na podanych przykładowych słowach oraz na minimum 3 własnoręcznie wybranych słowach. Funkcja musi uwzględniać wielkość liter w podanym słowie.\n", "\n", "W celu efektywnego rozwiązania zadania wykonaj następujące kroki:\n", "1. Zdefiniuj pojedyncze zadania znajdujące się w algorytmie Portera.\n", @@ -60,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ diff --git a/examples.ipynb b/examples.ipynb index 7b570e2..871f1e8 100644 --- a/examples.ipynb +++ b/examples.ipynb @@ -204,7 +204,239 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# jeżeli ten if określa 3 warianty na tym samym poziomie, to nie stosujemy zagnieżdżenia warunków\n", + "if [ \"$positive_count\" -gt \"$negative_count\" ]; then\n", + " echo \"wydzwiek pozytywny\"\n", + "else\n", + " if [ \"$negative_count\" -gt \"$positive_count\" ]; then\n", + " echo \"wydzwiek: negatywny\"\n", + " else\n", + " echo \"wydzwiek: neutralny\"\n", + " fi\n", + "fi\n", + "\n", + "\n", + "# ten else nigdy się nie wywoła - nie powinno go być\n", + "if [ $positive_count -gt $negative_count ]\n", + " then echo \"Positive\"\n", + "elif [ $positive_count -lt $negative_count ]\n", + " then echo \"Negative\"\n", + "elif [ $positive_count -eq $negative_count ]\n", + " then echo \"Neutral\"\n", + "else\n", + " echo \"Error\" # to nie istnieje\n", + "fi\n", + "\n", + "\n", + "# positive - taki błąd mocno rzuca się w oczy (mimo że program działa)\n", + "POZITIVE=\"positive-words.txt\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Notebook 05" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# algorytm wzięty z pseudokodu z prezentacji profesora Jassema\n", + "def maxmatch_text_split(text, vocabulary):\n", + " if text == \"\":\n", + " return []\n", + " for i in range(len(text)-1, -1, -1):\n", + " firstword = text[0:i+1] # nie piszemy [0:x] tylko [:x]\n", + " reminder = text[i+1:]\n", + " if firstword in vocabulary:\n", + " return [firstword] + maxmatch_text_split(reminder, vocabulary)\n", + " firstword = text[0]\n", + " reminder = text[1]\n", + " return [firstword] + maxmatch_text_split(reminder, vocabulary)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def create_bpe_tokenizer(text, max_vocab_length):\n", + " nfoiwanfoiwa\n", + " \n", + " for x in range(10):\n", + " nfwoiaf\n", + " \n", + " awfnoia\n", + " if noiawniofa:\n", + " iognioe\n", + " else:\n", + " nawoinoigagna\n", + " fniaw..\n", + "\n", + " return 0\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import string\n", + "from collections import Counter\n", + "import re\n", + "\n", + "\n", + "def create_bpe_tokenizer(text, max_vocab_length):\n", + " text = (\"\".join(x for x in text if x not in string.punctuation)).lower()\n", + " vocabulary = list(set([x for x in text]))\n", + " while len(vocabulary)