Skrypty korpusowe instrukcja (wersja z 3 lipca 2012 ) redakcja K. Szafran



Podobne dokumenty
Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Backend Administratora

Ćwiczenie: JavaScript Cookies (3x45 minut)

I. Interfejs użytkownika.

XML i nowoczesne technologie zarządzania treścią 2007/08

Ogranicz listę klasyfikacji budżetowych do powiązanych z danym kontem księgowym

Znaki globalne w Linuxie

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

UONET+ - moduł Sekretariat. Jak wykorzystać wydruki list w formacie XLS do analizy danych uczniów?

VinCent Administrator

Zakład Systemów Rozproszonych

System magazynowy małego sklepu.

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Instrukcja obsługi DHL KONWERTER 1.6

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Generator CABRILLO program Marka SP7DQR (Instrukcja obsługi)

Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na r.

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Instrukcja obsługi Multiconverter 2.0

Programowanie w języku Python. Grażyna Koba

Aby przejść do edycji w tym module należy wybrać zakładkę "Dla Pracowników" -> "Sprawdziany".

System imed24 Instrukcja Moduł Analizy i raporty

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Podstawowe wiadomości o systemach plików.

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

REFERAT O PRACY DYPLOMOWEJ

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Laboratorium 7 Blog: dodawanie i edycja wpisów

L E X. Generator analizatorów leksykalnych

Tomasz Boiński: 1. Pozycjonowanie stron i zastosowanie mod_rewrite

Pracownia internetowa w każdej szkole (edycja jesień 2005)

Języki programowania zasady ich tworzenia

INSTRUKCJA OBSŁUGI PRZYSTAWKI PEN-01 DO PENDRIVE A

Wykaz stali z projektu.

Kadry Optivum, Płace Optivum

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Symfonia Produkcja. Kreator raportów. Wersja 2013

Za pomocą niniejszej instrukcji baza programu MAK zostanie przygotowania do eksportu na METALIB.

1 Rejestrator czasu pracy

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Jak ustawić cele kampanii?

Opis złącza AlfaSprzedaży z programem WaPro WF-MAG (przypadek jednego magazynu w WFMAG)

Trochę o plikach wsadowych (Windows)

Wprowadzenie do biblioteki klas C++

Część II Wyświetlanie obrazów

ScanAnalyzer. Instrukcja obsługi aplikacji. Producent: THSoft Tomasz Hutnik Tel:

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

NOWY SZABLON IMPORTU PLIKÓW

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Jako lokalizację, w której będzie kontynuowana praca w przyszłym roku szkolnym, warto wybrać tę, w której zgromadzonych jest więcej danych.

System KADRY. Konsolidacja danych kadrowych BKIP. Wystawianie pism do pracowników. Autor : Piotr Zielonka tel

Przypisy i przypisy końcowe

Ministerstwo Finansów Departament Informatyzacji Usług Publicznych

SAS Institute TECHNICAL SUPPORT )

NOWY SZABLON IMPORTU PLIKÓW

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Uruchomienie nowego kontekstu aplikacji

INSTRUKCJE WIKAMP Dotyczy wersji systemu z dnia

Dlaczego stosujemy edytory tekstu?

Katalog książek cz. 2

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Instrukcja obsługi. Generatora CSV

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

MsAccess - ćwiczenie nr 3 (zao) Budowa formularzy

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

Aktualizacja baz danych systemu qs-stat

1. Zaloguj się do systemu UONET+ jako administrator i uruchom moduł Administrowanie.

Załącznik 2 utworzenie projektu

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

3. Budowa prostych raportów opartych o bazę danych

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

asix4 Podręcznik użytkownika Drajwer OPC Podręcznik użytkownika

4. Funkcje. Przykłady

HELIOS pomoc społeczna

Formatowanie zawartości komórek

Instrukcja dotycząca konwersji dokumentów LaTeX do plików w formacie RTF

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Konfiguracja interfejsu (złącza) PENDRIVE. Plik: PEN-01 PEN_45 PL

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

GEO-SYSTEM Sp. z o.o Warszawa, ul. Kubickiego 9/5, tel./fax ,

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

GEO-INFO V Konwerter formatów TANGO i SHAPE wer

UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa

Instalacja programu:

Dane w poniższej tabeli przedstawiają sprzedaż w dolarach i sztukach oraz marżę wyrażoną w dolarach dla:

UMOWY INSTRUKCJA STANOWISKOWA

Dokumentacja programu. Instrukcja użytkownika modułu Gabinet Zabiegowy. Zielona Góra

Miniaplikacja Lokaty zapewnia dostęp do lokat, do których uprawniony jest użytkownik.

Dokumentacja WebMaster ver 1.0

Generator dokumentów

Transkrypt:

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_ROZSZE- RZENIA.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_ROZSZERZE- NIA.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 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 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 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 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 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