Úvod

Znalosti v systému NEST jsou reprezentovány pomocí:

  • atributů a od nich odvozených výroků;
  • pravidel;
  • kontextů;
  • integritních omezení.
O každé z těchto „tříd znalostí“ pojednává jedna následující sekci. Všechny tyto třídy jsou pak uloženy v tzv. bázi znalostí, o jejíž které se můžete dočíst v poslední sekci této podkapitoly.


Atributy a výroky

Atribut je určité tvrzení, se kterým systém dokáže pracovat. Existují čtyři typy atributů:

  • binární;
  • single;
  • multiple;
  • numerické.

Binární atributy jsou základním typem atributů. Je od nich odvozen právě jeden výrok se stejným jménem. Tento výrok, stejně jako atribut, od kterého je odvozen, pak nabývá určité váhy, která reprezentuje jeho „pravdivost“ (je-li váha maximální, výrok jistě platí, je-li váha minimální, výrok jistě neplatí). Váha je reprezentována pomocí intervalu, čímž je umožněno vyjadřovat i částečné znalosti o pravdivosti výroku.

Například pracujeme-li na váhovém rozsahu [-1;1] (pokud nebude řečeno jinak, bude ve všech následujících příkladech používán tento váhový rozsah), následující váhy znamenají toto:

  • [-1;-1] - výrok jistě neplatí (FALSE);
  • [ 1; 1] - výrok jistě platí (TRUE);
  • [-1; 1] - o výroku nevíme nic (UNKNOWN);
  • [ 0; 0] - výrok je irelevantní (IRRELEVANT).

Single atributy jsou atributy, které mohou nabývat právě jedné hodnoty z daného seznamu hodnot. Typickým příkladem může být například „typ účtu“ v bance. Od tohoto atributu je pak odvozeno právě tolik výroků, kolik je možných hodnot, kterých může atribut nabývat (výrok je již stejný, jako u binárního atributu). Pokud je atributu přiřazena nějaká hodnota (s váhou), tuto váho dostane jen příslušný výrok a všem ostatním výrokům je přiřazena váha „FALSE“.

Je-li například zadáno, že uživatel si založil běžný účet s vahou [0,6;0,6], pak všem ostatním typům účtu je přiřazena váha „FALSE“.

Multiple atributy jsou podobné „Single atributům“, jen mohou nabývat libovolného počtu hodnot z daného seznamu. Příkladem může být třeba atribut „světové jazyky, kterými člověk hovoří“. Od tohoto atributu je opět odvozeno tolik výroků, kolik je možných hodnot, které může atribut nabývat. Při přiřazení určitých hodnot atributu se přenese váha na příslušné výroky a hodnotám (resp. výrokům), kterým nebyla přiřazena žádná váha se pak přiřadí předem nastavená váha (UNKNOWN nebo IRRELEVNT).

Numerické atributy jsou atributy, které nabývají číselné hodnoty z předem zadaného rozmezí. Jako příklad lze uvést třeba „velikost platu“. Od tohoto atributu může být odvozeno libovolné množství výroků, přičemž každý výrok má zadanou váhovou funkci, která převede číselnou hodnotu na váhu.

Váhová funkce je zadávána pomocí fuzzy intervalu. Tento interval je určen čtyřmi čísly (fuzzy lower, crisp lower, crisp upper, fuzzy upper). Pokud je číselná hodnota mimo „fuzzy“ hranice, je výsledná váha „FALSE“, pokud je číselná hodnota uvnitř „crisp“ hranic, je výsledná váha „TRUE“. Pokud je číselná hodnota mezi hranicemi „fuzzy“ a „crisp“, je výsledná váha spočítána pomocí lineární funkce (horní i dolní číslo váhového intervalu je stejné). Názorně to ukazuje následující obrázek (fuzzy interval je zde zadán takto: [10, 20, 40, 40]):

Podle postavení lze výroky dělit na dotazy (výrok není v závěru žádného pravidla), mezilehlé výroky (výrok je v závěru i v předpokladu nějakého pravidla) a cíle (výrok není v předpokladu žádného pravidla). Pokud je výrok dotaz, musí být všechny výroky odvozené od stejného atributu také dotazy. Pokud není výrok použit ani v předpokladu ani v závěru pravidla, jedná se o tzv. osamocený výrok, který NEST zcela ignoruje.

Atributy můžeme dle rozsahu dělit na „obecné“a „případové“. Obecné atributy jsou ty atributy, které se vztahují (jak již jejich název napovídá) k prostředí, k věcem, které se mění jen výjimečně a není tedy nutné je zjišťovat pokaždé znovu. Jakmile systém jednou zjistí jejich hodnoty, zapamatuje si je a při dalších konzultacích se již na ně neptá (pokud k tomu není vyzván). Může se jednat například o průměrnou úrokovou míru za poslední rok - takovou proměnnou bude třeba změnit jednou za rok. Případové atributy jsou pak všechny ostatní, tj. ty, na které se systém ptá při každé konzultaci.

Hodnotu určitého atributu může systém získat z různých zdrojů. Standardně se systém snaží získat hodnoty „inferencí“ (odvozováním) pomocí pravidel, jedná-li se o cíle či mezilehlé atributu, nebo dotazem „od uživatele“, jedná-li se o dotaz. Dalším zdrojem může být „soubor“, jehož první řádek se systém pokusí interpretovat jako příslušnou hodnotu. Posledním zdrojem je pak externí funkce, která vytvoří soubor s příslušnou hodnotou, ze kterého je načtena. Tyto zdroje lze nastavit tak, aby v případě neúspěchu jednoho byl použit jiný. Poslední dva uvedené zdroje mohou být použity pouze pro binární a numerické atributy.

Akce je externí program, který je přiřazen určitému výroku. Pokud výrok nabude alespoň takové váhy, která je zadána u akce, je tento externí program spuštěn. Pokud je akce přiřazena atributu, efekt je stejný, jako by akce byla přiřazena každému výroku od daného atributu odvozenému.


Pravidla

Základní podoba pravidel v NESTu má tuto podobu:
kontext: IF předpoklad THEN závěr 1[váha 1],..., závěr n[váha n]

Kontext rozhoduje o tom, zda se dané pravidlo bude aplikovat či nikoliv. Blíže o něm se dozvíte v následující sekci.

Předpoklad pravidla je tvořen disjunkcí libovolného množství „výrazů“, přičemž „výrazem“ může být buď výrok nebo konjunkce výroků. Je-li předpoklad splněn, je závěru pravidla připočítán příslušný příspěvek tohoto pravidla. Aby byl předpoklad splněn, musí jeho celková váha (o jejím vypočítání viz podkapitola „práce s neurčitostí“) přesáhnout „práh platnosti předpokladu“, který se zadává pro logická pravidla, zatímco u kompozicionálních pravidel se rovná 0.

Závěr pravidla je tvořen výrokem a vahou, která slouží pro spočítání váhy výroku v závěru. Pokud má pravidlo více závěrů, výsledný efekt je stejný, jako by bylo vytvořeno více pravidel se stejnými předpoklady a příslušnými závěry.

Každé pravidlo může mít zadanou svou prioritu (číslo z intervalu [0;1]), podle které může být postupováno při výběru pravidel pro aplikaci při odvozování. (O odvozování blíže viz podkapitola „Inferenční mechanismus“.)

Pravidlu může být přiřazena akce stejně jako je tomu u výroku. Tato akce je spuštěna, jakmile je pravidlo „použito“, tj. předpoklad pravidla je splněn a jsou učiněny příslušné závěry.

Pravidla se dělí do třech základních typů:

  • apriori pravidla;
  • logická pravidla;
  • kompozicionální pravidla.

Apriori pravidla jsou taková pravidla, která platí vždy, tj. nemají předpoklad (ani kontext), resp. jako předpoklad je brána hodnota „TRUE“. Takováto pravidla slouží k tomu, potřebujeme-li vyjádřit „obecnou pravdu“.

Logická pravidla jsou pravidla, jejichž závěr nenabývá hodnot z celého intervalu [-1;1] (resp. [-rozsah vah; rozsah vah]), ale nabývá jen „logických hodnot“. Je-li předpoklad splněn (tj. pokud dolní hranice váhového intervalu přesáhne 0) je váha závěru „TRUE“ nebo „FALSE“, pokud předpoklad splněn není, váha závěru je „IRRELEVANT“.

Kompozicionální pravidla pracují na celém intervalu [-1;1] tak, jak je vysvětleno v podkapitole „práce s neurčitostí“.


Kontexty

Kontext rozhoduje o tom, zda se dané pravidlo, kterému je kontext přiřazen, aplikuje či nikoliv. Kontext má u každého pravidla zadaný svůj práh platnosti (pokud není zadaný, převezme se globální práh platnosti kontextů pro celou bázi) a pravidlo je aplikováno, pokud váha kontextu (resp. její horní hranice intervalu) přesáhne tento práh.

Kontext je tvořen, stejně jako předpoklad pravidla, disjunkcí libovolného množství „výrazů“, přičemž výrazem je opět míněn výrok či konjunkce výroků.


Integritní omezení

Integritní omezení mají stejnou podobu jako kompozicionální pravidla. Základní rozdíl je v tom, že integritní omezení se nepodílí na odvozování závěrů, ale je vyhodnocováno samostatně po skončení odvozování. Slouží jen jako kontrola toho, že závěry splňují jakési další požadavky. Pokud je integritní omezení splněno, systém to nedá nijak najevo. Pokud však splněno není, je uživatel upozorněn, že byly porušeny další omezení (a samozřejmě které).


Prvky báze znalostí

Báze znalostí v sobě zahrnuje výše uvedených 5 „tříd znalostí“ (atributy, výroky, pravidla, kontexty, integritní omezení). Dále obsahuje tyto globální vlastnosti:

  • popis báze;
  • jméno experta, od něhož byly získány znalosti obsažené v bázi;
  • jméno znalostního inženýra, který bázi sestavil;
  • datum vytvoření báze;
  • rozsah vah;
  • globální práh platnosti kontextů;
  • globální práh platnosti předpokladů;
  • standardní inferenční mechanismus;
  • standardní implicitní váha výroků;
  • globální priorita.

Báze znalostí je uložena v souboru, jehož syntaxe je založená na jazyku XML.


Základní syntaxe báze

 <base>
  <global>
  ...
  </global>
  <attributes>
  ...
  </attributes>
  <contexts>
  ...
  </contexts>
  <rules>
   <apriori_rules>
   ...
   </apriori_rules>
   <logical_rules>
   ...
   </logical_rules>
   <compositional_rules>
   ...
   </compositional_rules>
  </rules>
  <integrity_constraints>
  ...
  </integrity_constraints>
</base>


Syntaxe globální vlastností

<global>
 <description> string </description> <!-- baze -->
 <expert> string </expert> <!-- jméno experta -->
 <knowledge_engineer> string </knowledge_engineer> <!-- jméno znalostního inženýra -->
 <date> date </date> <!-- datum vytvoření báze -->
 <inference_mechanism>standard | logical | neural | hybrid</inference_mechanism> <!-- inferenční mechanismus -->
 <slope> number </slope> <!-- strmost nelinearity pro neuronový IM -->
 <weight_range> number </weight_range> <!-- rozsah vah -->
 <default_weight>unknown | irrelevant</default_weight><!-- implicitní váha výroků -->
 <global_priority>first | last | minlength | maxlength | type | user</global_priority><!-- globální priorita -->
 <context_global_threshold> number </context_global_threshold> <!-- globální práh platnosti kontextů -->
 <condition_global_threshold> number </condition_global_threshold> <!-- globální práh platnosti předpokladů -->
</global>


Syntaxe atributů

