Laboratorium Komputerowych Systemów Rozpoznawania Projekt 2. Lingwistyczne podsumowania baz danych



Podobne dokumenty
Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

Programowanie obiektowe

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Programowanie MorphX Ax

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Zaliczenie przedmiotu:

Język Java część 2 (przykładowa aplikacja)

Programowanie obiektowe

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Język Java część 2 (przykładowa aplikacja)

Programowanie obiektowe - 1.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Wprowadzenie do programowania

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Diagramy związków encji. Laboratorium. Akademia Morska w Gdyni

PROGRAMOWALNE STEROWNIKI LOGICZNE

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

System magazynowy małego sklepu.

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Bazy danych 2. Wykład 1

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

METODY REPREZENTACJI INFORMACJI

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Zapisywanie algorytmów w języku programowania

Wprowadzenie do projektu QualitySpy

16) Wprowadzenie do raportowania Rave

Klasy abstrakcyjne i interfejsy

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Szczegółowy opis zamówienia:

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/2017

Tworzenie i obsługa wirtualnego laboratorium komputerowego

TEMAT : KLASY DZIEDZICZENIE

Analiza i projekt systemu pracy grupowej z zastosowaniem metodyki SCRUM w technologii SharePoint Karolina Konstantynowicz

Podstawy programowania. Wprowadzenie

Webowy generator wykresów wykorzystujący program gnuplot

Studia podyplomowe. Programowanie na platformie Microsoft Visual Studio.NET

Symulacja samochodu z kamerą stereowizyjną. Krzysztof Sykuła 15 czerwca 2007

Oferta szkoleniowa Yosi.pl 2012/2013

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503)

Praca w środowisku Visual Studio 2008, Visual C

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Język programowania PASCAL

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

KOMPLEKSOWA OFERTA SZKOLEŃ MS EXCEL W FINANSACH. z konsultacjami

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Kurs Podstawowy S7. Spis treści. Dzień 1

Tom 6 Opis oprogramowania

Praktyczny Excel. Wykresy i grafika. w Excelu krok po kroku

Programowanie komputerowe. Geodezja i Kartografia I stopień (I stopień / II stopień) akademicki (ogólno akademicki / praktyczny)

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Program V-SIM tworzenie plików video z przebiegu symulacji

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

OPROGRAMOWANIE WSPOMAGAJĄCE ZARZĄDZANIE PROJEKTAMI. PLANOWANIE ZADAŃ I HARMONOGRAMÓW. WYKRESY GANTTA

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Wizualizacja pogody dla windsurferów

2.2 Opis części programowej

Programowanie aplikacji biznesowych

Programowanie obiektowe

Historia modeli programowania

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Sposób tworzenia tabeli przestawnej pokażę na przykładzie listy krajów z podstawowymi informacjami o nich.

WYMAGANIA EDUKACYJNE

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Cel projektu: Wymogi dotyczące sprawozdania:

Układy VLSI Bramki 1.0

Algorytm. Algorytmy Marek Pudełko

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Programowanie i techniki algorytmiczne

PRZEWODNIK PO PRZEDMIOCIE

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Instrukcja laboratoryjna cz.3

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU. studia pierwszego stopnia

Informatyka, I stopień. Programowanie (PRO300.2)

Spis treści. Dzień 1. I Konfiguracja sterownika (wersja 1410) II Edycja programu (wersja 1406) III Środowisko TIA Portal (wersja 1410)

PODSTAWOWE ANALIZY I WIZUALIZACJA Z WYKORZYSTANIEM MAP W STATISTICA

Transkrypt:

Laboratorium Komputerowych Systemów Rozpoznawania Projekt 2. Lingwistyczne podsumowania baz danych Robert Nowotniak, 120308 Michał Wysokiński, 120404 Data oddania projektu: 10 grudnia 2007 Spis treści 1 Opis projektu 3 2 Możliwości programu 3 3 Symboliczna reprezentacja postaci funkcji przynależności 5 4 Kluczowe diagramy klas 7 5 Interfejs użytkownika (moduł podstawowy) 10 6 Okno konfiguracji generatora podsumowań 13 7 Wizualizacja funkcji przynależności 17 8 Interfejs konfiguratora 19 9 Wynik testowania stworzonej biblioteki w NUnit 24 10 Przykłady wygenerowanych podsumowań 25 1

