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

Podobne dokumenty