Vysoká kola ekonomická v Praze Fakulta informatiky a statistiky Vyí odborná kola informaèních slueb
Vytvoøení aplikace pro snadnou tvorbu key intelligence topics Bakaláøská práce
2007
Martin Lisý
Prohláení Prohlašuji, že jsem bakalářskou práci na téma Vytvoření aplikace pro snadnou tvorbu „key intelligence topics“ zpracoval samostatně a použil pouze zdrojů, které cituji a uvádím v seznamu použité literatury.
V Praze dne 21. 5. 2007
Podpis:
Informace o firmì Tovek, spol. s r. o. Aplikace, kterou v této práci popisuji vznikla během mé studijní praxe ve firmě Tovek na podzim roku 2006. Tovek je česká soukromá firma, která se od svého založení v roce 1993 specializuje na vývoj, distribuci a implementaci profesionálních nástrojů k vyhledávání a analýze informací. Produkty a řešení této firmy umožňují vyhledávat, analyzovat, přehledně znázorňovat a přesně interpretovat klíčové informace pro všechny úrovně rozhodování v různých oborech podnikání.[14] Základní údaje o firmě Společnost byla zapsána do OR vedeného Městským soudem v Praze, oddíl C, vložka 23804, dne 26.10.1993 Název firmy: TOVEK, spol. s r.o. IČ: 49 68 79 81 DIČ: CZ 49 68 79 81 Statutární orgán: Ing. Tomáš Vejlupek, jednatel Registrované sídlo: U Nikolajky 820/4, 150 00 Praha 5 Hlavní provozovna: Chrudimská 1418/2, 130 00 Praha 3 Partneři firmy Technolgickými partnery jsou firmy, které ve svých oborech disponují špičkovými technologiemi. Patří k nim: Autonomy (dříve Verity) v oblasti vyhledávání informací v nestrukturovaných datech i2 v oblasti vizuální analýzy informací pro investigativu a zpravodajství Identity Systems v oblasti vyhledávání a porovnávání záznamů podle jmen a názvů TEMIS v oblasti Text Mining a získávání znalostí z nestrukturovaných textů Mondeca v oblasti reprezentace a organizace znalostí Ontopia v oblasti zpracování map námětů (Topic Maps) podle ČSN/ISO/IEC 13250 Guidance Software v oblasti forenzní analýzy počítačových dat SPSS v oblasti statistické analýzy dat a prediktivní analýzy transakcí. [14]
Zákazníci Mezi zákazníky firmy Tovek patří jak organizace ze státní správy a veřejné instituce, tak i významné společnosti z komerčního sektoru: ministerstva policie zpravodajská komunita veřejné instituce média finanční instituce telekomunikační operátoři auditorské a poradenské firmy poskytovatelé informačních služeb Prostřednictvím sítě svých zahraničních prodejců dodává firma vlastní produkty Tovek i zahraničním zákazníkům v Německu, Francii, Maďarsku, Rumunsku, Jihoafrické republice, Turecku a dalších zemích. [14] Cílem firmy je posilovat vedoucí postavení na českém trhu, uplatnit se na zahraničních trzích a být rovnocenným partnerem nejvýznamnějších firem na celosvětovém trhu. [14]
Obsah Anotace ...............................................................................................7 1 Key intelligent topics teoreticky ....................................................8 1.1 Význam competitive intelligence .....................................8 1.2 Proces tvorby KITs ......................................................................9 1.3 Funkce KITs ...................................................................10 1.4 Kategorie tvořící základní strukturu KITs ......................10 1.4.1 Předmět rozhodování ............................................11 1.4.2 Klíčoví hráči na trhu .............................................11 1.4.3 Výstražné KITs .....................................................12 1.4.4 Kontrazpravodajské KITs .....................................13 2. Key intelligence topics v praxi ...................................................14 2.1 Topic ...............................................................................14 2.2 Jazyk dotazů Verity.........................................................15 3 Představní Tovek Tools ................................................................19 3.1 Index Manager ................................................................19 3.2 Tovek Agent....................................................................19 3.3 Query Editor ...................................................................21 3.4 Tovek InfoRating ............................................................22 3.5 Popis tvorby kontextové analýzy....................................23 4 Návrh nového řešení ....................................................................24 5 Vlastní zpracování .......................................................................26 5.1 1. fáze – hrubý návrh uživatelského rozhraní ................26 5.1.1 Požadavky na formulář .........................................26 5.1.2 Navržení struktury jednotlivých témat................. 26
5
5.2. 2. fáze - tvorba obecných dotazovacích stromů v jazyce Verity ............................................................................29 5.2.1 Dotazovací strom pro téma osoba.........................29 5.2.2 Dotazovací strom pro téma firma .........................32 5.2.3 Dotazovací strom pro téma adresa .......................33 5.2.4 Dotazovací strom pro volné téma .........................34 5.2.5 Dotazovací strom pro oblast předem definovaných témat .....................................................................34 5.3 3.fáze – design formuláře a jeho propojení s dotazovacími stromy ...................................................35 5.3.1 Design webového formuláře .................................35 5.3.2 Skripty propojující formulář s připravenými dotazovacími stromy .....................................................37 5.3.3 Sestavení výsledného dotazovacího stromu a sady témat pro InfoRating..................................................... 40 6 Porovnání s původním řešením....................................................44 7 Seznam zdrojů..............................................................................49 8 Přílohy..........................................................................................52 8.1 Soubor form.php .............................................................52 8.2 Soubor funkce.php..........................................................58 8.3 Soubor result.php............................................................64 8.4 Soubor temata.txt............................................................68
6
Anotace Moje práce tématicky spadá do oblasti competitive intelligence. V úvodu vysvětluji, čím key intelligence topics jsou a jaký mají význam v kontextu competitive intelligence. Jejich praktické využití demonstruji v aplikaci Tovek Tools, vyvíjenou firmou Tovek, spol. s r. o. Tato aplikace slouží k tvorbě tzv. kontextových analýz dokumentů. V další části popisuji tuto aplikaci a způsob jejího fungování. Zmiňuji se o problémech, se kterými se potýkají méně zkušení uživatelé a zabývám se návrhem jejich řešení. Toto řešení spočívá ve vytvoření uživatelského rozhraní, které bude běžným uživatelům sloužit jako alternativa k dosavadnímu způsobu tvorby key intelligence topics. V praktické části popisuji vývoj tohoto rozhraní. V závěrečné části provádím srovnání starého a nového způsobu tvorby kontextové analýzy. K tomuto srovnání jsem přizval běžného uživatele Tovek Tools. Na závěr shrnuji výhody a nevýhody nového řešení.
7
1 Key intelligent topics teoreticky 1.1 Význam competitive intelligence Competitive intelligence (CI) je proces cílevědomého a systematického sběru, analyzování a interpretování informací o konkurenci a ekonomickém prostředí. To vše za účelem získání využitelných znalostí, které přinesou nebo pomohou udržet konkurenční výhody. Jako nejvhodnější český překlad se jeví slovní spojení konkurenční zpravodajství. Výše uvedené činnosti mají v praxi podobu tzv. zpravodajského cyklu. [13]
1. fáze - vyhodnocení informačních potřeb - Definice klíčových témat (key intelligence topics, KITs) - Jejich dekompozice na klíčové otázky (key intelligence questions, KIQs)
4. fáze – formulace odpovědí
Obr. 1 - Zpravodajský cyklus. 2. fáze – sběr informací, tvořící relevantní odpovědi k definovaným otázkám - Nové záznamy do informační nebo poznatkové báze (dokumenty, iCards, i2Charts)
Zpravodajství je často jediný hlas, který může organizaci varovat, když věci nejdou podle plánu, nebo když se budoucnost nejeví taková, jakou si ji manažeři představovali či přáli. Mnoho firem se dostává do problémů, protože jejich manažeři se navzdory měnícím se okolnostem drží naplánované strategie. Ač mohla být sebelépe navržena, pokud se změní některé důležité okolnosti a manažeři jim svou strategii nepřizpůsobí, nedopadne to ve velké většině případů s jejich firmou dobře. Zpravodajství má zásadní roli - v obou rovinách firemního rozhodování (strategické i taktické) varovat management před změnami, které v realitě již nastaly nebo brzy nastanou a mohly by mít nebezpečný dopad na fungování firmy. Jedna z největších chyb, kterou manažeři dělají je, že se domnívají, že competitive intelligence je jakousi podmnožinou marketingu nebo průzkumu trhu, že to je její rámec činnosti, a proto zpravodajství omezují pouze na podporu marketingu. Zpravodajství však hraje rozhodující roli v každé fázi procesu tvorby firemní strategie. [2]
Efektivní zpravodajství má plnit jediný cíl: zajišťovat rozhodovací potřeby svých uživatelů. Aby bylo možné splnit tenhle cíl, musí zpravodajství dodávat informace týkající se jak okamžitých, tak dlouhodobých zájmů managementu. Dřívější zpravodajské systémy byly navrhovány pro monitorování relativně statických hrozeb – často na principu zaměření se na schopnosti a zdroje konkurence. Dnešní manažer již potřebuje nový systém, který zajistí a udrží stálý pohled na menší, pomíjející cíle. Obtížná část je zjistit, kde a jak použít zpravodajské úsilí. S jakými tématy potřebuje být manažer ve styku. Jak identifikujeme a definujeme stěžejní rozhodovací výzvy a informační mezery. Competitive intelligence profesionálové nazývají tato témata jako „key intelligence topics“ (KITs). Tento termín poprvé zmínil Jan Herring. [2]
1.2 Proces tvorby KITs KITs jsou základním nástrojem profesionálů, který definuje potřeby jednotlivých organizací na primární zpravodajské požadavky. Proces KITs je pak mechanismus, kterým firemní zpravodajští pracovníci identifikují a určují priority těchto zpravodajských požadavků. Zahrnuje překlad klíčových rozhodovacích potřeb manažerů do témat (topiků) a otázek, které mohou být rozpracovány do kolekcí a analyzovány oddělením competitive intelligence. Od výkonných pracovníků by se nemělo nezbytně očekávat uvažovaní ve „zpravodajských požadavcích“. Je lepší když, svoje zájmy a rozhodovací výzvy vysloví zpravodajským pracovníkům na základě prostého dialogu. Analyzování těchto zájmů a výzev je práce CI pracovníků, kteří z nich sestaví KITs a KIQs (key intelligence questions). [2, 3] 9
Charakteristické rysy procesu tvorby KITs: 1.
KITs reprezentují důkladný vývoj série založené na sbírce key intelligence questions, které jsou systematicky vyvíjeny z interakce mezi zpravodajskými pracovníky a „vlastníky znalostí“ nebo zákazníkem.
2.
Jsou sdělením týkající se implikací tématu pro firmu – co to znamená pro organizaci?
3.
Jsou součástí neustále se měnícího procesu identifikace zpravodajských potřeb, ne pouze jednoduchou otázkou a odpovědí. [4]
1.3 Funkce KITs -
KITs ulehčují rozpoznání a definování skutečných zpravodajských potřeb.
-
Počáteční sada KITs poskytuje rozhodující vstupy do osnovy a plánu nového zpravodajského programu, který vytváří mnoho competitive intelligence profesionálů. Jejich znalosti a dovednosti jsou nezbytné k rozpoznání zpravodajských potřeb společnosti.
-
Identifikační proces uživatelských potřeb (sběr, analyzování a tvorba náležitého zpravodajství) poskytuje základ pro operativní plánování za účelem rozpoznávat neustále se měnící zpravodajské potřeby pro jednotlivé uživatele a organizace. [4]
1.4 Kategorie tvoøící základní strukturu KITs Rozlišujeme 4 kategorie KITs, které tvoří základní strukturu pro zpravodajské pracovníky při definování požadavků manažerů. 1.
1.4.1 Pøedmìt rozhodování Předměty rozhodování obecně pocházejí ze současných zpravodajských potřeb, které se vyskytují v různých fázích procesu tvorby strategie. Jsou charakteristické konečným datem, tzn. doručení těchto informací je vyžadováno v předem stanoveném čase (po jehož překročení, již nemají informace žádnou hodnotu) a mohou se dotýkat prakticky jakéhokoli nevyřízeného firemního rozhodnutí. Témata se mohou týkat například vývoje a implementace strategického plánu, kapitálových výdajů konkurence nebo témat týkajících se spekulací o fůzích. Např. podnik působící ve farmaceutickém průmyslu, může jedno z rozhodovacích témat vyjádřit takto: „Jaký je současný stav vývojového programu konkurence pro výrobek X“? Příklady KIQs, které by mohly být asociovány s tímto tématem mohou znít: -
Jaké je očekávané datum uvedení výrobku na trh?
-
Jaké bude mít označení?
-
Jaké bude dávkování?
-
Bude za něj uživatel platit doplatek?
-
Jaká bude jejich marketingová strategie? [2,3]
1.4.2 Klíèoví hráèi na trhu Key player topics monitorují za aktivity, schopnosti, záměry a plány rivalů v průmyslovém odvětví. Částečný seznam může zahrnovat konkurenty (existující a objevující se), nejvýznamnější zákazníky a dodavatele, koncerny, vlivné nátlakové skupiny. (např. jaderný energetický průmysl sleduje aktivity různých ekologických hnutí). Key player topics jsou navrhovány tak, aby poskytly porozumění schopnostem a úmyslům výše zmíněných subjektů a také hlubší pohled do jejich současných a budoucích aktivit. Př.: Farmaceutická společnost by mohla vytvořit takovouto sadu KIQs. -
Jaký je přístup konkurence k získávání lékařské loajality?
-
Jaký má konkurence firemní styl a kulturu?
-
S kým spolupracují? (výzkumné ústavy, univerzity, atd.)?
-
Jaké jsou její růstové plány?
-
Jaký používají marketing?
-
Jací lidé jsou ve vedení společnosti?
-
Jak nás vnímají? [2]
1.4.3 Výstrané KITs Výstražné KITs, jsou takové, které jsou rutinně sledovány a porovnávány s předem stanovenými 11
ukazateli. Varovné KITs většinou vyjadřují strach nebo podezření vedoucích pracovníků a vycházejí z předpokladu, že v businessu nejsou „veselá překvapení“. Výstražné KITs jsou jednou z cest, jak pojednávat o otázce: „Co bychom dělali, na jejich místě?“ Výstražné KITs jsou stavěny tak, abychom se vyhnuli otázce „Jak se to mohlo stát?“ 3 základní cíle výstražných topiků jsou: 1.
Identifikovat současné a budoucí hrozby, které mohou nastat převratnými změnami v průmyslu, státní správě a technologii.
2.
Vyhnout se takovým překvapením, která by nás nutila ke změně firemní strategie.
3.
Všimnout si nových obchodních příležitostí. [2, 4]
Sada výstražných KITs pro výrobní firmu, může vypadat např. takto: Aliance, fůze a konkruzy - Plánují naši konkurenti: -
získat společnosti, které by mohly vylepšit jejich technologickou platformu, nebo pozici na trhu?
-
zúžit nebo zrušit produktové řady?
-
tvořit aliance nebo fůzi s firmami, které jim mohou dát jedinečné výhody v průmyslovém odvětví?
Iniciativy ohledně produktu – Co takhle: -
vývoj nových produktů?
-
záměr nabízet značkové produkty?
-
nový obalový a dodávkový systém?
Technologie -
Jaké vývojové trendy jsou v dané průmyslové oblasti?
-
Jaké nové technologie se mohou objevit?
Zákazníci a distribuční kanály -
Plánuje konkurence nějaké změny v chování k našim klíčovým zákazníkům?
-
Smlouvy s dodavateli, exkluzivní marketingové dohody, e-commerce?
Prodej - Plánuje konkurence nějaké radikální změny ve způsobu prodeje? [2]
12
1.4.4 Kontrazpravodajské KITs Kontrazpravodajské KITs tvoří přinejmenším čtyři sady otázek týkající se ochrany firemních znalostí. 1.
Co musíme chránit?
2.
Co se o nás konkurence snaží dozvědět a proč?
3.
Jakým to dělají způsobem?
4.
Co můžeme dělat a co děláme, abychom snížili šanci, že je získají? Jaké legální prostředky popírání a klamání můžeme použít k ochraně našich znalostí? [2, 14]
13
2. Key intelligence topics v praxi 2.1 Topic Jestliže chceme najít informace o nějakém subjektu nebo události, vytipujeme si nejprve klíčová slova a z nich si vytvoříme v hlavě mapu námětů. Jednotlivá klíčová slova mají různou míru relevance. Když potom čteme neznámý dokument, tak jeho míru relevance k danému tématu určujeme pomocí výskytu klíčových slov, přičemž hraje roli jejich počet, různé kombinace a další kritéria. Stejným způsobem funguje i fulltextová vyhledávací technologie Verity. Před vyhledáváním definujeme ve specielním softwaru klíčová slova, které dohromady tvoří TOPIC (námět, pojem, téma), ten pak tvoří vyhledávací podmínku. Dotaz spustíme a technologie potom vyhledá relevantní dokumenty a seřadí je podle důležitosti obsahu vzhledem k dotazu a potom je i roztřídí do skupin podle implicitně nebo explicitně zadaných atributů. Jazyk dotazů Verity tedy umožňuje jednak pojmové vyhledávání (concept retrieval), dále také hodnocení důležitosti vyhledaných dokumentů vzhledem k dotazu (relevance ranking) a statistické vyhodnocení obsahu dokumentu jako clustering - shlukování dokumentů podle společného kontextu nebo summarization - vytváření automatické anotace. [13]
Topik by se dal definovat jako konceptuální popis znalosti, kterou máme o dané problematice, ve formě pojmového stromu. Pojmový strom je tvořen: 1)
listy – tj. klíčovými slovy,
2)
listovými (evidenčními) operátory - určují jakým způsobem se klíčové
slovo
bude porovnávat s nalezeným slovem v dokumentu, 3)
logickými (pojmovými) operátory – určují způsob hodnocení skupin slov v dokumentu,
4)
váhami jednotlivých větví – přiřazením váhy k jednotlivým větvím dotazu, určujeme jak důležitý je v dokumentu výskyt slov z konkrétní větve,
5)
strukturou – stromová struktura umožňuje členit popis tématu na detailnější nebo obecnější významové jednotky. [1, 13]
14
Obr. 2 - Ukázka topiku VyzkumVesmiru - Tento topic se skládá ze dvou topiků (Kosmonautika a PozorovaniHvezd). Topic Kosmonautika je složen z topicu (Kosmonautika_zarizeni) a klíčových slov astronaut, kosmonaut. Topic PozorovaniHvezd je složen z klíčových slov dalekohled, observatoř, hvěždář. [6]
2.2 Jazyk dotazù Verity Pro tvorbu složitějších dotazů se používají operátory a modifikátory. Protože operátorů je velké množství, uvedu zde pouze výčet nejpoužívanějších včetně těch, které jsem použil ve své praktické části.
Evidenční operátory Evidenční operátory rozšiřují hledané slovo o seznam příbuzných slov, která jsou poté také vyhledávaná. Nejpoužívanější evidenční operátory jsou: STEM
Hledá zadané slovo a společně také slova, která mají stejný stem (základ slova včetně jeho předpony).
WORD
Vybere dokumenty, které obsahují jeden nebo více výskytů zadaného slova pouze v uvedeném tvaru, tj. nehledají se jeho stemové variace. 15
WILDCART
Porovnává znaky obsažené v zadaném řetězci. Určité znaky automaticky určují specifikaci WILDCART. ? Nahrazuje jeden alfanumerický znak, při použití otazníku není třeba zadávat <WILDCART>. * Nahrazuje nula nebo více alfanumerických znaků. Při použití hvězdičky není třeba zadávat <WILDCART> [] Nahrazuje jeden ze znaků v sadě. Slovo, které obsahuje sadu, musí být uzavřeno do jednoduchých zpětných uvozovek a sada nesmí obsahovat mezery. <WILDCART> `c [au] t` nalezne cat a cut. () Nahrazuje jeden ze vzorců oddělených čárkou. Slovo, které obsahuje vzor musí být uzavřeno do jednoduchých zpětných uvozovek a sada nesmí obsahovat mezery. <WILDCART> `cat (s, er)` nalezne cats a cater. [^ ]
[-]
Určuje znaky vyloučené ze sady. Stříška musí být prvním znakem za levou hranatou závorkou, která uvozuje sadu. <WILDCART> `l [^ai] p` vylučuje lap a lip. Specifikuje rozměr znaků v sadě. <WILDCART > `c [a-u] t` nalezne všechna trojznaková slova od cat po cut. [9]
Operátory blízkosti Operátory blízkosti určují relativní umístění určitých slov v dokumentu, tj. aby byl dokument vybrán, musí být daná slova ve stejné frázi, odstavci nebo větě. V případě operátorů NEAR a NEAR/N jsou vyhledané dokumenty seřazeny podle relevance na základě blízkosti slov. PHRASE NEAR NEAR/N
Vybere dokumenty, které obsahují zadanou frázi. Fráze je skupina dvou nebo více slov, která se vyskytují v daném pořadí. Vybere dokumenty obsahující zadaná slova, přičemž čím blíže sobě jsou hledaná slova v dokumentu, tím vyšší bude skóre dokumentu. Vybere dokumenty, které obsahují dvě nebo více zadaných slov ve vzdálenosti maximálně N počtu slov od sebe, kde N je celé číslo mezi 1 a 1000. Čím blíže jsou hledaná slova, tím vyšší je skóre dokumentu. [9, 10]
16
Pojmové operátory ACCRUE
AND OR
Vybere dokumenty, které obsahují alespoň jedno zadané slovo. Čím více hledaných slov je v dokumentu obsaženo, tím vyšší je skóre dokumentu. Vybere dokumenty, které obsahují všechna zadaná slova. Pro vyhledání samotného slova „and“ je třeba jej uzavřít do uvozovek. Vybere dokumenty, které obsahují alespoň jedno z hledaných slov. Na rozdíl od operátoru ACCRUE nejsou váhy dokumentů tak přesné, což je patrné při hledání ve velkém množství dokumentů. [9, 10]
Relační operátory Relační operátory prohledávají pole dokumentů (jako je AUTOR, TITLE,…), která byla v kolekci nadefinována. Tyto operátory představují filtrační funkci, kdy vybírají dokumenty, které obsahují určité hodnoty polí. Relační operátory pro textová pole: CONTAINS Vybere dokumenty porovnáním zadaného slova nebo fráze s hodnotami uloženými v poli dokumentu. SUBSTRING Vybere dokumenty porovnáním zadaného znakového řetězce s částí znaků uložených v poli dokumentu. Relační operátory pro číselná pole: = Vybere dokumenty, které mají hodnotu pole stejnou jako zadané číslo. > Vybere dokumenty, které mají hodnotu pole větší než zadané číslo. >= Vybere dokumenty, které mají hodnotu pole větší nebo rovnu zadanému číslu. < Vybere dokumenty, které mají hodnotu pole menší než zadané číslo. <= Vybere dokumenty, které mají hodnotu pole menší nebo rovnu zadanému číslu. [9]
17
Přehled modifikátorů Modifikátory dále specifikují chování operátorů. S operátorem můžeme např. použít modifikátor CASE pro určení, zda bude při výběru brán zřetel na velikost písmen. Následující přehled krátce popisuje všechny modifikátory. CASE MANY NOT ORDER
Modifikátor CASE se dá použit s operátory WORD a WILDCART pro zadání hledání s ohledem na velikost písmen hledaných slov nebo frází. Do výpočtu váhy zahrne hustotu výskytu slov, stemových variací slov nebo frází v dokumentu. Vyloučí dokumenty obsahující slova nebo fráze. Určuje pořadí, ve kterém se prvky hledání musí vyskytnout v dokumentu. [9, 10]
18
3 Pøedstavní Tovek Tools Tovek Tools je soubor desktopových aplikací vyvinutý firmou Tovek, spol. s r. o. Tyto nástroje jsou určeny k indexování, vyhledávání a analyzování velkých objemů různorodých textových informací (soubory, databáze, elektronická pošta). Využívají špičkovou technologii firmy Autonomy pro vyhledávání informací v nestrukturovaných datech, která zahrnuje i původní fulltextovou technologii Verity. Tovek Tools se skládají z následujících aplikací: [15]
3.1 Index Manager Slouží k indexování různých typů dokumentů, databázových záznamů a e-mailových zpráv. Využívá různé druhy rychlých filtrů, které podporují všechny běžné formáty souborů ( .doc, .xls, .pdf,…) Výsledkem indexace je vytvoření fulltextového informačního zdroje nebo aktualizace stávajícího. [15]
3.2 Tovek Agent „Slouží k vyhledávání zaindexovaných dokumentů ve vytvořených fulltextových zdrojích pomocí dotazů a k zobrazení výsledků hledání. Použitá technologie nabízí pokročilé metody vyhledávání včetně:“ [15] -
ohodnocení relevance nalezených dokumentů a podle ní jejich seřazení
-
automatické shlukování dokumentů podle společného obsahu (clustering)
-
současné vyhledávání v různých jazycích
-
automatické vytvoření anotace dokumentů
-
použití fragmentů volného textu při formulaci dotazu
„Pro zobrazení nalezených dokumentů nabízí různé varianty výstupů (txt, html, xml).“ [15]
19
Obr. 3 - Tovek Agent. V levé části je zobrazen seznam dostupných fulltextových zdrojů. Vedle něho je okno pro vložení dotazu v jazyce Verity, v okně pod ním můžeme zadat volby a podmínky hledání. Dokumenty, které odpovídají zadaným kritériím, jsou uvedeny v seznamu v prostředním okně. Ve spodním okně pak vidíme samotný dokument, který jsme ze seznamu vybrali.
20
3.3 Query Editor Je určen k tvorbě výše zmiňovaných topiků, tedy složitějších dotazů, které umožňují přesné vyhledávání ve velkém objemu fulltextových zdrojů (dat). Jeho nevýhodou je to, že je určen pouze pokročilejším uživatelům. [15]
Obr. 4 - Tovek Query Editor.
21
3.4 Tovek InfoRating Umožňuje kontextovou analýzu vyhledaných dokumentů, která ukazuje, jak jednotlivé dokumenty odpovídají zadaným dotazům (tyto dotazy mají opět podobu topiků). Výsledek je zobrazen ve formě přehledné kontextové matice, diagramu vazeb a grafů. [8, 15]
Obr. 5 - Tovek InfoRating, zobrazení diagramu vazeb. V levém okně je seznam témat, která nás zajímají v kontextu nalezených dokumentů. Hlavní okno zobrazuje diagram vazeb mezi vybranými dokumenty a tématy. V tomto panelu je možno přepínat mezi několika druhy zobrazení, kromě diagramu vazeb můžeme vidět ještě průsečíky dotazů, sloupcové grafy a texty dokumentů. V dolní části je seznam všech dokumentů spolu s hodnotami polí a váhami k jednotlivým tématům.
22
3.5 Popis tvorby kontextové analýzy Jak bylo řečeno Tovek Tools vyhledávají ve velkém množství fulltextových zdrojů dokumenty, které se týkají uživatelem zadaného tématu. Tyto dokumenty lze dále podrobit tzv. kontextové analýze. Optimální způsob je takový, že uživatel si v Query Editoru definuje téma (KIT), které chce vyhledat a uloží jej do specifického souboru. Při zadávání dotazu v Tovek Agentu potom načte tento externí soubor s dotazem a spustí hledání. Tovek Agent vrátí jako výsledek seznam relevantních dokumentů a seřadí je podle míry relevance (určí skóre jednotlivých dokumentů). Skóre se pohybuje v rozmezí od 0 do 1. Čím blíže je 1, tím je dokument více relevantní. Poté uživatel exportuje tyto dokumenty do programu InfoRating, ve kterém je podrobí kontextové analýze. Kontextová analýza spočívá v tom, že uživatel definuje nová témata (opět v Query Editoru), která ho zajímají v rámci nalezených dokumentů. U každého dokumentu se potom hodnotí, jak moc odpovídá jednotlivým tématům. Pomocí grafického znázornění je vidět, jak jsou tato témata v dokumentech propojena.
Problémem tohoto řešení je, že vyžaduje perfektní znalost dotazovacího jazyka Verity, aby uživatel mohl správně navrhnout složitější dotazy. Výše popsaný způsob tedy využívají většinou jen vyškolení analytici, běžní uživatelé Tovek Tools podle dostupných informací Query Editor vůbec nepoužívají a dotazy pro vyhledávání dokumentů píší rovnou do příslušného okna v Tovek Agentu. Pokud nemají dostačující znalosti jazyka Verity, dopouštějí se přitom i mnoha fatálních chyb. Mezi nejčastější chyby patří, že uživatel napíše jméno a příjmení hledané osoby a myslí si, že software najde všechny dokumenty týkající se zadané osoby. To ovšem není pravda a software vyhodnotí jako relevantní jen ty dokumenty, ve kterých se vyskytuje jako první křestní jméno a za ním příjmení. Pokud je v dokumentu nejdříve příjmení a potom jméno, dokument se ve výsledku neobjeví. Zkušenosti jsou i takové, že tito uživatelé většinou napíší do okna pro dotaz třeba jen dvě nebo tři slova a tím pádem ani nevyužijí všechny možnosti a schopnosti, které Tovek Tools nabízejí. Pokud se už uživatelé pustí do definování více subjektů, tak se obyčejně začnou ztrácet v operátorech a znemožní tím případnou interakci těchto subjektů. Kontext, který napíší v InfoRatingu nemůže být nikdy tak kvalitní, jako když je připraven zkušenými pracovníky předem.
23
4 Návrh nového øeení Cílem této práce je navrhnout řešení, které bude umožňovat běžným uživatelům snadnou tvorbu KITs. Přáním zadavatele bylo, aby kvalitní tvorbu kontextové analýzy v aplikaci Tovek Tools zvládal dělat i méně zkušený uživatel a tím se tato aplikace stala přístupnější i pro malé a střední podniky, které si nemohou dovolit zaměstnávat vyškoleného analytika. Přání zpřístupnit tuto aplikaci i běžným uživatelům vzešlo i z velkých firem, které již tuto sadu nástrojů delší dobu používají. Manažeři těchto firem by uvítali možnost ověřit si rychle určité informace o obchodním partnerovi, např. před důležitou schůzkou. V praxi šlo tedy o to, aby i běžný uživatel mohl snadno vytvořit kvalitní dotazovací stromy pro Tovek Agenta a InfoRating. Vymyslet pro běžné uživatele alternativu ke Query Editoru. Nejlepší variantou z pohledu uživatele se jevilo nahradit Query Editor nějakým formulářem, do kterého by uživatel mohl napsat jména lidí, názvy firem nebo adresy, případně definovat další klíčová slova, poté stiskl jedno jediné tlačítko, které by vytvořilo na základě zadaných parametrů příslušný dotazovací strom.
Tato varianta se zdála být i mně nejlepší, proto jsem se rozhodl nahradit Query Editor webovým formulářem. Tovek Tools je sice soubor desktopových aplikací, avšak v nové verzi by měl fungovat i on-line, proto jsem formulář vyvíjel jako internetovou aplikaci. Další aspekt, který přispěl k rozhodnutí, že se bude jednat o webový formulář byl ten, že internetové prostředí je i pro běžné uživatele důvěrně známé.
Samotný proces tvorby začal návrhem webového rozhraní, kde jsou umístěny vstupní pole pro nejčastěji se vyskytující subjekty hledání (osoba, firma, adresa). Vstupní pole pro tzv. volné téma, kde si uživatel může sám definovat jakékoli téma. A seznam předem připravených témat. Poté následovalo vytvoření obecných dotazovacích stromů v jazyce Verity. Tyto dotazovací stromy se modelovaly opět pro nejčastěji se vyskytující subjekty hledání: osobu, firmu a adresu. Dále jsem vytvořil obecný dotazovací strom, který sestaví téma z uživatelem zadaných slov (do pole volné téma). Následovalo vytvoření dotazovacích stromů pro nejvíce užívaná témata v kontextové analýze (média, korupce, úspěch,…). V další části jsem vytvořil php skripty, které na základě uživatelských vstupů předávají proměnné do předem definovaných dotazovacích stromů a tím vytváří konkrétní témata. Tyto dotazy připravené buď pro Tovek Agenta nebo Tovek InfoRating se do příslušné aplikace přenáší pomocí schránky. 24
Na závěr jsem porovnal na praktickém příkladu výsledky původního řešení s novým. Jelikož nový způsob tvorby KITs je určen pro běžné uživatele, porovnávám jej s nynějším způsobem, který běžní uživatelé používají (tedy s psaním dotazů rovnou do Tovek Agenta nebo InfoRatingu).
Předpokládal jsem, že oproti způsobu, kterým byli běžní uživatelé zvyklí pracovat dříve, dojde ke zvýšení kvality celé kontextové analýzy. Nový způsob měl rozhodně předcházet syntaktickým chybám v dotazech a přesněji určovat skóre dokumentů. Až si uživatelé zvyknou na nové prostředí, tak by jim tvorba dotazů měla ušetří i čas. Tvorba kontextové analýzy by se tedy mohla stát skutečně tak pohodlnou, jak si jí spousta manažerů dnes přeje. Navíc by i běžným uživatelům mohla přinášet kvalitní výsledky srovnatelné s výsledky zkušených analytiků využívajících k tvorbě dotazů Query Editor.
25
5 Vlastní zpracování 5.1 1. fáze hrubý návrh uivatelského rozhraní Na základě praktických zkušeností analytiků ve firmě Tovek, jsem vybral jejich nejpoužívanější témata, kterými jsou osoba, firma a adresa. Pro tato témata jsem zpracoval vstupní formuláře pro zadávání údajů. K tomu nejpoužívanější kontexty a volné téma.
5.1.1 Poadavky na formuláø 1) Formulář měl být co nejjednodušší a měl obsahovat nejlépe jedno, maximálně 2 tlačítka, kterými se sestaví výsledné dotazy. 2) Zároveň však měl poskytovat možnost definice co nejvíce subjektů hledání. To znamená, že ve formuláři mělo být více polí od každého z vytipovaných subjektů (osoba, firma, adresa). V dosavadním způsobu řešení není uživatel nijak omezen počtem zadaných subjektů. V novém způsobu řešení omezen bude, ale měl by mít možnost definovat si tolik subjektů, kolik je pro většinu hledání dostačující. Požadavek na jednoduchý vzhled byl stanoven jako důležitější, protože šlo hlavně o jednoduchou tvorbu dotazů.
5.1.2 Navrení struktury jednotlivých témat Formulář obsahuje 5 typů témat (osoba, firma, adresa, volný dotaz, předem definované téma). Uživatel si může vybrat, která vyplní a která se tak stanou součástí výsledného dotazu. 1. Téma osoba
Obr. 6 - Tabulka vstupních polí pro téma osoba.
26
V této oblasti formuláře může uživatel definovat osobu, o které má zájem se něco dozvědět. Formulářové pole osoba se skládá z těchto komponent: -
-
vstupní textová pole Jméno, Příjmení, Rodné číslo combobox Titul Obsahuje výčet nejčastěji se vyskytujících titulů: Ing., MUDr., PhDr., JUDr., Mgr., Bc. textarea Doplněk. Do tohoto textového pole může uživatel napsat neomezený počet doplňujících slov, která mohou pomoci při identifikaci hledané osoby.
2. Téma firma
Obr. 7 - Tabulka vstupních polí pro téma firma. Tato oblast slouží k identifikaci hledané firmy a skládá se ze: -
-
vstupních textových polí Název a IČO comboboxu Forma Obsahuje výčet následujících právních forem organizací: akciová společnost, společnost s ručením omezeným, komanditní společnost, veřejná obchodní společnost, občansko právní sdružení, státní podnik, družstvo textarea Doplněk: Do tohoto textového pole může uživatel napsat neomezený počet doplňujících slov, která mohou pomoci při identifikaci hledané firmy.
3. Téma adresa
Obr. 8 - Tabulka vstupních polí pro téma adresa.
27
Předpokládá se, že tato oblast bude sloužit jako doplňující identifikátor pro hledanou osobu nebo firmu. Mohou však nastat případy, kdy bude uživatele zajímat pouze nějaká adresa, bez souvislosti s konkrétní osobou nebo firmou nebo bude adresa to jediné co bude znát při hledání nějaké osoby či firmy, proto je téma adresa stejně nezávislé jako osoba a firma. Pole adresa se skládá z těchto komponent: -
vstupní textová pole: Ulice, Město, Číslo popisné textarea Doplněk: Opět slouží k možnosti bližší identifikace pomocí volných slov.
4. Volné téma Volné téma je tvořeno jedinou komponentou – textarea. Uživatel zde může libovolným počtem příbuzných slov definovat nějaké vlastní téma.
5. Oblast předem definovaných témata V této oblasti formuláře jsou pro uživatele připraveny nejčastěji se používající témata pokládaná v kontextové analýze v InfoRatingu. Tato témata je však možné použít i pro vyhledávání dokumentů v Tovek Agentu. Výčet těchto témat je následující: aféra, církev, ekologie, finance, jistota, korupce, média, minulost, nejistota, nepřítel, policie, politika, privatizace, problém, prosperita, soud, spolupráce, sport, trestný čin, úpadek, úspěch, vliv, zdravotnictví, zpravodajství. Abychom vyhověli požadavku č. 2, musela existovat možnost některá z těchto 5 témat vyplnit vícekrát. Počet jednotlivých oblastí s konkrétními tématy řeším až ve fázi finálního designu formuláře.
28
5.2 2. fáze - tvorba obecných dotazovacích stromù v jazyce Verity Ve druhé fázi jsem se zabýval tvorbou obecných dotazovacích stromů pro každé ze základních témat. Tyto dotazovací stromy jsem navrhoval v Query Editoru. Listy jednotlivých stromů jsou ve výsledku tvořeny proměnnými, které uživatel zadává do vstupních polí u jednotlivých témat. Při navrhování v Query Editoru jsem jednotlivé listy pojmenovával podle příslušných vstupních polí z formuláře. Vstupní textové pole doplněk bylo k dotazovacím stromům pro témata osoba, firma, adresa připojeno až ve 3. fázi práce.
5.2.1 Dotazovací strom pro téma osoba Jako první jsem tvořil dotazovací strom pro téma osoba. Uvádím nejprve ukázku špatného řešení. Při tvorbě dotazovacích stromů bylo nutno brát ohled na to, že uživatel může ve formuláři u jednotlivých témat zadat libovolný počet vstupních parametrů. V případě osoby to znamená, že může vyplnit buď všechny vstupní pole (jméno, příjmení, titul, rodné číslo) nebo pouze jméno a příjmení, či příjmení a rodné číslo nebo jakoukoli jinou kombinaci těchto čtyř polí, může vyplnit i samostatně příjmení nebo pouze rodné číslo, titul a jméno samostatně vyplnit nelze. Na první pohled by se zdálo, že všechny tyto kombinace dostatečně vystihne jedna větev, která vypadá následovně.
Obr. 9 - 1. Ukázka špatného řešní dotazu na osobu. Vstupní parametry jméno, příjmení a titul tvořící listy stromu a parametr rodné číslo, který je tvořen další větví jsou spojeny operátorem . Takto navržený dotazovací strom funguje následovně – vyhledává v dokumentech jakýkoli výskyt klíčových slov a jako relevantní vyhodnocuje ty, které obsahují alespoň jedno z nich. Ve výsledku se tím pádem objevovaly i dokumenty, ve který se vyskytovalo třeba jen shodné jméno nebo jen shodný titul. Dokumenty, 29
ve kterých se vyskytovalo více klíčových slov, a které se skutečně týkaly hledané osoby, byli v žebříčku relevance hodnoceny vyšším skóre. Množina nalezených dokumentů tedy byla tvořena relevantními dokumenty, ve kterých se psalo o hledané osobě a velkým počtem irelevantních dokumentů. To samozřejmě nebylo žádoucí, protože irelevantní dokumenty silně zkreslovaly kontextovou analýzu v InfoRatingu. Jako náprava se mohlo zdát řešení, že operátor nahradí operátor .
Obr. 10 - 2. Ukázka špatného řešní dotazu na osobu. Tím už jsem dosáhl toho, že množina výsledných dokumentů byla tvořena pouze relevantními dokumenty. Na druhou stranu, ale takovými dokumenty, ve kterých byla hledaná osoba identifikována všemi čtyřmi klíčovými slovy. Dotazovací strom s operátorem funguje tak, že jako relevantní vyhodnocuje jen ty dokumenty, ve kterých jsou v textu všechna čtyři klíčová slova a nejdále 8 slov od sebe. Znamenalo to, že když byla hledaná osoba v textu identifikována třeba jen příjmením a rodným číslem, takto navržený strom jej považoval za irelevantní. Množinu nalezených dokumentů tak tvořily pouze vysoce relevantní dokumenty, ale mnoho dalších relevantních dokumentů zůstalo opomenuto.
Nám však šlo o to, aby množina nalezených dokumentů byla tvořena všemi relevantními dokumenty a žádnými jinými. Toho je dosaženo tehdy, když dotazovací strom má tolik větví, kolik je možno zadat kombinací vstupních parametrů. Správné řešení tedy bylo mnohem složitější než se původně zdálo.
30
Obr. 11 - Dotazovací strom pro téma osoba. Jednotlivé větve dotazovacího stromu znázorňují jednotlivé kombinace vstupních parametrů, které je možno vytvořit a jsou spojeny operátorem . Při prohledávání dokumentů jsou mezi relevantní zařazovány ty, ve kterých se vyskytuje buď příjmení shodné se zadaným nebo rodné číslo shodné se zadaným. Další dokumenty, které jsou považovány za relevantní jsou ty, ve kterých se vyskytuje shodné jméno, příjmení, rodné číslo a titul v blízkosti nejdále 8 slov od sebe. Další z možností je, že se v dokumentu vyskytuje jméno, příjmení a titul v blízkosti 6 slov od sebe. Další možností je, že se kdekoli v dokumentu vyskytuje současně jméno, příjmení a rodné číslo. Další možností je současný výskyt těchto klíčových slov: jméno, titul, rodné číslo, dále pak příjmení, titul, rodné číslo, dále jméno a rodné číslo, jméno a příjmení, jméno a titul, příjmení a rodné číslo, příjmení a titul, titul a rodné číslo. Dokumenty vyhovující větvím, které konkrétněji specifikují danou osobu jsou v žebříčku relevance umístěny na vyšší pozici.
31
5.2.2 Dotazovací strom pro téma firma
Obr. 12 - Dotazovací strom pro téma firma.
Jednotlivé kombinace vstupních parametrů jsou opět spojeny operátorem . Jako relevantní jsou při vyhledávání označovány dokumenty, ve kterých se vyskytuje shodný název firmy nebo shodné IČO. O něco vyšší míru relevance nabývají dokumenty ve kterých se vyskytuje shodný název a zároveň IČO nebo zároveň název a právní forma. Nejvýše postavené dokumenty v žebříčku relevance budou ty, ve kterých se bude současně vyskytovat název, forma i IČO. Větev dotazující se na právní formu bylo nutné rozdělit na další větve, z nichž každá vystihuje všechny možné zápisy jednotlivých právních forem.
32
5.2.3 Dotazovací strom pro téma adresa
Obr. 13 - Dotazovací strom pro téma adresa.
U tématu adresa jsou možné následující kombinace vstupních parametrů. Uživatel může zadat samostatný název města. Protože adresu budou uživatelé většinou vyplňovat společně s osobou nebo firmou, má zde smysl zadávat i samostatné číslo popisné nebo ulici, protože ve spojení např. se jménem to bude přinášet přesnější specifikaci. Další větev tvoří kombinace ulice a město. U větve ulice a číslo popisné je použit operátor , který říká, že číslo popisné musí být v dokumentu uvedeno až za názvem ulice, je to z toho důvodu, že v některých zdrojích je těsně před názvem ulice uváděno IČO firmy. Kdyby zde tedy nebyl operátor určující pořadí slov a poslední dvě číslice IČA by byly náhodou shodné se zadaným číslem popisným, vyhodnotil by jej Tovek Agent tak, že vyhovuje dvěma klíčovým slovům. Relevantní by přitom byl jen název ulice a dokumentu by bylo neprávem přiděleno vyšší skóre. Podobný problém by mohl nastat u další větvě, která hledá současný výskyt čísla popisného a města. Zde by mohlo dojít k záměně čísla popisného se začátkem poštovního směrovacího čísla, které je častěji uváděno za názvem obce. Poslední větev hledá výskyty všech třech klíčových slov v blízkosti maximálně tři slova od sebe. 33
5.2.4 Dotazovací strom pro volné téma Dotazovací strom pro volné téma je velice jednoduchý, proto jsem jej řešil až při tvorbě php kódu. V poli pro volný dotaz klient jednotlivá slova nebo fráze odděluje čárkami. Každé slovo nebo fráze tak tvoří samostatný list nebo větev. Tyto listy nebo větve jsou potom spojeny operátorem .
5.2.5 Dotazovací strom pro oblast pøedem definovaných témat V oblasti předem definovaných témat je výčet témat, která se hodně často používají pro kontextovou analýzu v InfoRatingu. Pro upřesnění uvádím znovu jejich výčet: aféra, církev, ekologie, finance, jistota, korupce, média, minulost, nejistota, nepřítel, policie, politika, privatizace, problém, prosperita, soud, spolupráce, sport, trestný čin, úpadek, úspěch, vliv, zdravotnictví, zpravodajství. Tato témata jsou tvořena množstvím klíčových slov, která je charakterizují. Jako ilustrační příklad zde uvádím dotazovací strom týkající se tématu média.
Obr. 14 - Dotazovací strom pro téma média. 34
5.3 3.fáze design formuláøe a jeho propojení s dotazovacími stromy 5.3.1 Design webového formuláøe Jak bylo zmíněno v úvodní části návrhu řešení, webový formulář musel vyhovovat dvěma požadavkům – jednoduchosti a zároveň možnosti definovat co nejvíce subjektů hledání. Původně jsem navrhoval, že by uživatel měl možnost definovat až 5 subjektů od každého tématu. Po konzultaci se zkušenými pracovníky, kteří lépe znali potřeby budoucích potenciálních uživatelů této aplikace jsem se rozhodl počet definovatelných subjektů snížit. Návrh webového formuláře potom vypadá takto:
Obr. 15 - Finální vzhled webového formuláře. V levé části se nachází oblast s tématy osoba, firma a adresa. Pomocí navigačních tlačítek umístěných na levém okraji si může uživatel přepínat mezi vstupními poli pro jednotlivá témata. Má tedy možnost definovat např. 2 osoby, firmu a 2 adresy, nebo 4 osoby a jednu adresu, nebo 5 firem, nebo třeba jen jednu adresu, atd. Kombinace, které je takto možno definovat jsou považovány za plně dostačující. Vedle navigačních tlačítek je dále umístěna sada přepínacích a zaškrtávacích tlačítek. Přepínacími tlačítky s popiskem and nebo not uživatel určuje vztah definovaného subjektu 35
k ostatním. Primárně jsou tato tlačítka nastavena na and a znamená to, že chceme, aby se tyto subjekty v dokumentech vyskytovaly společně. Volbou not však lze ještě před samotným vyhledáváním definovat dokumenty, které nás nezajímají. Například budeme chtít najít dokumenty týkající se pana xy a jeho působení ve firmě 1 a víme, že pan xy nyní působí ve firmě 2. Do prvního pole vyplníme identifikátory osoby xy a necháme zaškrtnutou volbu and, do druhého pole vyplníme identifikátory firmy 1 a opět necháme zaškrtnutou volbu and a do třetího pole vyplníme identifikátory firmy 2 a přepneme tlačítko do pozice not. Tímto vyloučíme, že se nám mezi výslednými dokumenty zobrazí dokumenty týkající se pana xy a jeho působení ve firmě 2. Jestliže u tématu bude toto políčko nastaveno na and, bude se vygenerovaný dotaz na tento subjekt pojit k ostatním operátorem , když ho přepneme do polohy not, bude se příslušná větev pojit operátorem <not>. Zaškrtávacími tlačítky s označením TA nebo IR určujeme, jestli se dotaz týkající se daného tématu bude generovat jako součást dotazovacího stromu pro vyhledávání dokumentů v Tovek Agentu nebo jako téma pro následnou kontextovou analýzu v InfoRatingu. Je možné zaškrtnou obě dvě možnosti. Pod oblastí s tématy osoba, firma, adresa se nachází oblast volných témat. Zde jsou tři vstupní pole. První z nich slouží k definici volného tématu, které se bude generovat jako součást dotazovacího stromu pro vyhledávání dokumentů v Tovek Agentu a bude se s ostatními větvemi pojit operátorem . Druhé slouží k definici volného tématu, které se bude generovat jako součást dotazovacího stromu pro vyhledávání dokumentů v Tovek Agentu a bude se s ostatními větvemi pojit operátorem <not>. Třetí slouží k definici tématu pro InfoRating. Pod těmito třemi poli jsou dvě tlačítka, jejichž funkce je zřejmá na první pohled. Po kliknutí na první z nich se sestaví dotaz pro vyhledávání dokumentů v Tovek Agentu. Po kliknutí na druhé se sestaví sada témat pro kontextovou analýzu v InfoRatingu. Pod těmito tlačítky je informační pole, které bude uživatele informovat o výsledku proběhlé operace. V pravé části je umístěna oblast předem definovaných témat. Uživatel si opět bude moci zaškrtnutím políčka vybrat jestli chce téma připojit k dotazu pro Tovek Agenta nebo jestli jej použije až v InfoRatingu. Maximální počet témat, které může zaškrtnout pro hledání v Tovek Agentu se pohybuje kolem 10 (v závislosti na tom, která zaškrtne). Kdyby totiž uživatel vyplnil všechna pole, která jsou možná k využití tvorby dotazu pro Tovek Agenta a současně označil mnoho z předem definovaných témat, přesáhl by dotaz maximální možnou délku, kterou je Tovek Agent schopen zpracovat. Formulář je tvořen jednou html stránkou (form.php), obsahující php skripty. Oblast předem definovaných témat se generuje z externího textového souboru (temata.txt), to proto aby 36
bylo možné sadu těchto témat snadno upravovat nebo rozšiřovat. Soubor temata.txt obsahuje dotazovací stromy pro jednotlivá témata zapsaná v jazyce Verity. K tomu, aby navigační tlačítka osoba, firma a adresa zobrazovala při kliknutí příslušnou tabulku vstupních polí jsem použil JavaScript – funkci getElementById( ). Vzhled webové stránky form.php je vytvořen „tabulkovým layoutem“, který dnes již není moderní a nerad jej používám, ale pro spojení s JavaScriptem je nejvhodnější. Ke stránce je připojen také soubor style.css, který dotváří vzhled formuláře.
5.3.2 Skripty propojující formuláø s pøipravenými dotazovacími stromy Mechanismus, který přebírá proměnné z formuláře a dosazuje je do obecných dotazovacích stromů jsem definoval v souboru funkce.php. Jedná se o tyto funkce:
-
function sestavjmeno($i)
-
function sestavfirmu($i)
-
function sestavadresu($i)
-
function sestavdoplnek ($doplnek)
-
function sestavvolny()
-
function sestavvolnyne()
-
function sestavvolny_ir()
Na příkladu funkce sestavfirmu($i) vysvětluji princip sestavení dotazu na konkrétní firmu. Funkce sestavfirmu($i) stejně jako funkce sestavjmeno($i) a sestavadresu($i) požaduje jako vstupní parametr číslo tabulky vstupních polí. function sestavfirmu($i) {
Nejprve pomocí $_POST zjistí, jestli je políčko s požadovaným názvem a pozicí vyplněné, pokud ano, tak jeho obsah očistí funkcí trim o tzv. bílé znaky ze začátku a konce řetězce a převede je do proměnné $název1 nebo $ico1. $nazev1=trim($_POST[nazevfirma.$i]); $ico1=trim($_POST[icofirma.$i]);
37
Dále funkce zjistí, jakou právní formu vybral uživatel v comboboxu a dosadí ji do proměnné $forma1. Do této proměnné dosadí již konkrétní dotazovací větev v jazyce Verity. Dále pro každou právní formu definuje proměnnou $odecti, která slouží k tomu, aby u operátoru byla nastavena správná vzájemná vzdálenost slov tvořící název právní formy. if ($_POST[formafirma.$i]==a.s.) { $odecti=1; $forma1= ((<stem>a,<stem>s),(<stem>akciová,<stem>spoleènost),(<word> a.s)); } else if ($_POST[formafirma.$i]==s.r.o.) { $odecti=2; $forma1 =((<stem>s,<stem>r,<stem>o),(<word>spoleènost s ruèením omezeným),( <stem>spol,<stem>s,<stem>r,<stem>o),(<word>s.r.o),(<word>s r.o)); } else if ($_POST[formafirma.$i]==v.o.s.) { $odecti=2; $forma1 =((<stem>v,<stem>o,<stem>s),(<stem>veøejná,<stem>obchodní,< stem>sp oleènost)); } else if ($_POST[formafirma.$i]==o.p.s.) { $odecti=2; $forma1 =<stem>o,<stem>p,<stem>s; } else if ($_POST[formafirma.$i]==k.s.) { $odecti=1; $forma1= ((<stem>k,<stem>s),(<stem>komanditní,<stem>spoleènost)); } else if ($_POST[formafirma.$i]==s.p.) { $odecti=1; $forma1= ((<stem>s,<stem>p),(<stem>státní,<stem>podnik)); } else if ($_POST[formafirma.$i]==drustvo)
Následující řádek provádí nastavení správné vzdálenosti u operátoru . $near= StrLen ($_POST[formafirma.$i])- $odecti;
V další části funkce pomocí jednoduchých podmínek zjistí, která políčka uživatel vyplnil a podle toho sestaví příslušnou větev. Konečný dotaz zapsaný v jazyce Verity a použitelný pro Tovek Agenta nebo InfoRating pak ukládá do proměnné $firma. if (($nazev1 !=) && ($forma1!=) && ($ico1!=)) $firma= ( ( (.$nazev1.), .$forma1.),<Word> .$ico1. , (.$nazev1.)); else if (($nazev1 !=) && ($forma1!=) && ($ico1==)) $firma= (( (.$nazev1.), .$forma1.), (.$nazev1.)); else if (($nazev1 !=) && ($forma1==) && ($ico1!=)) $firma= ( (.$nazev1.), <Word> .$ico1. ); else if (($nazev1 !=) && ($forma1==) && ($ico1==)) $firma= (.$nazev1.); else if (($nazev1 ==) && ($forma1==) && ($ico1!=)) $firma= <Word>( .$ico1. );
V další části testuje, jestli uživatel vyplnil také pole doplněk. if ($firma !=) $doplnek=sestavdoplnek($_POST[doplnekfirma.$i]); if (($doplnek!=) && ($firma !=)) $firma = ((.$firma., .$doplnek.),.$fi rma.); if (($doplnek !=) && ($firma ==)) $firma = $doplnek; if ($doplnek ==) $firma = $firma;
Index [1] značí, že definitivní dotaz na firmu se bude přidávat k celkovému dotazovacímu stromu pro Tovek Agenta, index [2] značí, že se dotaz bude generovat jako samostatný pro InfoRating. 39
Další část určuje, jaký název bude téma v InfoRatingu mít. Témata, která se vkládají do InfoRatingu musí mít na začátku řádku uveden název, který je charakterizuje, potom následuje středník a samotný dotaz v jazyce Verity. if ($doplnek!=) $idfirma=$doplnek; if ($ico1!=) $idfirma=$ico1; if ($nazev1!=) $idfirma=$nazev1; $deffirma[2]=$idfirma.;.$firma; return $deffirma; }
Sestavování konkrétních dotazů pro ostatní témata probíhá na stejném principu.
5.3.3 Sestavení výsledného dotazovacího stromu a sady témat pro InfoRating Po stisku tlačítka „sestav dotaz“ nebo „sestav kontext“ dojde k přesměrování na stránku result.php, na jejímž začátku se načte stránka funkce.php. Jako první se spojují větve, které uvádí operátor . Spouští se FOR cyklus, který projede oblast témat „osoba, firma, adresa“ a ukládá dotazovací stromy k jednotlivým tématům do proměnných. Větev, která se má stát součástí výsledného dotazu pro Tovek Agenta, je uložena do proměnné $def s příslušným indexem [$i]. V této části jsou ukládány ale pouze ty, které se pojí operátorem . Větev, která vytváří samostatné téma pro InfoRating se ukládá do proměnné $kon opět s příslušným indexem [$i]. for ($i=1; $i<=6; $i++) { if (($_POST[anone.$i]==ano) && ($_POST[u.$i]!=)) { $sestavjmeno=sestavjmeno($i); $sestavfirmu=sestavfirmu($i); $sestavadresu=sestavadresu($i); if (($_POST[u.$i]==o) && ($_POST[ta.$i]==ta)) $def[$i] = str_replace(<, <,str_replace(>, >,$sestavjmeno[1])); if (($_POST[u.$i]==o) && ($_POST[ir.$i]==ir)) $kon[$i] = str_replace(<, <,str_replace(>, >,$sestavjmeno[2]));
40
if (($_POST[u.$i]==f) && ($_POST[ta.$i]==ta)) $def[$i] = str_replace(<, <,str_replace(>, >,$sestavfirmu[1])); if (($_POST[u.$i]==f) && ($_POST[ir.$i]==ir)) $kon[$i] = str_replace(<, <,str_replace(>, >,$sestavfirmu[2])); if (($_POST[u.$i]==a) && ($_POST[ta.$i]==ta)) $def[$i] = str_replace(<, <,str_replace(>, >,$sestavadresu[1])); if (($_POST[u.$i]==a) && ($_POST[ir.$i]==ir)) $kon[$i] = str_replace(<, <,str_replace(>, >,$sestavadresu[2])); }}
Po ukončení cyklu se ukládá do proměnné $volny_ir dotazovací strom k volnému tématu pro InfoRating. $volny_ir=str_replace(<,<,str_replace (>,>,sestavvolny_ir())); if (($volny_ir !=) && ($volny_ir !=volny;)) $kon[$i].=$volny_ir;
Poté skript načítá témata ze souboru temata.txt. Následný WHILE cyklus kontroluje, která jsou zaškrtnutá. Pokud je u tématu zaškrtnuté políčko Tovek Agent, připojuje ho k větvi tvořící volný dotaz (do proměnné $defvolny). Pokud bude zaškrtnuté políčko InfoRating, téma se přidává do proměnné $kon za ostatní témata, která již mohou být v tuto chvíli v proměnné uložena, tedy na pozici [$i+7]. $filename=temata.txt; $file = fopen($filename, r); $i=0; while(!feof($file)) { $i++; $tema[$i][1] = fgets($file); $tema[$i][2] = fgets($file); $tema[$i][3] = fgets($file); } fclose ($file); $defvolny=str_replace(<, <,str_replace(>, >,sestavvolny())); $carkavolny=,; if ($defvolny==) $carkavolny=; for ($i=1; $i<=24; $i++) { if ($_POST[$tema[$i][2]]==ta) {
if ($_POST[$tema[$i][2].ir]==ir) $kon[$i+7]=$tema[$i][2].;.(str_replace(<, <,str_replace(>, >,($tema[$i][1])))); }
Dále se určuje váha jednotlivých dotazů na samostatnou osobu, osobu, firmu nebo adresu na 0.40. To proto, aby byla sražena výsledná váha dokumentu, ve kterém by se vyskytovala např. jen adresa, nebo jen osoba, atd. $kolikdotazu=0; for ($i=1; $i<=6; $i++){ if (($def[$i]!=) && ($_POST[anone.$i]==ano)){ $kolikdotazu++; if ($def[$i+1]!=) $car[$i]=,; $vaha[$i]=[0.40]; }}
Následuje vytvoření definitivní větve, která se skládá z dotazů na osobou, firmu, adresu. Pokud je vyplněné i volné téma nebo je označeno pro Tovek Agenta i některé z předem definovaných témat, přidává se k definitivnímu dotazu pro Tovek Agenta. $defvetev=$def[1].$car[1].$def[2].$car[2].$def[3].$car[3].$def[4].$car[4].$def[5]; if (($defvolny!=““) && ($defvetev!=““)) { $defvetev.=“,“.$defvolny; $defvolny=“,“.$defvolny; }
Závěrečný úsek kódu (pro část „and“) vytváří konečný dotaz na dokumenty, které chceme vyhledat. Výsledný dotaz pro Tovek Agenta se v další části kódu upravuje ještě o část „not“, definující dokumenty, které chceme z hledání předem vyloučit. Grafická podoba dotazu pro část „and“ je znázorněna na následující straně.
42
Obr. 16 - Výsledný dotaz pro Tovek Agenta (část and).
if (($kolikdotazu > 1) || (($kolikdotazu == 1) && ($defvolny!=))) $defdotaz=([0.90]< near/20>(.$defvetev.), (.$defvetev.), .$vaha[1].(.$def[1].$car[1].$vaha[2]. $def[2].$car[2].$vaha[3].$def[3].$car[3].$vaha[4].$def[4].$car[4].$vaha[5].$def[5].$defvolny.) ); if (($kolikdotazu == 1) && ($defvolny==)) $defdotaz=$defvetev; if (($kolikdotazu == 0) && ($defvolny!=)) $defdotaz=$defvolny; $defdotaz = str_replace(<, <,str_replace(>, >,$defdotaz)); if ($defdotaz != ) $defano=$defdotaz; if ($defdotaz == ) $defano=$defvolny;
Analogickým způsobem jsem vytvořil větev, která spojuje témata operátorem <not>. Celkový dotaz pro Tovek Agenta potom vzniká spojením obou těchto hlavních větví. Závěrečná část skriptu result.php vytváří informační text, který se zobrazuje po stisku jednotlivých tlačítek. Jak již bylo zmíněno dříve, výsledný dotaz přenáší uživatel do Tovek Agentu nebo InfoRatingu pomocí schránky. Sofistikovanější způsob propojení formuláře se současnou verzí Tovek Tools je složitější než by se mohlo zdát a nemá být řešením této práce.
43
6 Porovnání s pùvodním øeením Porovnání nového řešení s původním jsem prováděl na praktickém příkladě. Posadil jsem k počítači běžného uživatele Tovek Tools a dal mu jednoduché zadání kontextové analýzy. Uživatel nejprve provedl kontextovou analýzu způsobem, jakým byl doposud zvyklý a poté vyzkoušel nový způsob. Zadání bylo, aby našel co nejvíce informací o aféře kolem Jiřího Čunka a údajného převzetí úplatku. V InfoRatingu, potom měl zobrazit propojení vhodných kontextů. Vyhledávání dokumentů se provádělo v jediném fulltextovém zdroji a to v databázi Anopress. Databáze Anopress obsahuje všechny články, které vyšly v letošním roce v libovolných novinách. V prvním případě otevřel uživatel rovnou Tovek Agenta a do okna pro vložení dotazu začal psát klíčová slova. Uživatel si k tomuto tématu zvolil tato klíčová slova: Jiří Čunek, úplatek, H&B Real. Všechna tato slova spojil operátorem , jeho dotaz pro vyhledání dokumentů vypadal v jazyce Verity takto: jiří čunek and úplatek and (H&B Real, H & B Real) Při takto strukturovaném dotazu našel Tovek Agent pouze 18 relevantních dokumentů. Tento nízký počet byl způsoben nevhodně sestaveným dotazem. Dokumenty byly řazeny podle jediného kritéria, kterým byla četnost výskytu klíčových slov. Poté provedl export nalezených dokumentů do InfoRatingu a otevřel si okno pro zadávání kontextových dotazů. Uživatel zde definoval tyto kontexty: Čunek, Urbanová, korupce, úplatek, H&B Real. Výsledek kontextové analýzy ve formě kontextové matice si můžete prohlédnout na následující straně.
44
Obr. 17 - Výsledek vyhledávání, poté co uživatel definoval dotaz starým způsobem. Ve spodním okně je otevřený dokument, který byl označen nejvyšším skóre.
Obr. 18 - Kontextová matice, poté co uživatel definoval konetexty starým způsobem. 45
Poté jsem uživateli ukázal formulář, který jsem navrhnul, stručně mu vysvětlil jeho fungování a nechal jej ho vyplnit. Do prvního pole osoba vyplnil uživatel jméno a příjmení (Jiří Čunek) a do doplňku napsal navíc slova starosta a Vsetín. Při možnosti definovat více osob zadal i jméno sekretářky Marcely Urbanové. Vyplnil samozřejmě i název realitní společnosti H&B Real. V pravé části formuláře zaškrtnul 5 předem definovaných témat, o kterých si myslel, že se zadáním souvisí.
Obr. 19 - Formulář vyplněný uživatelem.
Když, tedy uživatel pomocí schránky přenesl dotaz do Tovek Agenta a spustil jej, nalezl software 484 193 dokumentů. Množství bylo v tomto případě tak vysoké, protože dotaz hledal i výskyt samotných slov z jednotlivých předem definovaných témat (aféra, korupce, policie, politika, trestný čin). Všechny dokumenty které nalezl, tedy nebyly relevantní zadanému tématu, nicméně skóre relevance těchto dokumentů bylo vypočítáno velice přesně. V popředí žebříčku se tedy ocitly maximálně relevantní dokumenty.
46
Obr. 20 - Výsledek vyhledávání, poté co uživatel definoval téma pomocí formuláře. Po exportu těchto dokumentů do InfoRatingu se vrátil uživatel zpět k mému formuláři, ve kterém měl definovat témata pro kontextovou analýzu. Uživatel zaškrtl v oblasti předem definovaných témat ta samá témata, která použil při stavbě dotazu pro Tovek Agenta. Dále nechal vyplněná jména Jiřího Čunka, Marcely Urbanové a realitní firmy H&B Real a stiskl tlačítko pro vytvoření kontextů. V InfoRatingu pak znovu otevřel okno pro vložení více dotazů, kam ze schránky vložil vygenerované kontexty.
Obr. 21 - Okno pro zadání kontextových dotazů v InfoRatingu, naplněné dotazy z formuláře. 47
Obr. 22 - Kontextová matice, poté co uživatel definoval konetexty pomocí formuláře.
Z tohoto praktického příkladu, který provedl běžný uživatel, vyplývají následující skutečnosti. Dotazovací strom pro Tovek Agenta vytvořený v mém formuláři, může v některých případech vyhodnotit jako relevantní i dokumenty, které se zadaného tématu netýkají. Na druhou stranu však vždy najde všechny relevantní dokumenty, protože nedává uživateli možnost, aby dotaz napsal špatně. Vzhledem k tomu, že nový způsob určuje skóre jednotlivých dokumentů velmi přesně, jsou případné irelevantní dokumenty zařazeny až na samém konci seznamu a jejich výskyt ve výsledných dokumentech tedy není tolik škodlivý. Kontextová analýza v InfoRatingu může být výskytem většího množství dokumentů méně přehledná, na druhou stranu je díky předem definovaným kontextům přesnější. Uživatel u nového způsobu ocenil hlavně to, že nemusí vůbec používat jazyk Verity. Na základě jistoty, že syntaxe dotazu bude vždy správná se nebál definovat ani větší množství subjektů tvořících celkový dotaz. Lze tedy prohlásit, že nový způsob tvorby KITs může běžnému uživateli přinést skutečně vyšší komfort i kvalitu kontextové analýzy v Tovek Tools. Do budoucna by tato aplikace mohla sloužit jako základ pro vytváření podobných formulářů pro firemní zákazníky. Vzhledem ke specifickým požadavkům jednotlivých organizací se uvažuje o řešeních na míru.
48
7 Seznam zdrojù [1] BALÍK, Vojtěch, Souborná databáze kooperačního systému článkové bibliografie – optimalizace integrace a správy heterogenních dat - Souhrnná zpráva za rok 2003 – (analytická část). [10. 9. 2004] [www dokument] dostupný z: [2] BERNHARDT, Douglas, Competitive Intelligence: Acquiring and Using Corporate Intelligence and Counter-Intelligence, Financial Times / Prentice Hall, 2003, 128 s. ISBN: 0273659286 [3] HERRIG, Jean P., Key intelligence topics: A process to identify and define intelligence needs[Klíčové zpravodajské otázky: Proces zjištění a definování zpravodajských potřeb]. [3. 1. 2001] [www dokument] dostupný z: [4] HERRIG, Jean P. KITS Revisited: Their Use and Problems [Užití a problémy KITs]. Competitive Intelligence, Vol. 09 No. 05, September - October 2006 Článek z odborného časopisu, zabývající se problémy spojenými s KITs. [5] JOHNSON, Aric, The Top 12 Priorities for Competitive Intelligence[12 největších přínosů Competitive Intelligence]. [www dokument] dostupný z: [6] Tovek, spol. s r. o (Praha). Query Editor. [dokument ve formátu PDF] . Dostupný z: Dokumentace k aplikaci Query Editor. [7] Tovek, spol. s r. o (Praha). Tovek Agent – Uživatelská příručka. [dokument ve formátu PDF] . Dostupný z: Dokumentace k aplikaci Tovek Agent. [8] Tovek, spol. s r. o (Praha). Tovek InfoRating. [dokument ve formátu PDF] . Dostupný z: [9] Tovek, spol. s r. o (Praha). Tovek Tools - Jazyk dotazů Verity. [dokument ve formátu PDF] Dostupný z: Podrobný popis dotazovacího jazyka Verity. [10] Tovek, spol. s r. o (Praha). Tovek Tools - Jazyk dotazů Verity - přehled. [dokument ve formátu PDF] . Dostupný z: [11] Tovek, spol. s r. o (Praha). Tovek Tools – Tipy a triky. [dokument ve formátu PDF] . Dostupný z: 49
[12] Tovek, spol. s r. o (Praha). Tovek Tools – Uživatelská příručka. [dokument ve formátu PDF - komprimovaný ZIP] . Dostupný z: [13] VEJLUPEK, Tomáš, . Firemní zpravodajský informační systém. [www dokument] Dostupný z: <www.inforum.cz/inforum2001/prispevky/vejlupek.htm> Článek o významu zpravodajství uveřejněný na konferenci Inforum 2001. [14] VEJLUPEK, Tomáš, . Zpravodajská analýza informací z komerčních informačních zdrojů. [cit. 22. 5. 2002] [www dokument] dostupný z: Článek pojednávající o významu zpravodajství a Competitive Intelligence v manažerském rozhodování. [15] ] Tovek, spol. s r. o (Praha). Tovek Tools – přehled. [dokument ve formátu PDF] . Dostupný z: http://www.tovek.cz/download/produkty/info_tt.pdf Stručný popis Tovek Tools. [16] LINUXSOFT.CZ. LINUXSOFT.CZ . [www portál] Dostupný z: Internetový portál zabývající se vývojovými technologiemi. [17] PHP.NET PHP.NET . [www portál] Dostupný z: Internetový portál o php. [18] JAKPSATWEB.CZ. JAKPSATWEB.CZ . [www portál] Dostupný z: Internetový portál zabývající se webovými vývojovými technologiemi. [19] JAKNAWEB.COM. JAKNAWEB.COM . [www portál] Dostupný z: Internetový portál zabývající se webovými vývojovými technologiemi.
50
Seznam obrázkù
Obr. 1 - Zpravodajský cyklus. .................................................................8 Obr. 2 - Ukázka topiku VyzkumVesmiru ................................................15 Obr. 3 - Tovek Agent..............................................................................20 Obr. 4 - Tovek Query Editor..................................................................21 Obr. 5 - Tovek InfoRating ......................................................................22 Obr. 6 - Tabulka vstupních polí pro téma osoba ...................................26 Obr. 7 - Tabulka vstupních polí pro téma firma ....................................27 Obr. 8 - Tabulka vstupních polí pro téma adresa ..................................27 Obr. 9 - 1. Ukázka špatného řešní dotazu na osobu..............................29 Obr. 10 - 2. Ukázka špatného řešní dotazu na osobu............................30 Obr. 11 - Dotazovací strom pro téma osoba..........................................31 Obr. 12 - Dotazovací strom pro téma firma. .........................................32 Obr. 13 - Dotazovací strom pro téma adresa. .......................................33 Obr. 14 - Dotazovací strom pro téma média. ........................................34 Obr. 15 - Finální vzhled webového formuláře. .....................................35 Obr. 16 - Výsledný dotaz pro Tovek Agenta (část and) .........................43 Obr. 17 - Výsledek vyhledávání, poté co uživatel definoval dotaz starým způsobem................................................................................45 Obr. 18 - Kontextová matice, poté co uživatel definoval konetexty starým způsobem................................................................................45 Obr. 19 - Formulář vyplněný uživatelem. .............................................46 Obr. 20 - Výsledek vyhledávání, poté co uživatel definoval téma pomocí formuláře................................................................................47 Obr. 21 - Okno pro zadání kontextových dotazů v InfoRatingu, naplněné dotazy z formuláře ..................................................................... 47 Obr. 22 - Kontextová matice, poté co uživatel definoval konetexty pomocí formuláře...................................................................48
51
8 Pøílohy 8.1 Soubor form.php První přílohou je soubor, ve kterém jsem vytvořil webový formulář, vzhledem k délce html kódu, zde neuvádím celý soubor. Odstranil jsem z něho části, které se analogicky opakují.
Untitled Document <meta http-equiv=Content-Type content=text/html; charset=windows-1250> <style type=text/css> <script type=text/javascript> function ukaz(a) { var o1=document.getElementById(osoba1) var f1=document.getElementById(firma1) var a1=document.getElementById(adresa1) var o2=document.getElementById(osoba2) var f2=document.getElementById(firma2) var a2=document.getElementById(adresa2) var o3=document.getElementById(osoba3) var f3=document.getElementById(firma3) var a3=document.getElementById(adresa3) var o4=document.getElementById(osoba4) var f4=document.getElementById(firma4) var a4=document.getElementById(adresa4) var o5=document.getElementById(osoba5) var f5=document.getElementById(firma5) var a5=document.getElementById(adresa5) switch (a) { case 1: if ((o1.style.display==none)) { o1.style.display=block f1.style.display=none a1.style.display=none document.dotaz.u1.value=o } else { o1.style.display=none document.dotaz.u1.value= } break case 2: if ((f1.style.display==none)) { o1.style.display=none f1.style.display=block a1.style.display=none
8.2 Soubor funkce.php ( ( .$rca1., .$rcb1. ), <word> .$RCC1. ); else if (($rca1!=) || ($rcb1!=)) $Rcislo1=<word> .$RCC1; else $Rcislo1=; if (($krestni1!=) || ($prijmeni1!=)) { if ($prijmeni1!=) $jmeno[1] = $prijmeni1; if (($krestni1!=) && ($prijmeni1!=)) $jmeno[1] = (.$krestni1.,.$prijmeni1.); if ($titul1!=) $jmeno[1] = (.$titul1.,.$jmeno[1].); if ($doplnek!=) $jmeno[1] = (.$jmeno[1].,[0.75](.$doplnek.,.$jmeno[1].)); } if ($Rcislo1!=) $jmeno[1] = (.$Rcislo1.,.$jmeno[1].); if ($doplnek!=) $idjmeno=$doplnek; if ($krestni1!=) $idjmeno=$krestni1; if ($Rcislo1!=) $idjmeno=$rcislo1; if ($prijmeni1!=) $idjmeno=$prijmeni1; if ($jmeno[1]!=) $jmeno[2]=$idjmeno.;.$jmeno[1]; return $jmeno; } //*******************************SETAVI FIRMU**********************************// function sestavfirmu($i) { $nazev1=trim($_POST[nazevfirma.$i]); $ico1=trim($_POST[icofirma.$i]); //zjitìní právní formy z comboboxu + úprava právní formy do dotazu if ($_POST[formafirma.$i]==a.s.) { $odecti=1; $forma1= ((<stem>a,<stem>s),(<stem>akciová,<stem>spoleènost),(<word>a.s)); } else if ($_POST[formafirma.$i]==s.r.o.) { $odecti=2; $forma1 =((<stem>s,<stem>r,<stem>o),(<word>spoleènost s ruèením omezeným),( <stem>spol,<stem>s,<stem>r,<stem>o),(<word>s.r.o),(<word>s r.o)); } else if ($_POST[formafirma.$i]==v.o.s.) { $odecti=2;
58
$forma1 =((<stem>v,<stem>o,<stem>s),(<stem>veøejná,<stem>obchodní,<stem>sp oleènost)); } else if ($_POST[formafirma.$i]==o.p.s.) { $odecti=2; $forma1 =<stem>o,<stem>p,<stem>s; } else if ($_POST[formafirma.$i]==k.s.) { $odecti=1; $forma1= ((<stem>k,<stem>s),(<stem>komanditní,<stem>spoleènost)); } else if ($_POST[formafirma.$i]==s.p.) { $odecti=1; $forma1= ((<stem>s,<stem>p),(<stem>státní,<stem>podnik)); } else if ($_POST[formafirma.$i]==drustvo) { $odecti=6; $forma1= <stem>drustvo; } else if ($_POST[formafirma.$i]== ) $forma1= ; $near= StrLen ($_POST[formafirma.$i])- $odecti; //sestavení výsledného dotazu na firmu if (($nazev1 !=) && ($forma1!=) && ($ico1!=)) $firma= ( ( (.$nazev1.), .$forma1.),<Word> .$ico1. , (.$nazev1.)); else if (($nazev1 !=) && ($forma1!=) && ($ico1==)) $firma= (( (.$nazev1.), .$forma1.), (.$nazev1.)); else if (($nazev1 !=) && ($forma1==) && ($ico1!=)) $firma= ( (.$nazev1.), <Word> .$ico1. ); else if (($nazev1 !=) && ($forma1==) && ($ico1==)) $firma= (.$nazev1.); else if (($nazev1 ==) && ($forma1==) && ($ico1!=)) $firma= <Word>( .$ico1. ); if ($firma !=) $doplnek=sestavdoplnek($_POST[doplnekfirma.$i]); if (($doplnek!=) && ($firma !=)) $firma = ((.$firma., .$doplnek.),.$firma.) ; if (($doplnek !=) && ($firma ==)) $firma = $doplnek; if ($doplnek ==) $firma = $firma; $deffirma[1] = $firma; if ($doplnek!=) $idfirma=$doplnek; if ($ico1!=) $idfirma=$ico1; if ($nazev1!=) $idfirma=$nazev1; $deffirma[2]=$idfirma.;.$firma; return $deffirma; } //*******************************SETAVI ADRESU*********************************// function sestavadresu($i) { $ulice1=trim($_POST[uliceadresa.$i]); $cp1=trim($_POST[cpadresa.$i]); $mesto1=trim($_POST[mestoadresa.$i]); //nahrazení / mezerou v èísle popisném $cp1=str_replace(/, , $cp1);
$carka2=,; $dopln=<stem>; $fraze=preg_split(/ /,$kousky[$i],-1,PREG_SPLIT_NO_EMPTY); if (count($fraze) > 1) { $kousky[$i]=(; $dk=count($fraze); for ($z=0; $z<$dk; $z++) { if ($fraze[$z+1]==) $carka = ; $kousky[$i].=<stem>.$fraze[$z].$carka; } $kousky[$i].=); $dopln=; } else $dopln=<stem>; if ($kousky[$i+1]==) $carka2 = ; $doplnek.=$dopln.$kousky[$i].$carka2; } if ($k > 1) $doplnek.=); return $doplnek; } } //******************************************************************************// //sestavi volny dotaz- rozseka na kousky fraze oddelene carkou, potom jeste rozseka viceslovne //fraze na dotazy typu NEAR a nakonec z toho vseho sestavi sestavi dotaz typu ACCRUE-STEM function sestavvolny() { $kolik=0; $mezivetve=; $mezivetve2=; $temaV=trim($_POST[volnetema]); $kouskyV=preg_split(/,/,$temaV,-1,PREG_SPLIT_NO_EMPTY); $k=count($kouskyV); if ($temaV!=) { if ($k > 1) $vyrazV2=(; $carka=,; $carka2=,; $mezivetve=,; for ($i=0; $i<$k; $i++) { $kouskyV[$i]=trim($kouskyV[$i]); $carka=,; $carka2=,; $dopln=<stem>; $fraze=preg_split(/ /,$kouskyV[$i],-1,PREG_SPLIT_NO_EMPTY); if (count($fraze) > 1) { $carka=,; $kouskyV[$i]=; $kouskyV[$i]=(; $dk=count($fraze); for ($z=0; $z<$dk; $z++) { if ($fraze[$z+1]==) $carka = ; $kouskyV[$i].=<stem>.$fraze[$z].$carka; }
61
$kouskyV[$i].=); $dopln=; } else $dopln=<stem>; if ($kouskyV[$i+1]==) $carka2 = ; $vyrazV2.=$dopln.$kouskyV[$i].$carka2; $mezivetve=,; } $volnydotaz=$vyrazV2; if ($k > 1) $volnydotaz.=); $kolik++; } return $volnydotaz; } //**************************** SESTAVI VOLNY DO NOT ***************************// function sestavvolnyne() { $kolik=0; $mezivetve=; $mezivetve2=; $temaV=trim($_POST[volnetemane]); $kouskyV=preg_split(/,/,$temaV,-1,PREG_SPLIT_NO_EMPTY); $k=count($kouskyV); if ($temaV!=) { if ($k > 1) $vyrazV2=(; $carka=,; $carka2=,; $mezivetve=,; for ($i=0; $i<$k; $i++) { $kouskyV[$i]=trim($kouskyV[$i]); $carka=,; $carka2=,; $dopln=<stem>; $fraze=preg_split(/ /,$kouskyV[$i],-1,PREG_SPLIT_NO_EMPTY); if (count($fraze) > 1) { $carka=,; $kouskyV[$i]=; $kouskyV[$i]=(; $dk=count($fraze); for ($z=0; $z<$dk; $z++) { if ($fraze[$z+1]==) $carka = ; $kouskyV[$i].=<stem>.$fraze[$z].$carka; } $kouskyV[$i].=); $dopln=; } else $dopln=<stem>; if ($kouskyV[$i+1]==) $carka2 = ; $vyrazV2.=$dopln.$kouskyV[$i].$carka2; $mezivetve=,; } $volnydotaz=$vyrazV2; if ($k > 1) $volnydotaz.=);
62
$kolik++; } return $volnydotaz; } //********************** SESTAVI VOLNY PRO INFORATING *************************// function sestavvolny_ir() { $kolik=0; $mezivetve=; $mezivetve2=; $temaV=trim($_POST[volnetema_ir]); $kouskyV=preg_split(/,/,$temaV,-1,PREG_SPLIT_NO_EMPTY); $k=count($kouskyV); if ($temaV!=) { if ($k > 1) $vyrazV2=(; $carka=,; $carka2=,; $mezivetve=,; for ($i=0; $i<$k; $i++) { $kouskyV[$i]=trim($kouskyV[$i]); $carka=,; $carka2=,; $dopln=<stem>; $fraze=preg_split(/ /,$kouskyV[$i],-1,PREG_SPLIT_NO_EMPTY); if (count($fraze) > 1) { $carka=,; $kouskyV[$i]=; $kouskyV[$i]=(; $dk=count($fraze); for ($z=0; $z<$dk; $z++) { if ($fraze[$z+1]==) $carka = ; $kouskyV[$i].=<stem>.$fraze[$z].$carka; } $kouskyV[$i].=); $dopln=; } else $dopln=<stem>; if ($kouskyV[$i+1]==) $carka2 = ; $vyrazV2.=$dopln.$kouskyV[$i].$carka2; $mezivetve=,; } $volnydotaz_ir=$vyrazV2; if ($k > 1) $volnydotaz_ir.=); $kolik++; } return volny;.$volnydotaz_ir; } ?>