Składowanie i przetwarzanie danych językowych w relacyjnej bazie

advertisement
Składowanie i przetwarzanie danych
językowych w relacyjnej bazie danych korpus PELCRA i MySQL
Piotr Pęzik
Powszechne formaty składowania danych
korpusowych






Pliki tekstowe, bez anotacji (najczęściej nieindeksowane)
Pliki tekstowe z anotacją linearną (bez zewnętrznie
definiowanej hierarchii znaczników)
Pliki tekstowe ze sformalizowaną, hierarchiczną strukturą
danych opartą na popularnych standardach
przenoszenia/składowania danych (np. XML).
Specjalnie implementowane struktury danych serializowane do
postaci binarnej. Model, na którym oparte są takie struktury
zależy od użytej platformy programistycznej.
Rozwiązania łączone.
Relacyjne bazy danych. (Formaty binarne oparte na szeroko
przyjętym modelu relacyjnym, z interfejsami programistycznymi
oraz językiem zapytań).
Kryteria wyboru systemu składowania i
przetwarzania danych językowych








Przejrzystość i łatwość zarządzania/rozbudowy przyjętego
modelu danych
Zapewnienie dostępności przez Internet (obsługa protokołów i
technologii sieciowych)
Minimalizacja wymogów sprzętowych i dodatkowego
oprogramowania po stronie klienta
Dystrybucja aktualizacji
Zarządzanie użytkownikami/profilowanie dostępu
Skalowalność
Możliwości konwersji do innych formatów
Zgodność z różnymi platformami programistycznymi
Model RDB – rys historyczny

Po raz pierwszy opisany w latach 70-tych w raporcie technicznym
IBM (RJ599). Edgar Frank Codd. A Relational Model of Data for
Large Shared Data Banks Communications of the ACM, Vol. 13, No.
6, June 1970, pp. 377-387. Copyright © 1970, Association for
Computing Machinery, Inc.

12 reguł modelu relacyjnego Codda. Czasem spotykana jest też
dodatkowa (nieco tautologiczna) reguła: „Dane przechowywane w
relacyjnym systemie zarządzania danymi muszą być przetwarzane
tylko i wyłącznie zgodnie z zasadami relacyjnego systemu danych.”
W praktyce oznacza to, że wiele implementacji baz danych to
systemy quasi-relacyjne.

5 reguła Codda podkreśla potrzebę opracowania języka zapytań dla
modelu RDB. Mimo, że pierwsza próba wypracowania ścisłego
standardu języka SQL miała miejsce w 1992 roku (rewidowana w
1999 roku), to istniejące obecnie wersje języka SQL nie do końca
spełniają jego wymogi
Korpus PELCRA w bazie MySQL




Systemy RDB brane pod uwagę: POSTGRES, ORACLE,
MySQL
Ogólna opinia o MySQL – duża szybkość, ale stosunkowo
słabo rozbudowana wersja SQL.
MySQL 4.1, MySQL 5.0 – 1 milion pobrań w ciągu pierwszych
3 tygodni głównie ze względu na znaczne ulepszenia
Korpus PELCRA – ponad 100,000,000 rekordów w 130
tabelach
Model RDB dla danych językowych 1

Podstawowe tabele (wszystkich130)

Słowo – Zdanie – Akapit – Tekst

Wiązanie przez klucz obcy. Ważne pole pozwalające
przywrócić pierwotną strukturę linearną tekstu: sekwencja.
Tabela słowa
Tabela zdania
Tabela akapitu
Tabela tekstu
Przykładowe zapytanie wiążące tabele
słowa i zdania
select
w.word_num,
w.word lewe_slowo,
w1.word prawe_slowo
from
pnc_word_token w,
pnc_word_token w1,
pnc_sentence s
where
w.word = 'życiowa'
# warunek dla słowa w
and w1.sentence_num = w.sentence_num # słowo w1 w tym samym zdaniu
and w1.sequence = w.sequence + 1# pierwsze po prawej
and w.sentence_num = s.sentence_num
# wiązanie z tabelą zdania
and s.type_num = 3
# tylko pytania
Wynik
word_num lewe_slowo prawe_slowo
3794492 życiowa
stabilizacja
5132549 życiowa
sytuacja
5842184 życiowa
przygoda
5991461 życiowa
pasja
6309181 życiowa
decyzja
6784503 życiowa
Pasja
...
...
...
„Płaskie” tabele

Czasem ze względów praktycznych warto złamać reguły relacyjne poprzez
powtórzenie w różnych tabelach danych, które teoretycznie dałoby się
wydobyć poprzez wiązania (na poziomie zdania i akapitu) oraz poprzez
użycie tabel „płaskich” (nierelacyjnych), np. tabela corpus_frequency:
frequency_num
frequency
word
stop
30
6284418
,
y
32
5942163
.
y
938776
2410016
w
y
312246
1662997
i
y
31
1451046
-
y
796653
1284521
się
y
1015357
1278529
z
y
Modelowanie i zarządzanie danymi
Dostępność zasobów przez Internet i
wymagania po stronie klienta I



Architektura Serwer RDB – Serwer WWW – Przeglądarka.
Ograniczenia: Większość operacji formatowania danych
(sortowanie, ograniczanie kontekstu – tylko poprzez skrypty) musi
być zdefiniowana przed wysłaniem zapytania.
Zalety: terminal z najprostszą przeglądarka pozwala na
skorzystanie z pełnych możliwości sprzętowych i
programistycznych serwera RDB oraz WWW:
Serwer RDB
(MySQL)
Serwer WWW
(Linux/Apache/
PHP, ew. JSP)
Przeglądarka
Dostępność zasobów przez Internet i
wymagania po stronie klienta II



