MARCIN WOLIŃSKI MORFEUSZ REAKTYWACJA IPI PAN, 7 KWIETNIA /28 ...

Podobne dokumenty
Morfeusz 2 analizator i generator fleksyjny dla języka polskiego

Marcin Woliński. Morfeusz 2. Dokumentacja techniczna i użytkowa. 6 września 2018

PoliMorf otwarty słownik morfologiczny

1 Narzędzia przetwarzania 2 tekſtów hiſtorycznych

KORBA Elektroniczny korpus tekstów polskich z XVII i XVIII w. (do 1772 r.)

Spis treści 0. Szkoła Tokarskiego Marcin Woliński Adam Przepiórkowski Korpus IPI PAN Inne pojęcia LXIII Zjazd PTJ, Warszawa

Włodzimierz Gruszczyński * Maciej Ogrodniczuk ** Marcin Woliński ** *IJP PAN **IPI PAN

Korpusomat narzędzie do tworzenia przeszukiwalnych korpusów języka polskiego

LEM wydobywanie statystyk z korpusów

Elektroniczny korpus tekstów polskich XVII i XVIII w. (do 1772 r.) prezentacja znakowania morfosyntaktycznego i możliwości wyszukiwarki

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Włodzimierz Gruszczyński. Instytut Języka Polskiego PAN Korpusy Diachroniczne Polszczyzny Katowice, kwietnia 2017 r.

Programowanie w języku C++ Grażyna Koba

WK, FN-1, semestr letni 2010 Korpusy tekstów w lingwistyce. Wyrażenia regularne. Cz. I

KorBa. Elektroniczny korpus tekstów polskich XVII i XVIII w. (do 1772 r.) Renata Bronikowska Instytut Języka Polskiego Polska Akademia Nauk

System znaczników morfosyntaktycznych w korpusie IPI PAN

Podstawy Kompilatorów

Metody Kompilacji Wykład 1 Wstęp

Część 1. Wydobywanie informacji z tekstu i stylometria CLARIN-PL. Tomasz Walkowiak, Maciej Piasecki

Spis treści. Wprowadzenie 15

Część 1. Ekstrakcja informacji oraz stylometria na usługach psychologii CLARIN-PL. Tomasz Walkowiak

Propozycja rozszerzenia składni zapytań programu Poliqarp o elementy statystyczne

WK, FN-1, semestr letni 2010 Tworzenie list frekwencyjnych za pomocą korpusów i programu Poliqarp

SGJP Model odmiany Przymiotniki Rzeczowniki Czasowniki Podsumowanie

Generated by Foxit PDF Creator Foxit Software For evaluation only. System Szablonów

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

NIEZBĘDNIK UŻYTKOWNIKA

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Korpus języka polskiej społeczności na Ukrainie i metody jego utworzenia

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

KORBA Elektroniczny korpus tekstów polskich z XVII i XVIII w. (do 1772 r.) Pracownia Historii Języka Polskiego XVII i XVIII wieku IJP PAN

Ekstrakcja informacji oraz stylometria na usługach psychologii Część 2

jest dostępne na różne systemy operacyjne. Niniejsza instrukcja opisuje podstawowe operacje i opcje niezbędne do rozpoczęcia pracy w tym programie.

Wstęp do Programowania potok funkcyjny

Klasyfikacja tradycyjna Klasyfikacja Zygmunta Saloniego Przykład analizy. Części mowy. Anna Kozłowska. Uniwersytet Kardynała Stefana Wyszyńskiego

Indukcja reguł gramatyki j. polskiego

Kategorialny Parser Składniowo-Semantyczny dla języka polskiego

Komputerowa weryfikacja gramatyki Świdzińskiego

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

NAKŁADKA KORPUSOWA (NKJP, KORBA) OPARTA O TRADYCYJNĄ KLASYFIKACJĘ CZĘŚCI MOWY. Emanuel Modrzejewski.

Materiały dodatkowe. Simulink PLC Coder

Java Podstawy. Michał Bereta

Wprowadzenie do projektu QualitySpy

Programowanie obiektowe zastosowanie języka Java SE

Delphi podstawy programowania. Środowisko Delphi

L E X. Generator analizatorów leksykalnych

OPIS PRZEDMIOTU gramatyka opisowa języka polskiego (fleksja) / k, 1, II. prof. dr hab. Andrzej S. Dyszak

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Dokumentacja końcowa projektu z ZPR

Programowanie w Internecie. Java

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Programowanie w języku Python. Grażyna Koba

IBM SPSS Statistics Wersja 23. Konfigurowanie ułatwień dostępu

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Analiza danych tekstowych i języka naturalnego

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Fragment wykładu z języka C ( )

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Marcin Miłkowski IFiS PAN

