SGKP-Search

Opis działania wyszukiwarki

Wyszukiwarka informacji w SGKP - Słowniku Geograficznym Królestwa Polskiego i innych Krajów Słowiańskich (informacje o słowniku na stronie Wikipedii). Wyszukiwarka łączy w sobie dwa podejścia do odnajdywania informacji, co można określić mianem wyszukiwania hybrydowego:

  • Wyszukiwanie pełnotekstowe (Full-Text): Działa klasycznie, wyszukując wystąpień słów w tekście. Jest to idealne rozwiązanie, gdy użytkownik zna nazwę szukanego obiektu lub terminu historycznego. Silnik radzi sobie z prostymi literówkami (wyszukuje z pewnym 'rozmyciem', tolerancją), co jest kluczowe przy pracy z tekstem przygotowanym za pomocą automatycznego rozpoznawania znaków (OCR).
  • Wyszukiwanie semantyczne (Vector Search): pozwala na wyszukiwanie znaczeń, a nie tylko ciągów znaków. Dzięki temu użytkownik może wpisać zapytanie np. "miejsca wydobycia kopalin" i otrzymać listę haseł, w których te słowa nie padają wprost, ale ich tekst opisuje kopalnie. Pomaga to też ominąć błędy OCR (drobne błędy w skanowaniu tekstu nie gubią kontekstu semantycznego).

Zastosowanym silnikem wyszukiwania jest Meilisearch – lekki mechanizm open source, który obsługuje zarówno szybkie wyszukiwanie tekstowe, jak i wektorowe. Do tworzenia reprezentacji wektorowej tekstu (tzw. osadzeń - embeddings) użyto modelu OpenAI (`text-embedding-3-small`). Model ten zamienia fragmenty tekstu ze słownika na ciągi liczb (wektory), które "kodują" znaczenie tego tekstu. Sama aplikacja napisana jest w języku Python z wykorzystaniem frameworka Flask. Tekst SGKP pochodzi z rozpoznania narzędziami OCR (Tesseract) 15 tomów Słownika. Skrypty importujące podzieliły tekst na hasła i pod-hasła (część haseł Słownika to hasła zbiorcze, zawierające opisy wielu miejscowości o tej samej nazwie), aby umożliwić precyzyjne wskazywanie miejsc w tak obszernym dziele.

Interfejs użytkownika

Interfejs dostępny pod adresem ai.ihpan.edu.pl/sgkpsearch jest minimalistyczny i nastawiony na użyteczność, zawiera:

  • Pole wyszukiwania: użytkownik wpisuje dowolną frazę, przycisk Szukaj rozpoczyna wyszukiwanie
  • Suwak „Balans Słów Kluczowych i Semantyki”: określa on proporcję między wyszukiwaniem słów kluczowych (tradycyjne pełnotekstowe), a wyszukiwaniem wektorowym (semantycznym).
  • Listę wyników: prezentowana w formie listy znalezionych haseł wg rankingu trafności. Każdy wynik zawiera:
    • Tytuł hasła
    • Informację o tomie i stronie, strona jest jednocześnie linkiem do skanu Słownika na serwerach ICM (Interdyscyplinarnego Centrum Modelowania Matematycznego i Komputerowego UW).
    • Inne podstawowe informacje o haśle, jeżeli są dostępne. Dane dla haseł SGKP np. nazwy powiatów, gmin, parafii, właścicieli, obiektów występujących w danej miejscowości zostały pozyskane poprzez automatyczne przetwarzanie treści haseł i wydobywanie informacji przez duże modele językowe (LLM) w ramach projektu: Geografia kulturowo-intelektualna dawnych ziem polskich pod zaborami 1865–1918 – cyfrowe vademecum
    • Fragment tekstu z kontekstem (gdzie znaleziono treść odpowiadającą podanym słowom kluczowym), w przypadku wyszukiwania pełnotekstowego słowa kluczowe wyróżnione są kolorem żółtym.

