{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Zajęcia 5: Analiza morfologiczna (Morphological Analysis)\n", "\n", "Wszystkie zadania ćwiczeniowe należy rozwiązywać w języku Python w kopii Jupyter Notebook'a dla danych zajęć w wyznaczonych miejscach (komórki z komentarzem `# Solution`).\n", "\n", "Nie należy usuwać komórek z treścią zadań.\n", "\n", "Należy wyświetlać outputy przy pomocy `print`" ] }, { "cell_type": "markdown", "metadata": {}, "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 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", "2. Przygotuj puste funkcje wykonujące zadania z kroku nr 1.\n", "3. Napisz kod w funkcjach z kroku nr 2.\n", "4. Uzupełnij kod w funkcji stem_word, która powinna wywoływać napisane funkcje." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Algorytm Portera składa się z następujących zadań:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(tu wypisz zadania)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Funkcje realizujące zadania:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Solution 1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def stem_word(word):\n", " return word" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Testy (należy dodać minimum 3 własne przypadki)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Słowo: MULTIDIMENSIONAL\n", "Po wykonaniu algorytmu Portera: MULTIDIMENSIONAL\n", "\n", "Słowo: CHARACTERIZATION\n", "Po wykonaniu algorytmu Portera: CHARACTERIZATION\n", "\n", "Słowo: Erroneous\n", "Po wykonaniu algorytmu Portera: Erroneous\n", "\n", "Słowo: oBvIoUsLy\n", "Po wykonaniu algorytmu Portera: oBvIoUsLy\n", "\n", "Słowo: happiness\n", "Po wykonaniu algorytmu Portera: happiness\n", "\n" ] } ], "source": [ "print(f\"Słowo: MULTIDIMENSIONAL\\nPo wykonaniu algorytmu Portera: {stem_word('MULTIDIMENSIONAL')}\\n\")\n", "print(f\"Słowo: CHARACTERIZATION\\nPo wykonaniu algorytmu Portera: {stem_word('CHARACTERIZATION')}\\n\")\n", "print(f\"Słowo: Erroneous\\nPo wykonaniu algorytmu Portera: {stem_word('Erroneous')}\\n\")\n", "print(f\"Słowo: oBvIoUsLy\\nPo wykonaniu algorytmu Portera: {stem_word('oBvIoUsLy')}\\n\")\n", "print(f\"Słowo: happiness\\nPo wykonaniu algorytmu Portera: {stem_word('happiness')}\\n\")" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 2 }