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)