From c3d1152233751aacf279ad0a9a51541573b5cf83 Mon Sep 17 00:00:00 2001 From: Jakub Pokrywka Date: Wed, 14 Apr 2021 15:20:47 +0200 Subject: [PATCH] kleister nda --- cw/05_NDA_IE.ipynb | 236 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 cw/05_NDA_IE.ipynb diff --git a/cw/05_NDA_IE.ipynb b/cw/05_NDA_IE.ipynb new file mode 100644 index 0000000..da81561 --- /dev/null +++ b/cw/05_NDA_IE.ipynb @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Zajecia: ekstrakcja informacji z dokumentów " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Przedstawianie zadania z wyszukiwarek\n", + "\n", + "Osoby, które zrobiły zadanie- proszę o krótką prezentację na początku zajęć oraz wklikanie hand-in w zadaniu na MS TEAMS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wyzwanie Kleister NDA\n", + "Proszę sforkować repozytorium https://git.wmi.amu.edu.pl/kubapok/kleister-nda-clone i pobrać na komputer\n", + "\n", + "### Metryki w klasyfikacji binarnej" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$TP$ = TRUE POSITIVE\n", + "\n", + "$TN$ = TRUE NEGATIVE\n", + "\n", + "$FP$ = FALSE POSITIVE\n", + "\n", + "$FN$ = FALSE POSITIVE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ACCURACY = $\\frac{TP + TN}{TP + TN + FP + FN}$\n", + "\n", + "PRECISION = $\\frac{TP}{TP + FP}$\n", + "\n", + "RECALL = $\\frac{TP}{TP + FN}$\n", + "\n", + "F1 = $2 \\times \\frac{PRECISION \\times RECALL}{PRECISION + RECALL}$" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.metrics import *" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "true = [0] * 30 + [1] * 70" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "predicted = [0] * 30 + [1] * 70" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accuracy_score(true, predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "precision_score(true, predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "recall_score(true, predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f1_score(true, predicted)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Automatyczna ocena kleister NDA\n", + "\n", + "W katalogu głównym projektu: \n", + "\n", + "`wget https://gonito.net/get/bin/geval`\n", + "\n", + "`chmod u+x geval`\n", + "\n", + "`./geval -t dev-0` (dla zbioru deweloperskiego)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ZADANIE DOMOWE KLEISTER NDA\n", + "- stworzyć regułowy ekstraktor informacji (np. na podstawie wyrażeń regularnych)\n", + "- wygenerować pliki `train/out.tsv`, `dev-0/out.tsv`, `test-A/out.tsv`\n", + "- dodać do commita w swoim forku powyższe pliki wraz z ze skryptem (skryptami), który pomógł je wygenerować. Skrypty powinny byc w formie tekstowej (jeżeli to jupyter to proszę przekonwertować do zwykłego pliku .py, np jupyter nbconvert --to script a.ipynb)\n", + "- wynik zaliczający zadanie to więcej niż 0.3 wg metryki F1 dla zbioru dev-0\n", + "- punkty za zadanie: 40, a dla 5 osób które osiągną najwyższy wyniki dostaną 60 punktów zamiast 40\n", + "- zadanie oddajemy do 27 kwietnia w MS TEAMS podając link do repozytorium. Proszę albo nadać użytkownikowi kubapok uprawnienia do przeglądania repozytorium, albo zrobić je publiczne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ZADANIE DOMOWE Przygotuj wyzwanie dotyczące tekstu zgodne ze standardami Gonito\n", + "\n", + "Warunki konieczne:\n", + "- wyzwanie musi spełniać standardy Gonito\n", + "- w szczególności musi przechodzić walidację (`geval --validate --expected-directory .`)\n", + "- wyzwanie musi być dostarczone jako repozytorium git\n", + "- leży również dostarczyć osobne repozytorium ze skryptami tworzącymi wyzwanie\n", + "- leży także dostarczyć jedno przykładowe rozwiązanie - baseline (może być prosty/\"głupi\")\n", + "- cały zbiór danych musi mieć co najmniej 5 tys. elementów \n", + "Punktacja:\n", + "- bazowa liczba punktów za spełnienie - 80 punktów\n", + "- +30 - interesujący zbiór danych\n", + "- +30 - rozmiar zbioru\n", + "- +10 - zbiór z ekstrakcji informacji (podobny do Kleister Charity/NDA)\n", + "- maksimum: 150 punktów\n", + "Uwaga: nie jest to wymaganie, ale zachęcamy do opracowywanie zbiorów danych potrzebnych do pracy magisterskiej.\n", + "\n", + "Termin 5 maj 2021 (proszę w MS TEAMS podać link do repozytorium albo publicznego albo z dostępem dla kubapok i filipg na git.wmi)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}