Spis rysunków 1 Diagram klas funkcji przynależności (MembershipFunction). 6 2 Diagram klas generatora podsumowań............. 8 3 Diagram klas przestrzeni rozważań............... 8 4 Diagram klas funkcji przynależności (MembershipFunction). 9 5 Główne okno generatora (moduł podstawowy)......... 10 6 Główne okno generatora II (moduł podstawowy)....... 11 7 Okno połączenia z bazą, która będzie analizowana...... 12 8 Parametry połączenia dla analizowanej bazy PostgreSQL.. 12 9 Panel konfiguracji podmiotów podsumowań.......... 13 10 Panel konfiguracji kwantyfikatorów............... 14 11 Okno konfiguracji cech II.................... 15 12 Okno konfiguracji cech...................... 16 13 Funkcja przynależności trapezoid + gauss........... 17 14 Funkcja przynależności dilation(trapezoid + gauss)...... 17 15 Funkcja przynależności trapezoid * gauss........... 18 16 Funkcja przynależności complement(gauss).......... 18 17 Funkcja przynależności kwantyfikatora absolutnego...... 19 18 Funkcja przynależności kwantyfikatora większość...... 20 19 Funkcja przynależności wartości lingwistycznej stary człowiek 21 20 Okno dialogowe tworzenia nowego podmiotu.......... 21 21 Wartość cechy w przestrzeni dyskretnej (sektory i trybuny). 22 22 Dyskretna funkcja przynależności (trybuny stadionu)..... 23 23 Wynik uruchomienia testów jednostkowych (NUnit)..... 24 24 Okno dialogowe wygenerowanych podsumowań i miar.... 26 25 Zapis wybranych podsumowań................. 27 26 Okno dialogowe wygenerowanych podsumowań i miar.... 27 2

1 Opis projektu Celem projektu było napisanie narzędzia służącego do tworzenia lingwistycznych podsumowań baz danych. Program został napisany z zamysłem, by był on sterowany danymi (ang. data-driven) dostosowanie do konkretnej bazy danych, do konkretnej dziedziny problemu odbywa się całkowicie za pomocą struktur danych, a nie jest osadzone w kodzie programu. Dzięki temu program pozwala na analizowanie dowolnych baz danych. Program umożliwia generowanie podsumowań lingwistycznych w I i II formie kanonicznej. Przy projektowaniu pakietu do obliczeń rozmytych możliwe były dwa podejścia... reprezentacja ciągłych przestrzeni rozważań za pomocą jej dyskretnych podziałów (z pewnych niewielkim krokiem) oraz reprezentacja funkcji przynależności w postaci analitycznej. Do zastosowań niniejszego zadania podjęliśmy decyzję o wyborze drugiej z tych metod. Program został napisany w języku C# i środowisku Visual Studio 2005. Komunikacja z bazą danych odbywa się za pomocą sterownika ODBC w ten sposób zostało uzyskane uniezależnienie projektu od konkretnego silnika RDBMS. Testową analizowaną bazą była baza na PostgreSQL, będąca pełną bazą danych Klubu Sportowego. Testowanie stworzonej biblioteki obliczeń rozmytych przeprowadzone zostało za pomocą narzędzia NUnit oraz napisanego zestawu testów jednostkowych do sprawdzania poprawności działania biblioteki. Przedstawia to rysunek 23. 2 Możliwości programu Program umożliwia użytkownikowi: 1. Generowanie podsumowań typu I 2. Generowanie podsumowań typu I dla koniunkcji wielu sumaryzatorów 3. Generowanie podsumowań typu II (kwalifikacja) 4. Generowanie podsumowań typu II (kwalifikacja) dla wielu sumaryzatorów 5. Analizowanie dowolnej bazy danych (via ODBC) rys. 7 6. Tworzenie nowych podmiotów, kwantyfikatorów, cech, wartości, funkcji przynależności 7. Zapis i odczyt całej konfiguracji 3

