N-gramy, wykrywanie słów z kontekstu zdania

0

Mam obecnie taki problem. Korzystam z Morfologica do sprowadzenia wyrazu do formy podstawowej. Jednak przy niektórych wyrazach morfologic zwraca kilka znaczeń, np dla wyrazu "wieku" zwróci wyrazy "wiek", oraz "wieko". Czy ktoś z Was orientuje się czy istnieje jakieś narzędzie dzięki któremu można by wykryć wyraz po kontekście zdania lub czy może sam morfologic potrafi coś takiego ?

3

W skrócie: to nie takie proste ;)
To jest trochę problem jajka i kury -> żeby zrozumieć "kontekst" czy też "tematykę" zdania potrzebujesz rozumieć sens słów na które składa się to zdanie. Ale żeby usunąć niejednoznaczności w rozumieniu poszczególnych słów, potrzebujesz rozumieć kontekst zdania.

Niemniej zwykle nie ma to aż takiego znaczenia w praktyce bo tych niejednoznaczności nie ma aż tak dużo, a dodatkowo część z nich będzie systematyczna, tzn dany wyraz zawsze dostanie "błędną" (ale taką samą) formę podstawową.

Istnieją metody rozpoznawania tematyki (topic modeling -> LSI, LDA) ale o ile wiem to nie ma narzędzia które by to łączyło z jakimś słownikiem odmian albo stemmerem, ale to jest w sumie ciekawa rzecz i myśle że można by na ten temat napisać pracę magisterską. Ale znowu dopadnie nas problem jajka i kury! Bo można by na podstawie jakiegoś dużego, zróżnicowanego zbioru danych (np. wikipedia) wygenerować model semantyczny (np. za pomocą LDA) a następnie w trakcie lematyzacji słów testować wstępnie tematykę całego zdania a potem dla każdego z niejednoznacznych słow wybierać to słowo podstawowe, dla którego tematyka najbardziej pasuje.
Problem w tym, że jeśli nie zlematyzujemy słów z tych danych z wikipedii do generacji modelu semantycznego to raz że sie to nie policzy a dwa że efekty mogą być dość słabe ze względu na mnogość form. A jeśli zlematyzujemy, to konieczna będzie też lematyzacja słów w zdaniu, żeby określić jego tematykę, a my przecież robimy to właśnie po to żeby dobrze lematyzować! W praktyce jednak podejście ze wstępną lematyzacją będzie ok, bo w danym zdaniu tylko niewielki % słów będzie niejednoznaczny. W zwiazku z tym takie podejście mogłoby zadziałać:

  1. Lematyzujemy wikipedie
  2. Liczymy sobie dla niej LDA z jakąś sporą liczbą oczekiwanych tematów
  3. Dla zdań które chcemy "poprawnie" lematyzować:
    • liczmy tematykę dla całego zdania w oparciu o model
    • lematyzujemy poszczególne słowa i jeśli jakieś jest niejednoznaczne to liczymy tematykę dla wszystkich możliwości i wybieramy to najbardziej zgodne tematycznie z całym zdaniem

(btw to są n-gramy a nie engramy ;) bo n oznacza krotność więc możesz mieć bi-gramy czy też 4-gramy ;) )

edit: trochę innym podejściem niż to o którym wspomniałem wyżej mogłoby być coś podobnego jak tutaj: https://sna.iisg.agh.edu.pl/data/DM2012_2013/TextNetwork.pdf tzn podzielenie tekstu na pewne syntaktycznie spójne fragmenty (niekoniecznie zdania!) a potem inferencja tematyki za pomocą topic modelingu i potem selekcja najbardziej pasujących tematycznie słow bazowych przy lematyzacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1