Jak szukać

  • Wpisz w pole wyszukiwania interesującą Cię frazę np. "mielenie ziarna", "Karaim", "piwo browar", "młyn parowy", "Poniatowski", "Namysłów" - bez cudzysłowów, wersja z cudzysłówami dla wielu słów oznaczałaby wyszukiwanie dokładnej frazy. Można na przykład porównać wyniki wyszukiwania dla: Stanisław August Poniatowski (3 tys. wyników) i "Stanisław August Poniatowski" (6 wyników).
  • Naciśnij "Szukaj" lub klawisz Enter.
  • Wyszukiwarka korzysta z wyszukiwania hybrydowego, łącząc słowa kluczowe z wyszukiwaniem wektorowym (semantycznym), aby dać jak najlepsze wyniki. Ustawienie suwaka "Balans Słów Kluczowych i Semantyki" decyduje o wpływie danego typu wyszukiwania na wynik. Domyślne ustawienie na 0% oznacze wyszukiwanie tylko według słów kluczowych, ustawienie na 100% to eksperymentalne wyszukiwanie tylko wektorowe (semantyczne). Każda inna wartość oznacza wyszukiwane hubrydowe korzystające proporcjonalnie z obu metod.
  • Wyszukiwanie wg słów kluczowych szuka haseł, w których występują wprowadzone w polu wyszukiwania słowa, wyszukiwanie odbywa się z pewną tolerancją tzn. wprowadzając słowo "młyny" otrzymamy wyniki w których znajdowało się zarówno to słowo, jak i "młyn", "młynowi" itp.
  • Wyszukiwanie wektorowe (semantyczne) wyszukuje hasła według znaczenia wprowadzonych wyrazów, dlatego sformułowanie "mielenie ziarna" zwróci hasła zwierające słowa młyn, młyny. To samo sformułowanie wprowadzone przy ustawieniu na wyszukiwanie tylko według słów kluczowych zwróci hasła, w których występuje słowo "mielenie".
  • Wyszukiwanie semantyczne nie odpowiada na pytania (jak chat z modelem językowym), zwraca jedynie wyniki o zbliżonym znaczeniu do zapytania, nie zwraca też kompletnej, precyzyjnej listy informacji.

Wyniki

  • Jeżeli wyników jest więcej niż 20, aplikacja wyświetla wyniki z podziałem na strony, u dołu listy wyników znajdują się przyciski do nawigacji między stronami: „Pierwsza”, „Poprzednia”, „Następna”, „Ostatnia”
  • Kliknij na tytuł (label) wyniku, aby zobaczyć więcej szczegółów w osobnym oknie (np. pełny tekst hasła).
  • Dla każdego hasła na liście wyników wyświetlany jest numer tomu i numer strony na której zaczyna się dane hasło w wersji drukowanej, numer strony jest linkiem, który prowadzi do skanu strony na serwerach ICM (Interdyscyplinarnego Centrum Modelowania Matematycznego i Komputerowego UW).
  • Użyj przycisku "Wyczyść", aby zresetować widok.

Uwagi

  • Aplikacja zawiera wstępnie przetworzoną treść SGKP, mogą występować literówki, błędy w podziale treści haseł i inne artefakty przetwarzania
  • Wyszukiwarka jest na wczesnym etapie testów, wyniki mogą być niekompletne lub niedokładne.
  • Maksymalna liczba wyrazów branych pod uwagę w każdym zapytaniu wyszukiwania wynosi 10. Jeśli zapytanie wyszukiwania zawiera więcej niż 10 słów, wszystkie dalsze słowa zostaną zignorowane.
  • Kod źródłowy aplikacji dostępny jest w repozytorium Github (projekt sgkp_search)
  • Kod źródłowy skryptów użytych do automatycznej ekstrakcji informacji z haseł SGKP jest dostępny w repozytorium Github (projekt sgkp_information_extraction)