KWT-2024/lab/lab_04-05.ipynb

1 line
19 KiB
Plaintext
Raw Permalink Normal View History

2024-04-23 23:54:26 +02:00
{"cells":[{"cell_type":"markdown","id":"going-morocco","metadata":{"id":"going-morocco"},"source":["![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n","<div class=\"alert alert-block alert-info\">\n","<h1> Komputerowe wspomaganie tłumaczenia </h1>\n","<h2> 4,5. <i>Klasyfikacja tematyczna (terminologii ciąg dalszy)</i> [laboratoria]</h2>\n","<h3>Rafał Jaworski (2021)</h3>\n","</div>\n","\n","![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"]},{"cell_type":"markdown","id":"expanded-entrance","metadata":{"id":"expanded-entrance"},"source":["# Komputerowe wspomaganie tłumaczenia"]},{"cell_type":"markdown","id":"atlantic-greenhouse","metadata":{"id":"atlantic-greenhouse"},"source":["# Zajęcia 4 i 5 - klasyfikacja tematyczna (terminologii ciąg dalszy)"]},{"cell_type":"markdown","id":"colored-nothing","metadata":{"id":"colored-nothing"},"source":["Na poprzednich zajęciach opracowaliśmy nasz własny ekstraktor terminologii. Mówiliśmy również, jak ważna jest ekstrakcja terminów specjalistycznych. Dziś zajmiemy się zagadnieniem, w jaki sposób wyciągnąć z tekstu terminy, które naprawdę są specjalistyczne."]},{"cell_type":"markdown","id":"economic-pontiac","metadata":{"id":"economic-pontiac"},"source":["Dlaczego nasze dotychczasowe rozwiązanie mogło nie spełniać tego warunku? Wykonajmy następujące ćwiczenie:"]},{"cell_type":"markdown","id":"sealed-november","metadata":{"id":"sealed-november"},"source":["### Ćwiczenie 1: Zgromadź korpus w języku angielskim składający się z co najmniej 100 dokumentów, z których każdy zawiera co najmniej 100 zdań. Wykorzystaj stronę https://opus.nlpl.eu/. Dobrze, aby dokumenty pochodziły z różnych dziedzin (np. prawo Unii Europejskiej, manuale programistyczne, medycyna). Ściągnięty korpus zapisz na swoim dysku lokalnym, nie załączaj go do niniejszego notatnika."]},{"cell_type":"markdown","id":"closed-steel","metadata":{"id":"closed-steel"},"source":["Taki korpus pozwoli nam zaobserwować, co się stanie, jeśli do ekstrakcji terminologii będziemy stosowali wyłącznie kryterium częstościowe. Aby wykonać odpowiedni eksperyment musimy uruchomić ekstraktor z poprzednich zajęć."]},{"cell_type":"code","source":["import spacy\n","nlp = spacy.load(\"en_core_web_sm\")\n","nlp.max_length = 100000000000000000000000000\n","\n","def count_words(words):\n"," word_count = {}\n"," for word in words:\n"," if word in word_count:\n"," word_count[word] += 1\n"," else:\n"," word_count[word] = 1\n"," return word_count\n","\n","def get_nouns(text):\n"," doc = nlp(text)\n"," return [token.lemma_ for token in doc if token.pos_ == 'NOUN']\n","\n","def get_verbs(text):\n"," doc = nlp(text)\n"," return [token.lemma_ for token in doc if token.pos_ == 'VERB']\n","\n","def get_adjectives(text):\n"," doc = nlp(text)\n"," return [token.lemma_ for token in doc if token.pos_ == 'ADJ']\n","\n","def extract_terms(text):\n"," return {\n"," \"nouns\": count_words(get_nouns(text)),\n"," \"verbs\": count_words(get_verbs(text)),\n"," \"adjectives\": count_words(get_adjectives(text))\n"," }"],"metadata":{"id":"9TLqgBKC-bvJ","executionInfo":{"status":"ok","timestamp":1713854054033,"user_tz":-120,"elapsed":9567,"user":{"displayName":"Marek Susniak","userId":"08092059492340254190"}}},"id":"9TLqgBKC-bvJ","execution_count":4,"outputs":[]},{"cell_type":"markdown","id":"environmental-thread","metadata":{"id":"environmental-thread"},"source":["### Ćwiczenie 2: Uruchom ekstraktor terminologii (wykrywacz rzeczowników) z poprzednich zajęć na każdym dokumencie z osobna. Jako wynik ekstraktora w każdym przypadku wypisz 5 najczęściej występujących rzeczowników. Wyniki działania komendy umieść w notatniku."]},{"cell_type":"code","execution_count":8,"id":"honest-assessment","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"honest-assessment","executionInfo":{"status":"ok","timestamp":1713854106320,"user