O wszystkim, co wiąże się z technologią wyszukiwania.
Blog > Komentarze do wpisu

Myśleć po polsku

Wiele osób uważa, że owszem, zaawansowane wyszukiwanie ma szanse skutecznie działać dla tak prostych języków jak np. angielski. Ale dla naszego tak skomplikowanego języka ojczystego, to na pewno są same problemy. Dowiedz się jak jest na prawdę z tą lingwistyką w silnikach wyszukiwania.

Zaawansowana lingwistyka, stosowana w technologii wyszukiwania składa się z kilku elementów, o których trzeba koniecznie coś powiedzieć:

  • Tokenizacja - Sprawa najbardziej podstawowa, czyli podział tekstu na jednostki lingwistyczne - wyrazy, liczy, daty, kwoty itp. Tutaj standardowe algorytmy wyodrębniania wyrazów są jak najbardziej skuteczne dla języka polskiego. Z reguły nie wymagają one żadnego tuningu. Problem natomiast zaczyna się, czy próbujemy to samo zrobić z językami azjatyckimi, ale i dla nich istnieją skuteczne, acz nieco inne algorytmy.
  • Wyrkywanie języka – Na podstawie fragmentu tekstu (np. pierwszych 1000 znaków) system sprawnie jest w stanie rozpoznać język. Silniki wyszukiwania całkiem dobrze radzą sobie z tym zadaniem dla języka polskiego. Jest to bardzo ważna funkcjonalność, bo od poprawnego wykrycia języka zależy właściwe przetwarzanie lingwistyczne, opisane w następnych punktach.
  • Wyrazy nieistotne (tzw. stopwords) - Wyrazy typu "informacja", "kto", "czy", "lub" itd nie mają żadnej lub bardzo małą wartość informacyjną przy przeszukiwaniu. Dlatego dobrą praktyką jest pomijanie ich przy wyszukiwaniu. Listy takich wyrazów są łatwo dostępne dla języka polskiego i większość silników wyszukiwania łatwo radzi sobie z tym problemem.
  • Synonimy – Rozwijanie zapytania o synonimy jest popularną formą polepszania kompletności wyszukiwania. Na przykład dla zapytania „kaloryfer”, system może dodać do zapytania „grzejnik”. Wtedy dokumenty zawierające którekolwiek ze słów zostaną zakwalifikowane jako wyniki wyszukiwania. Słowniki synonimów są powszechnie dostępne dla języka polskiego i skutecznie stosowane przez silniki wyszukiwania. Pewnym rozszerzeniem słownika synonimów są tzw. sieci semantyczne typu WordNet. Są to struktury danych zawierające pojęcia powiązane ze sobą różnymi rodzajami relacji, jak: synonimii (wyrażenia bliskoznaczne), hipo- hiperonimii (bardziej szczegółowe – bardziej ogólne), mero- homonimii (relacja całość – część składowa). Tego typu sieci semantyczne są wykorzystywane do nawigacji pojęciowej, na przykład zadając zapytanie „drzewo”, system może podpowiedzieć w którym kierunku zawężać wyniki wyszukiwania sugerując np. konkretne gatunki: „sosna, modrzew, świerk”. Rozwijając jeszcze dalej te rozważania można dojść do zastosowań ontologii w wyszukiwaniu, ale to materiał na inną notkę.
  • Wyrażenia wielowyrazowe – Dobrze jest traktować niektóre połączenia wyrazowe łącznie, ponieważ tylko razem oddają właściwe znaczenie. Na przykład wyrażenie „panna młoda” oznacza kobietę wychodzącą za mąż, która wcale nie musi być panną ani młodą. Do tej grupy zaliczyć należy także zwroty idiomatyczne i ważniejsze nazwy własne. Moim zdaniem wyrażenia wielowyrazowe są fajne, ale same w sobie nie dodają zbyt wiele do jakości wyszukiwania. Co może zatem dać właściwe rozpoznawanie wyrażeń wielowyrazowych? Oto kilka przykładów:
    • Właściwe stosowanie synonimów przy rozwijaniu zapytania.
    • Lepsza precyzja wyników, ponieważ np. dla zapytania „młoda”, dokument z wynikiem „panna młoda” nie zostanie zaliczony do wyników, bo nie jest na temat.
    • Wykluczanie nazw własnych z wyodrębniania różnych obiektów z tekstu, np. „Kazimierza Wielka” to nazwa miejscowości w świętokrzyskiem, i nie powinna być kwalifikowana jako osoba.
  • Lematyzacja – Czyli uwzględnianie wielu form gramatycznych przeszukiwanych wyrazów. Moim zdaniem ma to największy wpływ na jakość przeszukiwania, bo oczywistym jest, że jak chcę szukać „zielonych spodni”, to te moje zielone spodnie mogą być odmienione we wszystkich przypadkach w tekście źródłowym. Do tego zagadnienia istnieje kilka podejść:
    • Stemming – Czyli usuwanie końcówek wyrazów i tak sprowadzanie ich do gramatycznej formy podstawowej. Np. odmiana wyrazu „czekać” to: czekam, czekasz, czeka, czekamy, czekacie, czekają. Odnalezienie tematu „czeka” (poprzez usunięcie standardowych końcówek )i dodanie końcówki „ć” znakomicie sprowadza do bezokolicznika. Tego typu podejście jest bardzo szybkie i znakomicie sprawdza się dla języka angielskiego, dla którego liczba reguł stemmingowych mieści się na jednym ekranie, natomiast dla języka francuskiego to już około 60 000 reguł. Dla każdego przypadku należy zdefiniować listę wyjątków. A dla języka polskiego? Takie podejście całkiem się nie sprawdza. Liczba reguł byłaby kilkakrotnie większa niż dla francuskiego, a ilość wyjątków … Całkiem się to nie sprawdza. Co za tym pozostaje? Podejście słownikowe.
    • Słowniki – W tym podejściu wszystkie możliwe odmiany wyrazów są słownikowane. Dodatkowo w tych słownikach można dodać informacje jak chociażby rodzaj, czy części mowy (czasownik, przymiotnik, rzeczownik itp.). Takie podejście sprawdza się znakomicie dla języka polskiego i istnieją całkiem obszerne słowniki odmian.
  • Technicznie lematyzację można zastosować na dwa sposoby: poprzez redukcję (wszystkie wyrazy w czasie przetwarzania zostają podmieniane na swoją podstawową wersję gramatyczną) lub poprzez rozszerzenie (do wszystkich wyrazów w czasie przetwarzania dodawane są wszystkie formy gramatyczne). Poza tym zarówno redukcję, jak i rozszerzenie można stosować (w sposób zschynchronizowany) w czasie indeksowania (wtedy indeks zawiera wszystkie odmiany gramatyczne lub formy podstawowe) lub w czasie przetwarzania zapytania (człony zapytania „w locie” redukowane są do formy podstawowej lub poszerzane o wszystkie formy gramatyczne). Każde z tych rozwiązań ma swoje plusy i minusy, ponieważ albo zyskujemy na szybkości wykonywania zapytania, a tracimy na rozmiarze indeksu, albo odwrotnie.
  • Rozstrzyganie znaczenia – Dla polskiego języka dosyć istotnym problemem jest polisemia, czyli rożne znaczenia tego samego wyrazu. W wyszukiwaniu ten problem może pojawia się, gdy na przykład zadajemy zapytanie „bale sosnowe”, a w odpowiedzi mamy dokumenty opisujące bale karnawałowe. Jak dodamy jeszcze do tego wrażliwość na przypadki, to lista pojęć danego wyrazu może być długa (np. wyraz „krach” jest formą gramatyczną wyrazów „kra”, „krach”, „kier”, „ker”). Żeby tego uniknąć należałoby rozstrzygnąć znaczenie danego słowa, wynikające z kontekstu lub innych dodatkowych informacji. Niestety dla języka polskiego nie widziałem dobrych wyników. Polskie placówki naukowe zajmujące się lingwistyką komputerową pracują nad tym. Większość silników wyszukiwania jednak marginalizuje ten problem, a szkoda.
  • Korekta pisowni (ang. spellchecker) - Koncepcyjnie bardzo prosta technika sugerująca alternatywne zapytanie, gdy popełnimy pewien błąd w pisowni. Klasyczna sugestia typu: Czy chodziło ci o ...? Technicznie całość składa się z dwóch elementów podstawowych: ogólny słownik wyrażeń z danego języka oraz algorytmu odnajdującego najbardziej podobny wyraz ze słownika do tego, który wprowadziliśmy. Podobieństwo z reguły mierzone jest algorytmem odległości edytorskiej.
    Najlepsze wyniki korekty pisowni uzyskuje się wtedy, gdy wykorzystywany słownik budowany jest dynamicznie, na bazie wyrażeń występujących w indeksie. Wtedy mamy pewność, że użycie sugerowanej podpowiedzi da nam niepusty zbriór wyników - a o to przecież chodzi.
  • Wyszukiwanie wielojęzykowe – Jest to bardzo fajna funkcjonalność. O ile automatyczne tłumaczenie całego dokumentu daje mizerne efekty (patrz tłumacz Google), o tyle tłumaczenie w locie członów zapytania na inne języki daje bardzo efektowne rezultaty. Niewielkim wysiłkiem można za jednym zamachem zadawać zapytanie po polsku, a wyniki mieć po polsku, angielsku, francusku, … Do tego celu można wykorzystać bezpłatne serwisy tłumaczące w Internecie jak np. Bing.