KONSTRUKCJA KOMPILATORÓW

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 1. Krzysztof Lichota

WYMAGANIA EDUKACYJNE Z JĘZYKA POLSKIEGO DLA UCZNIÓW KLASY VI ZGODNE Z PROGRAMEM NAUCZANIA JĘZYKA POLSKIEGO SŁOWA NA START W KLASIE VI

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Zautomatyzowane tworzenie korpusów błędów dla języka polskiego

Jak ustawić cele kampanii?

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

Wydobywanie informacji oraz cech tekstów: tworzenie prostych statystyk Część 1

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Tworzenie przeszukiwalnych korpusów j zyka polskiego za pomoc Korpusomatu

Wydobywanie reguł na potrzeby ujednoznaczniania morfo-syntaktycznego oraz płytkiej analizy składniowej tekstów polskich

29. Poprawność składniowa i strukturalna dokumentu XML

Zad. 3: Układ równań liniowych

ZPKSoft Synchronizator

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Korpusy językowe podstawowa terminologia i metody tworzenia. Natalia Kotsyba IBI AL Uniwersytet Warszawski 12 i 26 stycznia 2011 r.

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

OPIS PRZEDMIOTU, PROGRAMU NAUCZANIA ORAZ SPOSOBÓW WERYFIKACJI EFEKTÓW KSZTAŁCENIA. CZEŚĆ A * (opis przedmiotu i programu nauczania) OPIS PRZEDMIOTU

Speech Recognition Engine

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Projektowanie układów na schemacie

Klasy abstrakcyjne i interfejsy

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Java jako język programowania

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Smarty PHP. Leksykon kieszonkowy

Podstawy programowania. Wprowadzenie

Instrukcja laboratoryjna cz.3

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Analiza leksykalna i generator LEX

OfficeObjects e-forms

Transkrypt:

MARCIN WOLIŃSKI MORFEUSZ REAKTYWACJA IPI PAN, 7 KWIETNIA 2014 1/28

Zespół Małgorzata Marciniak nadzór ogólny Marcin Woliński specyfikacja Michał Lenart implementacja Jan Daciuk konsultacja automatologiczna Witold Kieraś reguły łączenia segmentów, testowanie Jan Szejko Kuźnia, eksport słowników Piotr Rychlik GUI, testowanie 2/28

Segmentacja Słowo maksymalny ciąg znaków nie zawierający odstępu Segment minimalny odcinek tekstu podlegający interpretacji fleksyjnej 3/28

Segmentacja psem psem biało-czerwonych biało - czerwonych różowawoczerwonymi różowawo czerwonymi PRL-u PRL-u psem psem ul ul Segmentacja dla polszczyzny jest uwikłana słownikowo 4/28

Podstawowe pojęcia Leksem (wyraz słownikowy) abstrakcyjna jednostka języka, zbiór form wyrazowych Forma (wyrazowa) segment zinterpretowany poprzez przypisanie do leksemu i określenie jego funkcji gramatycznej Wykładnik (formy) segment reprezentujący ją w tekście Lemat umowny identyfikator leksemu, tradycyjnie równokształtny z wykładnikiem pewnej jego formy Technicznie: Forma trójka wykładnik, lemat, znacznik fleksyjny (tag) Leksem zbiór form o tym samym lemacie 5/28

Podstawowe pojęcia Analiza morfologiczna (fleksyjna) identyfikacja wszystkich form wyrazowych, których dany segment może być wykładnikiem Ujednoznacznianie morfologiczne określenie na podstawie kontekstu, jako którą z możliwych form interpretować dane wystąpienie segmentu Tagowanie analiza + ujednoznacznienie 6/28

Regularność odmiany 7/28

Regularność odmiany fin impt praet imps inf Fleksem podzbiór leksemu (w miarę) jednorodny ze względu na kategorie gramatyczne przysługujące formom 7/28

Tagset Mam mama subst:pl:gen:f mamić impt:sg:sec:imperf mieć fin:sg:pri:imperf próbkę próbka subst:sg:acc:f analizy analiza subst:sg:gen:f subst:pl:nomaccvoc:f morfologicznej morfologiczny adj:sg:gendatloc:f:pos interp 8/28

Segmentacja form czasu przeszłego 1 Powiedziała, żeście to czytali 2 Powiedziała, że to czytaliście 3 Powiedziała, żebyście to czytali 4 *Powiedziała, żeby to czytaliście 9/28

Segmentacja form czasu przeszłego Morfeusz 1 i 2: widział widzieć praet:sg:m1m2m3:imperf em być aglt:sg:pri:imperf:wok Morfeusz 2 (sterowane opcją): widziałem widzieć praet:sg:m1m2m3:pri:imperf 10/28

