Skrypty korpusowe
Transkrypt
Skrypty korpusowe
Tomasz Olejniczak Skrypty korpusowe — instrukcja (wersja z 3 lipca 2012 ) redakcja K. Szafran 1. Wprowadzenie Tekst niniejszy jest nieznacznie zmodyfikowaną wersją dokumentu zatytułowanego instrukcja.txt przygotowanego przez Tomasza Olejniczaka przy okazji tworzenia przez niego skryptów, które pozwalają na przygotowanie korpusu na podstawie plików w formacie PAGE. 2. Opisy skryptów 2.1. page2all Przetwarza pliki PAGE i djvu tworząc katalog z danymi potrzebnymi do wygenerowania korpusu. 2.1.1. Parametry page2all -d KATALOG_Z_DJVU -c NAZWA_KORPUSU [-s] [-x] [-i ARGUMENT_DISCARD] [-t PLIK_Z_ROZPISANIEM_LIGATUR] [-f PLIK_Z_DEFINICJĄ_FONTÓW] -o KATALOG_WYNIKOWY [-l] KATALOG_Z_PAGE — -f powoduje przekazanie do pageparser’a parametrów powodujących wpisywanie do wynikowego hOCR informacji o fontach (odczytywanej z plików z informacją o fontach NAZWA_PLIKU_PAGE_BEZ_ROZSZERZENIA.txt znajdujących się w tym samym katalogu co odpowiadające im pliki PAGE); Uwaga: Wpisywanie do hOCR informacji o fontach działa tylko jeżeli nie podano opcji -i oraz dla opcji -i Glyph. — -s powoduje użycie do segmentacji programu autorstwa M.Michalskiego o nazwie testuj (dostępny ...), który (wg. README) dosegmentuje regiony, poprawia przydzialy linii oraz dodaje linie wraz z ich pozycjami na stronie; — -l powoduje rozpisanie ligatur, przy czym konieczne jest równoczesne podanie opcji -t; — -x powoduje utworzenie źródeł w formacie XCES, z których będzie potem utworzony korpus (brak tej opcji powoduje wygenerowanie jedynie źródeł w formacie hOCR); — -c NAZWA_KORPUSU - nazwa zostanie umieszczona w pliku <KATALOG_WYNIKOWY>/corpus_name; — KATALOG_Z_DJVU - katalog zawierający pliki djvu zgodne z plikami PAGE (czyli o nazwach <NAZWA>.djvu, gdzie <NAZWA> jest elementem nazwy pliku PAGE, patrz niżej) bezpośrednio lub w podkatalogach, w podkatalogach podkatalogów, itd.; pliki nie będące plikami djvu zostaną zignorowane; — KATALOG_Z_PAGE - katalog zawierający pliki PAGE (*.xml) bezpośrednio lub w podkatalogach, w podkatalogach podkatalogów, itd.; pliki nie będące plikami PAGE zostaną zignorowane; zignorowane zostaną też pliki puste; — -t PLIK_Z_NORMALIZACJĄ [? to samo co rozpisanie ligatur ?] - przekazywany do xces_normalizer.py jako trzeci parametr (zob. dalej, opis działania), ma sens jedynie z opcją -l; — -f PLIK_Z_DEFINICJĄ_FONTÓW - przekazywany do pageparsera, w pierwszym wierszu zawiera nazwę fontu dla regionów których nie ma w pliku z informacją o fontach (NAZWA_PLIKU_PAGE_BEZ_ROZSZERZENIA.txt), a w drugim dla tych które są (zob. 3.5); — -i ARGUMENT_DISCARD — jeżeli użyta zostanie segmentacja programem Michalskiego ten argument zostanie przekazany do pageparsera jako argument opcji –discard, wpp argument zostanie zignorowany i jako argument opcji –discard użyte będzie TextLine; — -o KATALOG_WYNIKOWY — w tym katalogu zapisane zostaną wszystkie wyniki działania skryptu. 1 Nazwy plików PAGE powinny mieć postać: <NAZWA>_<WERSJA>[.tif].xml lub <NAZWA> [.tif].xml (wtedy zostanie przyjęta WERSJA = 1). Pliki są uznawane za niepuste, jeśli mają jakikolwiek niepusty tag div; tagi div są niepuste, jeśli mają dzieci lub zawierają tekst różny od “\n”. Każda <NAZWA> pliku PAGE ma przypisywany <NUMER> w kolejności przetwarzania, uzupełniany do trzech znaków ("5" → "005" itd.). Numer ten jest potem używany do nadawania nazw katalogom, w których są trzymane różne dane — zapewnia on, że przy przetwarzaniu w kolejności leksykograficznej (czyli przez podanie różnym poleceniom argumentu w postaci */... ) wszystkie te dane (np. pliki XCES prztwarzane przez bpng i pliki DjVu przetwarzane przez augment-djvu-corpus) będą przetwarzane w tej samej kolejności. Numer ten jest też istotny o tyle, że marasca zakłada, że pliki DjVu w korpusie są w katalogach o nazwie w postaci liczby trzycyfrowej uzupełnianej zerami. 2.1.2. Ścieżki wpisane na sztywno Ze względu na i tak dużą liczbę możliwych parametrów wywołania, w treść skryptu page2all wpisane zostały „na sztywno” pewne ścieki dostępu. Oznacza to, że przed jego użyciem należy ewentualnie dokonać edycji treści skryptu. Ponieważ w momencie zastąpienia starszej wersji programów nowszą, również może być konieczne dokonanie takiej edycji, większośc deficji odwołujących się do ścieżek wyodrębniono do oddzielnego skryptu o nazwie pageconfig.py. Są to ścieżki wymienione niżej. 1. MIREK_PATH — katalog zawierający program do segmentacji Michalskiego, np.: /home/mirek/ segment, 2. WEB_DIR —- katalog zawierający pliki djvu; musi to być katalog, do którego istnieje również dostęp z zewnątrz, przez http , np.: /var/www/djvus, 3. REAL_WEB_DIR — ścieżka do katalogu zawierającego pliki djvu (patrz wyżej) w postaci adresu URL, np.: http://kanji.klf.uw.edu.pl/djvus, 4. PPPATH — katalog zawierający skrypt pageparser będący modyfikacją pageparsera opisaną dalej (por. p. ... [2.1]), znajdującą się w repozytorium, w którym jest skrypt page2all, np.: /home/tomek, 5. TITLES_FILE —- ścieżka do pliku z informacją o żródłach i tytułach dokumentów źródłowych (patrz niżej), np.: /home/tomek/tytuly.txt 6. TMP_DIR — katalog do którego są kopiowane pliki PAGE na potrzeby segmentacji (zob. 1.1.3), np.: /home/tomek/tmp Uwaga: W treści skryptu użyte zostało (w jednym miejscu) wywołanie skryptu hocr.py w postaci: python /home/tomek/hocr.py. Oczywiście ten fragment należy dostosować do aktualnego położenia skryptu hocr.py. ————— 2.1.3. Działanie Jeżeli nazwa jakiegoś skryptu w poniższym opisie podano jest razem ze ścieżką, to skrypt powinien znajdować się w miejscu wskazywanym przez tę ścieżkę, w przeciwnym przypadku powinien być w miejscu widocznym w $PATH. Skrypt przetwarza pliki w formacie PAGE. Jeżeli użyta została opcja segmentacji (-s), tworzone są kopie wszystkich plików PAGE, poddawane segmentacji programem MIREK_PATH/testuj (autorstwa M.Michalskiego) i wszelkie dalsze operacje są wykonywane na tych kopiach a nie na oryginalnych plikach. W katalogu <KATALOG_WYNIKOWY>/hocr umieszczone zostaną pliki <NAZWA>.html i <NAZWA>_header. xml zawierające wynikowe pliki w formacie hOCR i nagłówki z metadanymi. Ich kopie zostaną umieszczone w <KATALOG_WYNIKOWY>/<NAZWA_KORPUSU>_data/<NAZWA_KORPUSU>/<NUMER>/morph.xml i <KATALOG_ WYNIKOWY>/<NAZWA_KORPUSU>_data/<NUMER>/header.xml. Jeżeli zlecono wykonanie segmentacji programem Michalskiego to w <NAZWA_KORPUSU>_data zostaną umieszczone pliki hOCR przetworzone przez program /home/tomek/hocr.py (patrz uwaga w poprzednim paragrafie), natomiast niezmienione kopie zostaną umieszczone w katalogu <NAZWA_KORPUSU> _mod-data (którego struktura jest analogiczna do struktury katalogu <NAZWA_KORPUSU>_data). Jeżeli podano opcję -x (stworzenie źródeł w formacie xces to w katalogu <NAZWA_KORPUSU>_xces-data (którego struktura jest analogiczna do struktury katalogu <NAZWA_KORPUSU>_data) zostaną umieszczone pliki 2 będące wynikiem konwersji hOCR na xces (pliki o nazwach morph.xml są tutaj plikiami xces, a nie jak w <NAZWA_KORPUSU>_data i <NAZWA_KORPUSU>_mod-data plikami hOCR). Jeżeli podano opcję -l (rozpisanie ligatur) to zostaną rozpisane ligatury z użyciem skryptu xces_processor. py, a do plików <KATALOG_WYNIKOWY>/ligs/<NAZWA>.txt zostaną wypisane (za pomocą skryptu base_ extract.py) formy "base" z plików XCES po rozpisaniu ligatur. Pliki djvused zostaną umieszczone w plikach <KATALOG_WYNIKOWY>/djvused/<NAZWA>.sed. W plikach <KATALOG_WYNIKOWY>/text/<NAZWA>.txt zostaną umieszczone wyniki działania programu html2text na odpowiednich plikach hOCR (bez pierwszego wiersza). W plikach <KATALOG_WYNIKOWY>/<NAZWA_KORPUSU>_run-time/<NAZWA_KORPUSU>.djvu/<NUMER>/ indeks.djvu zostaną umieszczone odpowiednie (o nazwie <NAZWA>.djvu) pliki djvu poddane działaniu programu djvused z użyciem wygenerowanych wcześniej plików djvused. Dowiązania symboliczne do tych plików djvu zostaną umieszczone w plikach /var/www/djvus/<NAZWA_ KORPUSU>/<NAZWA>.djvu. W pliku <KATALOG_WYNIKOWY>/map.txt umieszczane jest mapowanie "../<NAZWA_KORPUSU>_data/ <NUMER>/morph.xml" → "<REAL_WEB_DIR>/<NAZWA_KORPUSU>/<NAZWA>.djvu". Postać metadanych wpisywanych do wspomnianych wyżej plików nagłówkowych jest następująca: filename = <NAZWA>.tif.xml Z nazwy pliku PAGE wycięta zostaje wersja i w razie potrzeby dołożone ".tif". origname = oryginalna nazwa pliku PAGE batchname = ostatni element ścieżki <KATALOG_Z_PAGE> title = tytuł source = źródło version = <WERSJA> Źródło i tytuł pobierane są z pliku TITLES_FILE postaci, który zawiera dane w postaci: <NAZWA>[2:]<tab>źródło<tab>tytuł<nl> ———– 2.2. hocr.py Sposób użycia: hocr.py PLIK_WEJŚCIOWY PLIK_WYNIKOWY Skrypt obcina ’bounding boxy’ elementów w plikach w formacie hOCR tak, by mieściły się w ’bounding boxach’ elementów je zawierających - taka sytuacja pojawia się w plikach generowanych programem Michalskiego. 2.3. xces_normalizer.py Sposób użycia: xces_normalizer.py PLIK_Z_NORMALIZACJĄ [PLIK_Z_WYJĄTKAMI] PLIK_WEJŚCIOWY PLIK_ WYNIKOWY Normalizuje znaki w pliku w formacie xces korzystając z podanego jako pierwszy parametr pliku w opisanym niżej formacie. Zapisuje zmodyfikowany plik xces umieszczając znormalizowany tekst w polu "orth". 2.3.1. Format pliku z opisem normalizacji Poniżej pokazane są przykłady dwóch typów wierszy, które mogą wystąpić w pliku definiującym reguły normalizacyjne. Pierwszy typ, to wiersze definiujące klasy znaków. 1;P;spółgłoska bezdźwięczna;c, f, k, p, s, t 1;A;samogłoska;a, ą, e, ę, i, o, ó, u, y W wierszach tych podstawowe pola oddzielone są średnikami. Istotne są pola: drugie — definiujące zmienną oraz czwarte — określające, które litery należą do klasy określonej zdefiniowaną w drugim polu zmienną. Pozostałe pola są komentarzami. 3 Zdefiniowane w taki sposób zmienne (pojedyncza duża litera) mogą pojawić się w wyrażeniach regularnych występujących w wierszach określających reguły normalizacyjne. Opisują je wiersze, których przyklady pokazane są niżej. id_67;1;MK;.*;ff;.*;f;affekt;afekt;każde ff przechodzi na f; id_68;1;MK;T;ii;A;yj;bałamuciie;bałamucyje;każde ii po T przed A przechodzi na yj; id_69;0;MK;.*;l;.*;ł;karnawalowe;karnawałowe;brak reguły; Podobnie jak poprzednio wiersze dzielą się na pola oddzielone średnikami. Pola znaczące to pola czwarte, piąte, szóste i siódme. Zawierają one kolejno wyrażenia regularne definiujące <lewy kontekst>, <szukane wyrażenie>, <prawy kontekst> oraz <wyrażenie zastępujące>. Skrypt odnajduje <szukane wyrażenie> (może ono zawierać jedynie małe znaki - bez symboli typu *, + [ itp.) w odpowiednim kontekście i zamienia je na <wyrażenie zastępujące> (podobnie jak poprzednio może ono zawierać jedynie małe znaki - bez symboli typu *, + [ itp.). 2.4. base_extract.py base_processor.py PLIK_WEJŚCIOWY PLIK_WYNIKOWY Wypisuje do podanego pliku wyjściowego zawartość elementów "base" z podanego pliku wejściowego w formacie XCES. Dane te są wykorzystywane do stworzenia list frekwencyjnych i histogramu znaków. Efektem ubocznym jest to, że w histogramie nie będą uwzględnione spacje (bo nie ma ich w elementach "base"). 3. Tworzenie korpusu —makecorpus Skrypt makecorpus tworzy korpus na podstawie danych wygenerowanych przez page2all. 3.1. Parametry wywołania Sposób wywołania: makecorpus [-x] ŚCIEŻKA_DO_WYNIKÓW_PAGE2ALL -x — użycie tej opcji powoduje, że do utworzenia korpusu użyte zostaną dane w formacie XCES i widoczna w $PATH instalacja bpng, wpp użyte zostaną dane z plików w formacie hOCR i wersja programu bpng z katalogu /home/jsbien/NEW/bpng+djvu/poliqarp-1.3.9/bin. ŚCIEŻKA_DO_WYNIKÓW_PAGE2ALL — parametr ten powinien wskazywać na katalog, w którym zapisane zostały wyniki działania skryptu page2all. Jako nazwa korpusu przyjęta zostanie wartość odczytana z pliku corpus_name zapisanego przez skrypt page2all w katalogu, w którym zapisał on swoje wyniki. 3.2. Działanie Wyniki działania tego skryptu umieszczane są w podkatalogu o nazwie <NAZWA_KOPRPUSU>_run-time katalogu ŚCIEŻKA_DO_WYNIKÓW_PAGE2ALL. Pliki i katalogi, z których zawartości skrypt korzysta znajdują się również w katalogu ŚCIEŻKA_DO_WYNIKÓW_PAGE2ALL. Działanie skryptu przebiega kilkuetapowo. 1. Tworzone są pliki <NAZWA_KORPUSU>.meta.cfg, <NAZWA_KORPUSU>.bf.conf, <NAZWA_KORPUSU>.meta .lisp, <NAZWA_KORPUSU>.cfg i <NAZWA_KORPUSU>.poliqarpd.conf (który nie jest używany). 2. W tym samym katalogu, za pomocą bpng tworzony jest korpus o nazwie <NAZWA_KORPUSU> . 3. Skryptem augment-djvu-corpus (powinien być widoczny w $PATH) dodawane są do korpusu informacje z plików hOCR znajdujących się w podkatalogu <NAZWA_KORPUSU>_data. 4. Ścieżki w pliku <NAZWA_KORPUSU>_run-time/<NAZWA_KORPUSU>.djvu.filenames są zamieniane na widoczne z zewnątrz URL-e odpowiednich plików djvu, przy użyciu pliku map.txt. Uwaga: W pliku <NAZWA_KORPUSU>.djvu.filenames> każdy wpis zostaje zastąpiony, dokładnie tym samym miejscu, odpowiadającym mu URL-em. 4 4. Dołączanie wyników page2all do istniejących korpusów — makecorpus2 Sposób użycia: makecorpus2 [-x] ŚCIEŻKA_DO_WYNIKÓW_PAGE2ALL [-a ŚCIEZKA_DO_KORPUSU] Skrypt makecorpus2 jest modyfikacją skryptu makecorpus służąca do dołączania wyników działania skryptu page2all do istniejących korpusów wygenerowanych przez makecorpus. Skrypt posiada opcję -a, której użycie powoduje włączenie trybu dołączania. Bez tej opcji skrypt powinien działać identycznie jak makecorpus. Parametrem opcji -a jest <ŚCIEŻKA_DO_KORPUSU>, do którego mają zostać dodane wyniki. 4.1. Tryb dołączania Uwaga: Możliwośc dołącznia wyników działania skryptu Page2all do istniej acych korpusów ma charkter eksperymentalny. W trybie dołaczania wyniki skryptu page2all zostaną dołączone do korpusu znajdującego się w katalogu <ŚCIEŻKA_DO_KORPUSU>/<NAZWA_ISTNIEJĄCEGO_KORPUSU>_run-time/<NAZWA_ISTNIEJĄCEGO_KORPUSU>. W tym celu zostanie użyte polecenie bpng z opcją -c. NAZWA_KORPUSU zostanie odczytana z pliku <ŚCIEŻKA_DO_WYNIKÓW_PAGE2ALL>/corpus_name NAZWA_ISTNIEJĄCEGO_KORPUSU zostanie odczytana z pliku <ŚCIEŻKA_DO_KORPUSU>/corpus_name Tryb dołączania dotyczy tylko korpusów tworzonych z plików w formacie XCES (opcja -x). Aby nie niszczyć istnniejących, nie są w nim tworzone nowe pliki konfiguracyjne korpusu. Zamiast skryptu augment-djvu-corpus zostanie użyty augment-djvu-corpus2 (należy zadbać o jego widoczność w $PATH). Dopisze on na końcu plików wytworzonych przez augment-djvu-corpus w katalogu z istniejącym korpusem, informacje z plików hOCR znajdujących się w katalogu <ŚCIEŻKA_DO_WYNIKÓW_ PAGE2ALL>/<NAZWA_KORPUSU>_data. Nowo utworzone ściezki w odpowiednim pliku <NAZWA_ISTNIEJĄCEGO_KORPUSU>.djvu.filenames są zamieniane na adresy URL odpowiednich plików djvu przy użyciu danych zawartych w pliku <ŚCIEŻKA_DO_WYNIKÓW_PAGE2ALL>/map.txt. Inne ścieżki pozostałe po utworzeniu dotychczas istniejącego korpusu są pozostawiane bez zmian. Uwaga: Powyższy schemat działania opiera się na założeniu, że polecenie bpng -c przy dołączaniu traktuje dołączane pliki XCES jako występujące po plikach XCES które zostały wykorzystane do utworzenia korpusu do którego dołączamy. 5. Histogramy znaków - hist Sposób użycia: hist -n PLIK_Z_NAZWAMI [-o NAZWA_PLIKU_WYNIKOWEGO] KATALOG_Z_WYNIKAMI_PAGE2ALL] Gdzie PLIK_Z_NAZWAMI - definiuje nazwy znaków, np. TextelNames.txt Przy użyciu skryptu unihist tworzone są histogramy znaków (bez i z rozpisanymi ligaturami) na podstawie danych zawartych w <KATALOG_Z_WYNIKAMI_PAGE2ALL>/text i <KATALOG_Z_WYNIKAMI_PAGE2ALL>/ligs. Dane są zapisywane do plików /var/www/hists/codes_<IDENTYFIKATOR_KORPUSU>.txt i /var/www/ hists/codes_ligs_<IDENTYFIKATOR_KORPUSU>.txt. Histogram z rozpisanymi ligaturami nie będzie zawierał informacji o spacjach (patrz opis base_extract.py). Wpisanie wyników do katalogu /var/www/hists oznacza, że w większości instalacji linuksowych będa one widoczne z zewnątrz. Jeśli podana została opcja -o, IDENTYFIKATOR_KORPUSU = NAZWA_PLIKU_WYNIKOWEGO. Wpp. ostatni element ścieżki KATALOG_Z_WYNIKAMI_PAGE2ALL. 6. Listy frekwencyjne — freqlist Sposób użycia: freqlist KATALOG_Z_WYNIKAMI_PAGE2ALL [NAZWA_KORPUSU [NAZWA_PLIKU_WYNIKOWEGO]] gdzie: NAZWA_KORPUSU — domyślnie ostatni element ścieżki: <KATALOG_Z_WYNIKAMI_PAGE2ALL>, 5 NAZWA_PLIKU_WYNIKOWEGO — domyślnie ostatni element ścieżki <KATALOG_Z_WYNIKAMI_PAGE2ALL>. Przy pomocy skryptu /home/jsbien/NEW/marasca/misc/frequency-list tworzona jest lista frekwencyjna korpusu z rozpisanymi ligaturami i umieszczana w /var/www/freqs/<NAZWA_PLIKU_WYNIKOWEGO>_ freqlist_ligs.txt. Lista bez rozpisanych ligatur, zapisywana w pliku /var/www/freqs/<NAZWA_PLIKU_ WYNIKOWEGO>_freqlist.txt, tworzona jest przy użyciu skryptu frequency_list_base (powinien być widoczna w $PATH). Podobnie jak histogramy, ze względu na miejsce umieszczenia, listy będą potem widoczne z zewnątrz. 7. Modyfikacje istniejących skryptów 7.1. pageparser Nowy pageparser dokleja inicjały do następnego słowa i sortuje elementy wewnątrz regionów i niżej po bounding boxach. Dodatkowo ma możliwość zapisywania informacji o fontach do wynikowego hOCR jeżeli poda mu się argumenty: –fonts PLIK_Z_REGIONAMI –font-config-file PLIK_Z_KONFIGURACJĄ gdzie: PLIK_Z_REGIONAMI — zawiera w osobnych wierszach nazwy regionów, PLIK_Z_KONFIGURACJA — ma w pierwszym wierszu nazwę fontu dla regionów których nie ma w pliku PLIK_Z_REGIONAMI a w drugim dla tych które są (zob. dalej) Dopisuje też spacje po każdym słowie, z wyjątkiem ostatniego w wierszu - eksperymenty pokazują, że jest to zgodne z tekstem w wierszu i wyższych regionach. 7.2. augment-djvu-corpus2 Modyfikacja augment-djvu-corpus polegająca na tym, że jeżeli pliki które powinny być utworzone przez skrypt już istnieją to wyniki skryptu są do nich dopisywane (w niezmodyfikowanym skrypcie augment-djvucorpus pliki są pozostawiane bez zmian). TODO: Uzyć zmodyfikowanej wersji Wilka zamiast tego. Uwzględnić problem z powtarzającymi się wpisami w pliku konfiguracyjnym. 7.3. frequency-list-base Skrypt frequency-list zmodyfikowany tak, by brał pod uwagę zawartość XCESowych elementów "base" przy tworzeniu ligatur. 8. Procedura tworzenia korpusu Poniżej podane są przykłady użycia opisanych wyżej narzędzi do tworzenia korpusów. Były one tworzeone na maszynie o adresie kanji.klf.uw.edu.pl. 8.1. Korpus bez segmentacji cd /home/tomek page2all -x -l -i TextLine -d /host/PRIMA-djvu -o /home/tomek/NowyKorpus -c NowyKorpus /host/GT\_PSNC/Batch10 makecorpus -x NowyKorpus hist -n /home/jsbien/extraUnicodeData/TextelNames.txt NowyKorpus freqlist NowyKorpus Statystyki możemy już oglądać w plikach: 6 http://kanji.klf.uw.edu.pl/hists/codes\_NowyKorpus.txt http://kanji.klf.uw.edu.pl/hists/codes\_ligs\_NowyKorpus.txt http://kanji.klf.uw.edu.pl/freqs/NowyKorpus\_freqlist.txt http://kanji.klf.uw.edu.pl/freqs/NowyKorpus\_freqlist\_ligs.txt Następnie w pliku konfiguracyjnym /home/tomek/global/poliqarpd.conf dodajemy wiersz: corpus = nowy-korpus-id: /home/tomek/NowyKorpus/NowyKorpus_run-time/NowyKorpus Jeżeli jest uruchomiony demon poliqarpd to go zatrzymujemy. Uruchamiamy demonaa poliqarpa poleceniem: poliqarpd -c /home/tomek/global/poliqarpd.conf -d Następnie w pliku konfiguracyjnym programu marasca /home/jsbien/NEW/marasca/marasca/ settings/kanji.py, w tablicy zwracanej przez funkcję _get_corpora() dodajemy opis nowego korpusu: DjVuCorpus(path=’/home/tomek/NowyKorpus/NowyKorpus\_run-time/NowyKorpus’ id=’nowy-korpus-id’, title=\_(u’Nowy Korpus’), abbreviation=’Nowy Korpus’, has\_interps=True ) Restartujemy Apache’a. W przypadku gdybyśmy chcieli podać inną nazwę korpusu niż nazwa katalogu podanego jako parametr opcji -o wywołanie może mieć postać: page2all -x -l -d /host/PRIMA-djvu -o /home/tomek/katalog -c NowyKorpus /host/GT_ PSNC/Batch10 W tej sytauacji następne polecenia będą miały postać: makecorpus -x katalog hist -n /home/jsbien/extraUnicodeData/TextelNames.txt -o NowyKorpus katalog freqlist katalog NowyKorpus NowyKorpus A plik histogramów i list frekwencyjnych nazwy: http://kanji.klf.uw.edu.pl/hists/codes\_NowyKorpus.txt http://kanji.klf.uw.edu.pl/hists/codes\_ligs\_NowyKorpus.txt http://kanji.klf.uw.edu.pl/freqs/NowyKorpus\_freqlist.txt http://kanji.klf.uw.edu.pl/freqs/NowyKorpus\_freqlist\_ligs.txt zależą od podkreślonych parametrów. 8.2. Korpus z segmentacją Sposób tworzenia różni się tylko składnią polecenia page2all (należy dodać parametr -s: page2all -x -l -s -i Word -d /host/PRIMA-djvu -o /home/tomek/NowyKorpus -c NowyKorpus /host/GT_PSNC/Batch10 8.3. Korpus łączony Tworzymy pierwszy korpus: page2all -x -l -s -d /host/PRIMA-djvu -o /home/tomek/NowyKorpus -c NowyKorpus /host/GT\_PSNC/Batch10 makecorpus -x NowyKorpus hist -n /home/jsbien/extraUnicodeData/TextelNames.txt -o NowyKorpus\_I NowyKorpus Tworzymy drugi korpus dołączając do pierwszego: 7 page2all -x -l -s -d /host/PRIMA-djvu -o /home/tomek/DodatekDoNowego -c DodatekDoNowego /host/GT\_PSNC/Batch11 makecorpus2 -x -a NowyKorpus DodatekDoNowego hist -n /home/jsbien/extraUnicodeData/TextelNames.txt -o NowyKorpus\_II DodatekDoNowego Tworzymy listę frekwencyjną dla połączonego korpusu: freqlist NowyKorpus 8.4. Korpus z poziomu słów Jego wykonanie różni się tylko składnią polecenia page2all: page2all -x -l -i Glyph -d /host/PRIMA-djvu -o /home/tomek/NowyKorpus -c NowyKorpus /host/PSNC_GT_GLYPH/Batch10 8.5. Korpus z poziomu znaków z informacją o fontach Różni się tylko składnią polecenia page2all: page2all -x -l -d -f plik.txt /host/PRIMA-djvu -o /home/tomek/NowyKorpus -c NowyKorpus /host/PSNC_GT_GLYPH/Batch10 Gdzie plik.txt ma postać: Gotyk Antykwa 8