ODWZOROWANIE ZAPYTAŃ W JĘZYKU NATURALNYM W JĘZYK
Transkrypt
ODWZOROWANIE ZAPYTAŃ W JĘZYKU NATURALNYM W JĘZYK
XI International PhD Workshop OWD 2009, 17–20 October 2009 ODWZOROWANIE ZAPYTAŃ W JĘZYKU NATURALNYM W JĘZYK ZAPYTAŃ DO BAZ DANYCH The Representation Of Queries In The Natural Language The Inquiries In The Language Of Databases Jan Jagielski, Piotr Wnęk, Uniwersytet Zielonogórski, Instytut Metrologii Elektrycznej Abstract Streszczenie This paper describes relational databases, which today are basis of evolution all of the informatics systems. Relational database models have replaced inefficient historical model (hierarchical and network). With the evolution of data storage technology, the language queries to database also evolve. The Structured Query Language simplified and revolutionized the way to extract knowledge from databases. The disadvantage of SQL is fact that it requires a very precise search terms to clarify the data in database. In this queries language cannot be defined query containing linguistic determination like “about” or other types of queries of any degree of precision. The solution of this problem had to be a fuzzy databases, but they are no adopted. Proposes other solutions based on modifications of database query language, for example, proposed in item [2] fSQL which is an implementation issues related to the imprecise queries. The autor notes, that the further development of database systems is moving towards creating a database systems which will allow the implementation of the query given in natural language where degree of precision is not predetermined. Briefly discussed the problem of transformation the natural language queries into the language understood by the machine. The article presents the issues related to systems conversationalists (Fig. 2) commonly known as chat bots. These systems are able to learn and successfully used on websites as an advisory systems. The author tries to present a concept of system, which can perform queries to the database system in natural language. Figure 3 shows the system diagram based on the issues described in the article. The entire system is based on knowledge related to systems of conversationalists, and is an extension of such a system for a new module structure in natural language queries. Artykuł stanowi omówienie relacyjnych baz danych. W ramach artykułu zamieszczono informacje o sposobach ekstrakcji danych z baz danych. Opisano takŜe pokrótce rozwój języków zapytań do baz danych, gdzie języki te początkowo mogły realizować zapytania mogące wydobywać dane po ściśle sprecyzowanych warunkach. Wraz z rozwojem technologii wymagane stały się systemy bazodanowe, mogące odpowiadać na pytania o róŜnym stopniu precyzji. Autor wskazuje, iŜ dalszy rozwój technologii bazodanowych będzie podąŜał w kierunku systemów mogących realizować zapytania w języku naturalnym. Przedstawia problemy jakie się z tym wiąŜą, a takŜe przedstawia koncepcję systemu, który moŜe być podstawą do badań nad zagadnieniem realizacji zapytań do baz danych tworzonych w języku naturalnym. 1. Wstęp Przechowywanie duŜych ilości danych wymaga ich katalogowania i sortowania w taki sposób, aby dostęp do nich był łatwy i wydajny. Przechowywaniem danych zajmują się systemy baz danych. Natomiast wydobywanie wiedzy z tych systemów odbywa się za pomocą specjalistycznego języka zapytań. 2. Relacyjne bazy danych Model relacyjny moŜna traktować jako zbiór tabel, w których zawarte są informacje o obiektach i związkach między nimi oraz jako zbiór zaleŜności semantycznych[1]. Na opis obiektu składają się wiersze zawierające wartości odpowiednich, wybranych w procesie projektowania, atrybutów. Dla kaŜdej kolumny określona jest dziedzina czyli zbiór wartości jakie w tej kolumnie mogą się pojawić. Tabela jest traktowana jako reprezentacja pewnej relacji matematycznej, czyli pewnego podzbioru iloczynu kartezjańskiego dziedzin. Element takiego 241 Tekst wprowadzony przez uŜytkownika Prezentacja odpowiedzi Analiza języka Generator odpowiedzi System zarządzania dialogiem Zewnętrzne aplikacje oraz jednostki sprzętowe Rys.2. Ogólny schemat systemu konwersacyjnego Fig.2. Diagram of conversational system zbioru nazywamy krotką. Kolumny i wiersze tabeli odpowiadają atrybutom i krotkom relacji[1]. 2.1 Ekstrakcja wiedzy z baz danych Systemy baz danych operują pojęciem języka zapytań bazy danych. Najczęściej stosowanym obecnie językiem tego typu jest język SQL, który ma konstrukcję zbliŜoną do języka naturalnego. Jest niezaleŜny od bazy danych i umoŜliwia realizację operacji określanych synonimem CRUD (ang. Create, Update, Delete)[1]. Uniwersalność języka powoduje, iŜ moŜe być on wykorzystywany w dowolnych systemach baz danych. Z załoŜenia języki zapytań do baz danych pozwalają wyszukiwać informacje w bazie danych po ściśle określonych warunkach. System bazy danych realizując zapytanie, ma za zadanie przedstawić dane z bazy w sposób zrozumiały dla człowieka. Pomimo, iŜ języki baz danych takie jak SQL są zbliŜone do języka naturalnego, to dla osób nie zaznajomionych z tematem konstrukcja zapytań w tym języku nastręcza sporych trudności. Typowe języki zapytań do baz danych są w stanie realizować zapytania typu znajdź pracownika zarabiającego 2000 złotych natomiast nie potrafią realizować zapytań postaci znajdź pracowników zarabiających około 2000 złotych. Zapytanie zawierające w swojej konstrukcji warunek niepewności np. około 2000 nazywamy zapytaniem nieprecyzyjnym[2]. W praktyce kaŜde zapytanie zawierające jawnie uŜyte wyraŜenia języka naturalnego zwane terminami lingwistycznymi jak wysoki, gruby, drogi, szybki moŜna zakwalifikować do tego typu zapytań. Terminy lingwistyczne określają[2]: 1. Nieprecyzyjne wartości, np. niskie zarobki. 2. Nieprecyzyjne porównania, np. zarobki znacznie niŜsze niŜ 2000 złotych. 3. Niestandardowe sposoby agregacji stopni spełnienia cząstkowych warunków zapytania. W przypadku zapytań nieprecyzyjnych problemem jest ich realizacja w klasycznych relacyjnych bazach danych[3]. W celu rozwiązania tego problemu i umoŜliwienia realizacji zapytań zawierających w sobie pewien stopień niepewności buduje się systemy rozmytych baz danych, których konstrukcja bazuje na teorii zbiorów rozmytych i teorii moŜliwości jako podejściu do reprezentacji danych rozmytych. Pomimo istnienia działających rozwiązań rozmytych baz danych masowa migracja na te systemy nie następuje. Aby jednak udoskonalić działające i uŜywane szeroko modele klasyczne baz danych, tworzy się modyfikacje języka SQL, które taką funkcjonalność będą w stanie zapewnić. W pozycji [2] oraz [3] autor przedstawił modyfikację języka SQL o nazwie SQLf (ang. Fuzzy SQL), który jest w stanie realizować złoŜone zapytania do baz danych o charakterze rozmytym zawierające typowe terminy lingwistyczne jak około, poniŜej lub powyŜej. Twórcom języka SQLf zaleŜało, aby dwa równowaŜne zapytania klasyczne, po wprowadzeniu do nich elementów rozmytych nadal dawały identyczne wyniki[2]. 2.2 Problem zapytań w języku naturalnym Dalszy rozwój baz danych pociąga za sobą ewolucję języków zapytań do baz danych. W pozycji [2] opisano język SQLf, który w załoŜeniach ma rozwiązywać problem nieprecyzyjnych zapytań do baz danych. Kolejnym krokiem rozwoju w tej sferze będzie zapewne ewolucja w kierunku zapytań do baz danych realizowanych za pomocą języka naturalnego, uŜywanego przez ludzi na co dzień. Pozwoli to na realizację systemów bazodanowych, obsługiwanych bezpośrednio przez człowieka nie znającego zagadnień technicznych. Człowiek będzie mógł prowadzić bezpośrednią rozmowę z systemem komputerowym i uzyskiwać od niego poŜądane dane z bazy danych. Zanim jednak do tego dojdzie naleŜy pokonać szereg przeszkód związanych z rozumieniem przez maszyny, jakimi są komputery, języka naturalnego jakim operuje człowiek[5]. Aby tego dokonać naleŜy zbudować modele otaczającego nas świata, które będą zrozumiałe dla komputerów. Te natomiast, aby mogły sprawnie działać muszą dysponować algorytmami opisującymi sposób rozumienia tychŜe modeli. Aktualnie systemy bazodanowe, aby móc odpowiedzieć na pytanie pokaŜ pracowników zarabiających 2000 złotych muszą otrzymać zapytanie w postaci zgodnej z językiem zapytań do baz danych np. SQL (Rys. 1). 242 Rys.1. Zapytanie SQL do bazy danych Fig.1. Sample SQL query to database Zapytanie takie jest transformowane na język zrozumiały dla komputera i ten, jeŜeli jest w stanie, zwraca wynik na ekran w postaci zrozumiałej dla uŜytkownika. Język SQL jest sformalizowany i ustandaryzowany. Nie ma tu moŜliwości zbudowania zapytania w innej formie, niŜ według ustalonych z góry reguł. Nie moŜna zapytania z rysunku 1 zbudować w inny sposób, poniewaŜ system bazy danych wykryje niepoprawność zapytania i go nie zrealizuje albo zwróci niepoprawne wyniki. Język naturalny nie jest tak sformalizowany i ustandaryzowany. Istnieją reguły określające konstrukcję zdania i sposób posługiwania się językiem, ale nie wymagają one od człowieka tak duŜej precyzji i konkretyzowania zapytań jak język zapytań do baz danych. Aby móc zbudować SZBD1 potrafiący realizować zapytania do baz danych w języku naturalnym naleŜałoby wcześniej zbudować model opisujący relacje pomiędzy językiem naturalnym a językiem SQL i bazą danych. Model ten powinien opisywać w jaki sposób wypowiedzi realizowane w języku naturalnym powinny być konwertowane na równowaŜny język zapytań do baz danych. 3. Systemy konwersacyjne Systemy konwersacyjne są próbą odwzorowania ludzkiego rozmówcy w maszynie[5]. Systemy te potrafią komunikować się z człowiekiem w języku naturalnym odpowiadać na złoŜone pytania. A przy tym posiadają mechanizmy uczące, które pozwalają im pozyskiwać informacje od swojego rozmówcy na podstawie prowadzonej rozmowy i wykorzystywać ją w późniejszych konwersacjach[4]. Najbardziej zaawansowane technicznie systemy konwersacyjne są w stanie rozumieć ludzką mowę artykułowaną i prowadzić głosową konwersację. W zaleŜności od uŜytych technik generowania odpowiedzi na pytania zadawane przez uŜytkownika ich trafność wynosi od 15% do 95% poprawnych wniosków. Systemy konwersacyjne dysponują modelami zachowań ludzkich oraz bazą wiedzy[4]. Dzięki modelom zachowań systemy konwersacyjne potrafią się denerwować czy nawet obrazić co powoduje, Ŝe są one bardziej ludzkie. Natomiast posiadana baza wiedzy pozwala systemom odpowiadać na zadawane pytania i prowadzić rozmowę z uŜytkownikiem na wybrany temat. Baza wiedzy jest uzupełniania w trakcie prowadzonej rozmowy o nowe informacje w ten sposób bot się uczy. Systemy tego typu są z powodzeniem wykorzystywane na stronach 1 SZBD[1] – System Zarządzania Bazą Danych, nazywany teŜ serwerem bazy danych. internetowych jako systemy doradcze lub systemy rozrywkowe[4]. Na rysunku 2 przedstawiono schemat typowego systemu konwersacyjnego[5]. Tekst wprowadzany przez uŜytkownika jest analizowany pod kątem zawartości i na jej podstawie w systemie zarządzania dialogiem jest generowana odpowiedź. Tekst odpowiedzi jest zwracany na ekran komputera. MoŜe się równieŜ zdarzyć, iŜ uŜytkownik wyda polecenia zarządzania zewnętrzną aplikacją. Wówczas system zarządzania dialogiem wysyła odpowiednie komunikaty do zewnętrznych aplikacji. Komunikaty mogą być przesyłane na przykład za pośrednictwem usług sieciowych (Web Services). 4. Język XML i AIML Wraz z rozwojem technologii WWW w ramach ewolucji języka HTML powstał język XML (ang. Extensible Markup Language). XML moŜe być traktowany jako zbiór reguł słuŜących do definiowania tagów, które dzielą dokument na części. Zdefiniowane elementy pozwalają na zidentyfikowanie poszczególnych fragmentów dokumentu. XML moŜe być równieŜ uŜywany jako metajęzyk do definiowania składni innych hipertekstowych2 języków, które są specyficzne dla róŜnych dziedzin zastosowań. Język AIML (ang. Artificial Intelligence Markup Language) jest pochodną języka XML i podobnie jak on składa się z tagów, które określają fragmenty dokumentu[7]. AIML został zaprojektowany jako język tworzenia bazy wiedzy czat botów. KaŜde zdanie wypowiedziane przez rozmówcę czat bota musi być przewidziane przez projektanta bazy wiedzy, czyli dokumentu AIML. Teoretycznie jest to niemoŜliwe, z tego względu AIML oferuje mechanizm wyraŜeń regularnych, czyli dopasowania wypowiedzi na podstawie określonych wzorców. AIML oferuje równieŜ mechanizmy sprawdzania róŜnego rodzaju warunków między innymi odwołanie się do poprzednich wypowiedzi uŜytkownika i samego programu jakim jest czat bot[10]. Sam język AIML nie stanowi jeszcze systemu konwersacyjnego a jedynie jego bazę wiedzy. Pozycja [10] opisuje jako narzędzie niezbędne interpreter języka AIML czyli narzędzie które pozwala na odczytywanie zawartości bazy wiedzy i odpowiednie nią zarządzanie. Interpreter natomiast stanowi podstawę systemu konwersacyjnego. Sam system konwersacyjny natomiast przetwarza wiedzę z pliku AIML za pośrednictwem interpretera i przedstawia uŜytkownikowi odpowiedzi na zadawane pytania. 2 Hipertekst – organizacja danych w postaci niezaleŜnych węzłów połączonych hiperłączami[8][9]. 243 4. Koncepcja systemu realizującego zapytania w języku naturalnym 4.1 Cel badań Jako cel badań autor przyjął realizację własnej koncepcji systemu realizującego zapytania do baz danych w języku naturalnym. Zakłada się, iŜ jest moŜliwe zbudowanie modelu systemu odwzorowującego zapytania języka naturalnego w język SQL bazującego na obecnej wiedzy i technice. regułami pozwalającymi na odwołania do bazy danych nie musi on rezygnować z posługiwania się naturalnym językiem. JeŜeli na pytanie uŜytkownika nie moŜna uzyskać informacji z bazy danych, rozmowa jest kontynuowana. 4.2 Prototyp Pomysł systemu realizującego zapytania do bazy danych w języku naturalnym został oparty o koncepcję systemu konwersacyjnego przedstawionego w pozycji [4], którego zadaniem jest komunikacja z uŜytkownikiem i realizacja zadań obsługi komputera na podstawie wydawanych przez uŜytkownika poleceń. UŜytkownik Rys.4. Algorytm działania modułu analizy zapytań Fig.4. Algorithm of queries analysis module System translacyjny (czat bot) Baza danych Rys.3. Schemat systemu realizującego zapytania w języku naturalnym Fig.3. Diagram of the system performing queries in natural language Przedstawiony na rysunku 3 ogólny schemat systemu realizującego zapytania do baz danych w języku naturalnym w swojej konstrukcji zawiera system translacyjny, którego podstawowe zadania to rozmowa z uŜytkownikiem w języku naturalnym i udzielanie mu odpowiedzi na zadawane pytania. System potrafi równieŜ konwertować pytania zadawane w języku naturalnym na pytania w języku SQL. Tak przygotowane zapytanie jest wysyłane dalej do systemu bazy danych i tam realizowane. System translacyjny w tym przypadku jest niczym innym, jak udoskonalonym systemem konwersacyjnym. System konwersacyjny został wzbogacony o moduł kontroli zapytań, moduł ten ma za zadanie badać wprowadzane przez uŜytkownika zdania pod kątem moŜliwości uzyskania odpowiedzi na nie z bazy danych. Moduł (algorytm działania przedstawiony na rysunku 4) analizuje czy uŜytkownik wprowadził sentencje zdaniowe, które mogą decydować o potrzebie wyszukiwania informacji w bazie danych np. PokaŜ informacje o… lub Pobierz z bazy danych. Taka metoda analizy zapytań powoduje, Ŝe pomimo, iŜ uŜytkownik jest nadal, tak jak w przypadku języka SQL, związany pewnymi MoŜe się równieŜ zdarzyć, iŜ mimo, Ŝe pytanie zostało wprowadzone i zawiera sentencję, która moŜe sugerować o potrzebie pobrania danych z bazy. To całość zapytania w języku naturalnym nie zawiera wszystkich wymaganych danych. Analizując zapytanie SQL przedstawione na rysunku 1 widać, iŜ zapytanie takie wymaga sprecyzowania z jakiej tabeli naleŜy pobrać informacje oraz która kolumna tej tabeli spełnia warunek wyszukiwania. W języku naturalnym to zapytanie moŜe brzmieć w taki sposób PokaŜ informacje o pracownikach zarabiających 2000 złotych lub teŜ Pobierz dane pracowników zarabiających 2000 złotych. Jak widać w zapytaniach tych nie ma jawnie podanej nazwy tabeli lub kolumny. NaleŜy te dane z tekstu wyekstrahować. Do rozwiązania tego problemu została wykorzystana wyszukiwarka macierzowa[4]. Działa ona na zasadzie analizy poszczególnych słów w otrzymanym zdaniu i na ich podstawie generuje odpowiednie zapytanie SQL. WyŜej przedstawione zapytania w postaci naturalnej będą miały postać w wyszukiwarce taką jak przedstawiona w tabeli 1. Tab. 1 Działanie wyszukiwarki macierzowej Sample Search mat rix Macierzowa baza danych Ty pokaŜ pracownikach zarabiających Ty pobierz pracowników zarabiających Wynikiem przeszukania macierzowej bazy danych na podstawie zapytań naturalnych powinno być zapytanie w języku zapytań do baz danych. Wygenerowane zapytanie SQL, o ile jest poprawne, 244 jest realizowane w bazie danych i na jego podstawie są zwracane oczekiwane wyniki. Jako rdzeń prototypu została wykorzystana oparta o język JAVA aplikacja o otwartym kodzie źródłowym ProgramD[6]. Aplikacja ta jest implementacją tekstowych systemów konwersacyjnych bazujących na języku AIML[7]. Język AIML bazuje na XML dzięki czemu jest elastyczny i moŜna go dowolnie rozszerzać o nowe znaczniki[7]. Został on stworzony jako język słuŜący opisowi bazy wiedzy dla programów, których celem jest prowadzenie rozmowy w języku naturalnym potocznie zwanych czat botami[7]. Język AIML w przypadku autorskiego systemu stanowi równieŜ bazę wiedzy zawierającą zapytania w postaci SQL. To znaczy, Ŝe kaŜde potencjalne zapytanie w języku naturalnym, które moŜe być realizowane jako zapytanie do bazy danych jest transformowane na język SQL za pośrednictwem języka AIML. Zawiera on zestawy pełnych sentencji a takŜe słowa na podstawie, których wyszukiwane są zamienniki języka naturalnego na język SQL. Rys.5. Przykładowy plik AIML dla zapytań SQL Fig.5. Sample AIML for SQL queries Na rysunku 5 przedstawiono przykładowy zapis w języku AIML. Realizuje on zapytanie postaci PokaŜ (pracownicy) z (tabelPraconikow) gdzie (zarobki=2000). Elementy zapytania zapisane w nawiasach są zmienne, moŜna w tym miejscu wpisać dowolne dane, dla których ma nastąpić realizacja zapytania. Przedstawiony przykład jest najprostszą notacją pozwalającą na realizację zapytania w języku naturalnym do bazy danych. Aby moŜna było realizować bardziej złoŜone zapytania do bazy danych naleŜało rozszerzyć moŜliwości języka AIML. Dodatkowe funkcje interpretera w aplikacji ProgramD przejmuje na siebie moduł kontroli zapytań i to on odpowiada za moŜliwości transformacji bardziej złoŜonych zapytań w języku naturalnym na język SQL. 4.3 Podsumowanie Zaprezentowany przez autora prototyp systemu realizującego zapytania do baz danych w języku naturalnym powinien być traktowany jako teoretyczne wprowadzenie w temat zapytań w języku naturalnym i moŜe być poddany dalszym rozwaŜaniom. Problemem przy budowie tego typu systemów jest rozumienie języka naturalnego przez komputery. W przedstawionej koncepcji jako podstawa systemu został wykorzystany język AIML, który w załoŜeniu ma umoŜliwić komputerom rozumienie ludzkiej mowy. Ale inteligencja systemu opartego o ten język jest zaleŜna od umiejętności algorytmicznych twórcy. 5. Zakończenie W artykule przedstawiono podstawowe informacje o systemach bazodanowych i systemach konwersacyjnych. Wykorzystując te informacje zaproponowano koncepcję systemu realizującego zapytania do baz danych w języku naturalnym. Systemy takie mogły by stać się ułatwieniem w codziennej pracy z bazami danych. Zaproponowano system bazujący na systemach konwersacyjnych jako rozwiązanie problemu rozumienia języka naturalnego przez komputery. Czat bot prowadzi dialog z uŜytkownikiem i na podstawie rozmowy stara się zrealizować zapytania do baz danych. Problemem okazuje się być takŜe uŜywanie obecnie wykorzystywanych technologii do realizacji zagadnienia np. język AIML, który w podstawowej funkcjonalności nie pozwala na wprowadzanie złoŜonych tekstów i na ich podstawie realizować zapytania do bazy danych. Przedstawiona koncepcja systemu realizującego zapytania do baz danych w języku naturalnym jest podstawą do prowadzenia dalszych badań nad sztuczną inteligencją oraz zagadnieniami związanymi z rozumieniem mowy potocznej przez komputery. Literatura 1. Andrzej Barczak, Jacek Florek, Tadeusz Sydoruk: Bazy Danych, Wydawnictwo Akademii Podlaskiej, Siedlce 2007 2. Sławomir ZadroŜny: Zapytania nieprecyzyjne i lingwistyczne podsumowania baz danych, Akademicka Oficyna Wydawnicza EXIT, Warszawa 2006 3. Krzysztof Myszkorowski, Sławomir ZadroŜny, Piotr S. Szczepaniak: Klasyczne i rozmyte bazy danych Modele, zapytania i podsumowania, Akademicka Oficyna Wydawnicza EXIT, Warszawa 2008 4. Ehab El-agizy, Moustafa Zamzam: Tworzymy sztuczną inteligencję botów, Software Developer’s Journal 12/2005 5. Łukasz Mazur: Systemy konwersacyjne, Software Developer’s Journal 07/2008 6. Program D, http://aitools.org/Program_D, Sierpień 2009 7. AIML: Artificial Intelligence Markup Language, http://www.alicebot.org/aiml.html, A.L.I.C.E. AI Foundation, Inc., Sierpień 2009 245 8. What is Hypertext, http://www.w3.org/WhatIs.html, Sierpień 2009 9. Hipertekst – Wikipedia, wolna encyclopedia, http://pl.wikipedia.org/wiki/Hipertekst, Sierpień 2009 10. Artificial Intelligence Markup Language (AIML) Version 1.0.1, http://alicebot.org/TR/2005/WDaiml/WD-aiml-1.0.1-008.html, Sierpień 2005 Autorzy: dr. hab. inŜ. Jan Jagielski prof. UZ Uniwersytet Zielonogórski Instytut Metrologii Elektrycznej ul. prof. Z. Szafrana 2 65-516 Zielona Góra tel. 0-683282654 email: [email protected] mgr inŜ. Piotr Wnęk Uniwersytet Zielonogórski Instytut Metrologii Elektrycznej ul. Podgórna 50 65-246 Zielona Góra tel. +48606704041 email: [email protected] 246