Segmentacja form trybu warunkowego Morfeusz 1 i 2: widział widzieć praet:sg:m1m2m3:imperf by by qub m być aglt:sg:pri:imperf:wok Morfeusz 2 (nowy znacznik cond): widziałbym widzieć cond:sg:m1m2m3:pri:imperf 11/28

Reprezentacja wyników analizy Co co subst:sg:nomacc:n2 1 ś być aglt:sg:sec:imperf:nwok 0 2 3 4 Coś zrobił? coś zrobić? subst:sg:nomacc:n2 praet:sg:m1m2m3:perf interp 12/28

Tagsety w okolicy Następujące tagsety nie są identyczne: Tagset Morfeusza, Tagset Korpusu IPI PAN w zasadzie przestarzały, mniej szczegółowa klasyfikacja nieodmiennych niż w obecnym Morfeuszu, Tagset NKJP uproszczony system rodzajów, osobna klasa liczebników zbiorowych 13/28

Lematyzacja Leksem para: Uczestnicy tańczą parami Zatrucie parami rtęci jest praktycznie niemożliwe bez jednoczesnego poparzenia 14/28

Lematyzacja Leksem para: Uczestnicy tańczą parami Zatrucie parami rtęci jest praktycznie niemożliwe bez jednoczesnego poparzenia Leksemy zamek:s1 i zamek:s2: Jakoś odruchowo przekręciła gałkę zamka, a potem nacisnęła klamkę Na dziedzińcu zamku lubelskiego natrafiono na fragmenty konstrukcji zrębowej drewnianej chaty 14/28

Lematyzacja Lematy ok 10 000 leksemów z SGJP uzupełniono o element ujednoznaczniający Po dwukropku dodano oznaczenie części mowy Np leksemy piec:s i piec:v Jeżeli to nie wystarczyło, dodano oznaczenie cyfrowe, np zamek:s1 (zamka) i zamek:s2 (zamku); słać:v1 (ślę) i słać:v2 (ścielę) Analizator zwraca takie lematy Generator dla argumentu "piec:s" zwróci formy odmiany rzeczownika piec:s, a dla argumentu "piec" formy zarówno rzeczownika jak i czasownika 15/28

Słowniki Morfeusz będzie dystrybuowany z dwoma słownikami: SGJP i Polimorf Kolejne wydania będą generowane automatycznie przez system Kuźnia zarządzający pracą nad oboma słownikami Słowniki Morfeusza 2 zostały uzupełnione o informację o byciu nazwą własną i kwalifikatory (np daw, przest, rzad, med, chem, ) 16/28

Postać źródłowa słownika Gdańsk Gdańsk subst:sg:acc:m3 geograficzna Gdańsk Gdańsk subst:sg:nom:m3 geograficzna Gdańska Gdańsk subst:sg:gen:m3 geograficzna Gdański Gdańsk subst:pl:nom:m3 geograficzna Gdańskiem Gdańsk subst:sg:inst:m3 geograficzna funkcja funkcja subst:sg:nom:f pospolita funkcjach funkcja subst:pl:loc:f pospolita funkcjami funkcja subst:pl:inst:f pospolita funkcje funkcja subst:pl:acc:f pospolita funkcje funkcja subst:pl:nom:f pospolita funkcje funkcja subst:pl:voc:f pospolita rzad funkcji funkcja subst:pl:gen:f pospolita funkcji funkcja subst:sg:gen:f pospolita funkcjo funkcja subst:sg:voc:f pospolita rzad funkcjom funkcja subst:pl:dat:f pospolita funkcyj funkcja subst:pl:gen:f pospolita arch 17/28

Kompilowanie słownika Dane wbudowywane w binarny plik słownikowy Morfeusza: słownik źródłowy, reguły łączenia segmentów, definicja tagsetu 18/28

Łączenie segmentów Reguły łączenia segmentów definiują, z jakich segmentów może składać się słowo Każdemu segmentowi przypisujemy typ (na podstawie znacznika i ewentualnie lematu) Reguły łączenia są wyrażeniami regularnymi nad typami segmentów 19/28

Przykład reguł łączenia segmentów [tags] adj_pos adj:%:pos adv_pos adv:%:pos adja adja prefa prefa [lexemes] dywiz -:interp [combinations] #define adj (adj_pos adv_pos adj_com adv_com adj_sup) adj (adja dywiz)+ adj adja>+ adj_pos!weak prefa> adj!weak #ifdef permissive adj (aglsg aglpl) #endif 20/28

Przykład reguł łączenia segmentów [tags] adj_pos adj:%:pos adv_pos adv:%:pos adja adja prefa prefa biały [lexemes] dywiz -:interp [combinations] #define adj (adj_pos adv_pos adj_com adv_com adj_sup) adj (adja dywiz)+ adj adja>+ adj_pos!weak prefa> adj!weak #ifdef permissive adj (aglsg aglpl) #endif 20/28

