170 likes | 350 Views
Wyszukiwanie w repozytoriach tekstowych w języku polskim. inż. Maciej Klubiński Opiekun pracy: prof. dr hab. Henryk Rybiński. Plan prezentacji. Sens tworzenia wyszukiwarek Budowa wyszukiwarki Zasada działania wyszukiwarki Miary jakości wyszukiwania Problemy natury językowej.
E N D
Wyszukiwanie w repozytoriach tekstowych w języku polskim inż. Maciej Klubiński Opiekun pracy: prof. dr hab. Henryk Rybiński
Plan prezentacji • Sens tworzenia wyszukiwarek • Budowa wyszukiwarki • Zasada działania wyszukiwarki • Miary jakości wyszukiwania • Problemy natury językowej
Po co nam wyszukiwarki? • Eksplozja informacyjna • Internet jako najpopularniejszy kanał dystrybucji informacji • Większość ludzkiej wiedzy zapisana jest w postaci dokumentów w języku naturalnym • „Potrafimy liczyć znacznie szybciej niż na początku XX wieku, ale czy potrafimy szybciej czytać?”
Budowa wyszukiwarki • tułów -> repozytorium dokumentów, korpusy, zbiory danych, sieć WWW • serce -> indekser • głowa -> moduł budowy zapytań • mózg -> moduł wyszukujący
Jak zbudować indeks? (1/7) Rozpoznanie języka Na podstawie: • unikalnych dla danego języka ciągów znaków (np. eux - Francuski, cchi - Włoski, der - Niemiecki) • występowanie określonych znaków np. ü - Niemiecki, ć - Polski • wykorzystując cechy składniowe sylab danego języka • wykorzystanie rozkładu prawdopodobieństwa występowania liter oraz dłuższych ciągów znaków (n-gramów) • porównywanie dokumentów ze słowami ze stop-listy
Jak zbudować indeks? (2/7) Tokenizacja Podział tekstu na: • akapity • zdania -> język chiński, znaki interpunkcyjne • wyrażenia (związki frazeologiczne) • słowa –> skróty, apostrof, myślnik • wybór termów – Prawo Zipfa Jeżeli weźmiemy wystarczający zbiór dokumentów z typowymi angielskimi słowami i posortujemy te słowa według częstości występowania, to iloczyn częstości występowania słowa i numeru w tym uporządkowaniu będzie stały.
Jak zbudować indeks? (3/7) Usunięcie STOP WORDS – 30% wszystkich słów • a, an, and, are, as, at, be, but, by, for, if, in, into, is, it, no, not, of, on, or, such, that, the, their, then, there, these, they, this, to, was, will, with • a, aby, ale, bardziej, bardzo, bez, bo, bowiem, był, była, było, były, będzie, co, czy, czyli, dla, dlatego, do, gdy, gdzie, go, i, ich, im, innych, iż, jak, jako, jednak, jego, jej, jest, jeszcze, jeśli, już, kiedy, kilka, która, które, którego, której, który, których, którym, którzy, lub, ma, mi, między, mnie, mogą, może, można, na, nad, nam, nas, naszego, naszych, nawet, nich, nie, nim, niż, o, od, oraz, po, pod, poza, przed, przede, przez, przy, również, się, sobie, swoje, są, ta, tak, takie, także, tam, te, tego, tej, ten, też, to, tu, tych, tylko, tym, u, w, we, wiele, wielu, więc, wszystkich, wszystkim, wszystko, właśnie, z, za, zawsze, ze, że
Jak zbudować indeks? (4/7) Stemming Trzy podejścia: • stemmer algorytmiczny • Pierwszy skuteczny algorytm dla angielskiego - Lovin’s stemmer (1968) – stemmer jednoprzebiegowy, wykorzystujący tablicę 250 możliwych podstawień końcówek oraz dodatkowy etap postprocessingu – był projektowany jako uniwersalny • Obecnie najpopularniejszy stemmer – Porter’s stemmer, specjalizowany dla IR, wieloprzebiegowy, nie generuje poprawnych językowo rdzeni • Inne – Krovets (1993) – trójprzebiegowy stemmer wyłącznie fleksyjny, Dawson (1974) – poprawiona wersja stemmera Lovins, zawiera tablicę 1200 podstawień, Paice/Husk (1990) – stemmer oparty na dopasowywaniu reguł, nie ma ograniczenia na liczbę kroków podstawień
Jak zbudować indeks? (5/7) Stemming • stemmer słownikowy • wykorzystuje słownik zawierający znaczną liczbę różnych form gramatycznych poszczególnych słów oraz odpowiadającej każdej z nich formę podstawową (lemat lub rdzeń) • bezbłędne znajdywanie rdzeni słów zawartych w słowniku • brak wyników w przypadku, gdy słowa w słowniku brakuje • konieczność przechowywania i przeszukiwania słownika o dużych rozmiarach • stemmer mieszany (hybrydowy) • dla słów występujących w słowniku – stemmer słownikowy • dla słów spoza słownika – stemmer algorytmiczny i próba dopasowania rdzenia do rdzeni zesłownikowanych • w przypadku poprawnej klasyfikacji – uzupełnienie słownika
Jak zbudować indeks? (6/7) Usuwanie synonimów- użycie tezaurusa Zastąpienie terminów bardziej ogólnymi- np. pies -> ssak (użycie ontologii) Rozbijanie zlepków wyrazowych- np. nazw chemicznych, związków frazeologicznych Obliczanie wag dla słów kluczowych - np. miejsce wystąpienia słowa w tytule, streszczeniu, bibliografii
Jak zbudować indeks? (7/7) Tworzenie indeksu • o czym trzeba pamiętać? – częste przeszukiwanie, rozmiar fizyczny, szybki i bezpośredni dostęp • co zapamiętać? – id dokumentu, klucz (słowo, leksem, rdzeń), położenie w tekście, położenie fizyczne (adres URL), częstość występowania słowa, słowo po inwersji, … • jak zorganizować? – budowa logiczna (podział na rekordy, segmentacja itp.), sortowanie alfabetyczne (statystyczne, częstotliwościowe), optymalizacja, kompresja • jak przeszukiwać? – zależnie od organizacji danych w indeksie, byle szybko i wydajnie
Jak szukać? • po słowach kluczowych • Boolowskie (zbiory odwrócone) • koncepcyjne (tezaurus) • szukanie frazy • szukanie z określeniem odległości pomiędzy słowami • szukanie z zastosowaniem masek • szukanie dokumentów podobnych do już znalezionych • szukanie dokumentów po statystykach odwiedzin • inne
Miary jakości wyszukiwania • Legenda • ds - znalezione dokumenty przez system • dr - dokumenty w bazie uznane za relewantne (arbitralnie) • DB - liczebność bazy danych • precyzja – wyszukane relewantne do znalezionych (|ds dr|) / |ds| • odzysk – wyszukane relewantne do relewantnych (|ds dr|) / |dr| • dokładność – uznane za nierelewantnedo wszystkich (|ds dr| + |DB – (ds dr )|) / |DB| • szum – wyszukane nierelewantne do wszystkich nierelewantnych |ds- dr| / |DB –dr|
Problemy • Fleksja– np. umią zamiast umieją • Pojęcia wielowyrazowe– np. kwas dezoksyrybonukleinowy • Homonimia– np. ranny (zraniony, o poranku), zamek (budowla, mechanizm w drzwiach, suwak) • Synonimia– np. problem, zagadnienie, zadanie • Niezgodność semantyki słów z semantyką tekstu (brak analizy składniowej i semantycznej)– np. potoczne określenie policjanta i radiowozu, „zakręcony jak słoik na zimę” • Błędy ortograficzne • Swobodna składnia – np. Wczoraj kupiłem auto, Kupiłem wczoraj auto, Kupiłem auto wczoraj
Pytania? Dziękuję za uwagę.
Co robię w ramach pracy mgr? • używam Apache Lucene • buduję polski stemmer hybrydowy • implementuję moduł do analizy tekstów w języku polskim • przeprowadzam testy dla różnych rozwiązań • postać i zawartość indeksu • modyfikacja zapytań • wykorzystanie słownika w stemmingu
Pytania? Dziękuję za uwagę.