Całkiem długa notka mi wyszła. Pora już na podsumowanie, w którym napiszę, że zaawansowane funkcje lingwistyczne w wyszukiwaniu są bezwzględnie konieczne w każdym zastosowaniu technologii wyszukiwania. No chyba, że nie zależy za bardzo na jakości.

Natomiast silniki wyszukiwania są już na tyle dojrzałe, żeby myśleć po polsku.

czwartek, 07 stycznia 2010, zenonik90

Polecane wpisy

TrackBack
TrackBack w tym blogu jest moderowany. TrackBack URL do wpisu:
Komentarze
2010/01/21 10:24:19
Zapomniałem napisać o autoamtycznej korekcie pisowni zapytania. Dziś to uzupełniłem. autor.
-
Gość: Puzon, *.dynamic.chello.pl
2013/11/10 11:45:50
Czy możesz podać źródło tej informacji: "[..], natomiast dla języka francuskiego to już około 60 000 reguł."
Pozdrawiam!
    Paweł Wróblewski

    Jeśli podoba Ci się publikowana treść, rozważ proszę dofinansowanie rozwoju tego bloga.

    Follow zenonik90 on Twitter
góra | "Proście, a będzie wam dane; szukajcie, a znajdziecie; kołaczcie, a otworzą wam." Mt 7,7