Kolokacje 1.0 – instrukcja użytkownika
Transkrypt
Kolokacje 1.0 – instrukcja użytkownika
Kolokacje 1.0 – instrukcja użytkownika Aleksander Buczyński 8 lutego 2004 roku Spis treści 1 Streszczenie 2 2 Definicje 3 3 Ogólna budowa programu 3 4 Crawler 4.1 Krótki opis działania . . . . . . . . . . 4.2 Wywołanie modułu . . . . . . . . . . . 4.3 URL startowy i definiowanie witryn do 4.4 Akceptowane rozszerzenia nazw plików 4.5 Długie pliki tekstowe . . . . . . . . . . 4.6 Strony nie pobrane . . . . . . . . . . . 4.7 Ignorowane znaczniki elementów . . . . . . . . . . . . . . . pobrania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 6 6 6 7 5 IndexBuilder 5.1 Krótki opis działania . . . . . . . . . . 5.2 Wywołanie modułu . . . . . . . . . . . 5.3 Pomijanie wybranych słów . . . . . . . 5.4 Budowa indeksu dla dużych korpusów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 7 8 6 Zapytania do archiwum 6.1 Zapytanie o słowa . . . . . . . . . . . . . 6.2 Zapytanie o kolokacje . . . . . . . . . . . 6.3 Zapytanie o konteksty . . . . . . . . . . . 6.4 Powiązania między zapytaniami . . . . . . 6.5 Zapytania ogólne a zapytania z gwiazdką . 6.6 Brak wyników? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 8 8 9 9 10 10 7 Interfejs indywidualny - SAManager 7.1 Krótki opis działania . . . . . . . . . 7.2 Wywołanie programu . . . . . . . . . 7.2.1 Czysty tekst . . . . . . . . . 7.2.2 CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 11 11 11 1 . . . . . . . . . . . . 8 Interfejs indywidualny - SAMain 8.1 Wywołanie modułu . . . . . . . . . 8.2 Wybór archiwum . . . . . . . . . . 8.3 Menu główne . . . . . . . . . . . . 8.4 Zewnętrzny edytor . . . . . . . . . 8.5 Rozmieszczanie okien pod FVWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 12 12 13 13 9 Interfejs sieciowy - PrettyPrinter 13 9.1 Krótki opis działania . . . . . . . . . . . . . . . . . . . . . . . . . 13 9.2 Wywołanie modułu . . . . . . . . . . . . . . . . . . . . . . . . . . 13 9.3 Rozmieszczenie plików . . . . . . . . . . . . . . . . . . . . . . . . 14 10 Interfejs sieciowy - QueryServer 10.1 Krótki opis działania . . . . . . 10.2 Wywołanie modułu . . . . . . . 10.3 QueryServer a PrettyPrinter . . 10.4 Konfiguracja kodu PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 15 15 11 Konfigurowanie programu 11.1 Zmienne konfiguracyjne . . . . . . . . . . 11.2 Przykład lokalnego pliku konfiguracyjnego 11.3 Zmienne uniwersalne . . . . . . . . . . . . 11.4 Crawler . . . . . . . . . . . . . . . . . . . 11.5 IndexBuilder . . . . . . . . . . . . . . . . 11.6 SAManager / SAMain . . . . . . . . . . . 11.7 Interfejs sieciowy - ogólne . . . . . . . . . 11.8 PrettyPrinter . . . . . . . . . . . . . . . . 11.9 QueryServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 16 16 17 18 18 19 19 19 1 . . . . . . . . . . . . . . . . . . . . Streszczenie Kolokacje to połączony robot internetowy i wyszukiwarka kolokacji. Program składa się z modułów, które można uruchamiać samodzielnie, lub za pośrednictwem interfejsu graficznego. Wywołanie programu i poszczególnych modułów: java java java java java java kolokacje.standalone.SAMain [dir] kolokacje.crawler.Crawler dir [var1=value1 var2=value2...] kolokacje.index.IndexBuilder dir [var1=value1 var2=value2...] kolokacje.server.PrettyPrinter dir [var1=value1 var2=value2...] kolokacje.server.QueryServer dir [var1=value1 var2=value2...] kolokacje.standalone.SAManager dir [var1=value1 var2=value2...] 2 2 Definicje W niniejszej instrukcji termin archiwum używany jest na określenie wybranego przez użytkownika katalogu roboczego, w którym program przechowuje pobrane teksty, zbudowane indeksy, podsumowania i pliki robocze. Użytkownik może w tym katalogu umieszczać dodatkowe pliki konfiguracyjne, modyfikujące zachowanie poszczególnych modułów programu. Tam, gdzie pojawia się odniesienie do nazwy konkretnego pliku w archiwum, należy pamiętać o tym, że użytkownik może zmodyfikować konfigurację programu i nazwać dany plik inaczej. Jest to jednak modyfikacja spotykana na tyle rzadko, że nie widzimy przeciwskazań do stosowania w tekście instrukcji tego typu uproszczeń, np. addresses.acc zamiast pliku, którego nazwę określa zmienna konfiguracyjna addressesFile. 3 Ogólna budowa programu Program składa się z trzech głównych modułów, odpowiadającym kolejnym etapom pracy nad pozyskiwanym z Internetu tekstem – Crawler, IndexBuilder oraz Archive. Ostatni z nich występuje w różnych wersjach, odpowiadających różnym rozwiązaniom (elementom rozwiązania) interfejsu użytkownika. Każdy z tych trzech modułów może być wywoływany z linii poleceń lub za pomocą interfejsu graficznego dostarczanego przez odrębny moduł SAMain. Crawler odpowiada za przeszukiwanie Internetu, selekcję stron, selekcję elementów strony WWW, ich konwersję i zapis w jednolitym formacie na dysku lokalnym. Moduł IndexBuilder wczytuje z archiwum wcześniej pobrane i skonwertowane pliki tekstowe, a następnie uzupełnia katalog o pliki indeksu kolokacji, umożliwiające szybki dostęp zarówno do danych statystycznych, jak i wyszukiwanie konkretnych słów lub kolokacji. Kolejnym etapem jest dostęp do danych zawartych w archiwum, obliczanie miar statystycznych i generowanie czytelnych zestawień. Możliwe tu są dwa podejścia – zorientowane na udostępnianie wyników poprzez sieć (PrettyPrinter i QueryServer) oraz na pracę indywidualną (SAManager). Moduł SAManager to graficzny interejs dostępu do archiwum, zorientowany na użytkowników indywidualnie pracujących nad zbiorem tekstów, oparty na komponentach Javy (AWT / Swing). Umożliwia skorzystanie z podstawowych funkcji modułu archiwum za pomocą kilku kliknięć myszką. Interfejs WWW powstaje przez połączenie modułów PrettyPrinter i QueryServer. PrettyPrinter generuje strony WWW zawierające podstawowe podsumowania i zestawienia (czysty HTML), zawierające odwołania do stron dynamicznych (PHP) umożliwiających zadanie bardziej szczegółowych zapytań, obsługiwanych następnie przez QueryServer. Np. kliknięcie na jedną z kolokacji w wygenerowanym statycznie ogólnym rankingu lub porównaniu rankingów powoduje przejście do generowanej dynamicznie listy przykładowych kontekstów tej kolokacji, a kliknięcie na słowo w wygenerowanym statycznie słowniku frekwencyjnym – 3 przejście do generowanego dynamicznie rankingu kolokacji dla tego słowa. Podział na dwa podmoduły „sieciowe” wynika z tego, że przygotowanie niektorych danych wymaga przejrzenia całego archiwum. Wielokrotne zadawanie tego typu zapytań w trybie interaktywnym byłoby dużym obciążeniem dla serwera. Przy pracy samodzielnej nie ma to większego znaczenia, ale w przypadku, w którym z zestawień korzysta większa ilość osób, wygenerowanie i zachowanie statycznych stron HTML pozwala na uniknięcie wielokrotnego wykonywania tej samej pracy. SAMain to „centrum sterowania” – zorientowany na indywidualnego użytkownika graficzny interfejs, który umożliwia prosty dostęp do podstawowych funkcji wszystkich modułów programu. Pozwala też pominąć pewne etapy niekonieczne przy pracy indywidualnej (np. zapisywanie i odczytywanie indeksu), co przydaje się np. przy testowaniu wpływu różnych konfiguracji modułu IndexBuilder na wyniki konkretnego zapytania. 4 Crawler 4.1 Krótki opis działania Crawler kopiuje tekstową zawartość wskazanych stron lub witrynych internetowych do wskazanego archiwum. W trakcie tego procesu zawartość strony konwertowana jest do jednolitego kodowania i segmentowana na elementy (z grubsza odpowiadające elementom HTML / XML) i konwertowana do jednolitego kodowania. Elementy mogą zostać poddane pewnej selekcji - krótkie i/lub powtarzające się mogą zostać odrzucone. Podział na elementy odwzorowany jest w postaci podziału na linie tekstu. Pracę modułu można w dowolnym momencie przerwać, a następnie wznowić w tym samym punkcie. Można też pobierać do archiwum wiele wersji tej samej strony lub witryny (np. codzienny serwis prasowy). W wyniku działania modułu na dysku lokalnym powstaje katalog z plikami tekstowymi o ujednoliconym kodowaniu (domyślnie UTF-8), reprezentującymi zawartość tekstową zbadanych stron WWW. Nazwy tych plików mają postać XXXXX.txt, gdzie XXXXX jest liczbą naturalną (w razie potrzeby dopełnioną na początku zerami do pięciu cyfr): np. 00001.txt, 00002.txt, 00003.txt itd. Dodatkowo w katalogu tym zapisywane są, także w formie plików tekstowych: • Spis stron, które reprezentują ww. pliki tekstowe - plik indexed.url • Lista zignorowanych URL z podaną przyczyną odrzucenia, umożliwiająca m.in. zdiagnozowanie niezgodnego z oczekiwaniami zakresu pełzania (spowodowanego np. błędem w wyrażeniu regularnym opisującym witrynę lub niemożnością rozpoznania przez program stosowanych przez autora strony odsyłaczy, nieznanymi rozszerzeniami nazw plików) - plik ignored.url • W przypadku włączonego filtru duplikatów (rekomendowane): słownik początkowych fragmentów elementów - plik indexed.elm 4 • W przypadku zewnętrznego przerwania działania programu lub wyczerpania ustalonego limitu: kolejka niezbadanych odsyłaczy, umożliwiająca późniejsze wznowienie działania - plik queue.url 4.2 Wywołanie modułu Składnia wywołania: java kolokacje.crawler.Crawler dir [var1=value1 var2=value2...] Przykłady użycia: java kolokacje.crawler.Crawler emacs start=http://jamesthornton.com/emacs/node/ java kolokacje.crawler.Crawler md start=C:\Mojedo~1 inputEncoding=windows-1250 dir - katalog archiwum, jak w definicji (patrz 2). Jeśli jako archiwum podany zostanie nieistniejący katalog, moduł spróbuje go utworzyć. var - jedna ze zmiennych konfiguracyjnych zdefiniowanych w pliku config.ini. value - nowa (przesłaniająca na czas wywołania modułu wartość z config.ini) wartość zmiennej. Można skorzystać z opcji przekazania wartości zmiennych konfiguracyjnych przez parametr wywołania dla wywołań jednorazowych lub np. generowanych przez zewnętrzny program, jednak zalecane jest raczej utworzenie lokalnego pliku konfiguracyjnego. Znaczenie zmiennych oraz ich domyślne wartości opisane są w 11. Szczególnie często przy wywołaniu modułu używana jest zmienna start adres strony WWW, ewentualnie ścieżka do pliku lub katalogu, od którego program ma zacząć pełzanie. Jeśli jako start podany zostanie lokalny katalog, moduł potraktuje go jako stronę z odsyłaczami do wszystkich znajdujących się w tym katalogu plików i katalogów. 4.3 URL startowy i definiowanie witryn do pobrania Witryny do pobrania opisywane są w pliku addresses.acc w katalogu archiwum. Można je zdefiniować na trzy sposoby. Jeśli opcja regexpAddressesTester jest włączona, to każda linijka pliku addresses.acc będzie traktowana przez program jako wyrażenie regularne opisujące witryny do pobrania. Jeśli znaleziony URL pasuje do dowolnego z tych wyrażeń, URL dodawany jest do kolejki stron do pobrania. Jeśli opcja regexpAddressesTester jest wyłączona, to każda linijka pliku addresses.acc będzie traktowana jako prefiks opisujący witryny do pobrania. Jeśli znaleziony URL rozpoczyna się dowolnym z tych prefiksów, dodawany jest do kolejki stron do pobrania. Jeśli użytkownik nie zdefiniuje pliku addresses.acc, akceptowane są tylko i wyłącznie URL, których prefiksem jest start. Jeśli użytkownik zdefiniuje plik addresses.acc, akceptowane są tylko i wyłącznie URL spełniające jedną z reguł z tego pliku. 5 Jeśli URL startowy nie zawiera nazwy konkretnego pliku, a jedynie nazwę serwera (i ewentualnie katalog), powinien kończyć się „ciachem” (/). 4.4 Akceptowane rozszerzenia nazw plików Ze względu na to, że uwzględnianie rozszerzeń nazw plików w ramach wyrażenia regularnego opisującego witrynę byłoby skomplikowane i zaciemniałoby obraz sytuacji, lista dopuszczalnych rozszerzeń została wydzielona do odrębnego pliku konfiguracyjnego - extension.acc. Domyślnie program ściąga wszystkie pliki z rozszerzeniem .htm, .html, .xhtml, .xml, .txt, .php, .asp. Dla porządku do listy akceptowalnych rozszerzeń dodany został również „ciach” (/). Obecna wersja programu nie różnicuje swojego zachowania w zależności od rodzaju pliku, tzn. np. rozpoznając język sprawdza te same znaczniki, niezależnie od tego czy ma do czynienia z dokumentem HTML czy XHTML. 4.5 Długie pliki tekstowe Ze względu na ograniczenie maksymalnej długość segmentu i zorientowanie na obróbkę plików HTML, obecna wersja programu może mieć problemy z analizą plików tekstowych dłuższych niż 32768 znaków i nie zawierających żadnych znaczników HTML/XML. Można temu zaradzić poprzez dodanie w długim pliku tekstowym kilku sztucznych znaczników – np. <rozdział n> na początku każdego rozdziału, jeśli plik zawiera książkę. 4.6 Strony nie pobrane URL stron, które nie zakwalifikowały się do pobrania, odnotowywane są w pliku ignored.url, wraz z krótkim oznaczeniem, umożliwiającym zdiagnozowanie przyczyny odrzucenia danego odsyłacza. Oznaczenie malformed syntax extension address IO encoding Przyczyna odrzucenia URL nie jest poprawny, np. ze względu na niekreślony protokół URL jest nielegalny, np. ze względu na znaki, które nie powinny występować w URL Rozszerzenie nazwy pliku nie jest żadnym z wymienionych w pliku extension.acc URL nie pasuje do żadnego z wzorców określonych w pliku addresses.acc lub przez URL startowy Problemy z połączeniem lub odczytaniem pliku Nieznane kodowanie 6 4.7 Ignorowane znaczniki elementów Można zadeklarować niektóre znaczniki jako pełniące jedynie funkcje dekoracyjne (domyślnie np. znacznik font). Takie znacznik bedą przeźroczyste dla modułu pobierającego strony WWW (nie będą brane pod uwagę przy podziale na elementy). 5 IndexBuilder 5.1 Krótki opis działania IndexBuilder wczytuje pliki tekstowe znajdujące się we wskazanym katalogu, tworzy indeks kolokacji oraz tablicę suffiksową wraz z indeksem. Indeks kolokacji zawiera informacje o wystąpieniach par słów obok siebie w tekście. Po zsumowaniu wystąpień wszystkich par tworzonych przez słowo x otrzymujemy listy wystąpień słowa x, dzięki temu indeks kolokacji służy jednocześnie jako indeks wystąpień słów. Tablica suffiksowa zawiera wszystkie słowa występujące w korpusie (bez duplikatów). „Równoległy” do tablicy indeks służy efektywnemu wyszukiwaniu słów zawierających dany ciąg znaków. 5.2 Wywołanie modułu Składnia wywołania: java kolokacje.index.IndexBuilder dir [var1=value1 var2=value2...] Przykłady użycia: java kolokacje.index.IndexBuilder emacs java kolokacje.index.IndexBuilder emacs minWordLength=4 dir, var, value - znaczenie tak jak w module Crawler. 5.3 Pomijanie wybranych słów Można zadeklarować niektóre słowa jako przezroczyste - pomijane przy indeksowaniu. W tym celu należy przed rozpoczęciem budowy indeksu umieścić w katalogu archiwum plik ignore.wrd zawierający listę takich słów, każde w odrębnej linijce. Można też wskazać inny plik przez zmienną whiteWordsFile. Można również zadeklarować, że ignorowane mają być wszelkie słowa o długości mniejszej niż zadana. W tym celu należy ustawić wartość zmiennej minWordLength. 7 5.4 Budowa indeksu dla dużych korpusów Przy budowie indeksu dla dużych archiwów (rzędu 500 tys. słów i większych), program może zgłosić błąd OutOfMemoryError. Należy w takim przypadku usunąć domyślne ograniczenie wielkości stosu i dostępnej pamięci dla wirtualnej maszyny Javy. Można to osiągnąć poprzez wywołanie (javy, nie samego programu) z opcją -Xmxrozmiar, np.: java -Xmx228m kolokacje.index.IndexBuilder emacs 228m w podanym przykładzie oznacza, że maszyna wirtualna może teraz wykorzystywać 228 megabajtów pamięci. Przy podawaniu nowego ograniczenia nie jest wskazane przekraczanie wielkości fizycznie dostępnej pamięci RAM, gdyż może to spowodować istotne spowolnienie pracy programu. 6 6.1 Zapytania do archiwum Zapytanie o słowa Zapytanie o słowa może być ogólne – o wszystkie słowa występujące w tekście (słownik frekwencyjny) – albo szczegółowe, o konkretne słowo lub rodzinę słów (np. *wyraz* – słowa zawierające rdzeń „wyraz” albo *a – słowa kończące się literą „a”). Głównym parametrem zapytania o słowa jest lista interesujących nas rodzin słów rozdzielona spacjami. Każdy z elementów tej listy może rozpoczynać się i/lub kończyć gwiazdką, oznaczającą zero lub więcej dowolnych znaków. Jeśli parametr ten pozostaje pusty, zapytanie traktowane jest jako ogólne. Dodatkowe parametry zapytania: Minimalna liczba wystąpień (ang. min number of occurences) – słowa o mniejszej niż zadana liczbie wystąpień pomijane są w wynikach. Ignorowanie liczb (ang. exclude numbers) – czy w wynikach mają być pomijane liczby. Za liczby uznawane są wszelkie słowa rozpoczynające się od cyfry (w tym np. 2003r, 3D, 121a). Kolejność wyników (ang. word order) – zaimplementowana została kolejność alfabetyczna (domyślna), według częstości wystąpień oraz a tergo. 6.2 Zapytanie o kolokacje Zapytanie o kolokacje może być ogólne – o wszystkie kolokacje występujące w tekście – albo szczegółowe, o kolokacje konkretnego słowa lub grupy słów. Jeśli parametr ten pozostaje pusty, zapytanie traktowane jest jako ogólne. Dodatkowe parametry zapytania: Testy, których wartości należy obliczyć i wyświetlić w wynikach. Test, według którego wartości należy posortować wyniki. Jeśli wybrana zostanie opcja all rankings seperately, utworzone zostanie porównanie rankingów – patrz niżej. 8 Minimalna liczba wystąpień (ang. min number of occurences) – kolokacje o mniejszej niż zadana liczbie wystąpień pomijane są w wynikach. Kierunek kolokacji (ang. only left, only right, both left and right) – dla zapytań szczegółowych określa czy w wynikach mają być uwzględniane tylko kolokacje lewe, prawe czy oba rodzaje. Ignorowanie nazw własnych (ang. exclude proper names) – czy w wynikach mają być pomijane nazwy własne. Za nazwy własne uznawane są kolokacje, których wszystkie wystąpienia w korpusie tekstów rozpoczynają sie dużymi literami. Tylko nazwy własne (ang. only proper names) – czy w wynikach mają być pomijane kolokacje nie spełniające ww. kryteriów nazwy własnej. W zależności od wybranej kolejności sortowania, wynikiem będzie: • Ranking kolokacji, posortowany według wartości wybranego testu. Kolejne kolumny przedstawiają: parę słów tworzącą kolokację, liczbę wystąpień pierwszego słowa, liczbę wystąpień drugiego słowa, wyniki poszczególnych testów. • Porównanie rankingów według różnych testów. Kolejne kolumny przedstawiają wyniki rankingów (pary słów w kolejności od najwyżej ocenionej kolokacji) według poszczególnych testów. 6.3 Zapytanie o konteksty Głównym parametrem zapytania może być słowo lub kolokacja (para słów rozdzielona spacjami). W jednym i drugim przypadku dopuszczalne są gwiazdki na oznaczenie nieznanej części słowa, ale należy stosować je z wyczuciem - obliczenie odpowiedzi np. na zapytanie o konteksty wystąpień dla kolokacji *a* *e* może zająć bardzo dużo czasu. Wynik: fragmenty tekstów zawierające dane słowo lub kolokację. Dodatkowe parametry zapytania: Długość lewego kontekstu, długość prawego kontekstu - liczona jest w znakach. Kontekst może być w rzeczywistości nieco krótszy - obcinany jest do najbliższej spacji, tak by nie pokazywać fragmentów słów. 6.4 Powiązania między zapytaniami Zarówno interfejs indywidualny jak i sieciowy starają się ułatwić zadawanie zapytań związanych z wynikiem poprzedniego. I tak: • W wynikach zapytania o słowa kliknięcie na odpowiednie przyciski lub odsyłacze (samples lub collocations) powoduje zadanie zapytanie o konteksty lub kolokacje danego słowa • W wynikach zapytania o kolokacje, kliknięcie na kolokację powoduje zadanie zapytania o konteksty danej kolokacji 9 • W wynikach zapytania o konteksty, kliknięcie na przycisku z nazwą pliku powoduje otwarcie pliku, z którego pochodzi dany kontekst. W wersji sieciowej dodatkowo umieszczany jest odsyłacz na stronę, na podstawie której przygotowany został dany plik lokalny. 6.5 Zapytania ogólne a zapytania z gwiazdką Aczkolwiek tablice sufiksowe znakomicie przyspieszają wyszukiwanie słów zawierających dany rdzeń, nie należy przesadzać ze stosowaniem „gwiazdki” - słów spełniających dany wzorzec jest z reguły znacznie więcej niż się spodziewamy. Zapytanie ogólne są szybsze niż zapytanie szczegółowe. Dlatego niewskazane - choć możliwe - jest stosowanie wzorca ** na oznaczenie dowolnego słowa. Przykłady: • Lepiej zadać zapytanie ogólne o wszystkie słowa, niż zapytanie szczegółowe o słowa pasujące do ** • Lepiej zadać zapytanie ogólne o wszystkie kolokacje, niż zapytanie szczegółowe o kolokacje dla ** • Lepiej zadać zapytanie o konteksty wystąpień słowa X, niż o konteksty kolokacji dla X ** • Zapytania o konteksty dla kolokacji ** ** lepiej w ogóle nie zadawać. 6.6 Brak wyników? Jeśli w odpowiedzi na zapytanie o słowa lub o kolokacje nie otrzymamy wyników (lub otrzymamy znacznie mniej wyników niż się spodziewamy), może to być efektem: • literówki w zapytaniu lub w tekście oryginalnym; • nadmiernie restrykcyjnych filtrów wyników – warto zwrócić uwagę zwłaszcza na minimalną liczbę wystąpień, przy niewielkich korpusach domyślna wartość (3) oznacza odrzucenie większości par słów. 7 7.1 Interfejs indywidualny - SAManager Krótki opis działania Moduł udostępnia interfejs graficzny umożliwiający zadawanie zapytań archiwum i przeglądanie wyników. Treść zapytania należy wpisać w okienko tekstowe na dole okna, a następnie nacisnąć jeden z przycisków Find words (słowa), Find collocations (kolokacje) lub Find samples (próbki kontekstów). W przypadkach zapytania o słowa i o kolokacje można pozostawić treść zapytania pustą, wówczas zapytanie traktowane jest jako zapytanie ogólne. Znaczenie oraz parametry poszczególnych zapytań opisane są w dziale 6. 10 7.2 Wywołanie programu Składnia wywołania: java kolokacje.standalone.SAManager [var1=value1 var2=value2...] Przykłady użycia: java kolokacje.standalone.SAManager emacs java kolokacje.standalone.SAManager gnupl forceWindowsLocation=1 Okno wyników umożliwia zapisanie rezultatów zapytania na dysku w jednym z dwóch formatów - jako czysty tekst (Save TXT) i Comma Separated Values (Save CSV). 7.2.1 Czysty tekst Jeśli wybrany zostanie zapis jako czysty tekst, zachowanie zależy od typu wyników. • dla rankingów kolokacji i porównania rankingów – zapisana zostanie lista wszystkich kolokacji, każda para słów w odrębnej linijce, w kolejności od najistotniejszej do najmniej istotnej; • dla słów – zapisane zostaną same słowa, bez liczby wystąpień, każde w odrębnej linijce; • dla próbek kontekstów – zapisane zostaną całe konteksty (trzy kolumny tworzące próbkę). 7.2.2 CSV Przy zapisie w formacie CSV (Comma Separated Values), zapisane zostaną wszystkie kolumny tablicy wyników. Każdy rząd umieszczany jest w nowej linijce, zawartość każdej komórki brana w cudzysłowy i oddzielana od sąsiednich przecinkami. Cudzysłowy w zawartości komórki zastępowane są cudzysłowami podwójnymi. Tak zapisane dane można zaimportować do arkusza kalkulacyjnego (np. OpenOffice Calc) i w nim prowadzić dalszą ich obróbke. 8 8.1 Interfejs indywidualny - SAMain Wywołanie modułu Składnia: java kolokacje.standalone.SAMain java kolokacje.standalone.SAMain dir 11 8.2 Wybór archiwum Jeśli nie podamy archiwum, z którym chcemy pracować, jako parametru wywołania, należy wybrać je zaraz po uruchomieniu modułu. Możemy też utworzyć nowe archiwum poprzez podanie nieistniejącego katalogu. 8.3 Menu główne Po wybraniu archiwum pojawia się główne menu programu. Poszczególne przyciski umożliwiają: Przycisk Start / resume crawling Choose file or directory Edit list (Re)build index (Re)build and save index Query saved index Custom config.ini Archived pages Change archive About Exit Działanie Uruchamia moduł Crawler, przyjmując za start URL wpisany w okienku znajdującym się nad przyciskiem Otwiera okno wyboru pliku, a po dokonaniu wyboru uruchamia moduł Crawler z parametrem start odpowiadającym wybranemu plikowi lub katalogowi Otwiera listę słów ignorowanych przez moduł IndexBuilder Buduje indeks kolokacji, uwzględniając przy wywołaniu modułu IndexBuilder ustawione na panelu parametry, i uruchamia w odrębnym oknie moduł SAManager (patrz 7), pozwalający zadawać zapytania zbudowanemu indeksowi Jw. + zapisuje zbudowany indeks do archiwum Wczytuje wcześniej zbudowany i zapisany indeks, a następnie uruchamia w odrębnym oknie moduł SAManager (patrz 7), pozwalający zadawać zapytania temu indeksowi Otwiera lokalny plik konfiguracyjny Wyświetla listę URL pobranych do archiwum stron Wybór innego archiwum Wyświetla podstawowe o programie Wyjście z programu 12 informacje Kiedy aktywny zawsze zawsze zawsze jeśli do archiwum pobrany został co najmniej 1 plik / strona jw. jeśli w archiwum jest zapisany indeks kolokacji zawsze jeśli do archiwum pobrany został co najmniej 1 plik / strona zawsze zawsze zawsze 8.4 Zewnętrzny edytor Do przeglądania i edycji niektórych plików - np. lokalnego pliku konfiguracyjnego, listy słów ignorowanych czy plików archiwum - wykorzystywany jest zewnętrzny edytor, zdefiniowany poprzez zmienną editorCommand. Edytorowi temu program może przekazać następujące parametry: {0} - nazwa pliku, {1} - kodowanie oraz {2} - numer znaku w pliku. Jeśli włączona jest zmienna setEnvironment, to ustawiane są również zmienne środowiska - odpowiednio FILENAME, ENCODING i POSITION. 8.5 Rozmieszczanie okien pod FVWM FVWM nie uwzględnia tzw. dekoracji okien przy ich rozmieszczaniu, co powoduje, że przy domyślnej konfiguracji część okna jest niewidoczna. Aby temu zapobiec, należy w pliku konfiguracyjnym (patrz 11) ustawić wartość zmiennej forceWindowsLocation na yes. Modyfikując wartości locationX i locationY można wpływać na początkowe umieszczenie okna. 9 Interfejs sieciowy - PrettyPrinter 9.1 Krótki opis działania Moduł wczytuje indeks kolokacji, a następnie na podstawie szablonów tworzy i zapisuje do archiwum pliki XHTML z podstawowymi zestawieniami – listę pobranych stron, słownik najczęściej występujących słów, najsilniejsze kolokacje według poszczególnych rankingów oraz porównanie tych rankingów. Możliwe jest również wygenerowanie rankingów kolokacji dla szczególnie istotnych wyrazów lub grup wyrazów. 9.2 Wywołanie modułu Składnia wywołania: java kolokacje.server.PrettyPrinter dir [var1=value1 var2=value2...] Przykłady użycia: java java java java kolokacje.server.PrettyPrinter kolokacje.server.PrettyPrinter kolokacje.server.PrettyPrinter kolokacje.server.PrettyPrinter emacs emacs serverPort=7762 emacs wordsMinCount=20 gnupl maxRows=100 rowsPerPage=100 dir, var, value - znaczenie tak jak w module Crawler. 13 9.3 Rozmieszczenie plików Do prawidłowego działania moduł PrettyPrinter potrzebuje szablonów stron oraz arkusza stylów. Najlepiej po prostu zakładać katalogi archiwów na tym samym poziomie i w tym samym katalogu, w którym umieszczony jest katalog kolokacje (zawierający kod programu), styles (zawierający arkusze stylów) oraz php (zawierający kod php umożliwiający zadawanie zapytań modułowi QueryServer i wyświetlanie ich wyników). W przypadku, gdy nie jest to możliwe / wskazane, należy: • Poprawić w wykorzystywanych szablonach odnośniki do arkusza stylów; • Poprawić w pliku php/coll.php odnośnik do arkusza stylów; • Poprawić zmienną phpRef (określającą położenie pliku coll.php względem katalogu archiwum) w pliku konfiguracyjnym. Wynikowe pliki HTML umieszczane są zawsze w katalogu archiwum. 10 10.1 Interfejs sieciowy - QueryServer Krótki opis działania Moduł wczytuje indeks kolokacji i uruchamia serwer zapytań, przyjmujący na zewnętrznym porcie zapytania przesyłane np. poprzez interfejs PHP. Do obsługi każdego zapytania jest uruchamiany odrębny wątek, a zatem serwer może odpowiadać na wiele zapytań jednocześnie. Jeżeli jakiś błąd podczas obsługi zapytania spowoduje przedwczesne zakończenie wątku, nie powoduje to przerwania pracy serwera. 10.2 Wywołanie modułu Składnia wywołania: java kolokacje.server.QueryServer dir [var1=value1 var2=value2...] Przykłady użycia: java kolokacje.server.QueryServer emacs java kolokacje.server.QueryServer emacs serverPort=7762 java kolokacje.server.QueryServer gnupl maxAsterixAmbiguity=100 dir, var, value - znaczenie tak jak w module Crawler. 14 10.3 QueryServer a PrettyPrinter Serwer zapytań może znajdować się na innym komputerze niż pliki HTML wygenerowane przez moduł PrettyPrinter. Można to wykorzystać, aby np. uniemożliwić bezpośredni dostęp do serwera zapytań (bezpośredni, czyli nie poprzez zapytania generowane przez interfejs WWW). Ważne jest, aby: • Na tym samym komputerze znajdowały się pliki HTML i PHP; • W pliku php/queryServer.php znalazł się adres serwera (patrz niżej); • Serwer zapytań widziany był przez serwer WWW; • Na komputerze z serwerem zapytań znajdowały się pliku indeksu kolokacji oraz tablicy suffiksowej; • Moduły PrettyPrinter oraz QueryServer zostały wywołane z tą samą wartością zmiennej serverPort (najlepiej zapisać ją w lokalnym pliku konfiguracyjnym); • Na obu komputerach znajdował się komplet plików tekstowych z archiwum (to akurat nie jest to wymagane, ale brak tych plików nieco ogranicza funkcjonalność programu). 10.4 Konfiguracja kodu PHP Aby strony napisane w PHP „widziały” serwer zapytań, należy im podać adres tego serwera. W pliku php/queryServer.php należy zmienić wartość zmiennej queryServer na adres komputera, na którym uruchomiony został / zostanie moduł QueryServer. Numer portu przekazywany jest dynamicznie przez URL, jako parametr port, a zatem nie należy go wpisywać w kod PHP. 11 11.1 Konfigurowanie programu Zmienne konfiguracyjne Wartości zmiennych konfiguracyjnych mogą być ustawiane poprzez: 1. interfejs graficzny modułu SAMain (tylko wybrane zmienne) 2. argument wywołania (postaci zmienna=wartość modułów Crawler, IndexBuilder, SAManager, PrettyPrinter i QueryServer 3. lokalny plik konfiguracyjny (plik config.ini umieszczony w katalogu archiwum) 4. ogólny plik konfiguracyjny (plik config.ini umieszczony w katalogu kolokacje - wartości domyślne) 15 Priorytet odpowiada powyższej kolejności, tzn. wartości z lokalnego pliku konfiguracyjnego przesłaniają wartości domyślne z pliku ogólnego, a wartości przekazane podczas wywołania z linii poleceń lub poprzez interfejs graficzny modułu SAMain przesłaniają te z obu plików konfiguracyjnych. Przypisanie wartości na zmienną ma zawsze postać: zmienna=wartość W plikach konfiguracyjnych dozwolona jest spacja po jednej lub obu stronach znaku =, przy przekazywaniu przez argument wywołania - nie. W plikach konfiguracyjnych każde przypisanie musi być umieszczone w odrębnej linijce. Do oznaczenia linijki komentarza można używać znaku # lub ;. Puste linie są ignorowane. Dla zmiennych binarnych (logicznych) można zamiennie używać wartości true, yes, on i 1. Analogicznie false = no = off = 0. 11.2 Przykład lokalnego pliku konfiguracyjnego Osoby pracujące pod MSWindows i tworzące korpus na podstawie lokalnych plików tekstowych mogą umieścić w archiwum następujący plik config.ini: defaultInputEncoding = windows-1250 archiveEncoding = windows-1250 editorCommand = notepad {0} setEnvironment = no 11.3 Zmienne uniwersalne Nazwa zmiennej archiveEncoding Wartość domyślna UTF-8 collocationIndexFile indexSummaryFile colls.idx colls.ini suffixBaseFile suffixIndexFile urlListFile suffix.txt suffix.idx indexed.url Znaczenie zmiennej kodowanie plików archiwum oraz tablicy suffiksowej nazwa pliku z indeksem kolokacji nazwa pliku zawierająca podsumowanie indeksu kolokacji nazwa pliku tablicy suffiksowej nazwa pliku indeksu tablicy suffiksowej nazwa pliku zawierającego listę stron WWW skopiowanych do archiwum 16 11.4 Crawler considerOnlyEndTags off defaultInputEncoding duplicateFilter iso-8859-2 on duplicateFilterLength 40 ignoreTagFile indexedElementsFile ignore.tag indexed.elm languageFilter off languageFilterStrict 1 maxFilesPerCrawl 800 minElementLength 1 overrideByDefault no regexpAddressTester yes requestedLanguage pl resumeInterrupted yes simplifyText yes urlQueueFile queue.url urlIgnoredFile ignored.url czy podczas podziału strony na elementy należy brać pod uwagę tylko znaczniki zamykające kodowanie plików wejściowych czy podczas kopiowania do archiwum pomijane będą powtarzające się elementy ograniczenie na ilość znaków porównywanych przy sprawdzaniu czy elementy się powtarzają nazwa pliku zawierającego znaczniki, które należy ignorować podczas segmentacji zawartości strony wejściowej na elementy nazwa pliku zawierającego informacje o już skopiowanych elementach, wykorzystywanego przy włączonym duplicateFilter czy włączony jest filtr językowy (zachowanie zależy od languageFilterStrict, a pożądany język określony jest przez requestedLanguage) jeśli włączony jest filtr językowy, to wartość tej zmiennej decyduje, czy odrzucane będą wszystkie strony zawierające oznaczenie języka innego niż pożądany (0), czy wszystkie strony nie zawierające pożądanego języka (1) maksymalna liczba stron, które można pobrać podczas jednego uruchomienia programu minimalna długość elementu kwalifikująca go do skopiowania do archiwum czy program powinien skasować dotychczasową zawartość archiwum przed rozpoczęciem ściągania nowych stron jeśli zmienna jest włączona, linie pliku adresses.acc traktowane są jako wyrażenie regularne opisujące akceptowane URL; jeśli nie - jako akceptowane prefiksy URL jeśli włączony jest filtr językowy, zmienna określa pożądany język (dwuliterowym kodem ISO) czy program powinien wznawiać przerwane działanie czy tekst strony powinien być upraszczany poprzez ujednolicenie cudzysłowów, apostrofów i odstępów nazwa pliku zawierającego listę URL oczekujacych na pobrania do archiwum nazwa pliku, do którego mają być zapisywane odrzucone URL (nie zakwalifikowane do pobrania do archiwum) 17 11.5 IndexBuilder minWordLength 2 segmentSeparators ,.:;@ ()[]{} !?\/<> whiteWordsFile ignore.wrd wordSeparators +-*= %$~_ 11.6 #^& minimalna długość słowa kwalifikująca je jako nieprzeźroczyste (uwzględniane przy budowie indeksu) znaki stanowiące granice segmentów (aby wystąpienie pary słów zostało dodane do indeksu, słowa te nie mogą być rozdzielone żadnym z tych znaków) nazwa pliku zawierającego słowa, które należy pominąć przy budowaniu indeksu znaki stanowiące granice słów (uzupełniające w tym zakresie segmentSeparators); uwaga - spacja jest traktowana jako granica słowa zawsze SAManager / SAMain defaultRowsPerPage 20 defaultTestSelection Freq, z22, SCP, FSCP editorCommand emacs {0} forceWindowsLocation no locationX 40 locationY 40 setEnvironment yes domyślna liczba wierszy na stronie przy wyświetlaniu wyników w wersji standalone domyślny wybór zaznaczonych testów kolokacji, przedstawiony jako ciąg skrótów rozdzielony przecinkami komenda służąca wywołaniu zewnętrznego edytora - patrz 8.4 czy należy wymuszać umieszczanie nowych okien do pozycji locationX, locationY - przydatne np. pod FVWM, gdy okna umieszczane są zbyt wysoko współrzędna X lewego górnego rogu nowych okien, gdy włączone jest forceWindowsLocation współrzędna Y lewego górnego rogu nowych okien, gdy włączone jest forceWindowsLocation czy przy wywoływaniu zewnętrznego edytora należy ustawiać zmienne środowiska 18 11.7 Interfejs sieciowy - ogólne serverPort 11.8 7801 port, na którym serwer przyjmuje zapytania PrettyPrinter collsMinCount 3 excludeNumbers yes excludeProperNames yes maxRows 100 phpRef ../php/coll.php printAllWords printAllColls printAllNames printAllPages printerPrompt yes yes yes yes yes rowsPerPage templatesEncoding wordsMinCount 50 UTF-8 100 11.9 minimalna liczba wystąpień kolokacji kwalifikująca je do rankingów czy na listach słów i kolokacji pomijać liczby (kolokacje z liczbami) czy na listach kolokacji pomijać nazwy własne maksymalna liczba wierszy rankingu kolokacji do zapisania położenie pliku coll.php względem katalogu archiwum czy zapisać listy słów czy zapisać rankingi kolokacji czy zapisać listę nazw własnych czy zapisać listę pobranych stron czy zapytać użytkownika o dodatkowe rankingi kolokacji dla poszczególnych słów lub grup słów liczba wierszy na stronę kodowanie szablonów stron minimalna liczba wystąpień słowa kwalifikująca je na listy słów QueryServer fieldSeparator <> maxAsterixAmbiguity 20 recordSeparator serverLogFile <<>> serverTestSelection Freq, DF, LLR, MxI, z22, Dice, SCP, FSCP, RIDF 19 separator pól rekordu w odpowiedzi maksymalna niejednoznaczność gwiazdki separator rekordów w odpowiedzi plik, do którego należy zapisywać komunikaty diagnostyczne (jeśli nieokreślony - stderr) testy kolokacji wykorzystywane przez serwer i kolejność ich prezentacji (lista rozdzielona przecinkami)