Architektura Serwer RDB – Aplikacja Klienta (np.
MySQL - Java JDBC).
Wady: większe wymagania po stronie klienta.
Zalety: szerokie możliwości przetwarzania wyników
zapytań po stronie klienta.
Serwer RDB
MySQL
Aplikacja klienta
(np. Java)
Dystrybucja aktualizacji

Centralny system serwowania danych.
Natychmiastowa aktualizacja.

Wady: problemy z serwerem są odczuwane
przez wszystkich użytkowników systemu.
MySQL – replikowanie bazy.
Zarządzanie dostępem

Poprzez tabelę user w bazie mysql

Z wykorzystaniem warstwy aplikacji
Skalowalność I

Zapytanie na tabeli word_token (93+ miliony
rekordów. 1 serwer PENTIUM 4 3.0 GHz, 2 GB
RAM):
select
*
from
pnc_word_token
WHERE
word = 'woda'
# 3876 wierszy w 0.91s
Skalowalność II
select
*
from
pnc_word_token
WHERE
word like 'wodn%'
# 3138 wierszy w 1.19s
select
*
from
pnc_sentence
WHERE
sentence like '% woda %'
# 2168 wierszy w 1.09s (6 millionów rekordów w tabeli).
Skalowalność III

Efektywność spada znacznie przy:




Stosowaniu skomplikowanych wiązań (szczególnie
tzw. left-joins/outer-joins) . Warto wiązać z możliwie
najwyższego poziomu (stąd płaskie tabele i
powtórzenie danych w różnych polach na różnych
poziomach – ale nie chaotycznie).
Grupowaniu na całej tabeli.
Zastosowaniu złożonych wyrażeń regularnych na
tabelach niskiego poziomu (REGEX i LIKE na
word_token).
Dużo zależy od stopnia przetworzenia
przechowywanych w bazie danych.
Skalowalność IV

Wykorzystanie indeksów typu FULL TEXT
select
*
from
pnc_sentence s
where
match(s.sentence) against('woda' in boolean mode)
# 3834 rekordy w 0.5 sekundy (6 millionów rekordów w tabeli).
select
*
from
pnc_paragraph p
where
match(p.paragraph) against('woda' in boolean mode)
# 3800 rekordów w 0.4 sekundy (2,5 milliona rekordów w tabeli
Skalowalność V

Architektura rozproszona w MySQL 5.0
(klaster)
Konwersja do innych formatów, interfejsy
programistyczne



Wszelkie formaty tekstowe z poziomu SQL
Do formatów binarnych przez interfejsy
programistyczne, np. JDBC
Szeroka kompatybilność, interfejsy dostarczane
przez producentów bazy i platform
programistycznych
Ograniczenia systemów RDB



Ładowanie danych
Centralizacja modelu: bezpieczeństwo danych, ograniczenia
liczby jednoczesnych użytkowników (ale: możliwości
automatycznego replikowania bazy)
Ograniczenia implementacji języka SQL. Np. wbudowane
funkcje wyrażeń regularnych zwracają jedynie wartości
prawda/fałsz, a nie na przykład indeksy pasującego
podłańcucha. Ewolucja MySQL:



4.0 sub-selects
4.1 group_concat()
5.0 własne (choć ograniczone) funkcje definiowane z
poziomu SQL, formalnie definiowane klucze obce, tabele
dynamiczne (tzw. widoki), wyzwalacze, definiowanie funkcji,
procedury składowane, np.:
CREATE PROCEDURE `get_st_tt_ratio`() # Możliwe argumenty
BEGIN
BEGIN
DECLARE v INT;
DECLARE lim INT;
DECLARE s_tt_r DOUBLE;
SET v = 0;
SET s_tt_r = 0;
select 0 into @last_min;
select count(*)/1000 from pnc_word_token into lim;
WHILE v < lim DO
select count(distinct(word))/1000 into @curr_s_tt_rr from (select word_num, word from
pnc_word_token where word_num > @last_min limit 1000) mee;
select max(word_num) into @last_min from (select * from pnc_word_token where
word_num > @last_min limit 1000) sss;
SET v = v + 1;
SET s_tt_r = s_tt_r + @curr_s_tt_rr;
END WHILE;
SET s_tt_r = (s_tt_r/lim);
select s_tt_r;
END;
END;
Wnioski końcowe

Bazy RDB wydają się szczególnie interesującym rozwiązaniem w
sytuacji, gdy zachodzi potrzeba składowania i zarządzania dużą
ilością wysoko przetworzonych danych językowych. Oferują one
bardzo wysoką przejrzystość struktur danych i relacji między nimi, a
także kompatybilność z każdą liczącą się platformą programowania
aplikacji WWW oraz aplikacji typu Desktop. Na uwagę zasługuje
również ich skalowalność, szczególnie w architekturze rozproszonej.

Nieco gorzej systemy RDB wypadają w projektach o charakterze
mocno eksperymentalnym, w których struktura modelu podlega
wielokrotnym modyfikacjom i w których zachodzi potrzeba analizy
niskoprzetworzonych danych.
Download