<attribute>
 <id> string </id>
 <name> string </name>
 <type>binary | single | multiple | numeric</type>
 <scope>case | environment</scope> <!-- case - atribut ke konkretnimu pripadu ; environment - atribut prostredi (pri nulovani se nemusi mazat, zatim bych pouzival jen case -->
 <sources>
  <source>
   <source_type>infer | user | external_file | external_function</source_type>
   <source_file> string </source_file>
   <function> string </function>
   <parameters> string </parameters>
  </source>
  ...
 </sources>
 <comment> string </comment>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
   <action_threshold> string </action_threshold>
  </action>
 </actions>

 <propositions><!-- není u binární atributů -->
  <proposition>
   <id> string </id>
   <name> string </name>
   <weight_function><!-- pouze u numerických atributů -->
    <fuzzy_lower_bound> number </fuzzy_lower_bound>
    <crisp_lower_bound> number </crisp_lower_bound>
    <crisp_upper_bound> number </crisp_upper_bound>
    <fuzzy_upper_bound> number </fuzzy_upper_bound>
   </weight_function>
   <comment> string </comment>
   <actions>
    <action>
     <function>string</function>
     <parameters>string</parameters>
     <action_threshold> string </action_threshold>
    </action>
   </actions>
  </proposition>
  ...
 </propositions>
</attribute>


Syntaxe pravidel

Apriori pravidla

<apriori_rule>
 <id> string </id>
 <priority> number </priority>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
  </action>
 </actions>
 <comment> string </comment>
</apriori_rule>

Logické a kompozicionální pravidla

<logical_rule> / <compositional_rule>
 <id> string </id>
 <priority> number </priority>
 <id_context> string </id_context>
 <context_threshold> number </context_threshold>
 <condition_threshold> number </condition_threshold>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
  </action>
 </actions>
 <comment> string </comment>
</logical_rule> / </compositional_rule>


Syntaxe kontextů

<context>
 <id> string </id>
 <comment> string </comment>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
</context>


Syntaxe integritních omezení

<integrity_constraint>
 <id> string </id>
 <name> string </name>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <comment> string </comment>
</integrity_constraint>


Inferenční mechanismus

Inference v systému NEST je kombinací zpětného a přímého řetězení. Na začátku konzultace systém vezme všechny cíle (cílem je buď výrok, který není použit v předpokladu žádného pravidla, nebo výrok, který uživatel označí jako cílový), postupně je označuje jako „aktuální“ a snaží se je vyhodnotit.

„Aktuální“ výrok je nejprve vyhodnocován metodou zpětného odvozování následujícím způsobem:

  • je zkontrolováno, není-li aktuální výrok již vyhodnocen (nachází se ve stavu „final“). Pokud ano, je vyhodnocování ukončeno;
  • následuje zjištění, z jakých zdrojů se má váha výroku zjišťovat. Pokud je zdroj jiný než „inference“, je vyhodnocování přerušeno a je spuštěn příslušný zdroj. Pokud zdroj není uveden, použije se „inference“;
  • jsou zjištěna všechna pravidla, ve kterých je výrok v závěru. Pokud neexistuje žádné takové pravidlo, je vyhodnocování přerušeno a je položen dotaz uživateli (efekt je stejný, jako by byl u výroku zadán zdroj „uživatel“). Jsou-li známy příspěvky všech pravidel, je odvozena výsledná váha výroku (pomocí funkce GLOB - viz práce s neurčitostí), stav výroku je označen jako finální a vyhodnocování je ukončeno (nikoliv přerušeno). Pokud nejsou známy příspěvky všech pravidel, pravidla jsou seřazena dle zadané priority pravidel (od začátku, od konce, minimální délka, maximální délka, dle zadání experta), vezme se první nevyhodnocené pravidlo a pokusí se zjistit jeho příspěvek následovně:
    • pokud není známa váha kontextu, zjistí váhu kontextu (probíhá stejně jako zjišťování váhy předpokladu). Je-li váha kontextu (její maximální hranice) menší nebo rovna prahu platnosti kontextu, je příspěvek pravidla „IRRELEVANT“ (tj. nulový);
    • je zjištěna váha předpokladu tak, že nejprve je zjištěna váha všech výrazů (u výroků se vezme jejich váha, u konjunkcí je váha jednotlivých výroků vyhodnocena pomocí funkce CONJ) a jednotlivé výrazy jsou vyhodnoceny pomocí funkce DISJ. Pokud váha některého výroku není známa (výrok není ve stavu „final“), je tento výrok označen za „aktuální“ a je pro něj spuštěno vyhodnocování;
    • pomocí funkce CTR je spojena váha předpokladu a váha kontextu (má-li pravidlo kontext) a výsledná váha je opět pomocí funkce CTR spojena s vahou jednotlivých závěrů. Tím je pravidlo vyhodnoceno a jeho stav je označen jako „final“ (zároveň jsou spuštěny jeho akce).

Je-li odvozování přerušeno, je zjištěn atribut, od kterého je odvozen výrok, při jehož vyhodnocování došlo k přerušení. Hodnota tohoto atributu je zjištěna z příslušného zdroje (dotazem od uživatele nebo ze souboru či externí funkce). Poté, co je hodnota zjištěna, je spočítána příslušná váha všech výroků, které jsou od daného atributu odvozeny (a jejich stav je označen jako „final“. Tyto výroky jsou postupně brány a je pro ně spuštěno přímé odvozování, které probíhá takto:

  • pro výrok jsou zjištěna všechna pravidla, ve kterých je výrok v předpokladech;
  • pravidlo je vyhodnoceno stejným způsobem, jako tomu bylo při zpětném odvozování s tím rozdílem, že pokud při vyhodnocování nějakého výroku z předpokladu pravidla dojde k přerušení, toto přerušení je ignorováno a místo toho je ukončeno vyhodnocování tohoto pravidla (to znamená, že se neposílá dotaz uživateli ani není použit jiný zdroj);
  • je-li pravidlo úspěšně vyhodnoceno, procházejí se postupně výroky ze závěrů pravidla. Tento výrok je nejprve vyhodnocen metodou zpětného odvozování s tím, že je opět ignorováno přerušení a místo něj je vyhodnocování výroku ukončeno. Pokud se povede výrok vyhodnotit, je pro něj spuštěna metoda přímého odvozování.

Když jsou probrány všechny výroky metodou přímého odvozování, je celé odvozování spuštěno nanovo.


Funkce NEG

Funkce NEG slouží pro výpočet negace výroku. Je definována následovně:

NEG(w) = -w

resp. pro práci s intervalem [w1;w2]:

NEG([w1;w2]) = [-w2;-w1]


Funkce CONJ

Funkce CONJ slouží pro výpočet konjunkce dvou výroků. Je definována následovně:

CONJ(v,w) = min(v,w)

resp. pro práci s intervaly [v1;v2],[w1;w2]

CONJ([v1;v2],[w1;w2]) = [min(v1,w1); min(v2,w2)]


Funkce DISJ

Funkce DISJ slouží pro výpočet disjunkce dvou výrazů. Je definována následovně:

DISJ(v,w) = max(v,w)

resp. pro práci s intervaly [v1;v2],[w1;w2]

DISJ([v1;v2],[w1;w2]) = [max(v1,w1); max(v2,w2)]


Funkce CTR

Funkce CTR slouží pro výpočet příspěvku pravidla, resp. pro složení vah kontextu a předpokladu pravidla. Je definována následovně:

  • standardní, neuronový a hybridní typ neurčitosti:
    CTR(a,w) = 0       ; a ≤ 0
CTR(a,w) = a * w   ; a > 0
  • logický typ neurčitosti:
    CTR(a,w) = 0                              ; a < 0
CTR(a,w) = sign(w) * max(0,a + |w| - 1)   ; a ≥ 0

Pro práci s intervaly [a1;a2],[w1,w2] se pak používá výraz
CTR([a1;a2],[w1,w2]) = [CTR(a1,w1);CTR(a2,w2)]


Funkce GLOB

Funkce GLOB slouží pro skládání příspěvků více pravidel. Je definována následovně:

  • standardní typ neurčitosti
    GLOB(v,w) = 0                    ; (v = 1, w = -1) nebo (v = -1, w = 1)
GLOB(v,w) = (v + w)/(1 + v * w)  ; jinak
  • logický a hybridní typ neurčitosti
    GLOB(w1...wn) = min(Σw>0w ,1)  +  max(Σw<0w,-1)
  • neuronový typ neurčitosti
    GLOB(w1...wn) = min(max(sΣw, -1), 1)
     kde s je strmost nelinearity zadaná v bázi znalostí

Pro práci s intervaly [a1;a2],[w1,w2] se pak používá výraz
GLOB([a1;a2],[w1,w2]) = [GLOB(a1,w1);GLOB(a2,w2)]


Funkce NORM

Jediná funkce, která je definována i mimo interval [-1;1], slouží pro ořezávání vah právě na tento interval, pokud ho někde přesáhnout. Funkce je používána po výpočtu příspěvku kompozicionálního pravidla pomocí funkce CTR a po složení všech příspěvků pravidel u výpočtu váhy výroku pomocí funkce GLOB. Funkce je definována následovně:

NORM(w) := min(max(w,-rozsah), rozsah)

resp. pro práci s intervalem [w1;w2]:

NORM([w1;w2]) = [min(max(w1,-rozsah), rozsah); min(max(w2,-rozsah), rozsah)]

kde rozsah = 0,999 (resp. počet devítek za desetinnou čárkou odpovídá počtu desetinných míst, se kterými právě systém pracuje)


Funkce IMP

Funkce IMP je používána pro výpočet výsledné váhy integritního omezení. Rozhoduje tedy o tom, zda integritní omezení bylo porušeno či nikoliv a do jaké míry. Je definována následovně:

IMP(w,v) = 0                  ; w <= 0
IMP(w,v) = max(0, min(w - v)) ; w > 0

resp. pro práci s intervalem [w1;w2]:

IMP([w1;w2],[v1,v2]) = [max(0, w1 - v1); max(0, w2 - v2)]

kde w je váha předpokladu integritního omezení (případně upravená pomocí kontextu funkcí CTR) a v je váha jeho závěru.


Úvodem

V této kapitole se postupně naučíme pracovat se systémem NEST. Nejprve si vysvětlíme nastavení systému, aby vše pracovalo tak, jak chceme. Poté si ukážeme nejjednodušší způsob konzultace a nakonec si objasníme i všechny ostatní možné způsoby konzultace.

Veškeré věci budou popsány na české verzi systému. Pokud máte nastavenou anglickou verzi (implicitní), můžete si systém přepnout do češtiny v menu Options / Options... na záložce General.


Spuštění nastavení

Nastavení editoru vyvoláte z hlavní obrazovky pomocí hlavního menu Nastavení / Nastavení ...

Veškeré změny v nastavení se provedou až po stisknutí tlačítka OK. Při stisknutí tlačítka Storno se všude nastaví původní hodnoty.


Záložka Obecné

Na této záložce se nalézají dvě volby: jazyk a implicitní znaková sada.

Jazyk systému udává, v jakém jazyce bude systém komunikovat s uživatelem. Na výběr je čeština a angličtina. Jazyková volba neovlivní syntaxi báze znalostí, která zůstává vždy stejná (založená na angličtině).

Implicitní znaková sada udává, v jaké znakové sadě bude uložena báze znalostí. Tuto znakovou sadu nelze volit libovolně, ale musí odpovídat znakové sadě, kterou používá operační systém. Pro české prostředí ve Windows je tato znaková sada „windows-1250“.


Záložka Adresáře

Na této záložce se nalézají 4 pole, do kterých se zadávají příslušné adresáře. Zadání těchto adresářů není pro systém nezbytné, ale může výrazně zpříjemnit práci. První 3 z těchto adresářů lze zadávat také v nastavení samotného systému NEST, kde jsou popsané.

Poslední pole je pak Adresář s programem NEST, které udává adresář, ve kterém se nachází soubor „NEST.exe“ - soubor pro spuštění systému. Pokud je tento adresář nastaven, lze NEST spustit z hlavní obrazovky pomocí hlavního menu Nástroje - NEST. Adresář se automaticky nastaví při spuštění NESTu jiným způsobem.

Všechny adresáře lze zadat buďto přímo, nebo stiskem tlačítka vedle příslušného editačního pole a vybrání adresáře v dialogovém okně.


Záložka Barvy

Na této záložce je možno nastavit 3 barvy textu, které se používají při zobrazování výsledků konzultace.

Základní barva se použije pro text vždy, když není důvod použít jiné možnosti.

Barva pro Kladné výsledky se použije pro všechny výsledky, jejichž minimální váha se dostala do kladných hodnot.

Barva pro Záporné výsledky se použije pro všechny výsledky, jejichž maximální váha se dostala do záporných hodnot.


Záložka Zdroje

Na této záložce je jediná volba: Maximální doba běhu externí funkce. Ta udává dobu (v milisekundách), jak dlouho bude maximálně systém čekat na ukončení externí funkce sloužící jako zdroj odpovědi. Pokud do té doby funkce neskončí, program přestane čekat a přejde automaticky k dalšímu možnému zdroji.

Pokud není zaškrtnuté levé políčko, program bude čekat stále (pokud nebude přerušen uživatelem stiskem tlačítka „Storno“).


Nahrání báze

Bázi znalostí nahrajete na úvodní obrazovce pomocí hlavního menu Báze / Nahraj bázi nebo pomocí tlačítka na úvodní obrazovce Nahraj bázi. Po potvrzení standardního dialogového okna pro otevírání souborů se systém pokusí nahrát vybranou bázi. Pokud systém úspěšně nahraje bázi, objeví se její jméno (resp. jméno souboru) vedle nápisu Aktuální báze a popis báze se objeví v textovém poli Popis báze. Pod popisem se dále objeví jméno experta, od kterého byly získány znalosti obsažené v bázi, jméno znalostního inženýra, který bázi sestavil a datum vzniku báze. Pokud se báze nedá nahrát, systém oznámí důvod neúspěchu při nahrávání báze a obě pole zůstanou prázdná.

Systém dokáže nahrávat báze znalostí, které jsou uloženy v souboru založeném na jazyce XML a jehož syntaxe odpovídá syntaxi báze znalostí. Aby báze mohla být úspěšně nahrána, je třeba, aby byl k dispozici soubor „base.dtd“. Podle tohoto souboru probíhá částečná kontrola syntaxe báze znalostí. Tento soubor musí být uložen ve stejném adresáři, jako je uložena nahrávaná báze znalostí, nebo musí být zadán „Adresář se souborem base.dtd“ v nastavení systému. Bez tohoto souboru systém nemůže nahrát žádnou bázi znalostí.

Pokud nahrajete bázi znalostí ve chvíli, kdy v systému již je nahraná jiná báze znalostí, je tato báze automaticky odstraněna. To znamená, že v systému může být nahrána v jeden okamžik maximálně jedna báze.


Spuštění konzultace

Konzultaci je možné spustit pouze v okamžiku, kdy je v systému nahraná báze znalostí.

Konzultaci spustíte na úvodní obrazovce pomocí hlavního menu Báze / Konzultuj nebo pomocí tlačítka Konzultuj na pravé straně obrazovky.

Po spuštění konzultace se objeví obrazovka s nastavením konzultace. Pro nejjednodušší typ konzultace není potřeba nic upravovat a je možno konzultaci zahájit stiskem tlačítka OK na pravé straně obrazovky. Těmito nastaveními se budeme podrobně zabývat až při složitějších způsobech konzultace v příští kapitole.

Po zahájení konzultace systém začne zjišťovat váhy jednotlivých cílových výroků (cílů) a začne pokládat uživateli dotazy, které k těmto cílům vedou.


Dotaz na atribut

Pokud systém při odvozování cílů narazí na atribut, jehož váha je potřeba ke zjištění některého cíle a nedá se odvodit z jiných výroků, položí uživateli dotaz na tento atribut. Existují 4 typy dotazů:

  • dotaz na binární atribut;
  • dotaz na single atribut;
  • dotaz na multiple atribut;
  • dotaz na numerický atribut.

Dotaz na binární atribut: systém se zeptá „jaká je váha binárního atributu“ a doplní jméno atributu a jeho popis. Uživatel pak musí zadat váhu tohoto atributu (resp. váhu odpovědi „Ano“) vedle nápisu Váha. Váhou se rozumí číslo z rozmezí uvedeného dole na obrazovce (toto rozmezí bývá stejné pro celou bázi znalostí, v různých bázích se však může lišit). Čím je číslo více nad nulou, tím se odpověď vzdaluje od odpovědi „irelevantní“ a blíží k odpovědi „jistě ano“, čím je číslo více pod nulou, tím se odpověď více blíží k „jistě ne“.

Po zapsání váhy je třeba ji potvrdit stiskem klávesy Enter nebo stiskem tlačítka Potvrdit odpověď v pravé části obrazovky.

Alternativou k přímému zapsání váhy je použít některou z předdefinovaných odpovědí stiskem příslušného tlačítka na pravé straně obrazovky. Odpověď Jistě ano nahrazuje zapsání maximální váhy z rozsahu, odpověď Jistě ne nahrazuje zapsání minimální váhy z rozsahu, odpověď Irelevantní nahrazuje zapsání nuly. Odpověď Nevím se nedá pomocí váhy zapsat a je třeba použít toto tlačítko. Nahrazuje tím vlastně zapsání všech vah z celého intervalu.

Tlačítko Odložit odpověď odsune zodpovězení dotazu na pozdější dobu. Jeho použití bude blíže vysvětleno ve složitějších způsobech konzultace.

Dotaz na single atribut: systém se zeptá „jaká je hodnota a váha single atributu“ a doplní jméno atributu a jeho popis. Uživatel musí nejprve vybrat odpověď v levém rozbalovacím okně a této odpovědi pak přiřadit váhu stejným způsobem, jako se přiřazuje váha u binárních atributů.

Dotaz na multiple atribut: systém se zeptá „jaké jsou hodnoty a váhy multiple atributu“ a doplní jméno atributu a jeho popis. Uživatel pak vybere hodnoty, u kterých chce zadat váhu, a přetáhne je z okna Přípustné hodnoty do okna Vybrané hodnoty. Každé vybrané hodnotě pak musí přiřadit nějakou váhu obdobně, jako tomu je při přiřazování váhy u binárního atributu. Přiřazená váha se objeví vedle odpovědi. Jednotlivým odpovědím lze opět přiřazovat váha i pomocí tlačítek, výjimkou je tlačítko Nevím, které tuto hodnotu přiřazuje celému atributu (nikoliv jen jedné hodnotě) a tím ukončí tento dotaz.

Dotaz na numerický atribut: systém se zeptá „jaká je hodnota numerického atributu“ a doplní jméno atributu a jeho popis. Uživatel pak musí zadat hodnotu tohoto atributu z rozmezí uvedeného dole na obrazovce. Toto rozmezí závisí na daném atributu (a je tím pádem pro každý atribut jiné).

Jakmile uživatel odpoví na dotaz, systém pokračuje v odvozování vah cílů. Pokud uživatel nechce pokračovat v konzultaci, může ji ukončit tak, že zavře okno dotazu pomocí křížku v pravém horním rohu.


Zobrazení výsledků konzultace

Jakmile systém dostane odpovědi na všechny dotazy, které potřebuje k odvození vah cílů, spočte výsledné váhy a zobrazí výsledky. Výsledky jsou zobrazovány v tabulce, kde pro každý výrok jsou uváděny tyto položky:

  • jméno výroku;
  • minimální váha výroku, tj. váha, kterou výsledný výrok minimálně nabývá;
  • maximální váha výroku, tj. váha, kterou výsledný výrok maximálně nabývá;
  • stav výroku ukazuje, v jakém stavu se výrok nachází po odvozování. Existují 4 stavy - nedotčený, částečný, finální a provizionální. Nedotčený znamená, že výrok vůbec nebyl při odvozování použit. Částečný znamená, že systém při odvozování na tento výrok narazil, ale při odvozování výsledků nakonec nebyl zcela potřeba, a tak jeho váha nemusí být dopočítána. Finální znamená, že tento výrok byl pro odvozování potřeba a že jeho váha má finální podobu. Provizionální znamená, že uživatel při některém dotazu odložil odpověď (viz složitější způsoby konzultace) a že po zodpovězení odložených odpovědí by se mohla váha tohoto výroku ještě změnit;
  • druh výroku ukazuje, jaké druhu výrok je. Výrok může být cíl, což jsou výroky, jejichž váhu se systém snaží určit, mezilehlý výrok, což je takový výrok, který je použit jak v předpokladu, tak v závěru nějakého odvozovacího pravidla, nebo dotaz, což je výrok, který se nevyskytuje v závěru žádného pravidla, takže pokud chce systém zjistit jeho váhu, musí se na něj zeptat uživatele.

Tabulka s výsledky může být setříděna podle libovolného z těchto pěti sloupců, stačí kliknout myší na záhlaví daného sloupce (při opětovném kliknutí na stejný sloupec se provede inverzní setřídění). Implicitně je tabulka setříděná podle minimálních vah výroků.

Pokud v tabulce označíte myší konkrétní výrok a k tomuto výroku existuje komentář, zobrazí se tento komentář na pravé straně v textovém poli Komentář.

V tabulce se implicitně objevují pouze cílové výroky. Pokud chcete zobrazit všechny výroku, přepněte přepínač Zobrazovat na položku Všechny výroky.

Pokud při odvozování došlo k porušení některého integritního omezení báze znalostí, zobrazí se toto integritní omezení v tabulce na pravé straně obrazovky (o tabulce platí obdobné věci jako o tabulce s výsledky). Porušení integritního omezení většinou znamená zásadní porušení logiky ve výsledcích odvozování a v komentáři tohoto integritního omezení by mělo být vysvětleno, jak se má uživatel zachovat, aby k tomuto porušení nedošlo.

Zobrazení výsledků ukončíte stiskem tlačítka Zavřít v pravém dolním rohu obrazovky. Tím je také ukončena celá konzultace.

Výsledky konzultace je možné exportovat do souborů. K tomu slouží tlačítko Export výsledků v pravém dolním rohu obrazovky. Po stisknutí tohoto tlačítka se objeví dialogové okno, ve kterém je možné zadat popis konzultace a je třeba vybrat typ souboru, do kterého se export provede (textový soubor nebo html soubor). Přepínačem Exportovat komentáře se určuje, zda se k jednotlivým výrokům mají připsat i jejich komentáře. Po potvrzení tohoto dialogového okna se zobrazí standardní dialogové okno pro ukládání souboru a po výběru souboru se provede export výsledků.


Nastavení konzultace

Pokud chcete použít nějaký složitější způsob konzultace, je třeba provést příslušná nastavení před zahájením konzultace. Po stisknutí tlačítka Konzultuj na úvodní obrazovce se objeví obrazovka Nastavení konzultace, kde se veškerá nastavení provádějí.

V horní části obrazovky je možné měnit cíle konzultace. Systém automaticky za cíle konzultace vybere ty výroky, které se vyskytují pouze v závěru pravidel. Tyto výroky se objeví v pravém sloupci Vybrané výroky. Pokud chcete jako cíl konzultace označit jiný výrok (například z důvodu urychlení konzultace), označte atribut, od kterého je výrok odvozen, v levém sloupci Atributy a příslušný výrok přemístěte z prostředního sloupce Možné výroky do pravého sloupce. Jako cíle však lze určovat jen mezilehlé výroky, tj. takové výroky, které se vyskytují v závěru alespoň jednoho pravidla.

Chcete-li libovolný vybraný cíl zrušit, přesuňte ho z pravého sloupce do prostředního.

V prostřední řádce obrazovky lze nalézt 4 volby pro konzultaci: Typ neurčitosti, priorita pravidel, implicitní váha a atributy s obecným rozsahem.

Typ neurčitosti určuje, jakou práci s neurčitostí bude systém při odvozování používat, tj. jak budou definovány jednotlivé funkce pro práci s neurčitostí. Bližší informace viz kapitola „Práce s neurčitostí“

Priorita pravidel určuje, v jakém pořadí bude systém zpracovávat pravidla, nastane-li situace, že jich může použít více najednou. Od začátku znamená, že systém dá přednost tomu pravidlu, které je v bázi znalostí uvedeno dříve, od konce znamená přesný opak. Minimální délka znamená, že systém použije nejprve pravidlo, které má kratší předpoklad, při maximální délce vezme nejprve pravidlo s delším předpokladem. Při volbě definovaná expertem budou brána pravidla v pořadí podle priority, kterou určil expert při tvorbě báze. Pokud tato priorita není u pravidel uvedena, systém se zachová jako při volbě od začátku.

Implicitní váha určuje, jakou váhu mají dostat výroky, kterým nebyla váha určena jinak (například výpočtem nebo dotazem). Tuto váhu dostanou například všechny výroky odvozené od multiple atributu, kterým uživatel v dotazu nepřiřadil jinou váhu. Implicitní váha může být buď neznámá, tj. váha [-1 ; 1] (upravená na rozsah příslušné báze), nebo irelevantní, tj. váha [0 ; 0].

Atributy s obecným rozsahem jsou atributy, které takto označil expert při tvorbě báze a které se vztahují (jak již jejich název napovídá) k prostředí, k věcem, které se mění jen výjimečně a není tedy nutné je zjišťovat znovu při každé konzultaci. Jejich hodnoty jsou vždy na konci konzultace automaticky uloženy do zvláštního souboru a při další konzultaci je možné tyto hodnoty použít - volba zachovat stávající. Při této volbě systém tyto dotazy nepokládá, ale použije příslušné hodnoty z předešlé konzultace. Při volbě vymazat jsou hodnoty z předešlé konzultace ignorovány a systém položí znovu všechny dotazy.

Ve spodní řádce obrazovky lze nalézt volbu pro způsob odpovídání a s ní související volbu pro typ konzultace. Způsob odpovídání dialog je klasická konzultace, kdy systém pokládá uživateli dotazy na hodnoty, které potřebuje pro odvození cílů. O dotazníku a nahrání odpovědí ze souboru bude pojednáno ve zvláštních sekcích, stejně jako o možnosti odkládání dotazů.


Dotazník

Dotazník je alternativou ke klasickému dialogu. Systém nepokládá dotazy uživateli postupně, jak je potřebuje pro odvozování cílů, ale předloží uživateli seznam všech dotazů, které se v bázi vyskytují, a uživatel má možnost odpovědět na otázky, které uzná za vhodné. Po potvrzení dotazníku pak systém z odpovědí odvodí takové závěry, které jsou možné a další dotazy už nepokládá, i když není schopen stanovit váhy cílů.

Dotazník se skládá ze dvou částí. V levé části obrazovky je tabulka, ve které jsou uvedeny všechny dotazy. Po označení určitého dotazu (klikněte myší na řádek tabulky s dotazem) se v pravé části obrazovky objeví stejné prvky jako při položení dotazu. Stejným způsobem se i zadává odpověď na dotaz. Po potvrzení odpovědi (klávesou enter nebo tlačítkem Potvrdit odpověď, nikoliv tlačítkem OK) se zadaná váha objeví v pravém sloupci tabulky a zároveň se v levém sloupci tabulky objeví „+“ symbolizující, že dotaz je zodpovězen.

Jednou zadanou váhu můžete kdykoliv změnit stejným způsobem, jakým jste zadávali váhu prvně. Pokud chcete odpověď zcela zrušit, klikněte do levého sloupce tabulky, čímž symbol „+“ zmizí (po opětovném klepnutí se opět objeví).

Ve třetím sloupci tabulky je uvedeno písmeno symbolizující typ dotazu, resp. atributu: b - binární, s - single, m - multiple, n - numerický.

Pro potvrzení a odeslání dotazníku stiskněte tlačítko OK na spodním okraji obrazovky. Pokud chcete dotazník zrušit (a s ním i celou konzultaci), stiskněte zavírací křížek v pravém horním rohu obrazovky.

Odpovídání pomocí dotazníku lze zkombinovat s klasickým dialogem (v nastavení konzultace zvolte volbu Dialog s dotazníkem ve Způsobu odpovídání). Systém nejprve zobrazí dotazník a po jeho odeslání se pokusí odvodit váhy všech cílů. Pokud se mu to nepovede, přejde na dialog a bude pokládat dotazy, dokud se mu nepovede odvodit všechny cíle.


Odkládání dotazů

Pokud je v nastavení konzultace u Typu konzultace označená možnost Odkládání, je možné v průběhu dialogu odložit libovolný dotaz. Takový dotaz dostane „neznámou“ váhu a je označen jako provizorní. Jako provizorní jsou označeny i všechny další výroky, které jsou v průběhu konzultace od něho odvozeny. Pokud uživatel není spokojen s výsledky, může stisknout tlačítko Pokračuj, které se objeví na obrazovce v pravém dolním rohu, a tím obnovit dialog. Systém mu znovu položí odložené dotazy a uživatel může jejich váhu upřesnit. V této obnovené konzultaci již znovu nelze dotazy odkládat.


Úprava odpovědí

Uživatel může po skončení konzultace a zobrazení výsledků upravit odpovědi na jednotlivé dotazy. Na obrazovce s výsledky konzultace je u pravého okraje tlačítko Úprava odpovědí, po jehož stisknutí je možné upravovat odpovědi. Úprava probíhá pomocí dotazníku (práce s dotazníkem byla popsána výše), ve kterém se zobrazí jednotlivé odpovědi. Po potvrzení dotazníku systém přepočítá váhy cílů a zobrazí znovu výsledky konzultace.


Uložení odpovědí a jejich načtení

Po skončení konzultace je možné uložit odpovědi do souboru, aby byli zachovány pro příští konzultace. Toto uložení se provede pomocí tlačítka Uložit odpovědi v pravém dolním rohu obrazovky s výsledky. Při ukládání je možné zadat popis této konzultace, který se pak zobrazí při nahrání odpovědí.

Načtení odpovědí se provádí v nastavení konzultace. Jako Způsob odpovídání je třeba vybrat volbu Nahrát odpovědi ze souboru a v políčku Soubor zadat příslušný soubor s odpověďmi. Po potvrzení nastavení konzultace (pomocí tlačítka OK) se systém pokusí načíst odpovědi a podaří-li se mu to, zobrazí tyto odpovědi v dotazníku, ve kterém se dají dále upravovat. Pod dotazníkem se objeví popis příslušné konzultace.

Při nahrávání odpovědí musí být ve stejném adresáři jako je soubor s odpověďmi uložen také soubor „answers.dtd“, podle kterého probíhá kontrola syntaxe odpovědí. Jako alternativa je možno v nastavení zadat na záložce Adresáře Adresář se souborem answers.dtd, a pak již soubor není vyžadován ve stejném adresáři.


Načítání odpovědí z jiných zdrojů

Systém nemusí vyžadovat všechny odpovědi od uživatele, ale může se pokusit získat váhy atributů i z jiných zdrojů, konkrétně ze souboru či externí funkce.

Při získávání váhy ze souboru uživatel vlastně nezjistí, že ke zjišťování váhy došlo. Pokud systém soubor nalezne a váhu z něj úspěšně přečte (váhu systém vždy čte z první řádky souboru, který musí být textový), pokračuje v odvozování výsledků a uživateli nedá najevo, že váha byla načítána. Pokud soubor nenalezne nebo nepřečte, použije další zdroj, který má zadaný (většinou se jedná o položení dotazu na uživatele).

Při získávání váhy z externí funkce systém zavolá externí program a čeká na jeho ukončení. Externí program musí vytvořit soubor, ze kterého je pak váha přečtena (stejným způsobem jako při získávání váhy ze souboru). Při běhu externí funkce je odvozování pozastaveno a čeká se na výsledek. Pokud externí funkce neskončí do předem zadané doby, kterou lze zadat v nastavení systému, systém použije další ze zadaných zdrojů. Čekání na ukončení externí funkce může přerušit i uživatel stiskem tlačítka Storno.

Jako zdroj může být v bázi znalostí u výroku zadán také „uživatel“. V takovém případě systém položí dotaz, a to i v tom případě, že by bylo možné váhu výroku odvodit z jiných. Pokud však uživatel zadá jako váhu „UNKNOWN“, tj. zmáčkne tlačítko Nevím nebo Odložit dotaz, pro zjištění váhy se použije další zdroj.


Spouštění akcí

V bázi znalostí může být nadefinováno, aby se v určitých případech spustila akce. Akcí je myšlen externí program, který systém spustí a dále se o něj nestará. Akce může být spuštěna, když je vyhodnocen nějaký výrok, nebo když je aplikováno nějaké pravidlo. Akce u výroků se zavolají v okamžiku, kdy je vyhodnocen (je mu přiřazen stav final). Navíc může být u akce nastaveno, že se má spustit pouze v případě, že váha tohoto výroku přesáhla určitou hodnotu (jedná se o minimální váhu výroku). Akce u pravidel se zavolají v okamžiku, kdy je pravidlo vyhodnoceno, tj. jsou známy všechny výroky v kontextu i v předpokladu pravidla a systém odvodil závěry.


Záložka Tlačítkové lišty

Na této záložce je možné nastavit, jaké tlačítkové lišty (soubor tlačítek v horní části obrazovky pod hlavním menu) mají být viditelné na hlavní obrazovce. Práce se souborem obsahuje tlačítka pro založení nové báze, otevření báze a uložení báze, Tlačítka pro kontrolu obsahuje tlačítko pro spuštění kontroly báze a Práce s okny obsahuje tlačítka pro uspořádání jednotlivých oken báze do kaskády, nebo jako horizontální či vertikální dlaždice.


Vytvoření nové báze

Novou bázi znalostí vytvoříte na hlavní obrazovce pomocí hlavního menu Soubor / Nový. Editor vytvoří novou bázi znalostí se jménem NONAME. Zároveň se spustí Obrazovka s globálním nastavením báze. Tuto obrazovku lze zavřít a kdykoliv později vyvolat a upravit, nicméně doporučuji co možná nejvíce hodnot zadat ihned po založení báze.


Otevření existující báze

Bázi znalostí lze otevřít na hlavní obrazovce pomocí hlavního menu Soubor / Otevři. Po vybrání souboru ve standardním dialogovém okně se systém pokusí otevřít danou bázi. Pokud se mu to podaří, zobrazí se okno báze na pracovní ploše. Pokud systém bázi nemůže otevřít, vypíše důvod, který mu v tom brání.

Systém dokáže nahrávat báze znalostí, které jsou uloženy v souboru založeném na jazyce XML a jehož syntaxe odpovídá syntaxi báze znalostí. Aby báze mohla být úspěšně nahrána, je třeba, aby byl k dispozici soubor „base.dtd“. Podle tohoto souboru probíhá částečná kontrola syntaxe báze znalostí. Tento soubor musí být uložen ve stejném adresáři, jako je uložena nahrávaná báze znalostí, nebo musí být zadán „Adresář se souborem base.dtd“ v nastavení systému. Bez tohoto souboru systém nemůže nahrát žádnou bázi znalostí.

V editoru může být v jeden okamžik otevřeno libovolné množství bází. Pro každou bázi je na pracovní ploše otevřeno nové okno.


Uložení báze

Bázi uložíte pomocí hlavního menu Soubor / Uložit. Pokud již báze má své jméno (resp. svůj soubor) je automaticky uložena pod tímto jménem. Pokud je báze ukládána prvně, je třeba nejprve vybrat příslušný soubor ve standardním dialogovém okně. Souboru je automaticky přidána koncovka „xml“.

Chcete-li bázi uložit pod jiným jménem (do jiného souboru), než je její stávající, zvolte příkaz v hlavním menu Soubor / Uložit jako a ve standardním dialogovém okně vyberte nový soubor.

Báze znalostí je ukládána do souboru založeném na jazyce XML a jeho syntaxe je popsána v kapitole „Báze znalostí“.


Export báze

Export báze slouží pro uložení báze do souboru tak, aby byl čitelný pro člověka. Takto uložená báze však nejde znovu nahrát do editoru.

Bázi je možné exportovat do dvou formátů. Prvním je textový soubor (příkaz v hlavním menu Soubor / Export / Soubor txt), druhým je html soubor (příkaz v hlavním menu Soubor / Export / Soubor html). U obou formátů se soubor exportuje po výběru požadovaného souboru ve standardním dialogovém okně.


Základní okno báze

Základní okno báze se otevře po vytvoření nové báze, nebo po otevření báze ze souboru. Aktuální jméno báze (resp. jméno souboru) je vidět v horním pruhu okna.

Okno je rozděleno do 5 sloupců, ve kterých jsou vypsány jednotlivé třídy znalostí: atributy, výroky, pravidla, kontexty, integritní omezení. V každém sloupci jsou dvě okna. V horním okně je seznam všech prvků dané třídy znalostí. Po označení určitého prvku (klikněte na něj levým tlačítkem myši) se v dolním okně zobrazí jeho popis.

U všech oken lze měnit jejich velikost. Stačí nastavit kurzor na hranici mezi dvěma okny tak, aby se změnila jeho podoba, a přetáhnout hranici levým tlačítkem myši na požadovanou polohu. Navíc lze jednotlivé sloupce schovávat (a opět zobrazovat) pomocí pravého tlačítka myši.


Globální vlastnosti báze

Globální vlastnosti báze jsou takové vlastnosti, které se vztahují na celou bázi znalostí. Jsou to následující položky:

  • popis báze by měl stručně a jasně vystihovat danou bázi znalostí. Uživatel tento popis uvidí, jakmile si bázi otevře;
  • expert - jméno experta, od kterého byly získány vědomosti z báze znalostí;
  • znalostí inženýr - jméno znalostního inženýra, který sestavil bázi;
  • datum vzniku báze;
  • rozsah vah - interval [-rozsah vah ; rozsah vah], ve kterém budou zadávány a zobrazovány veškeré váhy v bázi. V tomto intervalu pak zadávejte i veškeré váhy při tvorbě báze. Pokud rozsah vah změníte, veškeré váhy se automaticky přepočítají. Tento parametr byste měli určitě zadat při založení nové báze, abyste mohli jednotlivé váhy zadávat ve správném intervalu.
  • Globální práh platnosti kontextu udává váhu, kterou musí překročit kontext, aby byl splněný (a aby tedy bylo použito pravidlo, u kterého je kontext uveden). U každého pravidla lze zadat individuální práh, pokud však není uveden, je použit tento globální práh.
  • Globální práh platnosti předpokladu udává váhu, kterou musí překročit logické pravidlo (resp. jeho minimální váha), aby bylo vyhodnoceno jako splněné. Opět lze u jednotlivých pravidel nastavit individuální práh.
  • Inferenční mechanizmus, implicitní váha a globální priorita udávají příslušná implicitní nastavení, která jsou použita, pokud uživatel před konzultací nevybere jiná.


Spuštění editace atributů a výroků

Editování atributů a výroků spustíte v hlavním menu příkazem Edituj / Atributy a výroky. Druhou možností je poklepat levým tlačítkem myši na okno s výpisem atributů nebo výroků (Tím se vám zároveň zobrazí atribut či výroky, na který jste poklepali).


Vkládání nových atributů

Nový atribut do báze vložíte na obrazovce editace atributů pomocí menu Akce / Nový atribut nebo stisknutím tlačítka Nový atribut vedle okna s výpisem atributů. V následujícím dialogovém okně musíte vybrat jaký atribut chcete vložit - binární, single, multiple nebo numerický. Po stisknutí tlačítka OK se daný atribut vytvoří, přiřadí se mu ID „New_attribute“ a je zařazen na konec seznamu atributů. Zároveň je tento atribut označen, takže můžete přímo upravovat jeho vlastnosti.


Upravování vlastností atributu

Aby bylo možné upravovat vlastnosti atributu, musí být tento atribut označen - klikněte levým tlačítkem myši na příslušný atribut v okně výpisu atributů na obrazovce editace atributů (pokud atribut zatím neexistuje, musíte jej nejprve vložit). Po označení atributu se jeho vlastnosti objeví na pravém horním panelu, kde je můžete upravovat.

ID označuje identifikátor atributu. Identifikátor musí být jedinečný pro celou bázi znalostí. Uživatel tento identifikátor neuvidí, pokud bude uvedeno jméno atributu. Identifikátor musí být uveden.

Jméno udává, pod jakým jménem se bude atribut objevovat uživateli. Mělo by být též jedinečné, nicméně z pohledu systému již tato jedinečnost není vyžadována. Pokud není jméno uvedeno, systém za něj automaticky doplní ID atributu.

Komentář může obsahovat bližší popis či vysvětlení atributu. Tento údaj není povinný.

Rozsah udává, zda se jedná o případový či obecný atribut.

Dolní a horní mez lze zadat pouze u numerických atributů a udává interval hodnot, kterých může atribut nabývat. Pokud mez není uvedena, atribut může nabývat libovolných hodnot. (případně může být uvedena jen jedna mez.)

Dále je na tomto panelu zobrazen typ atributu (v pravém horním rohu) a počet akcí a počet zdrojů definovaných pro daný atribut (v pravém dolním rohu).


Odstranění atributu

Atribut je možné odstranit na obrazovce editace atributů. Nejprve je třeba atribut označit (klikněte levým tlačítkem myši na příslušný atribut v okně výpisu atributů), a pak spustit příkaz pomocí menu Akce / Smaž atribut, nebo stisknou tlačítko Smaž atribut vedle okna s výpisem. Systém si vyžádá potvrzení o smazání atributu a po jeho potvrzení ho definitivně odstraní z báze.


Pořadí atributů v bázi

Pořadí atributů v bázi znalostí není zcela bez významu, ale ovlivňuje některé odvozovací mechanismy - při vyhodnocování cílů jsou nejprve vyhodnocovány ty výroky, které jsou odvozeny od atributů uvedených v bázi dříve. Na celkový výsledek však pořadí atributů nemá vliv.

Pokud chcete změnit pořadí atributů, resp. přesunout určitý atribut nahoru nebo dolů ve výpisu atributů, označte tento atribut a pomocí tlačítek „^“ a „v“ ho přesuňte na požadované místo.


Vkládání nových výroků

Nové výroky lze vytvářet pouze od single, multiple a numerických atributů. Od binárních atributů je automaticky vytvořen jeden výrok, který přebírá ID, jméno a komentář od atributu. Pro vložení nového výroku musí být označen atribut, od kterého má být výrok odvozen.

Pro vložení nového výroku zvolte v menu příkaz Akce / Nový výrok nebo stiskněte tlačítko Nový výrok vedle výpisu výroků. Novému výroku je přiřazeno ID „New_proposition“ a je zařazen na konec seznamu výroků. Nový výrok je automaticky označen a je možné editovat jeho vlastnosti.


Upravování vlastností výroků

Aby bylo možné upravovat vlastnosti výroku, musí být tento výrok označen - klikněte levým tlačítkem myši na příslušný výrok v okně výpisu výroků na obrazovce editace atributů a výroků (pokud výrok zatím neexistuje, musíte jej nejprve vložit) a zároveň musí být označen atribut, od něhož je výrok odvozen. Po označení výroku se jeho vlastnosti objeví na pravém dolním panelu, kde je můžete upravovat. (U binárního výroku nelze jeho vlastnosti upravovat, neboť tento výrok přebírá všechny vlastnosti od atributu.)

ID označuje identifikátor výroku. Identifikátor musí být jedinečný v rámci daného atributu, může však být stejný jako identifikátor výroku odvozeného od jiného atributu. Uživatel tento identifikátor neuvidí, pokud bude uvedeno jméno výroku. Identifikátor musí být uveden.

Jméno udává, pod jakým jménem se bude výrok objevovat uživateli. Pokud není jméno uvedeno, systém za něj automaticky doplní ID výroku.

Komentář může obsahovat bližší popis či vysvětlení výroku. Tento údaj není povinný.

Meze fuzzy intervalu (fuzzy lower, crisp lower, crisp upper, fuzzy upper) lze zadat pouze u numerických výroků. Tyto meze udávají podobu fuzzy intervalu pro převod hodnoty atributu na váhu výroku.

Dále je na tomto panelu zobrazen počet akcí definovaných pro daný výrok (v pravém dolním rohu).


Odstranění výroku

Výrok je možné odstranit na obrazovce editace atributů a výroků. Nejprve je třeba výrok označit (klikněte levým tlačítkem myši na příslušný výrok v okně výpisu atributů), a pak spustit příkaz pomocí menu Akce / Smaž výrok, nebo stisknou tlačítko Smaž výrok vedle okna s výpisem. Systém si vyžádá potvrzení o smazání výroku a po jeho potvrzení ho definitivně odstraní z báze.


Pořadí výroků v bázi

Význam pořadí výroků v bázi je stejný jako význam pořadí atributů. Pořadí lze měnit označením příslušného výroku a stiskem tlačítka „^“ nebo „v“ pro přesun nahoru a dolů.


Úprava akcí

Pro upravování akcí u pravidel platí stejná pravidla jako pro upravování akcí u atributů, pouze se u akce nezadává práh platnosti akce, neboť akce je spuštěna vždy, když je splněn předpoklad pravidla.


Úprava zdrojů

Pro úpravu zdrojů stiskněte tlačítko Uprav pod nápisem Počet zdrojů u příslušného atributu. Tím se vám zobrazí obrazovka pro upravování zdrojů.

Pro každý atribut může být definováno více zdrojů, přičemž další zdroj v pořadí je použit v tom případě, že předcházející selhal (soubor či externí funkce nejsou nalezeny, uživatel odpověděl „nevím“, ...). Nový zdroj vložíte pomocí tlačítka Přidej zdroj, označený zdroj odeberete pomocí tlačítka Smaž zdroj. Vlastnosti označeného zdroje lze měnit na pravém panelu:

  • Typ udává, o jaký zdroj se jedná - odvozování, uživatel (dotaz na uživatele), soubor (načtení hodnoty z uvedeného souboru), funkce (spuštění externí funkce a načtení hodnoty ze souboru).
  • Soubor (u posledních dvou typů zdrojů) udává soubor, ze kterého se má načíst hodnota. Hodnota se načítá z prvního řádku příslušného (textového) souboru.
  • Exe soubor (u posledního typu zdroje) udává soubor funkce, která má být zavolána.
  • Parametry (u posledního typu zdroje) se kterými bude zavolána externí funkce.


Spuštění editace pravidel

Editování pravidel spustíte v hlavním menu příkazem Edituj / Pravidla. Druhou možností je poklepat levým tlačítkem myši na okno s pravidel (Tím se vám zároveň zobrazí pravidlo, na který jste poklepali).


Vkládání nových pravidel

Nové pravidlo do báze vložíte na obrazovce editace pravidel stisknutím tlačítka Nové pravidlo v pravém dolním rohu obrazovky. V následujícím dialogovém okně musíte vybrat jaké pravidlo chcete vložit - apriori, logické nebo kompozicionální. Po stisknutí tlačítka OK se dané pravidlo vytvoří, přiřadí se mu ID „New_rule“ a je zařazeno na konec seznamu pravidel. Zároveň je toto pravidlo označeno, takže můžete přímo upravovat jeho vlastnosti.


Upravování vlastností pravidel

Aby bylo možné upravovat vlastnosti pravidla, musí být toto pravidlo označeno - klikněte levým tlačítkem myši na příslušné pravidlo v okně výpisu pravidel na obrazovce editace pravidel (pokud pravidlo zatím neexistuje, musíte jej nejprve vložit). Po označení pravidla se jeho vlastnosti objeví na pravých panelech, kde je můžete upravovat.

Vlastnosti jsou rozděleny do třech panelů. Nad těmito panely je textové okno, ve kterém se objevuje dané pravidlo zapsáno do jednoho řetězce (tento řetězec se objevuje i ve výpisu pravidel za identifikátorem). V levém horním panelu lze zadávat předpoklad pravidla (apriori pravidlo nemá předpoklad), v dolním panelu lze zadávat závěr pravidla a v pravém horním panelu obecné vlastnosti pravidla.

Předpoklad pravidla má disjunktivní normální formu. To znamená, že je tvořen disjunkcí jednotlivých výroků či konjunkcí výroků. Chcete-li vložit do předpokladu nový výrok, vyberte tento výrok v rozbalovacím okně na panelu předpokladů a stiskněte tlačítko s šipkou pod tímto oknem, nebo daný výrok přetáhněte pomocí myši na slovo Předpoklad. Konjunkci lze do předpokladu vložit stisknutím tlačítka &. Výroky do konjunkce se vkládají stejným způsobem jako do disjunkce (do předpokladu), pouze před stisknutím šipky označte příslušnou konjunkci (resp. přetáhněte výrok na příslušnou konjunkci). Označený výrok či konjunkci lze smazat stisknutím tlačítka s křížkem. Chcete-li vložit negaci výroku, označte po vložení tento výrok a zaškrtněte políčko Negace.

U logických pravidel lze navíc zadat práh platnosti předpokladu. Tento práh označuje váhu, kterou musí předpoklad nabýt (jeho minimální váha), aby byl splněn. Pokud tento práh není zadán, je použit globální práh platnosti zadávaný v globálních vlastnostech báze.

Závěr pravidla je tvořen jedním nebo více výroky. Výrok přidáte mezi závěry tím, že ho označíte v seznamu Možné závěry a stiskem tlačítko s šipkou vpravo ho přemístíte mezi Vybrané závěry (lze jej také z jednoho sloupce do druhého přetáhnout pomocí myši). Obdobným způsobem můžete vybraný závěr odstranit. Pokud má být v závěru negace výroku, označte tento výrok a zaškrtněte políčko Negace.

U kompozicionálních a apriorních pravidel je navíc potřeba zadat Váha příslušného závěru. (Tato váha vlastně vyjadřuje, jak je toto pravidlo spolehlivé.) Váhu lze zadat i zápornou, výsledek je však stejný jako kladná váha a negace.

Obecné vlastnosti pravidla:
ID označuje identifikátor pravidla. Identifikátor musí být jedinečný pro celou bázi znalostí a musí být uveden.

Priorita musí být číslo mezi 0 a 1. Čím vyšší je číslo, tím dříve přijde pravidlo na řadu, pokud systém vybírá z více použitelných pravidel. Pokud priorita není uvedena, použije se hodnota -1.

Komentář slouží pouze pro tvůrce báze, pokud si potřebuje k pravidlu něco poznamenat. Uživatel tento komentář neuvidí.

Kontext (u kompozicionálních a logických pravidel) uvádí identifikátor kontextu, který je pravidlu přiřazen. Kontext se vybírá ze seznamu kontextů v bázi a je proto nutné, aby byl nejprve vytvořen. U kontextu je možné zadat práh platnosti kontextu udávající váhu, kterou musí kontext nabýt, aby bylo pravidlo aplikováno. Pokud práh není zadán, je použit globální práh platnosti kontextů z globálních vlastností báze.

Počet akcí ukazuje, kolik akcí je přiřazeno tomuto pravidlu.


Odstranění pravidla

Pravidlo je možné odstranit na obrazovce editace pravidel. Nejprve je třeba pravidlo označit (klikněte levým tlačítkem myši na příslušné pravidlo v okně výpisu pravidel), a pak stisknou tlačítko Smaž pravidlo v pravém dolním rohu obrazovky. Systém si vyžádá potvrzení o smazání pravidla a po jeho potvrzení ho definitivně odstraní z báze.


Pořadí pravidel v bázi

Pořadí pravidel v bázi znalostí není zcela bez významu, ale ovlivňuje některé odvozovací mechanismy - pokud může systém použít více pravidel v jeden okamžik, systém použije nejprve pravidlo uvedené dříve v bázi (je-li zadána priorita pravidel - od začátku) či později v bázi (je-li zadána priorita pravidel - od konce). Na celkový výsledek však pořadí pravidel nemá vliv.

Pokud chcete změnit pořadí pravidel, resp. přesunout určité pravidlo nahoru nebo dolů ve výpisu pravidel, označte jej a pomocí tlačítek „^“ a „v“ jej přesuňte na požadované místo.


Editování kontextů

Pro práci s kontexty (vkládání, mazání, editování, ...) platí obdobná pravidla jako pro práci s pravidly (včetně vzhledu obrazovky) s tím rozdílem, že kontexty nemají závěr.


Editování integritních omezení

Pro práci s integritními omezeními (vkládání, mazání, editování, ...) platí obdobná pravidla jako pro práci s pravidly (včetně vzhledu obrazovky).


Kontrola báze

Kontrolu báze spustíte z hlavního menu příkazem Kontrola / Kontrola báze.

Při kontrole báze probíhají následující podúlohy:

  • Kontrola ID - zda se v bázi nevyskytují prvky se stejnými identifikátory (kromě výroků).
  • Kontrola cyklů - zda se v bázi nevyskytují cykly v pravidlech.
  • Kontrola dotazů - zda se výroky odvozené od jednoho atributu nevyskytují jednou jako dotaz a podruhé jako mezilehlý výrok.


Báze znalostí

Prvky báze znalostí

Báze znalostí v sobě zahrnuje výše uvedených 5 „tříd znalostí“ (atributy, výroky, pravidla, kontexty, integritní omezení). Dále obsahuje tyto globální vlastnosti:

  • popis báze;
  • jméno experta, od něhož byly získány znalosti obsažené v bázi;
  • jméno znalostního inženýra, který bázi sestavil;
  • datum vytvoření báze;
  • rozsah vah;
  • globální práh platnosti kontextů;
  • globální práh platnosti předpokladů;
  • standardní inferenční mechanismus;
  • standardní implicitní váha výroků;
  • globální priorita.

Báze znalostí je uložena v souboru, jehož syntaxe je založená na jazyku XML.

Základní syntaxe báze

 <base>
  <global>
  ...
  </global>
  <attributes>
  ...
  </attributes>
  <contexts>
  ...
  </contexts>
  <rules>
   <apriori_rules>
   ...
   </apriori_rules>
   <logical_rules>
   ...
   </logical_rules>
   <compositional_rules>
   ...
   </compositional_rules>
  </rules>
  <integrity_constraints>
  ...
  </integrity_constraints>
</base>

Syntaxe globální vlastností

<global>
 <description> string </description> <!-- baze -->
 <expert> string </expert> <!-- jméno experta -->
 <knowledge_engineer> string </knowledge_engineer> <!-- jméno znalostního inženýra -->
 <date> date </date> <!-- datum vytvoření báze -->
 <inference_mechanism>standard | logical | neural | hybrid</inference_mechanism> <!-- inferenční mechanismus -->
 <slope> number </slope> <!-- strmost nelinearity pro neuronový IM -->
 <weight_range> number </weight_range> <!-- rozsah vah -->
 <default_weight>unknown | irrelevant</default_weight><!-- implicitní váha výroků -->
 <global_priority>first | last | minlength | maxlength | type | user</global_priority><!-- globální priorita -->
 <context_global_threshold> number </context_global_threshold> <!-- globální práh platnosti kontextů -->
 <condition_global_threshold> number </condition_global_threshold> <!-- globální práh platnosti předpokladů -->
</global>

Syntaxe atributů

<attribute>
 <id> string </id>
 <name> string </name>
 <type>binary | single | multiple | numeric</type>
 <scope>case | environment</scope> <!-- case - atribut ke konkretnimu pripadu ; environment - atribut prostredi (pri nulovani se nemusi mazat, zatim bych pouzival jen case -->
 <sources>
  <source>
   <source_type>infer | user | external_file | external_function</source_type>
   <source_file> string </source_file>
   <function> string </function>
   <parameters> string </parameters>
  </source>
  ...
 </sources>
 <comment> string </comment>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
   <action_threshold> string </action_threshold>
  </action>
 </actions>

 <propositions><!-- není u binární atributů -->
  <proposition>
   <id> string </id>
   <name> string </name>
   <weight_function><!-- pouze u numerických atributů -->
    <fuzzy_lower_bound> number </fuzzy_lower_bound>
    <crisp_lower_bound> number </crisp_lower_bound>
    <crisp_upper_bound> number </crisp_upper_bound>
    <fuzzy_upper_bound> number </fuzzy_upper_bound>
   </weight_function>
   <comment> string </comment>
   <actions>
    <action>
     <function>string</function>
     <parameters>string</parameters>
     <action_threshold> string </action_threshold>
    </action>
   </actions>
  </proposition>
  ...
 </propositions>
</attribute>

Syntaxe pravidel

Apriori pravidla

<apriori_rule>
 <id> string </id>
 <priority> number </priority>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
  </action>
 </actions>
 <comment> string </comment>
</apriori_rule>

Logické a kompozicionální pravidla

<logical_rule> / <compositional_rule>
 <id> string </id>
 <priority> number </priority>
 <id_context> string </id_context>
 <context_threshold> number </context_threshold>
 <condition_threshold> number </condition_threshold>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <actions>
  <action>
   <function> string </function>
   <parameters> string </parameters>
  </action>
 </actions>
 <comment> string </comment>
</logical_rule> / </compositional_rule>

Syntaxe kontextů

<context>
 <id> string </id>
 <comment> string </comment>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
</context>

Syntaxe integritních omezení

<integrity_constraint>
 <id> string </id>
 <name> string </name>
 <condition>
  <conjunction>
   <literal>
    <id_attribute> string </id_attribute>
    <id_proposition> string </id_proposition>
    <negation> binary </negation>
   </literal>
   ...
  </conjunction>
  ...
 </condition>
 <conclusions>
  <conclusion>
   <id_attribute> string </id_attribute>
   <id_proposition> string </id_proposition>
   <negation> binary </negation>
   <weight> number </weight>
  </conclusion>
  ...
 </conclusions>
 <comment> string </comment>
</integrity_constraint>


Editování Atributů a výroků

Spuštění editace atributů a výroků

Editování atributů a výroků spustíte v hlavním menu příkazem Edituj / Atributy a výroky. Druhou možností je poklepat levým tlačítkem myši na okno s výpisem atributů nebo výroků (Tím se vám zároveň zobrazí atribut či výroky, na který jste poklepali).

Vkládání nových atributů

Nový atribut do báze vložíte na obrazovce editace atributů pomocí menu Akce / Nový atribut nebo stisknutím tlačítka Nový atribut vedle okna s výpisem atributů. V následujícím dialogovém okně musíte vybrat jaký atribut chcete vložit - binární, single, multiple nebo numerický. Po stisknutí tlačítka OK se daný atribut vytvoří, přiřadí se mu ID „New_attribute“ a je zařazen na konec seznamu atributů. Zároveň je tento atribut označen, takže můžete přímo upravovat jeho vlastnosti.

Upravování vlastností atributu

Aby bylo možné upravovat vlastnosti atributu, musí být tento atribut označen - klikněte levým tlačítkem myši na příslušný atribut v okně výpisu atributů na obrazovce editace atributů (pokud atribut zatím neexistuje, musíte jej nejprve vložit). Po označení atributu se jeho vlastnosti objeví na pravém horním panelu, kde je můžete upravovat.

ID označuje identifikátor atributu. Identifikátor musí být jedinečný pro celou bázi znalostí. Uživatel tento identifikátor neuvidí, pokud bude uvedeno jméno atributu. Identifikátor musí být uveden.

Jméno udává, pod jakým jménem se bude atribut objevovat uživateli. Mělo by být též jedinečné, nicméně z pohledu systému již tato jedinečnost není vyžadována. Pokud není jméno uvedeno, systém za něj automaticky doplní ID atributu.

Komentář může obsahovat bližší popis či vysvětlení atributu. Tento údaj není povinný.

Rozsah udává, zda se jedná o případový či obecný atribut.

Dolní a horní mez lze zadat pouze u numerických atributů a udává interval hodnot, kterých může atribut nabývat. Pokud mez není uvedena, atribut může nabývat libovolných hodnot. (případně může být uvedena jen jedna mez.)

Dále je na tomto panelu zobrazen typ atributu (v pravém horním rohu) a počet akcí a počet zdrojů definovaných pro daný atribut (v pravém dolním rohu).

Odstranění atributu

Atribut je možné odstranit na obrazovce editace atributů. Nejprve je třeba atribut označit (klikněte levým tlačítkem myši na příslušný atribut v okně výpisu atributů), a pak spustit příkaz pomocí menu Akce / Smaž atribut, nebo stisknou tlačítko Smaž atribut vedle okna s výpisem. Systém si vyžádá potvrzení o smazání atributu a po jeho potvrzení ho definitivně odstraní z báze.

Pořadí atributů v bázi

Pořadí atributů v bázi znalostí není zcela bez významu, ale ovlivňuje některé odvozovací mechanismy - při vyhodnocování cílů jsou nejprve vyhodnocovány ty výroky, které jsou odvozeny od atributů uvedených v bázi dříve. Na celkový výsledek však pořadí atributů nemá vliv.

Pokud chcete změnit pořadí atributů, resp. přesunout určitý atribut nahoru nebo dolů ve výpisu atributů, označte tento atribut a pomocí tlačítek „^“ a „v“ ho přesuňte na požadované místo.

Vkládání nových výroků

Nové výroky lze vytvářet pouze od single, multiple a numerických atributů. Od binárních atributů je automaticky vytvořen jeden výrok, který přebírá ID, jméno a komentář od atributu. Pro vložení nového výroku musí být označen atribut, od kterého má být výrok odvozen.

Pro vložení nového výroku zvolte v menu příkaz Akce / Nový výrok nebo stiskněte tlačítko Nový výrok vedle výpisu výroků. Novému výroku je přiřazeno ID „New_proposition“ a je zařazen na konec seznamu výroků. Nový výrok je automaticky označen a je možné editovat jeho vlastnosti.

Upravování vlastností výroků

Aby bylo možné upravovat vlastnosti výroku, musí být tento výrok označen - klikněte levým tlačítkem myši na příslušný výrok v okně výpisu výroků na obrazovce editace atributů a výroků (pokud výrok zatím neexistuje, musíte jej nejprve vložit) a zároveň musí být označen atribut, od něhož je výrok odvozen. Po označení výroku se jeho vlastnosti objeví na pravém dolním panelu, kde je můžete upravovat. (U binárního výroku nelze jeho vlastnosti upravovat, neboť tento výrok přebírá všechny vlastnosti od atributu.)

ID označuje identifikátor výroku. Identifikátor musí být jedinečný v rámci daného atributu, může však být stejný jako identifikátor výroku odvozeného od jiného atributu. Uživatel tento identifikátor neuvidí, pokud bude uvedeno jméno výroku. Identifikátor musí být uveden.

Jméno udává, pod jakým jménem se bude výrok objevovat uživateli. Pokud není jméno uvedeno, systém za něj automaticky doplní ID výroku.

Komentář může obsahovat bližší popis či vysvětlení výroku. Tento údaj není povinný.

Meze fuzzy intervalu (fuzzy lower, crisp lower, crisp upper, fuzzy upper) lze zadat pouze u numerických výroků. Tyto meze udávají podobu fuzzy intervalu pro převod hodnoty atributu na váhu výroku.

Dále je na tomto panelu zobrazen počet akcí definovaných pro daný výrok (v pravém dolním rohu).

Odstranění výroku

Výrok je možné odstranit na obrazovce editace atributů a výroků. Nejprve je třeba výrok označit (klikněte levým tlačítkem myši na příslušný výrok v okně výpisu atributů), a pak spustit příkaz pomocí menu Akce / Smaž výrok, nebo stisknou tlačítko Smaž výrok vedle okna s výpisem. Systém si vyžádá potvrzení o smazání výroku a po jeho potvrzení ho definitivně odstraní z báze.

Pořadí výroků v bázi

Význam pořadí výroků v bázi je stejný jako význam pořadí atributů. Pořadí lze měnit označením příslušného výroku a stiskem tlačítka „^“ nebo „v“ pro přesun nahoru a dolů.

Úprava akcí

Akce lze přidávat jak k atributům, tak k výrokům, přičemž platí, že každému výroku se přiřadí akce, které jsou definovány u tohoto výroku a u atributu, od kterého je výrok odvozený (jinak řečeno akce definované u atributu se přiřadí všem výrokům, které jsou od něj odvozeny).

Pro úpravu akcí stiskněte tlačítko Uprav pod nápisem Počet akcí u příslušného atributu či výroku. Tím se vám zobrazí obrazovka pro upravování akcí.

Novou akci vložíte pomocí tlačítka Přidej akci, označenou akci lze odebrat pomocí tlačítka Odstraň akci (systém zde nevyžaduje potvrzení a akce je rovnou odstraněna). Vlastnosti označené akce lze měnit na pravém panelu:

  • Exe soubor uvádí spustitelný soubor (soubor, který se spustí při volání této akce) dané akce. Lze jej vyhledat pomocí standardního dialogového okna stiskem tlačítka ....
  • Parametry pro spuštění programu jsou připojeny za exe soubor při spouštění souboru.
  • Práh platnosti akce uvádí váhu, kterou minimálně musí daný výrok nabýt (jeho minimální váha), aby akce byla spuštěna. Pokud není práh uveden, dosadí se za něj 0.

Úprava zdrojů

Pro úpravu zdrojů stiskněte tlačítko Uprav pod nápisem Počet zdrojů u příslušného atributu. Tím se vám zobrazí obrazovka pro upravování zdrojů.

Pro každý atribut může být definováno více zdrojů, přičemž další zdroj v pořadí je použit v tom případě, že předcházející selhal (soubor či externí funkce nejsou nalezeny, uživatel odpověděl „nevím“, ...). Nový zdroj vložíte pomocí tlačítka Přidej zdroj, označený zdroj odeberete pomocí tlačítka Smaž zdroj. Vlastnosti označeného zdroje lze měnit na pravém panelu:

  • Typ udává, o jaký zdroj se jedná - odvozování, uživatel (dotaz na uživatele), soubor (načtení hodnoty z uvedeného souboru), funkce (spuštění externí funkce a načtení hodnoty ze souboru).
  • Soubor (u posledních dvou typů zdrojů) udává soubor, ze kterého se má načíst hodnota. Hodnota se načítá z prvního řádku příslušného (textového) souboru.
  • Exe soubor (u posledního typu zdroje) udává soubor funkce, která má být zavolána.
  • Parametry (u posledního typu zdroje) se kterými bude zavolána externí funkce.


Editování pravidel

Spuštění editace pravidel

Editování pravidel spustíte v hlavním menu příkazem Edituj / Pravidla. Druhou možností je poklepat levým tlačítkem myši na okno s pravidel (Tím se vám zároveň zobrazí pravidlo, na který jste poklepali).

Vkládání nových pravidel

Nové pravidlo do báze vložíte na obrazovce editace pravidel stisknutím tlačítka Nové pravidlo v pravém dolním rohu obrazovky. V následujícím dialogovém okně musíte vybrat jaké pravidlo chcete vložit - apriori, logické nebo kompozicionální. Po stisknutí tlačítka OK se dané pravidlo vytvoří, přiřadí se mu ID „New_rule“ a je zařazeno na konec seznamu pravidel. Zároveň je toto pravidlo označeno, takže můžete přímo upravovat jeho vlastnosti.

Upravování vlastností pravidel

Aby bylo možné upravovat vlastnosti pravidla, musí být toto pravidlo označeno - klikněte levým tlačítkem myši na příslušné pravidlo v okně výpisu pravidel na obrazovce editace pravidel (pokud pravidlo zatím neexistuje, musíte jej nejprve vložit). Po označení pravidla se jeho vlastnosti objeví na pravých panelech, kde je můžete upravovat.

Vlastnosti jsou rozděleny do třech panelů. Nad těmito panely je textové okno, ve kterém se objevuje dané pravidlo zapsáno do jednoho řetězce (tento řetězec se objevuje i ve výpisu pravidel za identifikátorem). V levém horním panelu lze zadávat předpoklad pravidla (apriori pravidlo nemá předpoklad), v dolním panelu lze zadávat závěr pravidla a v pravém horním panelu obecné vlastnosti pravidla.

Předpoklad pravidla má disjunktivní normální formu. To znamená, že je tvořen disjunkcí jednotlivých výroků či konjunkcí výroků. Chcete-li vložit do předpokladu nový výrok, vyberte tento výrok v rozbalovacím okně na panelu předpokladů a stiskněte tlačítko s šipkou pod tímto oknem, nebo daný výrok přetáhněte pomocí myši na slovo Předpoklad. Konjunkci lze do předpokladu vložit stisknutím tlačítka &. Výroky do konjunkce se vkládají stejným způsobem jako do disjunkce (do předpokladu), pouze před stisknutím šipky označte příslušnou konjunkci (resp. přetáhněte výrok na příslušnou konjunkci). Označený výrok či konjunkci lze smazat stisknutím tlačítka s křížkem. Chcete-li vložit negaci výroku, označte po vložení tento výrok a zaškrtněte políčko Negace.

U logických pravidel lze navíc zadat práh platnosti předpokladu. Tento práh označuje váhu, kterou musí předpoklad nabýt (jeho minimální váha), aby byl splněn. Pokud tento práh není zadán, je použit globální práh platnosti zadávaný v globálních vlastnostech báze.

Závěr pravidla je tvořen jedním nebo více výroky. Výrok přidáte mezi závěry tím, že ho označíte v seznamu Možné závěry a stiskem tlačítko s šipkou vpravo ho přemístíte mezi Vybrané závěry (lze jej také z jednoho sloupce do druhého přetáhnout pomocí myši). Obdobným způsobem můžete vybraný závěr odstranit. Pokud má být v závěru negace výroku, označte tento výrok a zaškrtněte políčko Negace.

U kompozicionálních a apriorních pravidel je navíc potřeba zadat Váha příslušného závěru. (Tato váha vlastně vyjadřuje, jak je toto pravidlo spolehlivé.) Váhu lze zadat i zápornou, výsledek je však stejný jako kladná váha a negace.

Obecné vlastnosti pravidla:
ID označuje identifikátor pravidla. Identifikátor musí být jedinečný pro celou bázi znalostí a musí být uveden.

Priorita musí být číslo mezi 0 a 1. Čím vyšší je číslo, tím dříve přijde pravidlo na řadu, pokud systém vybírá z více použitelných pravidel. Pokud priorita není uvedena, použije se hodnota -1.

Komentář slouží pouze pro tvůrce báze, pokud si potřebuje k pravidlu něco poznamenat. Uživatel tento komentář neuvidí.

Kontext (u kompozicionálních a logických pravidel) uvádí identifikátor kontextu, který je pravidlu přiřazen. Kontext se vybírá ze seznamu kontextů v bázi a je proto nutné, aby byl nejprve vytvořen. U kontextu je možné zadat práh platnosti kontextu udávající váhu, kterou musí kontext nabýt, aby bylo pravidlo aplikováno. Pokud práh není zadán, je použit globální práh platnosti kontextů z globálních vlastností báze.

Počet akcí ukazuje, kolik akcí je přiřazeno tomuto pravidlu.

Odstranění pravidla

Pravidlo je možné odstranit na obrazovce editace pravidel. Nejprve je třeba pravidlo označit (klikněte levým tlačítkem myši na příslušné pravidlo v okně výpisu pravidel), a pak stisknou tlačítko Smaž pravidlo v pravém dolním rohu obrazovky. Systém si vyžádá potvrzení o smazání pravidla a po jeho potvrzení ho definitivně odstraní z báze.

Pořadí pravidel v bázi

Pořadí pravidel v bázi znalostí není zcela bez významu, ale ovlivňuje některé odvozovací mechanismy - pokud může systém použít více pravidel v jeden okamžik, systém použije nejprve pravidlo uvedené dříve v bázi (je-li zadána priorita pravidel - od začátku) či později v bázi (je-li zadána priorita pravidel - od konce). Na celkový výsledek však pořadí pravidel nemá vliv.

Pokud chcete změnit pořadí pravidel, resp. přesunout určité pravidlo nahoru nebo dolů ve výpisu pravidel, označte jej a pomocí tlačítek „^“ a „v“ jej přesuňte na požadované místo.

Úprava akcí

Pro upravování akcí u pravidel platí stejná pravidla jako pro upravování akcí u atributů, pouze se u akce nezadává práh platnosti akce, neboť akce je spuštěna vždy, když je splněn předpoklad pravidla.


Nastavení Editoru

Spuštění nastavení

Nastavení editoru vyvoláte z hlavní obrazovky pomocí hlavního menu Nastavení / Nastavení ...

Veškeré změny v nastavení se provedou až po stisknutí tlačítka OK. Při stisknutí tlačítka Storno se všude nastaví původní hodnoty.

Záložka Obecné

Na této záložce se nalézají dvě volby: jazyk a implicitní znaková sada.

Jazyk systému udává, v jakém jazyce bude systém komunikovat s uživatelem. Na výběr je čeština a angličtina. Jazyková volba neovlivní syntaxi báze znalostí, která zůstává vždy stejná (založená na angličtině).

Implicitní znaková sada udává, v jaké znakové sadě bude uložena báze znalostí. Tuto znakovou sadu nelze volit libovolně, ale musí odpovídat znakové sadě, kterou používá operační systém. Pro české prostředí ve Windows je tato znaková sada „windows-1250“.

Záložka Tlačítkové lišty

Na této záložce je možné nastavit, jaké tlačítkové lišty (soubor tlačítek v horní části obrazovky pod hlavním menu) mají být viditelné na hlavní obrazovce. Práce se souborem obsahuje tlačítka pro založení nové báze, otevření báze a uložení báze, Tlačítka pro kontrolu obsahuje tlačítko pro spuštění kontroly báze a Práce s okny obsahuje tlačítka pro uspořádání jednotlivých oken báze do kaskády, nebo jako horizontální či vertikální dlaždice.

Záložka Adresáře

Na této záložce se nalézají 4 pole, do kterých se zadávají příslušné adresáře. Zadání těchto adresářů není pro systém nezbytné, ale může výrazně zpříjemnit práci. První 3 z těchto adresářů lze zadávat také v nastavení samotného systému NEST, kde jsou popsané.

Poslední pole je pak Adresář s programem NEST, které udává adresář, ve kterém se nachází soubor „NEST.exe“ - soubor pro spuštění systému. Pokud je tento adresář nastaven, lze NEST spustit z hlavní obrazovky pomocí hlavního menu Nástroje - NEST. Adresář se automaticky nastaví při spuštění NESTu jiným způsobem.

Všechny adresáře lze zadat buďto přímo, nebo stiskem tlačítka vedle příslušného editačního pole a vybrání adresáře v dialogovém okně.


Nastavení systému

Spuštění nastavení

Nastavení systému vyvoláte z úvodní obrazovky pomocí hlavního menu Nastavení / Nastavení ...

Veškeré změny v nastavení se provedou až po stisknutí tlačítka OK. Při stisknutí tlačítka Storno se všude nastaví původní hodnoty.

Záložka Obecné

Na této záložce se nalézají dvě volby: Počet desetinných míst a jazyk.

Počet desetinných míst udává, s kolika desetinnými místy bude systém pracovat. Toto nastavení se projeví jak na vnitřní práci systému - zaokrouhlování systému, výpis výsledků, ... - tak na externích souborech - ukládání odpovědí či báze znalostí (v editoru).

Jazyk systému udává, v jakém jazyce bude systém komunikovat s uživatelem. Na výběr je čeština a angličtina. Jazyková volba neovlivní syntaxi báze znalostí, která zůstává vždy stejná (založená na angličtině).

Záložka Adresáře

Na této záložce se nalézají 4 pole, do kterých se zadávají příslušné adresáře. Zadání těchto adresářů není pro systém nezbytné, ale může výrazně zpříjemnit práci.

Adresář se souborem „base.dtd“ udává adresář, ve kterém se nachází tento soubor. Soubor je systémem vyžadován při každém nahrávání báze znalostí a pokud tento adresář není zadán, musí se soubor vždy nalézat ve stejném adresáři jako otevíraná báze.

Adresář se souborem „answers.dtd“ udává adresář, ve kterém se nachází tento soubor. Se souborem „answers.dtd“ je to podobné jako ze souborem „base.dtd“, ale systém ho vyžaduje, pokud nahrává odpovědi uložené v předchozí konzultaci.

Adresář se znalostními bázemi je adresář, ve kterém jsou na daném počítači uloženy báze znalostí. Pokud je tento adresář uveden, systém ho nastaví jako výchozí při nahrávání báze a urychlí tak hledání požadované báze znalostí.

Adresář s NEST Editorem je adresář, ve kterém se nachází soubor „NEST_Editor.exe“ - program pro tvorbu a editování bází. Pokud je tento adresář nastaven, lze NEST Editor spustit z úvodní obrazovky pomocí hlavního menu Nástroje - NEST Editor. Adresář se automaticky nastaví při spuštění Editoru jiným způsobem.

Všechny adresáře lze zadat buďto přímo, nebo stiskem tlačítka vedle příslušného editačního pole a vybrání adresáře v dialogovém okně.

Záložka Barvy

Na této záložce je možno nastavit 3 barvy textu, které se používají při zobrazování výsledků konzultace.

Základní barva se použije pro text vždy, když není důvod použít jiné možnosti.

Barva pro Kladné výsledky se použije pro všechny výsledky, jejichž minimální váha se dostala do kladných hodnot.

Barva pro Záporné výsledky se použije pro všechny výsledky, jejichž maximální váha se dostala do záporných hodnot.

Záložka Zdroje

Na této záložce je jediná volba: Maximální doba běhu externí funkce. Ta udává dobu (v milisekundách), jak dlouho bude maximálně systém čekat na ukončení externí funkce sloužící jako zdroj odpovědi. Pokud do té doby funkce neskončí, program přestane čekat a přejde automaticky k dalšímu možnému zdroji.

Pokud není zaškrtnuté levé políčko, program bude čekat stále (pokud nebude přerušen uživatelem stiskem tlačítka „Storno“).


Nejjednodušší průběh konzultace

Nahrání báze

Bázi znalostí nahrajete na úvodní obrazovce pomocí hlavního menu Báze / Nahraj bázi nebo pomocí tlačítka na úvodní obrazovce Nahraj bázi. Po potvrzení standardního dialogového okna pro otevírání souborů se systém pokusí nahrát vybranou bázi. Pokud systém úspěšně nahraje bázi, objeví se její jméno (resp. jméno souboru) vedle nápisu Aktuální báze a popis báze se objeví v textovém poli Popis báze. Pod popisem se dále objeví jméno experta, od kterého byly získány znalosti obsažené v bázi, jméno znalostního inženýra, který bázi sestavil a datum vzniku báze. Pokud se báze nedá nahrát, systém oznámí důvod neúspěchu při nahrávání báze a obě pole zůstanou prázdná.

Systém dokáže nahrávat báze znalostí, které jsou uloženy v souboru založeném na jazyce XML a jehož syntaxe odpovídá syntaxi báze znalostí. Aby báze mohla být úspěšně nahrána, je třeba, aby byl k dispozici soubor „base.dtd“. Podle tohoto souboru probíhá částečná kontrola syntaxe báze znalostí. Tento soubor musí být uložen ve stejném adresáři, jako je uložena nahrávaná báze znalostí, nebo musí být zadán „Adresář se souborem base.dtd“ v nastavení systému. Bez tohoto souboru systém nemůže nahrát žádnou bázi znalostí.

Pokud nahrajete bázi znalostí ve chvíli, kdy v systému již je nahraná jiná báze znalostí, je tato báze automaticky odstraněna. To znamená, že v systému může být nahrána v jeden okamžik maximálně jedna báze.

Spuštění konzultace

Konzultaci je možné spustit pouze v okamžiku, kdy je v systému nahraná báze znalostí.

Konzultaci spustíte na úvodní obrazovce pomocí hlavního menu Báze / Konzultuj nebo pomocí tlačítka Konzultuj na pravé straně obrazovky.

Po spuštění konzultace se objeví obrazovka s nastavením konzultace. Pro nejjednodušší typ konzultace není potřeba nic upravovat a je možno konzultaci zahájit stiskem tlačítka OK na pravé straně obrazovky. Těmito nastaveními se budeme podrobně zabývat až při složitějších způsobech konzultace v příští kapitole.

Po zahájení konzultace systém začne zjišťovat váhy jednotlivých cílových výroků (cílů) a začne pokládat uživateli dotazy, které k těmto cílům vedou.

Dotaz na atribut

Pokud systém při odvozování cílů narazí na atribut, jehož váha je potřeba ke zjištění některého cíle a nedá se odvodit z jiných výroků, položí uživateli dotaz na tento atribut. Existují 4 typy dotazů:

  • dotaz na binární atribut;
  • dotaz na single atribut;
  • dotaz na multiple atribut;
  • dotaz na numerický atribut.

Dotaz na binární atribut: systém se zeptá „jaká je váha binárního atributu“ a doplní jméno atributu a jeho popis. Uživatel pak musí zadat váhu tohoto atributu (resp. váhu odpovědi „Ano“) vedle nápisu Váha. Váhou se rozumí číslo z rozmezí uvedeného dole na obrazovce (toto rozmezí bývá stejné pro celou bázi znalostí, v různých bázích se však může lišit). Čím je číslo více nad nulou, tím se odpověď vzdaluje od odpovědi „irelevantní“ a blíží k odpovědi „jistě ano“, čím je číslo více pod nulou, tím se odpověď více blíží k „jistě ne“.

Po zapsání váhy je třeba ji potvrdit stiskem klávesy Enter nebo stiskem tlačítka Potvrdit odpověď v pravé části obrazovky.

Alternativou k přímému zapsání váhy je použít některou z předdefinovaných odpovědí stiskem příslušného tlačítka na pravé straně obrazovky. Odpověď Jistě ano nahrazuje zapsání maximální váhy z rozsahu, odpověď Jistě ne nahrazuje zapsání minimální váhy z rozsahu, odpověď Irelevantní nahrazuje zapsání nuly. Odpověď Nevím se nedá pomocí váhy zapsat a je třeba použít toto tlačítko. Nahrazuje tím vlastně zapsání všech vah z celého intervalu.

Tlačítko Odložit odpověď odsune zodpovězení dotazu na pozdější dobu. Jeho použití bude blíže vysvětleno ve složitějších způsobech konzultace.

Dotaz na single atribut: systém se zeptá „jaká je hodnota a váha single atributu“ a doplní jméno atributu a jeho popis. Uživatel musí nejprve vybrat odpověď v levém rozbalovacím okně a této odpovědi pak přiřadit váhu stejným způsobem, jako se přiřazuje váha u binárních atributů.

Dotaz na multiple atribut: systém se zeptá „jaké jsou hodnoty a váhy multiple atributu“ a doplní jméno atributu a jeho popis. Uživatel pak vybere hodnoty, u kterých chce zadat váhu, a přetáhne je z okna Přípustné hodnoty do okna Vybrané hodnoty. Každé vybrané hodnotě pak musí přiřadit nějakou váhu obdobně, jako tomu je při přiřazování váhy u binárního atributu. Přiřazená váha se objeví vedle odpovědi. Jednotlivým odpovědím lze opět přiřazovat váha i pomocí tlačítek, výjimkou je tlačítko Nevím, které tuto hodnotu přiřazuje celému atributu (nikoliv jen jedné hodnotě) a tím ukončí tento dotaz.

Dotaz na numerický atribut: systém se zeptá „jaká je hodnota numerického atributu“ a doplní jméno atributu a jeho popis. Uživatel pak musí zadat hodnotu tohoto atributu z rozmezí uvedeného dole na obrazovce. Toto rozmezí závisí na daném atributu (a je tím pádem pro každý atribut jiné).

Jakmile uživatel odpoví na dotaz, systém pokračuje v odvozování vah cílů. Pokud uživatel nechce pokračovat v konzultaci, může ji ukončit tak, že zavře okno dotazu pomocí křížku v pravém horním rohu.

Zobrazení výsledků konzultace

Jakmile systém dostane odpovědi na všechny dotazy, které potřebuje k odvození vah cílů, spočte výsledné váhy a zobrazí výsledky. Výsledky jsou zobrazovány v tabulce, kde pro každý výrok jsou uváděny tyto položky:

  • jméno výroku;
  • minimální váha výroku, tj. váha, kterou výsledný výrok minimálně nabývá;
  • maximální váha výroku, tj. váha, kterou výsledný výrok maximálně nabývá;
  • stav výroku ukazuje, v jakém stavu se výrok nachází po odvozování. Existují 4 stavy - nedotčený, částečný, finální a provizionální. Nedotčený znamená, že výrok vůbec nebyl při odvozování použit. Částečný znamená, že systém při odvozování na tento výrok narazil, ale při odvozování výsledků nakonec nebyl zcela potřeba, a tak jeho váha nemusí být dopočítána. Finální znamená, že tento výrok byl pro odvozování potřeba a že jeho váha má finální podobu. Provizionální znamená, že uživatel při některém dotazu odložil odpověď (viz složitější způsoby konzultace) a že po zodpovězení odložených odpovědí by se mohla váha tohoto výroku ještě změnit;
  • druh výroku ukazuje, jaké druhu výrok je. Výrok může být cíl, což jsou výroky, jejichž váhu se systém snaží určit, mezilehlý výrok, což je takový výrok, který je použit jak v předpokladu, tak v závěru nějakého odvozovacího pravidla, nebo dotaz, což je výrok, který se nevyskytuje v závěru žádného pravidla, takže pokud chce systém zjistit jeho váhu, musí se na něj zeptat uživatele.

Tabulka s výsledky může být setříděna podle libovolného z těchto pěti sloupců, stačí kliknout myší na záhlaví daného sloupce (při opětovném kliknutí na stejný sloupec se provede inverzní setřídění). Implicitně je tabulka setříděná podle minimálních vah výroků.

Pokud v tabulce označíte myší konkrétní výrok a k tomuto výroku existuje komentář, zobrazí se tento komentář na pravé straně v textovém poli Komentář.

V tabulce se implicitně objevují pouze cílové výroky. Pokud chcete zobrazit všechny výroku, přepněte přepínač Zobrazovat na položku Všechny výroky.

Pokud při odvozování došlo k porušení některého integritního omezení báze znalostí, zobrazí se toto integritní omezení v tabulce na pravé straně obrazovky (o tabulce platí obdobné věci jako o tabulce s výsledky). Porušení integritního omezení většinou znamená zásadní porušení logiky ve výsledcích odvozování a v komentáři tohoto integritního omezení by mělo být vysvětleno, jak se má uživatel zachovat, aby k tomuto porušení nedošlo.

Zobrazení výsledků ukončíte stiskem tlačítka Zavřít v pravém dolním rohu obrazovky. Tím je také ukončena celá konzultace.

Výsledky konzultace je možné exportovat do souborů. K tomu slouží tlačítko Export výsledků v pravém dolním rohu obrazovky. Po stisknutí tohoto tlačítka se objeví dialogové okno, ve kterém je možné zadat popis konzultace a je třeba vybrat typ souboru, do kterého se export provede (textový soubor nebo html soubor). Přepínačem Exportovat komentáře se určuje, zda se k jednotlivým výrokům mají připsat i jejich komentáře. Po potvrzení tohoto dialogového okna se zobrazí standardní dialogové okno pro ukládání souboru a po výběru souboru se provede export výsledků.


Práce s neurčitostí

Systém NEST pracuje s váhami, které vyjadřují neurčitost v bázi znalostí i neurčité odpovědi během konzultace. Zatímco váhy pravidel jsou zadávány pouze jednou hodnotou, během konzultace se používá pro vyjádření váhy interval. Váhy pravidel w (a případně i jednohodnotové odpovědi uživatele či jiných zdrojů) jsou převedeny na interval [w;w].

Pro práci s neurčitostí je definováno sedm funkcí (NEG, CONJ, DISJ, CTR, GLOB, NORM, IMP) definovaných na intervalu [-1;1] (funkce NORM je definovaná na množině reálných čísel). Pokud báze znalostí předpokládá jiný rozsah vah, jsou jednotlivé váhy na tento interval normovány.

V systému NEST jsou implementovány 4 typy práce s neurčitostí:

  • standardní;
  • logický;
  • neuronový;
  • hybridní.
Pět funkcí (NEG, CONJ, DISJ, NORM, IMP) je definováno pro všechny typy stejně, ve zbylých dvou jsou odlišnosti.

Funkce NEG

Funkce NEG slouží pro výpočet negace výroku. Je definována následovně:

NEG(w) = -w

resp. pro práci s intervalem [w1;w2]:

NEG([w1;w2]) = [-w2;-w1]

Funkce CONJ

Funkce CONJ slouží pro výpočet konjunkce dvou výroků. Je definována následovně:

CONJ(v,w) = min(v,w)

resp. pro práci s intervaly [v1;v2],[w1;w2]

CONJ([v1;v2],[w1;w2]) = [min(v1,w1); min(v2,w2)]

Funkce DISJ

Funkce DISJ slouží pro výpočet disjunkce dvou výrazů. Je definována následovně:

DISJ(v,w) = max(v,w)

resp. pro práci s intervaly [v1;v2],[w1;w2]

DISJ([v1;v2],[w1;w2]) = [max(v1,w1); max(v2,w2)]

Funkce CTR

Funkce CTR slouží pro výpočet příspěvku pravidla, resp. pro složení vah kontextu a předpokladu pravidla. Je definována následovně:

  • standardní, neuronový a hybridní typ neurčitosti:
    CTR(a,w) = 0       ; a ≤ 0
CTR(a,w) = a * w   ; a > 0
  • logický typ neurčitosti:
    CTR(a,w) = 0                              ; a < 0
CTR(a,w) = sign(w) * max(0,a + |w| - 1)   ; a ≥ 0

Pro práci s intervaly [a1;a2],[w1,w2] se pak používá výraz
CTR([a1;a2],[w1,w2]) = [CTR(a1,w1);CTR(a2,w2)]

Funkce GLOB

Funkce GLOB slouží pro skládání příspěvků více pravidel. Je definována následovně:

  • standardní typ neurčitosti
    GLOB(v,w) = 0                    ; (v = 1, w = -1) nebo (v = -1, w = 1)
GLOB(v,w) = (v + w)/(1 + v * w)  ; jinak
  • logický a hybridní typ neurčitosti
    GLOB(w1...wn) = min(Σw>0w ,1)  +  max(Σw<0w,-1)
  • neuronový typ neurčitosti
    GLOB(w1...wn) = min(max(sΣw, -1), 1)
     kde s je strmost nelinearity zadaná v bázi znalostí

Pro práci s intervaly [a1;a2],[w1,w2] se pak používá výraz
GLOB([a1;a2],[w1,w2]) = [GLOB(a1,w1);GLOB(a2,w2)]

Funkce NORM

Jediná funkce, která je definována i mimo interval [-1;1], slouží pro ořezávání vah právě na tento interval, pokud ho někde přesáhnout. Funkce je používána po výpočtu příspěvku kompozicionálního pravidla pomocí funkce CTR a po složení všech příspěvků pravidel u výpočtu váhy výroku pomocí funkce GLOB. Funkce je definována následovně:

NORM(w) := min(max(w,-rozsah), rozsah)

resp. pro práci s intervalem [w1;w2]:

NORM([w1;w2]) = [min(max(w1,-rozsah), rozsah); min(max(w2,-rozsah), rozsah)]

kde rozsah = 0,999 (resp. počet devítek za desetinnou čárkou odpovídá počtu desetinných míst, se kterými právě systém pracuje)

Funkce IMP

Funkce IMP je používána pro výpočet výsledné váhy integritního omezení. Rozhoduje tedy o tom, zda integritní omezení bylo porušeno či nikoliv a do jaké míry. Je definována následovně:

IMP(w,v) = 0                  ; w <= 0
IMP(w,v) = max(0, min(w - v)) ; w > 0

resp. pro práci s intervalem [w1;w2]:

IMP([w1;w2],[v1,v2]) = [max(0, w1 - v1); max(0, w2 - v2)]

kde w je váha předpokladu integritního omezení (případně upravená pomocí kontextu funkcí CTR) a v je váha jeho závěru.


Práce se soubory

Vytvoření nové báze

Novou bázi znalostí vytvoříte na hlavní obrazovce pomocí hlavního menu Soubor / Nový. Editor vytvoří novou bázi znalostí se jménem NONAME. Zároveň se spustí Obrazovka s globálním nastavením báze. Tuto obrazovku lze zavřít a kdykoliv později vyvolat a upravit, nicméně doporučuji co možná nejvíce hodnot zadat ihned po založení báze.

Otevření existující báze

Bázi znalostí lze otevřít na hlavní obrazovce pomocí hlavního menu Soubor / Otevři. Po vybrání souboru ve standardním dialogovém okně se systém pokusí otevřít danou bázi. Pokud se mu to podaří, zobrazí se okno báze na pracovní ploše. Pokud systém bázi nemůže otevřít, vypíše důvod, který mu v tom brání.

Systém dokáže nahrávat báze znalostí, které jsou uloženy v souboru založeném na jazyce XML a jehož syntaxe odpovídá syntaxi báze znalostí. Aby báze mohla být úspěšně nahrána, je třeba, aby byl k dispozici soubor „base.dtd“. Podle tohoto souboru probíhá částečná kontrola syntaxe báze znalostí. Tento soubor musí být uložen ve stejném adresáři, jako je uložena nahrávaná báze znalostí, nebo musí být zadán „Adresář se souborem base.dtd“ v nastavení systému. Bez tohoto souboru systém nemůže nahrát žádnou bázi znalostí.

V editoru může být v jeden okamžik otevřeno libovolné množství bází. Pro každou bázi je na pracovní ploše otevřeno nové okno.

Uložení báze

Bázi uložíte pomocí hlavního menu Soubor / Uložit. Pokud již báze má své jméno (resp. svůj soubor) je automaticky uložena pod tímto jménem. Pokud je báze ukládána prvně, je třeba nejprve vybrat příslušný soubor ve standardním dialogovém okně. Souboru je automaticky přidána koncovka „xml“.

Chcete-li bázi uložit pod jiným jménem (do jiného souboru), než je její stávající, zvolte příkaz v hlavním menu Soubor / Uložit jako a ve standardním dialogovém okně vyberte nový soubor.

Báze znalostí je ukládána do souboru založeném na jazyce XML a jeho syntaxe je popsána v kapitole „Báze znalostí“.

Export báze

Export báze slouží pro uložení báze do souboru tak, aby byl čitelný pro člověka. Takto uložená báze však nejde znovu nahrát do editoru.

Bázi je možné exportovat do dvou formátů. Prvním je textový soubor (příkaz v hlavním menu Soubor / Export / Soubor txt), druhým je html soubor (příkaz v hlavním menu Soubor / Export / Soubor html). U obou formátů se soubor exportuje po výběru požadovaného souboru ve standardním dialogovém okně.


Reprezentace znalostí

Úvod

Znalosti v systému NEST jsou reprezentovány pomocí:

  • atributů a od nich odvozených výroků;
  • pravidel;
  • kontextů;
  • integritních omezení.
O každé z těchto „tříd znalostí“ pojednává jedna následující sekci. Všechny tyto třídy jsou pak uloženy v tzv. bázi znalostí, o jejíž které se můžete dočíst v poslední sekci této podkapitoly.

Atributy a výroky

Atribut je určité tvrzení, se kterým systém dokáže pracovat. Existují čtyři typy atributů:

  • binární;
  • single;
  • multiple;
  • numerické.

Binární atributy jsou základním typem atributů. Je od nich odvozen právě jeden výrok se stejným jménem. Tento výrok, stejně jako atribut, od kterého je odvozen, pak nabývá určité váhy, která reprezentuje jeho „pravdivost“ (je-li váha maximální, výrok jistě platí, je-li váha minimální, výrok jistě neplatí). Váha je reprezentována pomocí intervalu, čímž je umožněno vyjadřovat i částečné znalosti o pravdivosti výroku.

Například pracujeme-li na váhovém rozsahu [-1;1] (pokud nebude řečeno jinak, bude ve všech následujících příkladech používán tento váhový rozsah), následující váhy znamenají toto:

  • [-1;-1] - výrok jistě neplatí (FALSE);
  • [ 1; 1] - výrok jistě platí (TRUE);
  • [-1; 1] - o výroku nevíme nic (UNKNOWN);
  • [ 0; 0] - výrok je irelevantní (IRRELEVANT).

Single atributy jsou atributy, které mohou nabývat právě jedné hodnoty z daného seznamu hodnot. Typickým příkladem může být například „typ účtu“ v bance. Od tohoto atributu je pak odvozeno právě tolik výroků, kolik je možných hodnot, kterých může atribut nabývat (výrok je již stejný, jako u binárního atributu). Pokud je atributu přiřazena nějaká hodnota (s váhou), tuto váho dostane jen příslušný výrok a všem ostatním výrokům je přiřazena váha „FALSE“.

Je-li například zadáno, že uživatel si založil běžný účet s vahou [0,6;0,6], pak všem ostatním typům účtu je přiřazena váha „FALSE“.

Multiple atributy jsou podobné „Single atributům“, jen mohou nabývat libovolného počtu hodnot z daného seznamu. Příkladem může být třeba atribut „světové jazyky, kterými člověk hovoří“. Od tohoto atributu je opět odvozeno tolik výroků, kolik je možných hodnot, které může atribut nabývat. Při přiřazení určitých hodnot atributu se přenese váha na příslušné výroky a hodnotám (resp. výrokům), kterým nebyla přiřazena žádná váha se pak přiřadí předem nastavená váha (UNKNOWN nebo IRRELEVNT).

Numerické atributy jsou atributy, které nabývají číselné hodnoty z předem zadaného rozmezí. Jako příklad lze uvést třeba „velikost platu“. Od tohoto atributu může být odvozeno libovolné množství výroků, přičemž každý výrok má zadanou váhovou funkci, která převede číselnou hodnotu na váhu.

Váhová funkce je zadávána pomocí fuzzy intervalu. Tento interval je určen čtyřmi čísly (fuzzy lower, crisp lower, crisp upper, fuzzy upper). Pokud je číselná hodnota mimo „fuzzy“ hranice, je výsledná váha „FALSE“, pokud je číselná hodnota uvnitř „crisp“ hranic, je výsledná váha „TRUE“. Pokud je číselná hodnota mezi hranicemi „fuzzy“ a „crisp“, je výsledná váha spočítána pomocí lineární funkce (horní i dolní číslo váhového intervalu je stejné). Názorně to ukazuje následující obrázek (fuzzy interval je zde zadán takto: [10, 20, 40, 40]):

Podle postavení lze výroky dělit na dotazy (výrok není v závěru žádného pravidla), mezilehlé výroky (výrok je v závěru i v předpokladu nějakého pravidla) a cíle (výrok není v předpokladu žádného pravidla). Pokud je výrok dotaz, musí být všechny výroky odvozené od stejného atributu také dotazy. Pokud není výrok použit ani v předpokladu ani v závěru pravidla, jedná se o tzv. osamocený výrok, který NEST zcela ignoruje.

Atributy můžeme dle rozsahu dělit na „obecné“a „případové“. Obecné atributy jsou ty atributy, které se vztahují (jak již jejich název napovídá) k prostředí, k věcem, které se mění jen výjimečně a není tedy nutné je zjišťovat pokaždé znovu. Jakmile systém jednou zjistí jejich hodnoty, zapamatuje si je a při dalších konzultacích se již na ně neptá (pokud k tomu není vyzván). Může se jednat například o průměrnou úrokovou míru za poslední rok - takovou proměnnou bude třeba změnit jednou za rok. Případové atributy jsou pak všechny ostatní, tj. ty, na které se systém ptá při každé konzultaci.

Hodnotu určitého atributu může systém získat z různých zdrojů. Standardně se systém snaží získat hodnoty „inferencí“ (odvozováním) pomocí pravidel, jedná-li se o cíle či mezilehlé atributu, nebo dotazem „od uživatele“, jedná-li se o dotaz. Dalším zdrojem může být „soubor“, jehož první řádek se systém pokusí interpretovat jako příslušnou hodnotu. Posledním zdrojem je pak externí funkce, která vytvoří soubor s příslušnou hodnotou, ze kterého je načtena. Tyto zdroje lze nastavit tak, aby v případě neúspěchu jednoho byl použit jiný. Poslední dva uvedené zdroje mohou být použity pouze pro binární a numerické atributy.

Akce je externí program, který je přiřazen určitému výroku. Pokud výrok nabude alespoň takové váhy, která je zadána u akce, je tento externí program spuštěn. Pokud je akce přiřazena atributu, efekt je stejný, jako by akce byla přiřazena každému výroku od daného atributu odvozenému.

Pravidla

Základní podoba pravidel v NESTu má tuto podobu:
kontext: IF předpoklad THEN závěr 1[váha 1],..., závěr n[váha n]

Kontext rozhoduje o tom, zda se dané pravidlo bude aplikovat či nikoliv. Blíže o něm se dozvíte v následující sekci.

Předpoklad pravidla je tvořen disjunkcí libovolného množství „výrazů“, přičemž „výrazem“ může být buď výrok nebo konjunkce výroků. Je-li předpoklad splněn, je závěru pravidla připočítán příslušný příspěvek tohoto pravidla. Aby byl předpoklad splněn, musí jeho celková váha (o jejím vypočítání viz podkapitola „práce s neurčitostí“) přesáhnout „práh platnosti předpokladu“, který se zadává pro logická pravidla, zatímco u kompozicionálních pravidel se rovná 0.

Závěr pravidla je tvořen výrokem a vahou, která slouží pro spočítání váhy výroku v závěru. Pokud má pravidlo více závěrů, výsledný efekt je stejný, jako by bylo vytvořeno více pravidel se stejnými předpoklady a příslušnými závěry.

Každé pravidlo může mít zadanou svou prioritu (číslo z intervalu [0;1]), podle které může být postupováno při výběru pravidel pro aplikaci při odvozování. (O odvozování blíže viz podkapitola „Inferenční mechanismus“.)

Pravidlu může být přiřazena akce stejně jako je tomu u výroku. Tato akce je spuštěna, jakmile je pravidlo „použito“, tj. předpoklad pravidla je splněn a jsou učiněny příslušné závěry.

Pravidla se dělí do třech základních typů:

  • apriori pravidla;
  • logická pravidla;
  • kompozicionální pravidla.

Apriori pravidla jsou taková pravidla, která platí vždy, tj. nemají předpoklad (ani kontext), resp. jako předpoklad je brána hodnota „TRUE“. Takováto pravidla slouží k tomu, potřebujeme-li vyjádřit „obecnou pravdu“.

Logická pravidla jsou pravidla, jejichž závěr nenabývá hodnot z celého intervalu [-1;1] (resp. [-rozsah vah; rozsah vah]), ale nabývá jen „logických hodnot“. Je-li předpoklad splněn (tj. pokud dolní hranice váhového intervalu přesáhne 0) je váha závěru „TRUE“ nebo „FALSE“, pokud předpoklad splněn není, váha závěru je „IRRELEVANT“.

Kompozicionální pravidla pracují na celém intervalu [-1;1] tak, jak je vysvětleno v podkapitole „práce s neurčitostí“.

Kontexty

Kontext rozhoduje o tom, zda se dané pravidlo, kterému je kontext přiřazen, aplikuje či nikoliv. Kontext má u každého pravidla zadaný svůj práh platnosti (pokud není zadaný, převezme se globální práh platnosti kontextů pro celou bázi) a pravidlo je aplikováno, pokud váha kontextu (resp. její horní hranice intervalu) přesáhne tento práh.

Kontext je tvořen, stejně jako předpoklad pravidla, disjunkcí libovolného množství „výrazů“, přičemž výrazem je opět míněn výrok či konjunkce výroků.

Integritní omezení

Integritní omezení mají stejnou podobu jako kompozicionální pravidla. Základní rozdíl je v tom, že integritní omezení se nepodílí na odvozování závěrů, ale je vyhodnocováno samostatně po skončení odvozování. Slouží jen jako kontrola toho, že závěry splňují jakési další požadavky. Pokud je integritní omezení splněno, systém to nedá nijak najevo. Pokud však splněno není, je uživatel upozorněn, že byly porušeny další omezení (a samozřejmě které).


Složitější možnosti průběhu konzultace

Nastavení konzultace

Pokud chcete použít nějaký složitější způsob konzultace, je třeba provést příslušná nastavení před zahájením konzultace. Po stisknutí tlačítka Konzultuj na úvodní obrazovce se objeví obrazovka Nastavení konzultace, kde se veškerá nastavení provádějí.

V horní části obrazovky je možné měnit cíle konzultace. Systém automaticky za cíle konzultace vybere ty výroky, které se vyskytují pouze v závěru pravidel. Tyto výroky se objeví v pravém sloupci Vybrané výroky. Pokud chcete jako cíl konzultace označit jiný výrok (například z důvodu urychlení konzultace), označte atribut, od kterého je výrok odvozen, v levém sloupci Atributy a příslušný výrok přemístěte z prostředního sloupce Možné výroky do pravého sloupce. Jako cíle však lze určovat jen mezilehlé výroky, tj. takové výroky, které se vyskytují v závěru alespoň jednoho pravidla.

Chcete-li libovolný vybraný cíl zrušit, přesuňte ho z pravého sloupce do prostředního.

V prostřední řádce obrazovky lze nalézt 4 volby pro konzultaci: Typ neurčitosti, priorita pravidel, implicitní váha a atributy s obecným rozsahem.

Typ neurčitosti určuje, jakou práci s neurčitostí bude systém při odvozování používat, tj. jak budou definovány jednotlivé funkce pro práci s neurčitostí. Bližší informace viz kapitola „Práce s neurčitostí“

Priorita pravidel určuje, v jakém pořadí bude systém zpracovávat pravidla, nastane-li situace, že jich může použít více najednou. Od začátku znamená, že systém dá přednost tomu pravidlu, které je v bázi znalostí uvedeno dříve, od konce znamená přesný opak. Minimální délka znamená, že systém použije nejprve pravidlo, které má kratší předpoklad, při maximální délce vezme nejprve pravidlo s delším předpokladem. Při volbě definovaná expertem budou brána pravidla v pořadí podle priority, kterou určil expert při tvorbě báze. Pokud tato priorita není u pravidel uvedena, systém se zachová jako při volbě od začátku.

Implicitní váha určuje, jakou váhu mají dostat výroky, kterým nebyla váha určena jinak (například výpočtem nebo dotazem). Tuto váhu dostanou například všechny výroky odvozené od multiple atributu, kterým uživatel v dotazu nepřiřadil jinou váhu. Implicitní váha může být buď neznámá, tj. váha [-1 ; 1] (upravená na rozsah příslušné báze), nebo irelevantní, tj. váha [0 ; 0].

Atributy s obecným rozsahem jsou atributy, které takto označil expert při tvorbě báze a které se vztahují (jak již jejich název napovídá) k prostředí, k věcem, které se mění jen výjimečně a není tedy nutné je zjišťovat znovu při každé konzultaci. Jejich hodnoty jsou vždy na konci konzultace automaticky uloženy do zvláštního souboru a při další konzultaci je možné tyto hodnoty použít - volba zachovat stávající. Při této volbě systém tyto dotazy nepokládá, ale použije příslušné hodnoty z předešlé konzultace. Při volbě vymazat jsou hodnoty z předešlé konzultace ignorovány a systém položí znovu všechny dotazy.

Ve spodní řádce obrazovky lze nalézt volbu pro způsob odpovídání a s ní související volbu pro typ konzultace. Způsob odpovídání dialog je klasická konzultace, kdy systém pokládá uživateli dotazy na hodnoty, které potřebuje pro odvození cílů. O dotazníku a nahrání odpovědí ze souboru bude pojednáno ve zvláštních sekcích, stejně jako o možnosti odkládání dotazů.

Dotazník

Dotazník je alternativou ke klasickému dialogu. Systém nepokládá dotazy uživateli postupně, jak je potřebuje pro odvozování cílů, ale předloží uživateli seznam všech dotazů, které se v bázi vyskytují, a uživatel má možnost odpovědět na otázky, které uzná za vhodné. Po potvrzení dotazníku pak systém z odpovědí odvodí takové závěry, které jsou možné a další dotazy už nepokládá, i když není schopen stanovit váhy cílů.

Dotazník se skládá ze dvou částí. V levé části obrazovky je tabulka, ve které jsou uvedeny všechny dotazy. Po označení určitého dotazu (klikněte myší na řádek tabulky s dotazem) se v pravé části obrazovky objeví stejné prvky jako při položení dotazu. Stejným způsobem se i zadává odpověď na dotaz. Po potvrzení odpovědi (klávesou enter nebo tlačítkem Potvrdit odpověď, nikoliv tlačítkem OK) se zadaná váha objeví v pravém sloupci tabulky a zároveň se v levém sloupci tabulky objeví „+“ symbolizující, že dotaz je zodpovězen.

Jednou zadanou váhu můžete kdykoliv změnit stejným způsobem, jakým jste zadávali váhu prvně. Pokud chcete odpověď zcela zrušit, klikněte do levého sloupce tabulky, čímž symbol „+“ zmizí (po opětovném klepnutí se opět objeví).

Ve třetím sloupci tabulky je uvedeno písmeno symbolizující typ dotazu, resp. atributu: b - binární, s - single, m - multiple, n - numerický.

Pro potvrzení a odeslání dotazníku stiskněte tlačítko OK na spodním okraji obrazovky. Pokud chcete dotazník zrušit (a s ním i celou konzultaci), stiskněte zavírací křížek v pravém horním rohu obrazovky.

Odpovídání pomocí dotazníku lze zkombinovat s klasickým dialogem (v nastavení konzultace zvolte volbu Dialog s dotazníkem ve Způsobu odpovídání). Systém nejprve zobrazí dotazník a po jeho odeslání se pokusí odvodit váhy všech cílů. Pokud se mu to nepovede, přejde na dialog a bude pokládat dotazy, dokud se mu nepovede odvodit všechny cíle.

Odkládání dotazů

Pokud je v nastavení konzultace u Typu konzultace označená možnost Odkládání, je možné v průběhu dialogu odložit libovolný dotaz. Takový dotaz dostane „neznámou“ váhu a je označen jako provizorní. Jako provizorní jsou označeny i všechny další výroky, které jsou v průběhu konzultace od něho odvozeny. Pokud uživatel není spokojen s výsledky, může stisknout tlačítko Pokračuj, které se objeví na obrazovce v pravém dolním rohu, a tím obnovit dialog. Systém mu znovu položí odložené dotazy a uživatel může jejich váhu upřesnit. V této obnovené konzultaci již znovu nelze dotazy odkládat.

Úprava odpovědí

Uživatel může po skončení konzultace a zobrazení výsledků upravit odpovědi na jednotlivé dotazy. Na obrazovce s výsledky konzultace je u pravého okraje tlačítko Úprava odpovědí, po jehož stisknutí je možné upravovat odpovědi. Úprava probíhá pomocí dotazníku (práce s dotazníkem byla popsána výše), ve kterém se zobrazí jednotlivé odpovědi. Po potvrzení dotazníku systém přepočítá váhy cílů a zobrazí znovu výsledky konzultace.

Uložení odpovědí a jejich načtení

Po skončení konzultace je možné uložit odpovědi do souboru, aby byli zachovány pro příští konzultace. Toto uložení se provede pomocí tlačítka Uložit odpovědi v pravém dolním rohu obrazovky s výsledky. Při ukládání je možné zadat popis této konzultace, který se pak zobrazí při nahrání odpovědí.

Načtení odpovědí se provádí v nastavení konzultace. Jako Způsob odpovídání je třeba vybrat volbu Nahrát odpovědi ze souboru a v políčku Soubor zadat příslušný soubor s odpověďmi. Po potvrzení nastavení konzultace (pomocí tlačítka OK) se systém pokusí načíst odpovědi a podaří-li se mu to, zobrazí tyto odpovědi v dotazníku, ve kterém se dají dále upravovat. Pod dotazníkem se objeví popis příslušné konzultace.

Při nahrávání odpovědí musí být ve stejném adresáři jako je soubor s odpověďmi uložen také soubor „answers.dtd“, podle kterého probíhá kontrola syntaxe odpovědí. Jako alternativa je možno v nastavení zadat na záložce Adresáře Adresář se souborem answers.dtd, a pak již soubor není vyžadován ve stejném adresáři.

Načítání odpovědí z jiných zdrojů

Systém nemusí vyžadovat všechny odpovědi od uživatele, ale může se pokusit získat váhy atributů i z jiných zdrojů, konkrétně ze souboru či externí funkce.

Při získávání váhy ze souboru uživatel vlastně nezjistí, že ke zjišťování váhy došlo. Pokud systém soubor nalezne a váhu z něj úspěšně přečte (váhu systém vždy čte z první řádky souboru, který musí být textový), pokračuje v odvozování výsledků a uživateli nedá najevo, že váha byla načítána. Pokud soubor nenalezne nebo nepřečte, použije další zdroj, který má zadaný (většinou se jedná o položení dotazu na uživatele).

Při získávání váhy z externí funkce systém zavolá externí program a čeká na jeho ukončení. Externí program musí vytvořit soubor, ze kterého je pak váha přečtena (stejným způsobem jako při získávání váhy ze souboru). Při běhu externí funkce je odvozování pozastaveno a čeká se na výsledek. Pokud externí funkce neskončí do předem zadané doby, kterou lze zadat v nastavení systému, systém použije další ze zadaných zdrojů. Čekání na ukončení externí funkce může přerušit i uživatel stiskem tlačítka Storno.

Jako zdroj může být v bázi znalostí u výroku zadán také „uživatel“. V takovém případě systém položí dotaz, a to i v tom případě, že by bylo možné váhu výroku odvodit z jiných. Pokud však uživatel zadá jako váhu „UNKNOWN“, tj. zmáčkne tlačítko Nevím nebo Odložit dotaz, pro zjištění váhy se použije další zdroj.

Spouštění akcí

V bázi znalostí může být nadefinováno, aby se v určitých případech spustila akce. Akcí je myšlen externí program, který systém spustí a dále se o něj nestará. Akce může být spuštěna, když je vyhodnocen nějaký výrok, nebo když je aplikováno nějaké pravidlo. Akce u výroků se zavolají v okamžiku, kdy je vyhodnocen (je mu přiřazen stav final). Navíc může být u akce nastaveno, že se má spustit pouze v případě, že váha tohoto výroku přesáhla určitou hodnotu (jedná se o minimální váhu výroku). Akce u pravidel se zavolají v okamžiku, kdy je pravidlo vyhodnoceno, tj. jsou známy všechny výroky v kontextu i v předpokladu pravidla a systém odvodil závěry.