Program umożliwia zapis do pliku całego drzewa obiektów generatora czyli całej hierarchii podmiotów, kwantyfikatorów, własności obiektów oraz ich zbiorów rozmytych opisujących ich cechy. Zapis wykonywany jest serializatora binarnego (BinaryFormatter. Bardziej odpowiadającym nam formatem serializacji byłby format pliku XML jednak podstawowe mechanizmy serializacji środowiska.net 2.0 okazały się niewystarczające, by tego serializację tego typu dla złożonego drzewa obiektów zrealizować w prosty sposób. Jeśli użytkownik wybierze jakiekolwiek kwalifikatory, to samoczynnie oznacza to że generowane będą podsumowania w II formie. Wybór wielu sumaryzatorów oznacza żądanie generowania podsumowań z ich koniunkcjami. Ponieważ program pozwala na połączenie się z dowolną bazą danych w celu jej analizy, wpływa to w pewnym stopniu na szybkość jego działania. Ponieważ nie jest on uzależniony od konkretnej budowy tabel, musi w dynamiczny sposób rozpoznawać typy tabel. Zauważyliśmy, że w szczególności dla języka polskiego! stosowanie modyfikatorów (ang. hedges) nie daje zbyt dobrego rezultatu. Dodawanie modyfikatorów zwiększa, proporcjonalnie, liczbę generowanych podsumowań, spośród których zdecydowana większość jest bardzo niepoprawka gramatycznie. Zamiast tego, naszym zdaniem, lepiej jest po prostu dodawać nowe kwantyfikatory. Użytkownik, który za pomocą stworzonego programu chce dokonać analizy dla nowej bazy danych, musi postęować wg następującej procedury. 1. Ustawienie parametrów połączenia z bazą za pomocą konfiguratora 2. Utworzenie zbioru podmiotów podsumowań, na podstawie tabel, istniejących w bazie Przypisanie podmiotom tabel, do których się odnoszą. 3. Zdefiniowanie kwantyfikatorów lingwistycznych wraz ze zdefiniowaniem ich funkcji przynależności. 4. Przypisanie kwantyfikatorów do podmiotów. Kwantyfikatory oznaczone jako globalne odnoszą się do wszystkich podmiotów 5. Utworzenie cech, które opisują utworzone przez użytkownika podmioty podsumowań. Przypisanie cechom kolumn, należących do tabel poszczególnych podmiotów oraz zdefiniowanie wartości zmiennych lingwistycznych opisujących cechy obiektów. 6. Zapisanie całej powyższej konfiguracji do pliku Po powyższej konfiguracji generatora podsumowań, przykładowy przebieg generowania podsumowań lingwistycznych bazy może przebiegać wg następującego scenariusza: 4

1. Użytkownik wybiera analizowany podzbiór obiektów danego podmiotu, za pomocą kwalifikatorów. 2. Użytkownik wybiera zbiór wartości cech, które podlegać będą analizie Do celów niniejszego projektu stworzyliśmy dwie dodatkowe kontrolki Windows Forms: FeaturesSelectionPanel oraz FunctionPlot. Pierwsza z nich pozwala na reprezentację oraz wybór cech i ich wartości dla przypisanego jej podmiotu. Druga z kontrolek (FunctionPlot) służy do rysowania wykresu dowolnych funkcji przynależności (MembershipFunction). 3 Symboliczna reprezentacja postaci funkcji przynależności W stworzonej biblioteki obliczeń rozmytych użyliśmy symbolicznej reprezentacji funkcji przynależności. Moduł został stworzony w paradygmacie programowania obiektowego, podstawową klasą pakietu jest klasa abstrakcyjna MembershipFunction. Obiekt tej klasy stanowi korzeń abstrakcyjnego drzewa składniowego funkcji przynależności. Podstawowe postaci funkcji przynależności (trapezoidalna, gussowska, singletonowa) należy tu traktować jako wyrażenia terminalne. Natomiast funkcje Complement-, Union- i IntersectionMembershipFunction jako obiektyfunktory, które jednocześnie egzemplifikują abstrakcyjny typ bazowy MembershipFunction, realizując jego interfejs, oraz posiadają odpowiednią liczbę dowolnych funkcji przynależności, będących ich argumentami 1. Podstawowe funkcje przynależności (wyrażenia terminalne) zdefiniowane w programie to: 1. Trapezoidalna (określana za pomocą czterech parametrów a, b, c, d). Zauważmy, że funkcja trapezoidalna jednocześnie realizuje od razu funkcje: singletonową, Trójkątną i prostokątna 2. Gaussowska o parametrach: c oraz σ. Dla przykładu, klasa fuzzy.membershipfunctions.complement (dziedzicząca z klasy abstrakcyjnej MembershipFunction) nadpisuje wirtualną metodę compute, wykorzystując w elegancki sposób argument funkcji Complement. Definicja nadpisanej metody wirtualnej: 1 Ciekawym dodatkowym rozszerzeniem, które można byłoby zaimplementować, byłoby napisanie parsera który budowałby drzewo składniowe dla funkcji przynależności podawanych przez użytkownika w postaci łańcucha tekstowego np. gauss(0.5,1)+dilation(trapezoid(0.1,0.3,0.9)) 5

Rysunek 1: Diagram klas funkcji przynależności (MembershipFunction) public override float compute(object o) { return 1 - argument.compute(0); } Podobnie zaimplementowana jest metoda wirtualna w klasie Union, gdzie liczona jest suma funkcji przynależności. public override float compute(object o) { return Math.Max(argument1.compute(o), argument2.compute(o)); } Abstrakcyjna klasa MembershipFunction zawiera ogólne implementacje operacji takich jak: znajdowanie α-przekroju, sprawdzenie wypukłości. Klasy konkretne, dziedziczące z MembershipFunction mogą nadpisywać jej metody wirtualne (np. isconvex()), dostarczając lepsze implementacje, opierając się na własnościach danej funkcji przynależności. Przykładowo, implementacja funkcji obliczającej wysokość w MembershipFunction wykorzystuje iteracyjne przechodzenie przez cały zakres dzie- 6

dziny z pewnym małym krokiem w celu znalezienia wartości maksymalnej. Jednak np. implementacja tej metody w klasie dziedziczącej Union, czyli funkcja będąca sumą funkcji przynależności wykorzystuje własność, że wysokość sumy jest sumą (s-normą) wysokości jej argumentów. Podstawową klasą biblioteki obliczeń rozmytych jest klasa FuzzySet, posiadająca obiekt realizujący interfejs MembershipFunction. Klasa FuzzySet dostarcza następujące wygodne konstruktory (wystarczające do podstawowych zastosowań zbiorów): Utworzenie zbioru rozmytego w gęstej przestrzeni, o singletonowej funkcji przynależności i wartości 1 tylko dla argumentu x: FuzzySet(float x) Jak wyżej, ale z funkcją trapezoidalną: FuzzySet(float a, b, c, d) Zbiór rozmyty w dziedzinie dyskretnej, z funkcją przyjmującą wartość x tylko dla argumentu o etykiecie label: FuzzySet(string label, float x) 4 Kluczowe diagramy klas Diagramy kluczowych klas projektu przedstawiają rysunki 3, 4 i 2. Klasy z pakietu LinguisticSummary.lingsumm odpowiedzialne za tworzenie podsumowań przedstawione są na rysunku 2. Zamieszczone diagramy zostały znacznie uproszczone, w celu zachowania ich przejrzystości. Przestrzeń rozważań (obiekt posiadany m.in. przez zmienne lingwistycznej LinguisticVariable) reprezentowana jest przez klasę abstrakcyjną Space, którą rozszerzają klasy konkretne Discrete- i DenseSpace. Klasy z pakietu LinguisticSummary.fuzzy.MembershipFunction przedstawia diagram 4 jest to diagram klas, które służą do budowy abstrakcyjnego drzewa składniowego. 7

Rysunek 2: Diagram klas generatora podsumowań Rysunek 3: Diagram klas przestrzeni rozważań 8

Rysunek 4: Diagram klas funkcji przynależności (MembershipFunction) 9

5 Interfejs użytkownika (moduł podstawowy) Główne okno programu ma bardzo prostą budowę (w odróżnieniu od okna konfiguracyjnego). Lista rozwijana pozwala na wybór podmiotu, dla którego będzie generowane podsumowanie. Rysunek 5: Główne okno generatora (moduł podstawowy) Dwa obszary w centralnej części okna służą odpowiednio do wyboru kwalifikatorów i cech dla których będą generowane podsumowania. 10

Rysunek 6: Główne okno generatora II (moduł podstawowy) 11

Rysunek 7: Okno połączenia z bazą, która będzie analizowana Rysunek 8: Parametry połączenia dla analizowanej bazy PostgreSQL 12

6 Okno konfiguracji generatora podsumowań Okno konfiguracji generatora składa się z trzech zakładek: ustawienia podmiotów, kwantyfikatorów oraz cech. Przedstawia to rysunek 9. Rysunek 9: Panel konfiguracji podmiotów podsumowań Rysunki 11 i 12 przedstawiają panel konfiguracji cech podmiotów. 13

Rysunek 10: Panel konfiguracji kwantyfikatorów 14

Rysunek 11: Okno konfiguracji cech II 15

Rysunek 12: Okno konfiguracji cech 16

7 Wizualizacja funkcji przynależności Poniżej przedstawione są wyglądy stworzonej kontrolki FunctionPlot, która rysuje wykres funkcji przynależności dla dowolnej funkcji reprezentowanej przez abstrakcyjne drzewo składniowe. Rysunek 13: Funkcja przynależności trapezoid + gauss Rysunek 14: Funkcja przynależności dilation(trapezoid + gauss) 17

Rysunek 15: Funkcja przynależności trapezoid * gauss Rysunek 16: Funkcja przynależności complement(gauss) 18

8 Interfejs konfiguratora Rysunek 17: Funkcja przynależności kwantyfikatora absolutnego 19

Rysunek 18: Funkcja przynależności kwantyfikatora większość 20

Rysunek 19: Funkcja przynależności wartości lingwistycznej stary człowiek Rysunek 20: Okno dialogowe tworzenia nowego podmiotu 21

Rysunek 21: Wartość cechy w przestrzeni dyskretnej (sektory i trybuny) 22

Rysunek 22: Dyskretna funkcja przynależności (trybuny stadionu) 23

9 Wynik testowania stworzonej biblioteki w NUnit Dla stworzonych pakietów LinguisticSummary.fuzzy i LinguisticSummary.fuzzy.MembershipFunctions napisaliśmy zestawy testów jednostkowych, do testowania poprawności działania tych pakietów. Wynik uruchomienia tych testów w NUNit przedstawia rysunek 23. Rysunek 23: Wynik uruchomienia testów jednostkowych (NUnit) 24

10 Przykłady wygenerowanych podsumowań Przykładowa konfiguracja generatora (utworzona całkowicie za pomocą okna konfiguracyjnego) zawiera trzy podmioty: kibice, bilety, zakupy oraz transakcje. Przykładowe podsumowania wygenerowane dla podmiotu kibice: Mało kibiców, jest chuliganem [0,889] Żaden z kibiców, jest chuliganem [0,095] Większość kibiców, jest chuliganem [0,103] Prawie każdy kibiców, jest chuliganem [0,116] Około połowy kibiców, jest chuliganem [0,110] Około 3000 kibiców, jest chuliganem [0,101] Prawie żaden kibiców, jest chuliganem [0,893] Ponad połowa kibiców, jest chuliganem [0,074] Dużo kibiców, jest chuliganem [0,090] Około 1000 kibiców, jest chuliganem [0,111] Podsumowania wygenerowane dla podmiotu transakcje: Ponad połowa transakcji Internetowych, które miała wysoką cenę, odbiór osobisty [0,886] Mało transakcji Internetowych, które odbiór osobisty, miała cenę około 100 zł [0,741] Ponad połowa transakcji Internetowych, które przesyłka pocztą, miała wysoką cenę [0,880] Dużo transakcji Internetowych, które przesyłka pocztą, miała wysoką cenę [0,593] Większość transakcji Internetowych, które miała wysoką cenę, odbiór osobisty [0,699] Podsumowania wygenerowane dla podmiotu bilety: Żaden biletów, które na sektor rodzinny, jest karnetem [0,928] Mało biletów, które na sektor rodzinny, jest karnetem [0,922] Podsumowania wygenerowane dla podmiotu zakupy: Prawie żaden z zakupów, które dokonał niepełnoletni, dokonał chuligan [0,946] 25

Mało z zakupów, które dokonał niepełnoletni, dokonał chuligan [0,942] Mało z zakupów, które dokonał młody człowiek, jest karnetem [0,458] Dodatkowo można byłoby wprowadzić moduł, który przetwarzałby za pomocą np. wyrażeń regularnych (regexp) wyprodukowane podsumowania, poprawiając je gramatycznie, usuwając powtórzenia itp. Okna dialogowe z rezultatami wygenerowanych podsumowań dla powyższych konfiguracji przedstawiają rysunki??-26. Rysunek 24: Okno dialogowe wygenerowanych podsumowań i miar 26

Rysunek 25: Zapis wybranych podsumowań Rysunek 26: Okno dialogowe wygenerowanych podsumowań i miar 27