Przykład reguł łączenia segmentów [tags] adj_pos adj:%:pos adv_pos adv:%:pos adja adja prefa prefa niebiesko - biało - czerwoną [lexemes] dywiz -:interp [combinations] #define adj (adj_pos adv_pos adj_com adv_com adj_sup) adj (adja dywiz)+ adj adja>+ adj_pos!weak prefa> adj!weak #ifdef permissive adj (aglsg aglpl) #endif 20/28

Przykład reguł łączenia segmentów [tags] adj_pos adj:%:pos adv_pos adv:%:pos adja adja prefa prefa średniopienny [lexemes] dywiz -:interp [combinations] #define adj (adj_pos adv_pos adj_com adv_com adj_sup) adj (adja dywiz)+ adj adja>+ adj_pos!weak prefa> adj!weak #ifdef permissive adj (aglsg aglpl) #endif 20/28

Przykład reguł łączenia segmentów [tags] adj_pos adj:%:pos adv_pos adv:%:pos adja adja prefa prefa poliamoryczny [lexemes] dywiz -:interp [combinations] #define adj (adj_pos adv_pos adj_com adv_com adj_sup) adj (adja dywiz)+ adj adja>+ adj_pos!weak prefa> adj!weak #ifdef permissive adj (aglsg aglpl) #endif 20/28

Przykład reguł łączenia segmentów [tags] adj_pos adj:%:pos adv_pos adv:%:pos adja adja prefa prefa głupimi ście [lexemes] dywiz -:interp [combinations] #define adj (adj_pos adv_pos adj_com adv_com adj_sup) adj (adja dywiz)+ adj adja>+ adj_pos!weak prefa> adj!weak #ifdef permissive adj (aglsg aglpl) #endif 20/28

Warianty segmentacji Plik segmentowy deklaruje dostępne warianty segmentacji: [options] aggl=strict permissive praet=split composite Nazwy tych wariantów stają się dostępne jako wartości opcji Morfeusza: -aggl -praet Można zdefiniować kolejne warianty, np Lem i rozpoznawać słowa typu: Potrzebowałżebyś, pytam na koniec, tego strachu wstrętnego i bezsilnej wściekłości (Lem, Przyjaciel Automateusza) 21/28

Wątpliwości segmentacyjne Wprowadzamy reguły pozwalające rozpoznawać słowa typu: ośmioznakowy, studwudziestoipółletni, półobywatel, dziewięćdziesięciosiedmioipółlatek, eurosodoma, poliamoryczny Jak je segmentować i lematyzować? 22/28

Problem wielkich liter Morfeusz ma dwa tryby wrażliwości na wielkie litery: wrażliwy Polski analizowane jako polski i Polska; polski analizowane tylko jako polski; andrzej ign, niewrażliwy wielkie litery nie wpływają na rozpoznawanie form Być może warto wprowadzić trzeci tryb, różniący się od pierwszego tym, że andrzej otrzymuje interpretację Andrzej bo innej nie ma 23/28

API API jest wyrażone w C++, z uproszczonym wariantem w C W programie wielowątkowym należy używać osobnych instancji klasy Morfeusz w poszczególnych wątkach Wykorzystujemy STL Dwa warianty funkcji analizy i syntezy: iterator, który można poprosić o kolejną formę fleksyjną, wariant zwracający std::vector wszystkich form 24/28

Ładowanie słowników Binarne pliki słownikowe są tworzone osobno dla analizatora i generatora API pozwala na określenie nazwy słownika, który ma być używany do analizy i syntezy Próba analizy (syntezy) ze słownikiem X spowoduje załadowanie słownika z pliku morfeusz-x-anadict (morfeusz-x-gendict) z ustalonej ścieżki Ścieżkę poszukiwania plików słownikowych można ustawić opcją biblioteki 25/28

Biblioteka Morfeusz Morfeusz ma postać biblioteki dynamicznej Słowniki są ładowane w czasie pracy, ale jest też możliwość wkompilowania domyślnego słownika w bibliotekę Wątpliwość: jakie warianty dystrybuować? 26/28

Dystrybucja programu Udostępniamy kod źródłowy i wersje skompilowane dla Linuksa, Mac OS X i Windows; 32- i 64-bitowe Dodatkowe moduły umożliwiają użycie Morfeusza z poziomu Pythona, Perla, Javy i SWI-Prologu Dystrybuujemy w postaci binarnej słownik SGJP i Polimorf Dla mniej technicznych użytkowników przygotowano interfejs graficzny w Javie 27/28

MORFEUSZ REAKTYWACJA http://sgjppl/morfeusz/beta/ 28/28