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.

  1. 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).
  2. 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.
  3. Zgrupowałem formy wg tematu: temat -> lista końcówek.
  4. 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.
  5. 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.
  6. Ustaliliśmy zbiory rodzajów dla listy A: zostawiamy tylko żeński.
  7. 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).

  1. 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.
  2. 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).
  3. Sprawdziliśmy długości końcówek na liście, by znaleźć najdłuższą (wyszło 10 liter).
  4. 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).
  5. 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ł.
  6. 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).

  1. 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.
  2. W pozostałych wypadkach przypisujemy subst:_:_:_.

Statystyki

  1. 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ę.
  2. Użyte korpusy: Knigi, Rzepa, Blogi, Polityka
  3. Liczba różnych form w pliku z tagami: 17410 (więcej niż wyrażeń, bo są też tematy po odcięciu końcówki)
  4. Liczba różnych lematów w pliku z tagami: 7688 (tematy oraz odtworzone lematy derywatów, np. PRL-owski)