MASARYKOVA UNIVERZITA
FAKULTA INFORMATIKY
jaro 2002
Prohlášení
Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.
Vedoucí práce
unknown
Shrnutí
S rostoucím množstvím vystavených vědeckých článků v síti Internet je stále větší problém vyhledat dokumenty z požadované vědecké oblasti. Tematicky specializované vyhledávací systémy provozované většinou na univerzitách nám mohou v takovéto situaci hodně pomoci. Tyto vyhledávače indexují ohromné množství článků a informací o jejich autorech.
Vedle vyhledávačů existují v síti Internet tzv. webové portály, které se snaží ulehčit přístup k žádaným dokumentům tak, že plní své informační zdroje výhradně dokumenty, které se zabývají určitou tematickou oblastí. K plnění svých vlastních informačních zdrojů využívají webové portály zpravidla právě činnosti tematicky specializovaných vyhledávačů.
V rámci projektu byl implementován systém, který získává texty článků zabývajících se daným tématem, informace o jejich vzájemných citacích a jejich autorech. Ke každému autorovi ještě také zjišťuje informace o jeho působišti. Tento systém je určen pro pozdější integraci do webového portálu věnovanému syntaktické analýze přirozeného jazyka.
Obsah
Seznam obrázků
Množství informací obsažené v síti Internet expanduje den co den nezadržitelným tempem a pravděpodobnost, že se zde nachází přesně ta informace, kterou kupříkladu já potřebuji, je tak čím dál tím větší. Avšak stále velkým problémem výše zmiňované celosvětové sítě je organizace takovéhoto kvanta dat a následné vyhledávání v něm. Z tohoto problému vyplývá, že pouhé obsažení dané informace nemusí nutně znamenat, že se mi podaří k ní bez vynaložení velkého úsilí nebo vůbec dostat. Veškerá data jsou totiž distribuována na obrovském množství počítačů po celém světě a existuje naprostá volnost při jejich zveřejňování.
Tato tzv. informační anarchie a neexistence jakékoliv centrální správy dokumentů vedla ke vzniku spousty ať už univerzálních nebo specializovaných internetových vyhledávacích služeb. Mezi nejznámější univerzální webové vyhledávače patří například dnes velice úspěšný Google. Univerzální protože se snaží shromažďovat informace o všech datech na Internetu zveřejněných nezávisle na tom, jaké tematické oblasti se týkají. Ze specializovaných webových vyhledávačů lze uvést například ResearchIndex, který se zaměřil na vyhledávání a zároveň rozšiřování vědecké literatury.
Ve snaze ulehčit orientaci jak ve vyhledávaných informacích ale vůbec v samotné celosvětové síti, vnést do práce uživatele s Internetem i jistý komfort a získat tak širokou obec uživatelů, začaly se budovat tzv. „webové portály“. Vznikly buď jako součást výše zmiňovaných vyhledávačů nebo úplně samostatně.
Cílem projektu je implementovat systém, který bude vyhledávat za pomoci specializovaných internetových vyhledávačů články, informace o jejich autorech a působištích těchto autorů a následně získaná data ukládat. Tento systém bude využit k plnění informačních zdrojů pro webový portál věnovaný konkrétně syntaktické analýze přirozeného jazyka.
Webový portál by se dal definovat jako vstupní bod - výchozí místo pro surfování po Webu nabízející širokou škálu služeb a informací s možností jejich přizpůsobení uživateli podle osobních potřeb a zájmů. Nabídka obecně zahrnuje vyhledávání webových zdrojů, jak prostřednictvím vyhledávacího stroje, tak prostřednictvím předmětového katalogu, prohledávání webového prostoru v určité zeměpisné, jazykové nebo tematické oblasti.
Dále nabízí ještě spoustu dalších služeb, které se u jednotlivých portálů už ovšem liší podle toho, na jakou skupinu uživatelů jsou zaměřeny a jaká činnost je s touto skupinou lidí spjata.
Možností, jak rozdělit zaměření webových portálů, je samozřejmě více, ale jedním z hlavních faktorů, který určuje, jak bude daný komunikační systém vypadat, je tematická orientace. Podle tohoto kritéria lze webové portály rozdělit do dvou skupin:
Horizontální portály jsou charakteristické tématicky širokým (obecným) zaměřením. Název horizontální je tedy odvozen od toho, že jejich činnost se soustředí na co nejširší informační spektrum. Obecnost je dána především nutností uspokojit co největší masy uživatelů a tedy komerčními důvody.
Naprostá většina těchto portálů se na Webu objevila původně jen jako jeden ze základních typů vyhledávacích nástrojů umožňujících orientaci v informačních zdrojích na Internetu. Časem se z nich staly nejnavštěvovanější webové stránky, a tak se jejich provozovatelé pokusili využít popularity a rozšířili nabídku o další funkce s cílem udržet uživatele na svých stránkách i poté, co si vyhledali potřebné informace. Firmy provozující vyhledávací systémy začaly nakupovat další servery, buď kvůli zajímavým technologiím nebo kvůli atraktivnímu obsahu. Vznikla tak opravdu „gigantická sídla“ s širokým tematickým rozsahem tak, jak je známe dnes.
Do palety poskytovaných služeb patří denní zpravodajství, tematicky orientované kanály (uživatelé se podle svých osobních zájmů mohou přihlásit k jejich odběru), ekonomické informace a burzovní zprávy, chat, přehled počasí, mapy, horoskopy, vtipy, kalendáře, vyhledávání osob, e-mailových adres a telefonních čísel (tzv. white pages), vyhledávání firem (tzv. yellow pages), hry, elektronické obchody, free-mailové služby, bezplatný prostor pro publikování webových stránek, zpřístupnění důležitých informací prostřednictvím mobilních telefonů a kapesních počítačů apod. Naprostá většina nabízených služeb je pro koncového uživatele bezplatná díky ziskům z všudypřítomné reklamy.
Jako příklad takových horizontálních webových portálů lze krátce uvést Google, Yahoo!, Lycos, NBCi a z domácích potom Seznam (jeden z prvních u nás), Centrum, Atlas, Volny a mnoho dalších.
Vertikální portály jsou na rozdíl od horizontálních tématicky úzce zaměřené a jsou určeny pro specifický typ uživatelů, proto se také někdy nazývají „comunity portals“.
Zpravidla jsou nekomerční nebo také neziskové. Patří mezi ně především vědecky orientované informační systémy, jejich provoz zajišťují univerzity nebo jiná vzdělávací a výzkumná centra. Shromažďují články, texty publikací, dále informace o jejich autorech a případně i o působišti těchto lidí, dále pak výsledky výzkumů, záznamy z konferencí atd.
Dnes se pomalu ukazuje, že na rozdíl od v současné době hojně rozšířených horizontálních portálů, které v mnoha případech nesplnily očekávání svých provozovatelů, mají vertikální portály podle analytiků budoucnost mnohem zářivější i při komerčním využití. Například v oblasti zahraničního obchodu je ideální sdružit více subjektů z určitého výrobního odvětví v rámci jednoho projektu a zájemcům nabízet související zboží a služby pod jednou střechou.
Nahlédneme-li do menu nabízených služeb, zjistíme, že v porovnání s komerčními portály je nabídka podstatně chudší, avšak postačující pro účely, k nimž byl portál zbudován. Většina služeb se odvíjí od témat, jimž se systém věnuje. Například z uložených a získaných dokumentů lze automaticky generovat záznamy ve formátu BibTeX, zjišťovat informace o citacích v článcích, případně jejich podobnosti a příbuznosti, jejich převody do jiných formátů nebo přidávání komentářů a zakládání diskusí či diskusních skupin nebo konferencí na téma, kterému se daný informační zdroj věnuje.
Do skupiny vertikálních portálů patří například CNET[1] zaměřený na oblast technologickou nebo Blackboard[2] a WebCT[3] věnované vzdělávání.
Webové portály se většinou skládají z několika systémů, které pracují nezávisle na sobě. Dají se rozdělit do dvou skupin. Do první patří ty, co pracují autonomně a pro uživatele je jejich činnost skryta. Říkejme jí třeba autonomní část webového portálu. Druhou skupinou jsou naopak aplikace, kde výsledek o jejich činnosti je nabídnut uživateli a sama činnost je také závislá na uživatelském vstupu.
Autonomní část se stará o prohledávání Internetu a obstarává data z předem daných informačních zdrojů. K této činnosti většina portálů využívá tzv. robotů (též spiders, crawlers), které automaticky procházejí hypertextovou strukturu Webu, načítají dokumenty a rekurzivně procházejí v nich obsažené odkazy. Do této skupiny také patří programy, jenž získaná data následně analyzují a podle potřeb připravují pro následné zpracovávání samotným webovým rozhraním. Například vytvářejí indexy nebo ukládají potřebné informace do databází.
Část závislá na chování uživatele se sestává z aplikací, které reagují na dotazy uživatele a jejich výstup není uživateli na rozdíl od autonomní části skryt. Komunikace probíhá pomocí webového rozhraní. Podle požadavků od uživatele, operuje systém nad předem získanými daty a umožňuje do nich podle potřeby zasahovat.
Webový portál se z pohledu uživatelského zpravidla skládá z několika vrstev, kde každá nabízí každé skupině uživatelů jiné služby.
Základní vrstva je vždy administrativní nebo také vývojová. Je určena pro lidi starající se o správný chod celého webového portálu. Takže je možné zde ovlivňovat například i chod autonomně pracujících systémů. Proto je pro přístup vyžadována autentifikace.
Další vrstva už je pro běžné uživatele, kterým je portál určen. Nabízí tedy služby, kterými by neměl být narušen správný chod celého systému. V případě, že jsou běžní uživatelé rozlišováni do dalších skupin, lze tuto vrstvu rozčlenit na další právě podle těchto skupin a každé pak přidělit různá práva s ohledem na to k jakým službám a informacím mohou přistupovat. Například u zpravodajského portálu bude skupina redaktorů, kteří mohou vkládat do systému své články a další skupinu budou tvořit čtenáři, kteří již pravomoc pro vkládání nových článků nemají. Jak je vidět, každý má pak různá práva pro zacházení s informacemi a pro pohyb uvnitř portálu. Tato uživatelská vrstva by se tedy rozdělila na redaktorskou a čtenářskou. Je to ovšem pouze ilustrační příklad a v praxi by konkrétně u tohoto portálu bylo rozdělení ještě mnohem složitější.
Jak je z předchozího textu patrné, usnadňují webové portály orientaci v nepřehledné pavučině informací a služeb dostupných na Internetu. Zároveň s tím vnáší do naší činnosti jistý komfort a pohodlí, ať už se jedná o práci nebo zábavu. Mám-li svůj oblíbený portál, nemusím znát neúnosné množství adres webových stránek, ale stačí mi jen jedna a přitom se dostanu k informacím, které mě zajímají, snadno a rychle.
Vědci z mnoha výzkumných oblastí dnes publikují své nejnovější objevy elektronicky na svých webových stránkách dlouho před tím, než se objeví na konferencích a v časopisech. Zatímco se před desetiletími dalo k výsledkům takovýchto konferencí a časopisům týkajících se právě těchto nových objevů dostat jen v knihovnách daných výzkumných center, je dnes situace poněkud jiná. Internet nám otevírá nové možnosti, jak se k takovýmto informačním zdrojům dostat. Tradiční vyhledávací systémy nám v tom ovšem moc nepomohou, neboť nejsou schopny prohledávat kupříkladu postscriptové soubory (výjimkou je Google), což je právě formát vhodný k elektronické přípravě vědeckých dokumentů a jejich publikování v již zmiňované síti Internet.
Naštěstí existují na Webu specializované služby, které si kladou za cíl usnadnit vyhledávání informací z vědecké oblasti. Tyto vyhledávací stroje fungují převážně při univerzitách jako nástroj vědy a výzkumu jen zřídka se jedná o produkty komerčních softwarových firem.
ResearchIndex (formálně CiteSteer[4]) je autonomně pracující systém určený k vyhledávání a zároveň rozšiřování vědecké literatury. Vyvíjejí jej Steve Lawrence, Kurt Bollacker a C. Lee Giles v NEC Research Institute.
Hlavní oblastí, kterou se tento systém zabývá, jsou informační technologie. Mezi další už ne tak významné patří pokročilá nauka o materiálech, chemie, fyzika, biofyzika a bioinformatika. Celkem tak indexuje něco přes 500000 vydaných článků, prezentací, záznamy konferencí a technických zpráv (údaj z května 2002).
ResearchIndex zpracovává informace o citacích, které je následně možné využít například k sledování vývoje určitých témat v závislosti na čase nebo různé návaznosti dokumentů. Zabraňuje tak i zbytečnému plýtvání prostředků, když se vědci v různých výzkumných centrech zabývají týmž problémem. Hlavním nástrojem systému je autonomní vyhledávání a indexace citací (Autonomous Citation Indexing, ACI).
Systém ACI vyhledává články prohledáváním Webu, přímo na domovských stránkách autorů nebo monitorováním diskusních skupin. Také je možné poskytnout systému dokumenty „ručně“. Při prohledávání Webu se využívá běžných vyhledávačů jako AltaVista, HotBot nebo Excite pro určení vhodných startovních bodů pro robota, který se při svém pohybu po síti zajímá pouze o soubory ve formátech Postscript a PDF. Zpracovávány jsou výhradně dokumenty obsahující reference nebo bibliografickou část, jinak nejsou považovány za vědecký článek.
V získaných dokumentech jsou pomocí heuristik ACI extrahovány jednotlivé citace a následně analyzovány. Hledají se pole název, autor, rok vydání, počet stran a identifikátor citace. S využitím regulárních výrazů lze rozlišit odchylky, kupříkladu je-li uveden seznam autorů u citace nebo pouze první z tohoto seznamu.
Pomocí metody invariants first se systém pokouší převést citace do uniformní podoby. To znamená, že záznamy, které mají relativně odlišnou syntaxi a pozici v dokumentu, jsou zpracovávány nakonec. Jako pomocný nástroj využívá k identifikování jednotlivých oblastí databázi jmen autorů, článků atp.
Při analýze dokumentu se může stát, že se stejné citace vyskytnou vícekrát na různých místech a ukládaly by se tak duplicitní záznamy, čemuž se musí předejít. K rozeznání a seskupení identických citací používá systém ACI následující čtyři skupiny metod:
Normalizační algoritmy použité v systému v současné době jsou dostačující pro praktické využití, avšak autoři uvažují o možném zlepšení použitím metod strojového učení.
ResearchIndex může vracet seznam citací nebo indexovaných dokumentů odpovídajících zadanému dotazu pomocí klíčových slov. Seznamy se pak nadále dají procházet a přes odkazy lze zobrazit o dokumentech a citacích podrobnější informace. Mezi ty patří například seznam dokumentů podobných nejen podle textu ale i na úrovní vět nebo seznam citovaných a současně i citujících článků. Pro citace je uveden také graf zachycující počet citací v článcích v daném roce. Mezi poskytnutými informacemi jsou mimo jiné také adresy ke zdroji, odkud daný dokument pochází, a na soubory daného dokumentu uložené v jiných formátech přímo na straně vyhledávacího systému.
HP Search[5] je tematicky zaměřený informační systém pro vyhledávání a sledování osobních webových stránek uznávaných vědců, implementovaný v jazyce Java. Domovské stránky zaujímají důležitou pozici ve vědecké komunikaci, neboť obsahují důležitá data jako například kontaktní informace, zprávy o činnosti, popisy projektů a v neposlední řadě i texty dokumentů.
HP Search se specializuje na vyhledávání v relativně malé výzkumné oblasti, což dovoluje nacházet stále nové a nové dokumenty. Jak ukazuje obrázek, dá se způsob budování vyhledávacího indexu rozdělit do tří kroků.
K ohodnocení domovských stránek HP Search nepoužívá klasické metody jako rozhodovací stromy, ale vlastní algoritmus, protože posuzuje i strukturu URL, odkazy vedoucí k dokumentu z jiných stánek a při prvním kroku vyhledávání není ještě text, nad nímž by se daly tyto metody použít, dostupný.
V prvním kroku HP Search zhodnotí získané údaje jako název stránky, URL, popis a pozici, na které vyhledávací systém adresu uvedl. Poté vybere kandidáta s nejvyšším skóre a pro něho vypočítá konečné hodnocení, k jehož stanovení použije hlavičku, odkazy, meta-tagy a samotný text dokumentu.
Aktuálnost dat nabízených systémem HP Search zajišťují dva parametricky řiditelné mechanismy, které pracují v pravidelných časových intervalech a případně jsou i volány specifickými událostmi.
Při vyhodnocování přístupových záznamů k DBLP se zjišťuje, zda někdo nezadal nové jméno, které ještě není v databázi, a nebo se prověřují jména, která se vyhledávala před delším časovým úsekem, než je nastavené maximum, a mohlo by to tak znamenat zastaralost záznamu. Tento proces probíhá denně.
Platnost URL se ověřuje jednou týdně pro každé jméno vědce z databáze pouze pro nejvíce ohodnocené stránky. Pokud je zadaná adresa neplatná, kontroluje se ještě minimálně dvakrát, než je definitivně odstraněna z databáze.
Server DBLP[6] (zpočátku DataBase systems and Logic Programing nyní Digital Bibliography & Library Project) poskytuje bibliografické informace o výsledcích hlavních konferencí a publikacích týkajících se počítačové vědy. Na tomto serveru je indexováno více než 270000 článků a k tomu obsahuje i zhruba 100000 odkazů na domácí stránky vědců zabývajících se informatikou (údaje z května 2002). Indexovány jsou články publikované nejen v elektronické formě, ale i ty, jež vyšly pouze v tištěné podobě.
Mops[7] (Martin's Online Paper Search) je relativně jednoduchý vyhledávací systém, sestávající se ze skupiny skriptů v Perlu. Běží zhruba 30 hodin týdně a to většinou přes víkend. Má za cíl poskytovat index z vědecky zaměřených dokumentů. Vstupem tohoto nástroje je seznam adres, které používá jako startovní body pro svou další činnost.
Za úkol má hledat komprimované nebo přímo ps, dvi a pdf soubory, neboť, jak už jsem se v některé z předcházejících částí zmínil, vědecké dokumenty jsou ukládány zejména v těchto formátech. Ze startovní stránky pak následuje odkazy do hloubky 1 nebo 2, kde opět hledá odkazy na požadované soubory. Prohledávání takto malé oblasti, kolem předané adresy, má za následek poměrně vysokou rychlost.
Nalezené dokumenty ukládá v ASCII formátu, což následně umožňuje snadné vytvoření indexu. Dále se ke každému ještě uchovává datum jeho nalezení, posloupnost URL, které k němu vedly a jméno odkazu, které uvedl autor stránky jako popis. Ke stejným dokumentům ovšem mohou vést různé cesty, kupříkladu server, kde jsou uloženy může být dosažitelný pod více než jedním jménem. Mops se snaží takovéto duplicity odstranit a zabránit jejich výskytu ve výsledném indexu.
Jako první krok, který jsem učinil při práci na projektu, byla analýza zadání a navržení možného řešení.
V první kapitole jsem se zabýval obecně rozdělením, strukturou a činností webových portálů. Webový portál věnovaný syntaktické analýze jazyka není nic výjimečného, co by se vymykalo tomuto obecnému popisu.
Jak je již z názvu patrné, jedná se o systém zaměřený na tematicky úzkou oblast, konkrétně syntaktickou analýzu přirozeného jazyka. Spadá tedy do skupiny vertikálních portálů. Bude provozován pro vědecké a výzkumné účely, nebylo tedy potřeba zabývat se implementací služeb běžných pro komerční webové portály jako například free-mail, chat, horoskopy, vtipy atd. Naopak bylo potřeba zabývat se návrhem služeb využitelných právě k vědeckým účelům, jako například indexace článků, zpráv z výzkumu, publikací, správa seznamu pracovníků atd.
Základní struktura systému se neméně liší od jiných webových portálů a byla tudíž také potřeba navrhnout a následně implementovat následující části:
Autonomní vyhledávací systém, který bude na Internetu v zadané tématické oblasti pomocí seznamu klíčových slov, získávat a aktualizovat následující data:
Samotné webové rozhraní, které bude zpřístupňovat zhruba tyto hlavní služby:
Z analýzy vyplynulo, že je potřeba navrhnout a implementovat dva nezávisle pracující sub-systémy. V rámci tohoto projektu bylo mým úkolem implementovat pouze první z nich. Proto se budu dále zabývat návrhem a postupem při implementaci pouze prvního systému a to autonomního v uvozovkách robota starajícího se o vyhledávání a následné získávání relevantních vědeckých dokumentů a dalších s nimi souvisejících informací.
Mezi základními požadavky na vyhledávací nástroj byla snadná ovladatelnost, průhlednost a možnost kontrolovat jeho činnost. Z těchto důvodů jsem se rozhodl sestavit vyhledávací systém ze tří nezávislých sub-systémů, kde se každý bude starat o své pole působnosti. Jednotlivé sub-systémy popisují následující stavové diagramy.
Aplikace FindNew si nejprve v prvním (startovním) bodě vyžádá od ResearchIndexu pod zadanými klíčovými slovy seznam článků. V jednom dotazu jich ResearchIndex nabízí maximálně 50. Pro každý článek zjistí, zda je již indexován. Pokud ne podívá se na stránku obsahující informace o daném článku, analyzuje ji a získané údaje uloží do databáze. Tento krok opakuje pro všechny články v seznamu dokud nedojde na konec. Poté se vrací do počátečního bodu a vše opakuje pro další obdržený seznam. Činnost tohoto sub-systému končí v případě, že již ResearchIndex nenabízí žádný článek.
V prvním kroku vezme sub-systém ArticleDownload z databáze informace o článku a podívá se, zda už je uložen ps nebo pdf soubor pod id daného článku. V případě že není, pokusí se získat požadovaný soubor v patřičném formátu z adresy uložené v databázi, kam ji uložil předchozí skript v průběhu své činnosti. Pokud se mu nepodaří soubor uložit, podívá se do vyrovnávací paměti na straně serveru ResearchIndexu a snaží se dokument získat tam. Aplikace opakuje celý děj vždy od prvního kroku pro každý článek až do doby, kdy už není na řadě v databázi žádný článek a ukončí proto svou činnost.
V počátečním bodě si sub-systém AuthorSearch vyžádá z databáze informace o autorovi. V případě, že není známo URL a přitom jsme ho ještě nehledali, pokusí se vyhledat s využitím služeb vyhledávacího systému HP Search adresu domovské stránky. Pokud ani po tomto kroku stále neznáme požadované URL, vrátí se zpět do počátečního bodu. Jinak analyzuje domovskou stránku a snaží se najít odkaz na seznam publikací, není-li takový seznam součástí dané stránky. Zároveň se také pokouší najít nějaké základní informace o působišti, jako třeba název nebo adresa. Dále pokračuje stejným způsobem opět od počátečního kroku dokud není seznam autorů vyčerpán.
Abych zajistil správnou funkčnost systému, navrhl jsem datový model. Nejprve jsem identifikoval jednotlivé entity a určil vazby mezi nimi (tzv. mřížku). Po sestavení modelu univerzální relace jsem doplnil kardinality a parciality. Výsledek ukazuje diagram na následujícím obrázku a pod ním popis jednotlivých entit a atributů.
V tomto konkrétním případě lze jednotlivé entity reprezentovat tabulkou v relační databázi a jejich atributy pak jako jednotlivé sloupce dané tabulky.
Tabulka article je určena k ukládání následujících informací o jednotlivých článcích:
shrnutí daného článku
Tabulka citation slouží jako vazební tabulka mezi různými řádky tabulky article. Tento vztah popisují následující sloupce:
Tabulka similar slouží jako vazební tabulka mezi různými řádky tabulky article. Tento vztah popisují následující sloupce:
Tabulka author je určena k ukládání následujících informací o jednotlivých autorech:
Tabulka article_author slouží jako vazební tabulka mezi různými řádky tabulky article a řádky tabulky author. Tento vztah popisují následující sloupce:
Po vytvoření prvních návrhů stavových diagramů a datového modelu jsem se začal zabývat samotnou implementací vyhledávacího systému. Zjistil jsem, že bude nutné analyzovat webové stránky a že k tomu je vhodné využít regulárních výrazů. Jelikož už jsem měl drobné zkušenosti se skriptovacím jazykem PHP, který také umožňuje pracovat právě s regulárními výrazy, zvolil jsem ho jako prostředek k implementaci samotného vyhledávacího systému.
Pro úplnost dodávám, že všechny skripty, které jsou součástí systému, lze nalézt na internetové adrese http://nlp.fi.muni.cz/projekty/parsing_portal.
Skript FindNew vyhledává nové články a s nimi související informace. K tomu využívá služeb vyhledávacího systému ResearchIndex popsaného podrobněji ve třetí kapitole.
Při implementaci tohoto skriptu jsem narazil na velice závažný problém. Jednalo se, v tomto případě, o nemilé omezení skriptovacího jazyka PHP týkající se maximálního času určeného pro běh skriptu. Skript totiž nikdy nestihl během této doby získat a zanalyzovat všechny informace nabídnuté ResearchIndexem a následně je uložit. Nejvíce časově náročné bylo vždy stáhnutí požadovaného dokumentu z Internetu. Problém se mi podařilo naštěstí úspěšně vyřešit.
Zvolil jsem takový postup, při kterém se v jednom volání skriptu analyzuje omezený počet stránek získaných od ResearchIndexu. Po ukončení činnosti zavolá skript sám sebe s jinými parametry odkazujícími na další skupinu článků. Aby bylo ale možné odeslat hlavičky určené k opětovnému spuštění skriptu, nemohl jsem vypisovat na výstup žádný text a informovat tak uživatele o činnosti, kterou skript vykonává. To mě vedlo k vytvoření třídy Log, která zaznamenává potřebné údaje o činnosti do speciálního souboru. Jak se ukázalo později, bylo toto řešení potřebné i v dalších skriptech, kde nastávaly obdobné potíže. Po ukončení činnosti skriptu se vypíší ze záznamového souboru na stránku nejdůležitější údaje jako například, o kterých článcích byly informace uloženy do databáze a o kterých již máme záznam, jak dlouho skript pracoval a případně kde vznikla jaká chyba.
Skript ArticleDownload vyhledává postupně pro každý článek PostScriptový nebo PDF soubor s jeho přesným zněním. Nejprve hledá na adrese získané od ResearchIndexu. Pokud se mu podaří daný soubor najít stáhne ho a uloží na disk. V případě že se mu to nepodaří, hledá ještě ve vyrovnávací paměti přímo na serveru ResearchIndexu.
Skript AuthorSearch dohledává chybějící informace o autorech článku. Mezi tyto chybějící informace může patřit URL domovské stránky nebo URL seznamu publikací a název působiště.
Rozpoznat správně na domácích stránkách autorů název jejich působiště je opravdu veliký problém. Každá stránka je jinak koncipována a najít a implementovat tak nějaký obecný mechanismus, podle kterého by se dalo postupovat při analýze daných stránek, je již nad rámec tohoto projektu. Mohlo by to být kupříkladu vhodné téma pro další bakalářský projekt.
Prozatím pracuje skript pouze s jednoduchou technikou, kdy zjišťuje informace o působišti pomocí URL domácí stránky autora. Vezme základ URL jako adresu působiště daného autora a tam se případně snaží najít záznamy obsahující název a fyzickou adresu daného působiště.
Pro zpřehlednění výsledného systému a usnadnění práce možností použít stejný kód ve více skriptech jsem se rozhodl využít technik objektově orientovaného programování. Tato technika víceméně věrně napodobuje způsob, jakým zacházíme s předměty reálného světa, a proto mi také umožnila lépe nahlížet na řešené problémy. Další vlastností, která mě k této volbě vedla, bylo zapouzdření objektů. Rázem mi tak ve skriptovacím jazyce PHP, kterého jsem pro implementaci použil, odpadla nepohodlná práce s globálními proměnnými a celkově mi to usnadnilo práci s daty.
V následujícím výčtu se pokusím charakterizovat všechny třídy, které jsem postupně implementoval pro využití v hlavních skriptech.
Třída MySql je navržena tak, aby zjednodušila komunikaci s MySQL serverem. Zavoláním konstruktoru s příslušnými parametry se vytvoří perzistentní spojení s MySQL serverem. Vzniklé chyby se vždy zpracovávají pomocí instance třídy Chyba, na kterou se předal odkaz při volání konstruktoru. Následuje výčet nejdůležitějších metod:
Třída Log je určena ke správě záznamů o činnosti (tzv. log souborů) jednotlivých skriptů. K vytvoření jednotky obsahující tuto třídu mě vedla nutnost umožnit navázání činnosti skriptu v bodě posledního přerušení po občasných výpadcích vyhledávacích serverů, například v případech kdy byly přetíženy. Následuje výčet nejdůležitějších metod:
Třída Clanek je jedna z klíčových. Slouží jako kontejner pro data popisující daný článek. Jsou zde definovány veškeré operace nad entitou article. Podrobněji jsou popsány v následujícím výčtu nejdůležitějších metod:
Třída Autor slouží opět jako kontejner, tentokrát však pro data popisující daného autora. Jsou zde definovány veškeré operace nad entitou author. Podrobněji jsou popsány v následujícím výčtu nejdůležitějších metod:
Třída Affiliation slouží jako kontejner pro data popisující dané působiště. Jsou zde definovány veškeré operace nad entitou affiliation. Podrobněji jsou popsány v následujícím výčtu nejdůležitějších metod:
Třída Chyba se využívá prakticky ve všech ostatních třídách a je určena ke zpracování vzniklých chyb, sestavení chybové hlášky a její vypsaní na výstup případně s využitím třídy Log do záznamového souboru. Následuje výčet nejdůležitějších metod:
Úkolem testování bylo ověřit funkčnost vyhledávacího systému a zhodnotit kvalitu získaných dat. Nejprve jsem pomocí jednotlivých skriptů získal potřebná data a ověřil tak úspěšnost při jejich činnosti. Poté jsem manuálně posuzoval kvalitu získaných dat. Tento posudek jsem ovšem provedl pouze nad omezeným vzorkem dat, neboť jak se ukázalo, jednotlivé skripty získaly až tisíce záznamů a jejich manuální procházení je abnormálně časově náročný proces.
Pro vyhledání nových článků jsem zadal jako vstup skriptu FindNew následující klíčová klíčová slova ve tvaru:
parsing OR parse.
Skript FindNew uložil do databáze informace o 1072 článcích. Po manuální kontrole, kolik jich ve skutečnosti ResearchIndex nabídl, jsem zjistil, že je to pouze osmina ze všech nalezených. Důvod, proč se nepodařilo získat informace i o dalších článcích, byl ovšem na straně ResearchIndexu, neboť ten je neustále vytížen a nabízí tak z vyhledaných záznamů pouze omezené množství. Kolikrát se mi například během ladění skriptu stávalo, že nabídl ResearchIndex jen stovku z celkem šesti tisíc nalezených záznamů a na další už se nebylo možné dostat.
K těmto 1072 záznamům s informacemi o jednotlivých článcích bylo uloženo do databáze dalších 1780 záznamů s informacemi o jejich autorech. Dále bylo zapsáno 3021 záznamů o citacích a 4286 záznamů o podobnosti jednotlivých článků.
Z těchto údajů lze vyvodit různé statistické závěry jako například to, že na jeden článek připadají přibližně dva autoři nebo že jeden článek je citován průměrně ve třech dalších článcích a je podobný se čtyřmi dalšími články.
Před spuštěním skriptu ArticleDownload už není potřeba zadávat žádný vstup. Tento skript pracuje samostatně nad záznamy uloženými v databázi, proto již popíši pouze dosažené výsledky.
Po spuštění se tomuto sub-systému podařilo k 1072 uloženým záznamům s informacemi o článcích získat 837 ps nebo pdf souborů, kde by měl být samotný text jednotlivých článků. PostScriptových souborů bylo 523 a ve formátu pdf jich bylo zbylých 314.
Abych zjistil, do jaké míry jsou stažené soubory použitelné pro fulltextové vyhledávání, převedl jsem je pomocí programů ps2ascii a pdftotext do souborů obsahujících holý text. Po podrobnějším prozkoumání jsem zjistil, že z celkem 523 PostScriptových souborů bylo 261 převedeno v pořádku. Pro dalších 261 souborů hlásil program ps2ascii buď jednu z chyb undefined in ch-xoff a stackunderflow in dup nebo byly v textovém souboru jen tečky. Takové soubory obsahovaly obrázky nebo byly příliš veliké, ale zobrazit se daly například pomocí programu Gnome GhostView 1.1.93 bez problému. Zbylý jeden případ se nepodařilo převést, protože nebyl soubor ve formátu PostScript. Co se týče pdf souborů, bylo z celkem 314 převedeno v pořádku 303 souborů do holého textu a zbylých 11 se nepovedlo převést, protože nebyly ve formátu pdf.
Ke spuštění skriptu AuthorSearch také není potřeba zadávat žádný vstup, neboť opět pracuje samostatně nad záznamy uloženými v databázi a popíši tedy pouze dosažené výsledky.
Po spuštění tento sub-systému našel u 472 autorů z celkem 1780 adresu domovské stránky. Z množiny autorů, u kterých se podařilo zjistit URL jejich domovské stránky, zjistil skript pouze pro 118 autorů adresu webové stránky obsahující seznam publikací. Dále se díky této množině autorů podařilo zjistit informace o 295 působištích.
URL stránky se seznamem publikací se nepodařilo najít v případech, kdy nebyl odkaz na seznam publikací na domovské stránce autora nebo tam byl, a pak nastaly dvě možnosti, při kterých byl skript neúspěšný. Buď název odkazu nespadal do množiny výrazů pod, kterými se hledá, anebo byl název odkazu identifikován ale adresa samotného odkazu už ne. Pro ilustraci druhého případu uvádím příklad zdrojového kódu stránky[8], kde daná situace nastala:
<td ALIGN=CENTER> <br> <a href="publ.html"> <font SIZE=4> <HREF=http://www.imc.pi.cnr.it/~codenotti/publ.html/> Publications </a></font><br> </td></tr>
Jak je vidět z tohoto příkladu, naráží občas skript při své činnosti i na webové stránky, kde nejsou jednotlivé tagy správně vnořeny nebo neodpovídají specifikaci formátu HTML. Aby byl skript dokonalejší, je potřeba implementovat i rozpoznávání takovýchto případů.
Pro zhodnocení kvality uložených informací o působištích jsem vybral vzorek s 40 náhodně vybranými zástupci z celkem 295 záznamů. Z tohoto vzorku mělo 8 působišť špatný název. Názvy obsahovaly například jméno vyhledávacího serveru, jméno serveru provozujícího domovské stránky, adresa serveru nebo uvítací zpráva programu Apache.
Nyní u každého sub-systému postupně shrnu jeho dosažené výsledky, popíši nedostatky a pokusím se navrhnout možná řešení těchto nedostatků.
Skript FindNew získal jen osminu ze všech článků, ve kterých ResearchIndex našel odpovídající klíčová slova. Pokud se ovšem k těm dalším nebylo možné dostat ani manuální cestou, dá se říci, že sub-systém FindNew dosáhl výborných výsledků.
Pro sub-systém FindNew by bylo dobré vymyslet způsob, jak se dostat k dalším informacím o článcích, které už ResearchIndex nechce z důvodu velkého vytížení systému poskytnout. Nejsem si ovšem jist, je-li to vůbec možné.
Skript ArticleDownload uložil soubory s textem zhruba ke čtyřem pětinám ze všech článků. Z těchto souborů se pak podařila správně převést do holého textu pouze polovina. Velkou slabinou sub-systému ArticleDownload je jeho neschopnost rozpoznat i jiné formáty než PostScript a pdf. Jednu pětinu článků se nepodařilo získat právě z tohoto důvodu. Zpravidla byly soubory obsahující text těchto článků nějakým způsobem komprimovány.
Do sub-systému ArticleDownload by bylo vhodné integrovat metody, které by umožnili získat text i z jiných formátů než PostScript a pdf. Také by se mohly vyzkoušet i jiné programy pro převod PostScriptových souborů do textu, neboť ps2ascii v tomto případě nedosáhl moc dobrých výsledků.
A nakonec skript AuthorSearch zjistil URL domovské stránky přibližně u jedné čtvrtiny z celkového počtu autorů. V případě, že byla u autora zjištěna adresa domovské stránky, našel skript na této stránce odkaz na seznam publikací až na výjimky vždy. Co se týče působišť, byly zjištěné informace o názvu správně zhruba ve čtyřech pětinách. Největším nedostatkem tohoto sub-systému je vyhledávání adres domovských stránek autorů.
Sub-systém AuthorSearch se stará jak o dohledávání informací k autorům tak i k působištím. Pro zlepšení přehlednosti a kontrolovatelnosti by mohl zjišťovat informace o působištích další nezávislý sub-systém. Za účelem zlepšit výsledky, kterých skript AuthorSearch dosahuje při hledání URL domovské stránky autora, by bylo do budoucna potřeba navrhnout metodu jak rozpoznat ve výsledcích, jež HP Search nabízí, který záznam patří autorovi, o kterého se zajímáme.
V rámci projektu se mi podařilo navrhnout a následně implementovat vyhledávací systém, který lze následně využít k plnění informačních zdrojů vhodných pro činnost webového portálu věnovaného syntaktické analýze přirozeného jazyka. Pomocí tohoto vyhledávače jsem získal informace přibližně o tisíci článcích týkajících se dané problematiky a k tomu také informace o autorech těchto článků a o působištích jednotlivých autorů. Zbývá tedy ještě vytvořit patřičné webové rozhraní, pomocí kterého se bude moci se získanými daty pracovat.
Při vývoji vyhledávacího systému jsem narazil na několik velkých problémů, jejichž výskyt byl podmíněn použitím skriptovacího jazyka PHP. Ve zpětném pohledu přemýšlím nad tím, zda by se spousta z nich objevila v případě, že bych použil jiného skriptovacího jazyka jako například Perl nebo přímo některého programovacího jazyka jako C++ nebo Java.
Doufám, že bude tato práce ponaučením pro další zájemce, kteří by rádi implementovali vyhledávací systémy a chtěli k tomu použít pouze skriptovacího jazyka PHP.
Celý systém byl vyvinut pod operačním systémem Debian Linux, ale fungovat by měl i na jiných platformách Unixu a také pod operačním systémem Windows, neboť je založený na platformě nezávislých technologiích. Na následujících řádcích bude vyjmenováno, co všechno je potřeba mít na počítači nainstalováno, aby byl systém funkční:
Instalace systému je jednoduchá. Po uživateli je vyžadována pouze základní znalost operačního systému, na kterém chce danou aplikaci provozovat.
Systém je distribuován jako jeden soubor zkomprimovaný programem zip. Po jeho rozbalení se vytvoří jednoduchá adresářová struktura, kde jednotlivé složky mají následující význam:
Bude-li systém provozován na počítači s operačním systémem, kde lze přidělovat přístupová práva, je nutné u adresářů log, ps a txt nastavit práva pro zápis.
Prvním krokem je vytvoření uživatele v MySQL a nastavení jeho hesla. Přihlásíte se jako administrátor do mysql a zadáte příkaz:
INSERT INTO user (Host,User,Password) -> VALUES('host','uživatel',PASSWORD('heslo'));
kde host je buď adresa serveru nebo přímo řetězec localhost podle toho, zda bude uživatel k mysql přistupovat z jiného stroje nebo ne.
Dalším krokem je vytvoření databáze s patřičnými tabulkami. Přihlásíte se do mysql pod nově vytvořeným uživatelem a zadáte příkaz:
\. createdb.sql;
Důležitým krokem je nastavení parametrů pro správný chod vyhledávacího systému. V souboru konfig.php, který se nachází v adresáři inc, lze nastavit následující:
[Lawrence] Digital Libraries and Autonomous Citaion Indexing. 1999. NEC Research Institute.
[Mariánek] Inteligentní vyhledávání na www. Diplomová práce FI MU, Brno 2001.
[Hoff] Finding Scientific Papers with HPSearch and Mops. 1999. Universität Trier.
[Ley] Computer Science Bibliography, DBLP FAQ. 1999. Universität Trier. http://www.informatik.uni-trier.de/~ley/db/about/faq.html.
[Mundhenk] Martin's Online Paper Search - a Distributed virtual digital library. http://mops.uni-trier.de/~mops/about.html.
[Bakken] PHP manual. PHP Documentation Group, 2002. http://www.php.net/manual.
[Castagnetto] Programujeme PHP profesionálně. Computer Press, Praha 2001. 80-722-310-2.
[Šimůnek] SQL kompletní kapesní průvodce. GRADA Publishing, Praha 1999. 80-7169-692-7.
[Axmark] MySQL manual. NuSphere, 2002. http://www.mysql.com/documentation.
[Sochor] Analýza a návrh systémů. Skripta FI MU, Brno 2001.
[Blaťák] Extrakce textu z PostScriptu a PDF. Bakalářská práce FI MU, Brno 2000.