Automatyczne pozyskiwanie opisu morfologicznego akronimów i wyrażeń z apostrofami.¶
Wg wytycznych korpusów KIPI i NKJP, akronimy odmienione poprzez dodanie końcówki fleksyjnej (np. PRL-u, VIP-ami) powinny być trzymane jako całe. Podobnie z wyrażeniami typu AK-owiec, PRL-owski. W innych sytuacjach łącznik zwykle powinien stanowić osobny token. Podobnie jest z wyrażeniami zawierającymi w środku apostrof: Kennedy'ego, George'a, Saussure'owi.
By zapewnić prawidłowe działanie tokenizera, należało zebrać końcówki. Skoro już to robimy, postanowiliśmy przy okazji nadać im analizy morfologiczne.
Ustalanie tagów form odmienionych.¶
- Marek wypisał końcówki i przypisał im możliwe tagi.
Są dwie listy końcówek: ograniczające rodzaj tematu (PRL-em) i nieograniczające (PRL-owski, PRL-owiec). - Wyciągnąłem z korpusu wszystkie formy, które zawierają rdzeń, łącznik lub apostrof i końcówkę. Końcówki sprowadzam do małych liter, reszty nie.
- Zgrupowałem formy wg tematu: temat -> lista końcówek.
- Podzieliliśmy listę na dwie:
Jeżeli po dodaniu do tematu -a forma wystąpiła w korpusie (co najmniej 2 razy), lecz nie wystąpiła w UTT ani na liście T, przerzucamy te formy do listy A, dodawszy do tematu -a.
Pozostałe tematy trafiły na listę B, o ile nie wystąpiły w UTT.
Przy pierwszym uruchomieniu lista T jest pusta. W następnym kroku procedury pojawią się tam formy, które dały niespójne tagi i należy procedurę uruchomić jeszcze raz. - Ustaliliśmy zbiory rodzajów dla listy B:
Dla każdego tematu wzięliśmy część wspólną rodzajów gramatycznych wynikających z końcówek ograniczających.
Dodatkowe ograniczenie rodzaju: jeżeli temat jest co najmn. dwuliterowy oraz składa się z samych spółgłosek, to interpretacja żeńska jest wykluczona. - Ustaliliśmy zbiory rodzajów dla listy A: zostawiamy tylko żeński.
- Każdej parze (temat, końcówka) z obu list:
jeżeli końcówka jest ograniczająca, przypisujemy tylko te tagi, których rodzaj należy do otrzymanego zbioru rodzajów przypisanego tematowi,
jeżeli końcówka nie jest ograniczająca, pozostawiamy tagi wynikające z końcówki, natomiast jej lemat odtwarzamy wg reguły pozyskanej z UTT.
Jeżeli otrzymaliśmy pustą listę tagów, dodajemy na listę T (przyda się przy ponownym uruchomieniu) i pomijamy parę (temat, końcówka).
Odtwarzanie lematów dla końcówek nieograniczających¶
Akronimy itp. po dodaniu końcówek "nieograniczających" tworzą derywaty, np. PRL-owego, TIR-ówki. Tutaj lematem nie jest temat (przed łącznikiem/apostrofem). Reguły odtwarzania lematów pozyskaliśmy na podstawie podobnych końcówek z UTT. Lematy w UTT opisane są (poza pewnymi wyjątkami) w postaci reguły: ile liter obciąć z końca oraz jaką końcówkę tam dodać. Np. 3y oznacza, że należy odciąć 3 ostatnie litery i zastąpić je końcówką -y.
Procedura wygląda następująco (z wyjątkiem punktu 1. jest zaimplementowana w skrypcie pythonowym).
- Zebraliśmy lematy, które są obecne w UTT i odmieniają się podobnie do końcówek z listy tych "nieograniczających". M.in. wywrotowiec, atomówka, donkiszotowski.
- Zebraliśmy z UTT pełne paradygmaty tych lematów wraz z regułami odtwarzania ich lematu. Forma -> zbiór reguł (teoretycznie może być kilka różnych lematów).
- Sprawdziliśmy długości końcówek na liście, by znaleźć najdłuższą (wyszło 10 liter).
- Generujemy indeks w postaci końcówka -> zbiór reguł odtwarzania lematów. Wzięliśmy końcówki wszystkich form naszych lematów, wszystkie końcówki o długości od 1 litery do najdłuższej z poprzedniego punktu (10 liter).
- Dla każdej końcówki nieograniczającej z listy znajdujemy w indeksie odpowiedni wpis. Jeśli końcówki nie ma, próbujemy uciąć jej pierwszą literę itd. Zrzucamy do pliku powstałe przypisanie końcówka -> zbiór reguł.
- Dla kilku pozycji (ok. 6 z 352) otrzymaliśmy więcej niż jedną regułę. Pozycje te przejrzeliśmy ręcznie i wybraliśmy te, które rzeczywiście odpowiadają towarzyszącym końcówkom tagom.
Ustalanie tagów form nieodmienionych.¶
Na podstawie zgromadzonych tematów ustaliliśmy też zbiory tagów dla samych tematów (form nieodmienionych).
- Jeżeli temat choć raz wystąpił z końcówką emu|mu|ego|go|ym|im|m, to tematowi przypisujemy interpretację subst:f|m1 i wszystkie liczby i przypadki.
- W pozostałych wypadkach przypisujemy subst:_:_:_.
Statystyki¶
- Wszystkich wyrażeń z łącznikiem lub apostrofem wyciągniętych z korpusów: 13147
Lista zawiera też śmieci, które można by odsiać ręcznie. Śmieci są o tyle mało groźne, że powstały analizator tagów będzie mieć niższy priorytet niż Morfeusz, więc jeśli trafi się śmieć w korpusie, najwyżej dostanie śmieciową analizę. - Użyte korpusy: Knigi, Rzepa, Blogi, Polityka
- Liczba różnych form w pliku z tagami: 17410 (więcej niż wyrażeń, bo są też tematy po odcięciu końcówki)
- Liczba różnych lematów w pliku z tagami: 7688 (tematy oraz odtworzone lematy derywatów, np. PRL-owski)