Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea...

109
Mihail Radu Solcan Managementul informaţiei

Transcript of Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea...

Page 1: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Mihail Radu Solcan

Managementul informaţiei

Page 2: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Mihail Radu Solcan

Managementul informaţiei

Curs pentru învăţământul la distanţă (master)

Bucureşti2005

Page 3: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

c©2005 Mihail Radu Solcan.

Page 4: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Avertisment

Textul acestei cărţi reflectă experienţa autorului. El reflectă, de aseme-nea, o serie de preferinţe ale autorului.

Este important să înţelegeţi că toate explicaţiile referitoare la folosi-rea computerului sunt rodul practicii personale a autorului şi oglindescîn mod inevitabil şi limitele acestei practici. Toate soluţiile şi progra-mele descrise în carte au fost testate de către autor, inclusiv pe par-cursul elaborării cărţii ca atare. Autorul nu-şi asumă însă nici un felde răspundere directă sau indirectă pentru eventuale neajunsuri saudaune care ar putea rezulta din folosirea cărţii sau a programelor decalculator prezentate în carte. Această clauză concordă cu spiritul şilitera licenţelor programelor de computer folosite în carte.

Utilizarea programelor şi a soluţiilor descrise în carte trebuie făcutăde cititoare sau cititori pe propriul lor risc.

În sfârşit, autorul nu se angajează sub nici o formă să asigure sprijinîn dezvoltarea de noi programe sau soluţii de aplicare a unor programepentru nici o categorie de persoane.

Multe denumiri sunt folosite de către firme sau creatorii de pro-grame individuali pentru a distinge produsele lor. Unele dintre ele suntmenţionate în carte, respectând forma proprie denumirii respective. Ci-titoarele şi cititorii trebuie să ştie că aceste denumiri nu pot fi utilizatede către alte firme sau persoane individuale decât pentru desemnareaproduselor respective.

Pentru alte precizări şi informaţii suplimentare consultaţi situl peInternet al cursului.

Page 5: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Cuprins

Avertisment . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Ghid de utilizare a manualului 9

1 Perspectiva algoritmică asupra informaţiei 121.1 Complexitatea informaţiei . . . . . . . . . . . . . . . . 131.2 Informaţie şi cunoaştere . . . . . . . . . . . . . . . . . 141.3 Reflexivitatea în sensul lui Soros . . . . . . . . . . . . . 161.4 Managementul şi tehnologia informaţiilor . . . . . . . . 171.5 Costuri şi beneficii . . . . . . . . . . . . . . . . . . . . 19

2 Managementul informaţiei conţinute în texte 222.1 Căutarea informaţiilor cu ajutorul tiparelor . . . . . . . 23

2.1.1 Limbajul tiparelor de căutare în text . . . . . . 232.1.2 Căutarea cu ajutorul grep . . . . . . . . . . . . 26

2.2 Capcanele sortării . . . . . . . . . . . . . . . . . . . . . 282.3 Textele ca surse de date . . . . . . . . . . . . . . . . . 32

3 Managementul informaţiei conţinute în dicţionare 363.1 Dicţionarul pentru corectorul ortografic . . . . . . . . . 373.2 Managementul informaţiei din dicţionarele bilingve . . 413.3 Managementul definiţiilor lexicale . . . . . . . . . . . . 43

4 Limbajul SQL 474.1 Un exemplu de bază de date SQLite . . . . . . . . . . . 484.2 Căutarea în baza de date . . . . . . . . . . . . . . . . . 544.3 Ordonarea informaţiilor . . . . . . . . . . . . . . . . . 554.4 Prezentarea informaţiei din tabelele sqlite . . . . . . . . 56

5 Managementul logic al informaţiilor 59

Page 6: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

CUPRINS

5.1 Reţelele semantice . . . . . . . . . . . . . . . . . . . . 595.2 WordNet pentru utilizare . . . . . . . . . . . . . . . . . 605.3 WordNet pentru meşterit . . . . . . . . . . . . . . . . . 65

5.3.1 Fişierele Prolog ale WordNet . . . . . . . . . . . 665.3.2 SWI-Prolog şi încărcarea WordNet . . . . . . . 685.3.3 Explorarea bazei de date . . . . . . . . . . . . . 705.3.4 Descoperirea conexiunilor dintre informaţii . . . 74

6 Comunicarea informaţiilor 836.1 Avantajele folosirii bazelor de date . . . . . . . . . . . . 836.2 Vizualizarea informaţiilor . . . . . . . . . . . . . . . . . 86

6.2.1 Pachetul GraphViz . . . . . . . . . . . . . . . . 866.2.2 Diagrame pentru argumente . . . . . . . . . . . 88

7 Managementul informaţiilor conţinute în proiecte 937.1 Structurarea arborescentă a informaţiilor . . . . . . . . 94

7.1.1 Schema compoziţională . . . . . . . . . . . . . . 947.1.1.1 Folosirea programului Leo . . . . . . . 957.1.1.2 Folosirea VimOutliner-ului . . . . . . . 98

7.2 Prezentarea proiectului . . . . . . . . . . . . . . . . . . 100

Bibliografie 106

Indice 107

6

Page 7: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Lista figurilor

1 Modelul unei fişe de lectură . . . . . . . . . . . . . . . 9

2.1 O căutare simplă . . . . . . . . . . . . . . . . . . . . . 242.2 Căutarea unui cuvânt la început de rând . . . . . . . . 252.3 Căutarea unui cuvânt întreg . . . . . . . . . . . . . . . 252.4 Tipar de căutare care foloseşte punctul . . . . . . . . . 262.5 Un tipar de căutare mai complex . . . . . . . . . . . . 26

3.1 Exemplu de utilizare a corectorului aspell . . . . . . . . 383.2 Căutare în dicţionarul român-englez al Radei Mihalcea

cu ajutorul DING . . . . . . . . . . . . . . . . . . . . . 433.3 Căutare de definiţii în baza de date Dexonline cu ajuto-

rul programului Dixit . . . . . . . . . . . . . . . . . . . 44

4.1 Crearea unei baze de date SQLite . . . . . . . . . . . . 494.2 Crearea câmpurilor înregistrărilor dintr-un tabel . . . . 504.3 Conţinutul fişierului bib.sql văzut cu Vim . . . . . . . . 514.4 Tabelul carti în sqlitebrowser . . . . . . . . . . . . . . . 514.5 Fişierul bibdata.sql . . . . . . . . . . . . . . . . . . . . 524.6 Vizualizarea datelor din tabelul carti . . . . . . . . . . 534.7 Extras dintr-un tabel sqlite . . . . . . . . . . . . . . . . 58

5.1 Un exemplu de reţea semantică . . . . . . . . . . . . . 605.2 Startul WordNet . . . . . . . . . . . . . . . . . . . . . 625.3 Pisica este un soi de. . . . . . . . . . . . . . . . . . . . . 635.4 Un exemplu de utilizare a WordNet Connect . . . . . . 64

6.1 Fragment dintr-o sursă de date bibtex . . . . . . . . . . 846.2 Raţiuni pro şi contra unei soluţii în problema notării . 896.3 Reprezentarea presupoziţiei problemei . . . . . . . . . . 91

Page 8: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

LISTA FIGURILOR

6.4 Versiunea modificată a diagramei argumentării în pro-blema notării . . . . . . . . . . . . . . . . . . . . . . . 92

7.1 Schemă compoziţională în Leo . . . . . . . . . . . . . . 977.2 Schemă compoziţională în VimOutliner . . . . . . . . . 987.3 Un proiect structurat cu ajutorul LATEX . . . . . . . . . 1007.4 Inserarea modulelor în alte module cu ajutorul LATEX . 1027.5 Prima pagină a proiectului formatat de LATEX . . . . . 1037.6 A doua pagină a proiectului formatat de LATEX . . . . . 104

8

Page 9: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Ghid de utilizare a manualului

Acest curs vă oferă o introducere în studiul managementului informa-ţiei.

Cum trebuie folosit acest manual? Faceţi o primă lectură pentru avedea despre ce este vorba. Următoarele lecturi trebuie însă să ducă lapregătirea examenului.

Nu uitaţi, de asemenea, să folosiţi indicii de la sfârşitul manualului.Indicele vă ajută să parcurgeţi manualul într-un mod neliniar.

Luaţi o foaie de hârtie normală, format A4, şi rupeţi-o în patru.Obţineţi patru fişe. Luaţi una dintre ele şi trageţi o linie orizontală lao distanţă de marginea de sus a fişei care să vă permită să scrieţi unrând. Trageţi apoi o linie verticală pornind de la linia orizontală pe caretocmai aţi trasat-o. Rezultatul ar trebui să arate ca-n figura 1.

Figura 1: Modelul unei fişe de lectură

Aveţi acum modelul unei fişe de lectură. Ea este împărţită în trei„câmpuri“. În primul câmp puneţi o abreviere de genul „minf“ (Ma-nagementul informaţiei). Abrevierea aceasta este importantă pentru arecunoaşte repede despre ce fişă este vorba, dacă se rătăceşte printrealte hârtii. Mai important este însă să notaţi acolo numărul capitoluluisau secţiunii pe care o citiţi şi să adăugaţi un număr pentru alineatul

Page 10: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Utilizarea manualului

pe care-l parcurgeţi. Numărul alineatului nu este pus explicit în text,dar îl puteţi stabili dumneavoastră.

În câmpul care ocupă cea mai mare parte a fişei veţi nota ideea-cheieîn alineatul respectiv. Este foarte important să nu copiaţi alineatul caatare, ci să extrageţi doar tema în câteva cuvinte şi să precizaţi, tot încâteva cuvinte, ce se spune pe tema respectivă în alineatul dat.

Nu neglijaţi faptul că alineatul ar putea să introducă o întrebare petema respectivă. Întrebările sunt foarte semnificative pentru că de la eleporneşte orice investigaţie. În cazul lor nu este atâta necesară o rezu-mare, o desprindere a aspectului-cheie, cât o analiză. Încercaţi să vedeţide ce este pusă întrebarea respectivă. Nu uitaţi niciodată să analizaţice anume presupune întrebarea: acceptarea anumitor sensuri ale unorconcepte, un anumit statut ontologic al referentului unor termeni, exis-tenţa unui tip de obiecte, de relaţii, anumite condiţii. Nu treceţi decicu uşurinţă peste modul în care sunt formulate interogaţiile.

În câmpul care a rămas liber veţi trece două cuvinte sau expresii-cheie. Acestea sunt cuvinte pe care, de exemplu, le puteţi întâlni înindicele manualului. Pot fi, desigur, termeni pe care i-aţi remarcat dum-neavoastră. Un cuvânt vă ajută să identificaţi tema alineatului; celălaltcuvânt vă permite să regăsiţi ceea ce se spune pe tema dată în alineat.1

Cu cele patru fişe pe care le-aţi confecţionat deja faceţi o probă cupatru alineate diferite din manual. Acestea vor fi primele fişe de lecturăa manualului. Sondajul mai are însă şi rolul de a vă familiariza cu stilulmanualului, pentru a-l putea parcurge mai rapid.

Când citiţi n-are desigur sens să faceţi o fişă de lectură pentru fiecarealineat din manual. Nu are rost, de pildă, să fişaţi acest ghid introduc-tiv. Fişele de lectură se fac pentru capitolele numerotate, alegând deacolo alineatele care introduc elemente noi.

Ţineţi fişele de lectură a manualului separat de alte fişe, într-un plicsau o cutie specială.

Separat de fişele de lectură a manualului, construiţi un mic „fişier“cu cazuri (cu fişe de hârtie precum cele descrise mai sus!). Pentru fie-care caz reţineţi un număr de idei-cheie. Nu uitaţi să folosiţi descrieristructurale şi cuvinte-cheie în modul prezentat mai sus.

Cazul 1.1, de pildă, ar putea fi prezentat pe cinci fişe. Cuvinteprecum „problema“, „soluţii“, „tehnici“, „management“, „costuri“ suntcuvinte-cheie obligatorii în cazul fişelor pentru cazuri din domeniul ma-nagementului. Desigur, un caz mai complicat s-ar putea să ceară recur-

1Mai multe sugestii privitoare la lucrul cu fişe găsiţi în Mihail Radu Solcan,Eseul filosofic (Bucureşti: Editura Universităţii din Bucureşti, 2004). Cartea areşi o pagină de web cu informaţii suplimentare, pe care o puteţi accesa la adresahttp://www.ub-filosofie.ro/~solcan/eft.

10

Page 11: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Utilizarea manualului

sul la mai mult de cinci fişe. În contextul de faţă, cinci pare însă unnumăr rezonabil pentru fişele oricărui caz care ar putea constitui obiectde discuţie.

Cum alegeţi cazurile? Manualul foloseşte cazuri de management alinformaţiei familiare autorului. Găsiţi şi dumneavoastră acele cazuri demanagement al informaţiei care vă sunt familiare.

Lăsaţi pe fişele cu cazuri, în câmpul principal, loc pentru adnotăriulterioare. Pentru a distinge de restul fişei aceste adnotări, puteţi folosiun creion sau un pix de altă culoare.

Pe exemplarul personal din manual sau din lucrări din bibliografienu este rău să faceţi evidenţieri şi sublinieri. Acestea au rolul de apregăti elaborarea fişei de lectură. De asemenea, ele uşurează o lecturărapidă ulterioară.

Cu cele două seturi cu fişe, cel cu fişele de lectură a manualului şicel cu fişele care descriu cazuri, veniţi la examen. Trataţi aceste fişe cape nişte bilete de examen. Respectaţi deci formatul lor! Nu scrieţi totulpe foi mari şi nu puneţi mai mult de o idee pe o fişă!

11

Page 12: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Capitolul 1

Perspectiva algoritmică asuprainformaţiei

Întâlnim adesea expresia „depozit de informaţii“. Este o metaforă utilă,dar trebuie să sesizăm şi diferenţele. Nu te poţi plimba printr-un depozitde informaţii aşa cum te plimbi printr-unul de materiale de construcţii.În depozitul cu materiale de construcţii poţi pune mâna pe scânduri.Poţi evalua din ochi dimensiunile. Poţi compara desenul lemnului.

Într-un anume fel, şi-n depozitul de informaţii poţi evalua dimen-siuni, compara sau sorta. Operaţiile aceste sunt însă mult mai ab-stracte. În practică, oamenii au nostalgia vizualului şi preferă tot soiulde interfeţe grafice colorate, pline de butoane şi decoraţiuni atunci cândexplorează magaziile cu informaţii.

Invizibilitatea informaţiei poate fi însă foarte înşelătoare. În între-prindere se poate lesne uita că informaţia serveşte acţiunea. Sentimen-tul că informaţiile ar avea ceva tainic generează ideea că informaţiilear fi un lucru cu care se ocupă doar sectoare speciale ale întreprinderii.Folosirea computerelor accentuează foarte mult acest sentiment. Pro-gramarea computerelor are şi ea invizibilitate şi este înconjurată de oaură de mister.

În realitate legătura dintre informaţie şi scândurile din depozitul deconstrucţii este mult mai mare decât se crede îndeobşte. Să zicem c-amvrea să ne facem un raft. Ne procurăm scândurile necesare, dar trebuies-avem idee despre ceea ce vrem să facem cu ele: trebuie s-avem ideecum să le tăiem, s-avem idee cum le îmbinăm, s-avem idee cum fixămtoată construcţia la locul de destinaţie. Conceptul de idee, în asemeneacontexte, se va dovedi mai valoros decât pare.

Mai sus am examinat doar o anume problemă: cea a construirii unui(anume) raft. Gândiţi însă din perspectiva unei clase de probleme.Nu trebuie să fie probleme din matematică! Poate fi vorba şi despre

Page 13: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

desfacerea dopurilor de la sticle. Aici vom examina, în primul rând,dopul: este de plută, este un dop metalic precum cel de la sticlele debere, este un dop de sticlă de şampanie? După ce avem răspunsul,alegem modul adecvat de a proceda. Din nou avem însă o idee, o ideedespre rezolvarea unei clase de probleme. Cu un termen generic, o astfelde idee se numeşte algoritm.

Conceptul de algoritm este unul foarte general. Nu vă aşteptaţi la odefiniţie care să facă apel la un concept mai general şi să evidenţiezece anume distinge algoritmii de alte elemente din sfera conceptuluirespectiv. Cartea de faţă nu numai că nu-şi propune să discute la modulgeneral asemenea concepte foarte abstracte, ci chiar adoptă perspectivameşterului.

Ce-ar fi de „meşterit“ însă în cazul informaţiilor? Răspunsul estefoarte simplu: programe de calculator! Chiar să le meşterim? Cititoareleşi cititorii pot proceda cum cred de cuviinţă: dacă dezvoltă o pasiunepentru programare, pot chiar să meşterească la programele respective;altfel, pot să le trateze ca pe nişte cazuri în care este implicat manage-mentul informaţiilor şi să citească despre ele.

Analogia cu meşteritul raftului din scânduri este acum destul desimplă. Calculatoarele sunt capabile să stocheze date, înstructurate îndiverse moduri. Aceste date sunt prelucrate, aşa cum prelucrăm scân-durile: după o anumită idee. Cu alte cuvinte, folosim un algoritm sauo serie de algoritmi pentru a aduce datele la o altă formă.

Adevărul este că prelucrarea datelor se poate face şi-ntr-un modmult mai tradiţional, folosind mai degrabă creionul şi hârtia. Citiţi ocarte mai veche de documentare, cum ar fi cea editată de A. I. Mi-hailov et al.[6]. La urma urmei, lectura unei asemenea cărţi poate fipusă tot sub grila managementului informaţiei (mai ales la nivelul uneibiblioteci sau al unui institut de cercetare). Chiar dacă utilizarea calcu-latoarelor este, ca să zic aşa, noutatea revoluţionară anunţată în cartearespectivă, tehnicile de bază descrise acolo ţin de epoca anterioară cal-culatoarelor. Oricum, în acel moment, calculatoarele personale nici nufuseseră inventate. De asemenea, nici Internetul nu fusese descoperit.

1.1 Complexitatea informaţiei

În această secţiune ne vom permite totuşi ceva teorie abstractă. În loculunor date ceva mai concrete, ne vom închipui că trebuie să generămşiruri de semne 0 şi 1. Nu ne punem întrebarea la ce sunt bune acesteşiruri de semne atât de simple. Le tratăm drept ceea ce, la urma urmei,şi sunt: nişte obiecte matematice.

13

Page 14: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

Legendarul matematician rus Andrei Kolmogorov a avut ideea exa-minării lungimii programelor care generează şiruri precum cele descrisemai sus.

Cum adică „lungimea programelor“? Programele (unui calculatorfizic sau ale unuia abstract) sunt texte: aceste texte permit maşinii săfacă ceea ce „ştie“. De pildă maşina poate să adauge la un şir dat un 1sau poate să-l şteargă ş.a.m.d. Tot secretul constă în „citirea“ acestorprograme de către maşină. Programul nu conţine neapărat instrucţiuni;i.e. nu este neapărat nevoie ca algoritmul să fie dat în mod explicit.Programul poate să conţină doar o descriere; în acest caz, maşina şiprogramele deja stocate în ea vor genera algoritmul, care – la rândulsău – va produce rezultatul dorit.

Dacă programul poate fi o descriere, n-ar fi cel mai simplu ca el să fiechiar şirul de 0 şi 1 pe care dorim să-l generăm? Nu tocmai. S-ar puteasă nu fie chiar cea mai simplă soluţie. Dacă şirul are o regularitate înel, o instrucţiune scurtă s-ar putea să-l genereze foarte uşor.1

Gregory Chaitin şi alţii au dezvoltat o întreagă teorie algoritmică ainformaţiei. În această teorie conceptul de mărime (size) a unui pro-gram joacă un rol deosebit. Definiţia exactă este însă foarte sofisticată.Chaitin foloseşte limbajul Lisp pentru a lucra cu liste de simboluri.Mărimea programului este mărimea programului scris în Lisp.2

Teoria lui Chaitin este foarte diferită de clasica teorie a informaţieiformulată de Claude Shannon. Perspectiva lui Shannon era cea a sta-tisticii. Ea oferă în special un model teoretic pentru electronică (pentrucomunicaţiile electronice).

Este important de reţinut din perspectiva teoretică a lui Chaitincă informaţia este legată de liste de simboluri şi algoritmii capabili săgenereze respectivele liste. Se observă că vorbim despre liste de simbo-luri şi nu doar despre liste de cifre (care sunt şi ele simboluri – pentrunumere). Nu este vorba doar de măcinarea unor numere enorme, cide prelucrarea de liste de simboluri în general şi de limitele acesteiprelucrări.

1.2 Informaţie şi cunoaştere

Este informaţia tot una cu cunoaşterea, în sensul de cunoaşterea de caredispun oamenii? Răspunsul depinde de perspectiva pe care-o adoptăm.

1Pentru exemple şi o discuţie mai amplă despre complexitatea Kolmogorov ve-deţi, pe Internet, articolul pe această temă din Wikipedia.

2A se vedea Gregory Chaitin, Algorithmic Information Theory (Cambridge Uni-versity Press, 1990), versiunea plasată de Chaitin pe Internet, la 2 aprilie 2003, înspecial cap.6, pp.157 ş.u.

14

Page 15: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

Din punctul de vedere prezentat în secţiunea 1.1, informaţia nu esteformată doar din datele pe care le-am stoca în computer. De pildă, amputea avea o listă cu tot felul de date despre pantofii pe care-i avemîn depozit. Importanţi sunt însă algoritmii cu care prelucrăm acestedate. Cu alte cuvinte, avem atâta informaţie câte idei avem despre ceeace putem face cu datele respective. În orice caz, trebuie să ştim să leextragem din calculator. Şi n-ar fi deloc rău să facem acest lucru rapid.

Mulţi filosofi obiectează împotriva ideii c-am stoca în calculator cu-noaştere. Doar pentru noi oamenii datele respective au un înţeles. Altfelspus, noi oamenii înţelegem ce intră şi ce iese din computer. Compu-terul manevrează doar nişte simboluri lipsite de înţeles pentru maşină.O face foarte repede, mult mai repede decât noi, dar prelucrează infor-maţii, nu cunoaştere. Maşina are informaţii în sensul că are şi datele,şi algoritmii care specifică modul lor de prelucrare.

Mulţi experţi în management sunt şi ei convinşi că trebuie să facemo distincţie între cunoaştere şi informaţie. Pentru cei de la InformationManagement Office de pe lângă guvernul Australiei, putem împărtăşialtora cunoaşterea de care dispunem, în vreme ce informaţia doar orăspândim. Cunoaşterea ar ţine de „trăirea umană şi de capacitateaoamenilor de a formula aprecieri complexe bazate pe experienţa tre-cută“. Informaţia ar ţine de „datele ca atare, în vreme ce cunoaştereaeste «potenţial de acţiune»“.3

Ideea de mai sus că informaţia ar ţine doar de datele ca atare mi separe mai mult decât discutabilă. Fără algoritmi datele respective suntprecum inscripţiile într-o limbă pe care n-o ştie nimeni. Simbolurilerespective sunt ca nişte decoraţiuni ale suportului pe care sunt scrise.

Voi adopta totuşi aici ceea ce aş numi versiunea pesimistă a distinc-ţiei dintre informaţie şi cunoaştere: informaţia este ceea ce manipu-lează computerele; doar oamenii operează cu cunoaştere. S-ar putea caaceastă versiune pesimistă să fie eronată: distincţia dintre informaţie şicunoaştere ar fi mai degrabă una graduală.

Fapt este că actualele tehnologii ale informaţiei nu ne permit sădăm exemple de programe de calculator care manevrează informaţiileaşa cum manevrăm noi cunoaşterea. Luaţi orice program de traducerela care aveţi acces şi puneţi-l la „grea încercare“; va produce rezultatecurioase. Am introdus, de pildă, versurile lui Shakespeare (As You LikeIt 2/7):

All the world’s a stage,And all the men and women merely players:They have their exits and their entrances;

3Apud A Sample of Contributions to Worldwide Management Practices, pe situlwww.brint.com.

15

Page 16: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

într-un program de traducere4şi rezultatul a fost (în germană):

Ein Stadium der ganze Welt,Und alle Männer und der Frauen Spieler bloß:Sie haben ihre Ausgänge und ihre Eingänge;

În germană, cuvântul „Stadium“ are sensul de stadiu sau de stadion.Shakespeare vrea însă să spună că lumea este o scenă.5Algoritmul parea fi acelaşi şi pentru franceză, căci rezultatul este asemănător:

Une étape de tout le monde,Et tous les hommes et de femmes joueuses simplement :Ils ont leurs sorties et leurs entrées ;

Versurile lui Shakespeare s-au frânt şi totul arată precum un mormande cuvinte din care ne este greu să înţelegem ceva.

Prin urmare, orice persoană care răspunde de managementul uneiorganizaţii, cel puţin în stadiul actual al dezvoltării tehnologiei, trebuiesă ţină cont de diferenţa dintre cunoaştere şi informaţie.

1.3 Reflexivitatea în sensul lui Soros

George Soros nu este numai un om de afaceri de succes. În tinereţea saa studiat filosofia (cu Karl R. Popper) şi cultivă ideea că filosofia esteimportantă pentru strategia sa a investiţiilor.6

George Soros a formulat o teorie a reflexivităţii, care se distanţeazăde o serie de asumpţii din manualele de economie. Soros susţine căpreţurile de pe o piaţă nu sunt doar rodul jocului cererii şi al ofertei.Aşteptările celor care participă la schimburi joacă un rol important.7

Cercetătorii din ştiinţele naturii au de a face cu fenomene care auloc independent de ceea ce cred oamenii sau zic oamenii. Acest lucrunu se întâmplă însă pe o piaţă financiară.8

4Pe Internet, în decembrie 2005. Din motive de ordin etic, nu pot indica locul.Programul este unul comercial. Nu cred că este etic să faci publicitate negativă, aşacum nu este etic să faci publicitate pozitivă. După câte ştiu eu, alte programe arda rezultate asemănătoare.

5Iată cum arată traducerea lui August Wilhelm von Schlegel:

Die ganze Welt ist BühneUnd alle Fraun und Männer bloße Spieler.Sie treten auf und geben wieder ab,

(pe situl www.william-shakespeare.de).6A se vedea biografia lui George Soros de pe situl Open Society Institute.7George Soros[14, p.29].8George Soros[14, p.32]. În acest punct Soros se distanţează de profesorul său,

Karl R. Popper (v. The Alchemy of Finance[14, pp.35–40]).16

Page 17: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

Soros distinge între două funcţii: una, cea cognitivă, exprimă depen-denţa participanţilor într-un proces precum cel de pe o piaţă financiarăde situaţia de pe piaţă; cealaltă funcţie, cea participativă, exprimădependenţa situaţiei de pe piaţă de deciziile participanţilor, luate înfuncţie de valorile furnizate de către funcţia cognitivă. Raportul carese stabileşte între cele două funcţii este denumit de către George Sorosreflexivitate9

George Soros a formulat iniţial teoria sa despre reflexivitate ca ospeculaţie filosofică. Ulterior a testat însă această teorie pe terenul care-i este cel mai familiar, cel al bursei de valori.

Reflexivitatea în sensul lui Soros este un concept util şi pentru aînţelege ceea ce se-ntâmplă în cazul managementului unei firme. Ma-nagerul nu este o persoană ale cărei decizii să aibă eficienţă doar pentrucă examinează în mod corect o serie de indicatori şi face o mulţime decalcule. Felul în care este privit managerul de cei din firmă are o im-portanţă la fel de mare ca şi examinarea „indicatorilor“.

1.4 Managementul şi tehnologia informaţi-ilor

În cele ce urmează termenul „manager“ se referă la o persoană, de genfeminin sau masculin, nu la un automat. O asemenea persoană esteprinsă în angrenajul reflexivităţii în sensul lui Soros.

Părintele managementului ca disciplină academică, Peter Drucker,vorbea despre cinci operaţii de bază în munca unui manager:10

• stabilirea obiectivelor;

• organizarea;

• crearea unei motivaţii la cei cu care lucrează;

• măsurarea şi comunicarea rezultatelor;

• dezvoltarea persoanelor cu care lucrează, inclusiv a propriei per-soane.

Care ar fi însă profilul muncii unui manager al informaţiilor? Dac-ar fi să imităm schema propusă de Peter Drucker, atunci managerulinformaţiilor:11

9George Soros[14, p.42].10Peter Drucker[1, p.400]11A se vedea şi descrierea rolului managerului informaţiilor pe situl Ministerului

Muncii al SUA.17

Page 18: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

• stabileşte obiectivele activităţilor legate de computerele firmei;

• organizează activităţile legate de computerele firmei;

• crearea unei motivaţii la cei cu care lucrează;

• măsurarea şi comunicarea rezultatelor;

• dezvoltarea persoanelor cu care lucrează cu computere, inclusiva propriei persoane.

Dacă ne amintim de reflexivitate, ne dăm imediat seama că primaactivitate (stabilirea obiectivelor) trebuie făcută în coordonare cu cei-lalţi manageri ai firmei şi în funcţie de obiectivele fixate de managerulgeneral al firmei. Nici celelalte activităţi nu pot fi scoase de sub cupolareflexivităţii.

Problema dezvoltării persoanelor care lucrează cu computerele estetotdeauna una acută. Un computer cu programe oricât de sofisticateeste inutil dacă este folosit precum vechile maşini de scris. Oferă per-sonalului firmei numai satisfacţia de a se destinde din când în când cujocuri pe calculator.

Ce ar trebui să ştie persoanele care sunt manageri, dar nu manageriai informaţiilor, despre managementul informaţiilor? În diversele cărţicare încearcă să răspundă la această întrebare există două strategiifundamental diferite:

• Prima strategie este aceea de a privi sistemul de computere alfirmei ca pe un sistem făcut din cutii negre; persoanele care n-au atribuţii tehnice legate de aceste sisteme ar trebui să-nţeleagădoar ce intră şi ce iese din cutii.

• A doua strategie este cea a deschiderii cutiilor negre, pentru avedea cum funcţionează.

Cartea de faţă adoptă a doua strategie, cea a deschiderii cutiilor.Punctul nevralgic al acestei strategii este că deschiderea cutiilor sea-mănă cu deschiderea cutiei Pandorei. Sistemele computerizate sunt celemai complicate sisteme concepute de om.

Pentru a para efectul de tornado al complexităţii o strategie ar fi ceaa folosirii unor sisteme-jucărie. Noi am optat pentru o altă strategie:cea a „meşteritului“ cu programe de computer cât se poate de reale.Nici măcar exemplele nu sunt totdeauna foarte simple.

Fiecare caz de „meştereală“ poate să dea însă o idee despre ceea cese-ntâmplă efectiv în sistemul informaţional. Scopul este s-avem o înţe-legere mai bună a ceea ce se-ntâmplă în sistem. George Soros vorbeşte

18

Page 19: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

despre deficitul de înţelegere al celor care participă la schimburile peo piaţă. Un deficit de înţelegere există şi atunci când interacţionăm cusistemul informatic.

Cazurile reale pot fi uneori uimitoare din perspectiva deficitului deînţelegere. Am văzut firme care au achiziţionat baze de date scumpepentru a evidenţele lor electronice. În practică reuşeau să instaleze sis-temul doar pe un computer aflat undeva într-un birou. Restul compu-terelor erau prea vechi pentru a instala pe ele noul sistem. Apoi nu seconcepuse nimic pentru a transfera automat datele de pe vechiul sis-tem pe noul sistem. Şi la urma urmei câte articole de inventar aveau îndepozit? Câteva zeci de mii! Or sistemul achiziţionat va fi avut sens lasute sau poate milioane de articole de inventar. Managerii care au luatdeciziile n-aveau efectiv idee despre ceea ce se-ntâmplă într-un sisteminformatic.

1.5 Costuri şi beneficii

Dacă parcurgem un bun manual de economie12vom descoperi repedeimportanţa costurilor. Şi manualele de economie matematică pentrumanageri13ne vor convinge de importanţa analizei costurilor.

Rob Mattison, în cartea sa despre bazele de date[5], ne prezintăo serie de cazuri în care managerii trebuie să ia decizii cu privire labazele de date. Personajul său iniţial este managerul unui mic magazinde pantofi. El ar putea învăţa şi singur să scrie programele pentru bazasa de date. Mattison crede că va recurge totuşi la consultanţă. De ce?Totul este o chestiune de evaluare a costurilor şi beneficiilor.

O prezentare sistematică a unui caz ar arăta precum cazul1.1, cel alanticarului.

Anticarul aflat în căutarea unei baze de date are o serie de opţiuni. Arputea folosi, de pildă, o bază de date de tip SQLite, precum cea descrisăaici în capitolul 4? Desigur că da, dar cred c-ar trebui să apeleze laconsultanţă.

12Deosebit de potrivit pentru învăţarea tehnicilor standard din ştiinţa economicăeste manualul lui David Friedman[3]. Cartea este scrisă cu mult umor şi combinăexplicaţiile în limbaj natural cu tehnicile matematice.

13A se vedea bunăoară cel al lui William F. Sharpe[13].19

Page 20: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

Problema Ion este anticar. El are un mic magazinîntr-un mare complex comercial. S-audus însă vremurile când un anticar ţi-nea minte tot ce are în magazin. Ion s-ahotărât să-şi ia o bază de date.

Soluţii alternative Soluţiile comerciale care i se oferă mergde la 100 ron la 3000 ron. Soluţiile cusursă deschisă sunt de la 0 ron la 120ron.

Operaţii tehnice • cumpărarea unui computer;• instalarea bazei de date;• învăţarea utilizării bazei de date;• proiectarea sistemului anticarului;• scrierea sistemului (programului).

Decizii manageriale Ion este un om energic şi ar putea în-văţa să scrie şi programul bazei de date.Probabil va angaja însă un consultantcare va scrie programul de care are ne-voie pentru a utiliza baza de date.

Costuri şi beneficii Dacă Ion întreprinde singur toate acţiu-nile va consuma bani şi timp. Trebuievăzut dacă angajarea unui consultantnu face, de fapt, să scadă costurile.

Adaptare după Rob Mattison[5, pp.1–2]

Tabelul 1.1: Cazul managerului anticariatului

20

Page 21: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

1. Perspectiva algoritmică asupra informaţiei

Nu este oare periculos faptul că oricine are acces la fişierul cu bazade date SQLite are acces la toate datele? Nu cred că lucrul acesta aremare importanţă într-un mic magazin. S-ar putea ca personajul nostrusă fie oricum singura persoană care foloseşte baza de date. Într-o firmăfoarte mare problema accesului selectiv la date s-ar pune desigur altfel.

Managerii par a iubi de multe ori birourile luxoase, maşinile scumpeşi sistemele informatice costisitoare. Acestea sunt precum nişte blănuriscumpe. V-aţi întrebat vreodată de ce unele animale au blana atât debogată? Un cotoi fără blană este o fiinţă care pare foarte pricăjită;blana îl face să fie nu doar mai frumos, ci şi mai mare. Dacă pare maimare, atunci poate impresiona mai lesne prada sau adversarii. Blanaeste un atu din perspectiva luptei pentru supravieţuire. La urma urmei,lucrul acesta este valabil şi pentru manageri. Ţine de reflexivitatea lacare se referă George Soros: contează ceea ce cred alţii despre tine.

Programele de computer sunt şi ele învelite uneori în tot felul deblănuri: interfeţe grafice care-ţi iau ochii, tot felul de asistenţi care-ţisar în ajutor. Nu trebuie însă niciodată pierdute din vedere costurileacestor sisteme şi ceea ce fac ele efectiv. Un sistem mai prietenos reducecosturile legate de consultanţă. Este însă şi suficient de flexibil pentrua se adapta la obiectivele firmei? Ce se-ntâmplă dacă fişierele în caresunt stocate datele au un format secret şi producătorul renunţă să lemai folosească în produsele sale şi nu dezvăluie nici secretul formatului?

Am încercat s-aplic considerentele legate de costuri şi beneficii şi-ncazul cărţii de faţă. Toate exemplele folosesc programe care pot fi des-cărcate gratuit de pe Internet. Formatele fişierelor sunt publice. Maimult decât atât, programele au sursa deschisă. Este costul lor nul, dinpunctul de vedere al cititoarei sau cititorului. Nici vorbă că nu. Pro-gramele mai trebuie şi instalate. Limbajul lor trebuie cât de cât învăţatş.a.m.d. Informaţiile despre aceste programe contează!

21

Page 22: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Capitolul 2

Managementul informaţieiconţinute în texte

Ni se întâmplă de multe ori să scriem pe petice de hârtie. La restaurant:notăm pe şerveţele nume, adrese, numere de telefon. Ne folosim poatede invitaţia la recepţie pentru a nota idei.

Ca să-mi fac schiţa proiectului acestei cărţi am căutat prin geantă,prin buzunare o bucată de hârtie. Cu un creion am aşternut obiectiveleprincipale ale proiectului pe o hârtie a cărei destinaţie iniţială era săslujească drept ambalaj. În jurul computerului la care scriu aceastăcarte sunt tot felul de fişe de hârtie cu nume, idei, numere şi alte notaţiidintre cele mai diverse.

Managerul modern s-ar putea să aibă pe birou un teanc de fişe fru-mos tăiate, special pregătite pentru însemnări. Are probabil la înde-mână şi acele hârtiuţe cu lipici care pot fi ataşate direct paginilor uneicărţi sau unui document trimis de cei care se ocupă cu finanţele orga-nizaţiei sau cu computerele şi aşa mai departe.

Hârtiile acestea reprezintă, în fond, un mare progres. Ideea ca atarede a nota ceva, de a ţine însemnări a reprezentat un mare pas înainte.Folosirea hârtiei este relativ recentă. Oamenii şi-au făcut noduri la fu-lare sau chiar ţineau funii speciale cu noduri. Au scris pe cioburi delut. Arheologii au o mare satisfacţie când descoperă asemenea însem-nări. De multe ori ele nu sunt texte religioase sau scrieri literare. Suntînsemnări cu caracter comercial. Sunt evidenţe ale unor vechi depo-zite ş.a.m.d. Cu alte cuvinte, sunt informaţiile cu care lucrau vechiimanageri.

Managerul actual s-ar folosi desigur de computer, nu de sfori, oase şicioburi de lut. Locul cioburilor şi bucăţilor de hârtie este luat în acestcaz de fel şi fel de fişiere. Când produci însă fişiere căutarea informaţieistocate se face altfel decât atunci când răscoleşti printre hârtii.

Page 23: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

2.1 Căutarea informaţiilor cu ajutorul ti-parelor

Fişierele de tip text au o importanţă crucială în computerele actuale.Utilizatorii obişnuiţi s-ar putea să le găsească urâte: atunci când acestefişiere sunt vizualizate pe ecran ele seamănă cu vechile pagini dactilo-grafiate. Adevărul este că programele de calculator sunt scrise iniţialsub forma acestor fişiere! Acestea sunt sursele programelor care ne în-cântă apoi ochiul. Multe lucruri utile se pot face cu fişiere text.

Din păcate, sistemul de operare Windows nu include unelte sofisti-cate pentru lucrul cu fişierele text. Dacă sunteţi curioase sau curioşi şivreţi să vedeţi cum funcţionează pe viu exemplele de mai jos, recoman-darea mea ar fi să instalaţi un editor special pentru fişiere text. Celpe care-l folosesc eu se numeşte Vim. Găsiţi lesne o versiune pentruWindows la http://www.vim.org/.

Toată lumea ştie să caute cu Find. Pui şirul de semne căutat (deobiceiun singur cuvânt) şi-l regăseşti în textul afişat pe ecran. Este foarteraţional să procedezi aşa când cauţi, de pildă, printr-o pagină de webfoarte mare.

Meşterii într-ale informaticii recurg însă la tipare. Pentru a regăsiinformaţii într-un text folosesc un limbaj! Limbajul expresiilor regulatecum se numeşte tehnic acest limbaj este adesea invizibil pentru ochiulmuritorilor-utilizatori de rând. Vezi doar casete de dialog frumos dese-nate şi tot felul de opţiuni.

2.1.1 Limbajul tiparelor de căutare în text

Adevărul este că nici un limbaj nu este uşor de învăţat. . . în partea sasubtilă. Gândiţi-vă însă la marinarii care colindă porturile lumii. Unnumăr limitat de cuvinte din engleză sau malaieză sau altă limbă potsă-i ajute să se descurce foarte bine. O astfel de versiune a limbajuluitiparelor de căutare în text vă este propusă şi aici.

Am să folosesc chiar textul la care lucrez. Caut „ciob“ într-un modmai puţin uzual.

Editorul Vim este un editor modal.1Ceea ce se-ntâmplă, de pildă,dacă apăs tasta „\“ depinde de modul în care se află editorul. Apăsaţitasta „Esc“ şi veţi trece în modul comandă al editorului. În acest modal editorului, apăsarea tastei pe care se află semnul „\“ mută cursorulpe ultimul rând al ecranului şi permite căutarea unei porţiuni de text

1Pentru mai multe informaţii despre Vim a se vedea anexele la cartea mea Eseulfilosofic.

23

Page 24: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Figura 2.1: O căutare simplă

care se potriveşte cu tiparul descris în limbajul expresiilor regulate. ÎnFigura 2.1 se vede exact acest lucru: cursorul a fost mutat pe ultimulrând şi am scris „ciob“. Prima apariţie a lui „ciob“ a fost marcată cu unfond de culoare neagră. Când apăsăm tasta pe care scrie „Enter“ toateşirurile care se potrivesc cu tiparul căutat vor avea fondul galben.2

Până aici nimic deosebit. Afară poate de faptul că modul de a căutaîn texte pare cam chinuit. Să căutăm însă un cuvânt care se află laînceput de rând. Atenţie! Este vorba de rândurile logice, nu de cele vi-zuale. Cum eu scriu aici fiecare frază pe alt rând, aceasta înseamnă – cuoarecare aproximaţie – că rândurile logice sunt cele care încep cu ma-jusculă. În orice caz, pentru a termina un rând apăs tasta pe care scrie„Enter“. Parcă era undeva, la început de rând cuvântul „Arheologii“.În Figura 2.2 se vede cum decurge această căutare.

Dacă tiparul după care se caută se termină cu simbolul dolarului,atunci şirul de litere căutat este la sfârşitul rândului.

Cum căutăm un cuvânt întreg? În Figura 2.3 se vede că secvenţacăutată este precedată de o bară oblică inversă urmată de deschiderea

2Figurile sunt concepute pentru a fi văzute cu vizualizorul de pdf. Măriţi-le pen-tru a le vedea detaliile. Tipărirea s-ar putea să conducă la rezultate nesatisfăcătoare.

24

Page 25: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Figura 2.2: Căutarea unui cuvânt la început de rând

unei paranteze unghiulare şi se încheie cu bara oblică inversă urmatăde închiderea parantezei unghiulare.

Figura 2.3: Căutarea unui cuvânt întreg

Dacă nu ne amintim un semn, putem pune un punct. Tot aşa amputea proceda dacă, dintr-un motiv sau altul nu putem introduce de latastatură un semn. A se vedea Figura 2.4.

O altă tehnică utilă este indicarea şirului sau intervalului în care seaflă literele potrivite. Tiparul de mai jos

[em][an][gl][al][i]*eză

a fost folosit pentru a genera căutarea ilustrată în Figura 2.5. Steluţapusă după [i] are următoarea semnificaţie: semnul (sau semnele) dinparanteză apar o dată sau niciodată în expresia care se potriveşte ti-parului.

Cam acestea ar fi rudimentele unui limbaj de căutare. În situaţiileuzuale nici nu este nevoie de mai mult. Pentru a afla însă şi alte lucruri

25

Page 26: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Figura 2.4: Tipar de căutare care foloseşte punctul

Figura 2.5: Un tipar de căutare mai complex

despre limbajul tiparelor de căutare ar trebui să consultaţi o cartespecial consacrată lor sau o carte precum cea a lui Quigley[10, pp.67–79], care are un capitol consacrat limbajului tiparelor de căutare întexte.

2.1.2 Căutarea cu ajutorul grep

Numele programului grep este format din primele litere care compunsintagma „Global Regular Expression Print“. Este o unealtă familiarămeşterilor programatori care folosesc sistemul de operare Unix.

Pentru a avea unelte de programare Unix sub Windows trebuie săle instalaţi separat. Puteţi folosi GnuWin32, un sistem care recurgedirect la resursele Windows. Puteţi instala msys sau puteţi recurge laCygwin. Citiţi cu atenţie documentaţia acestor sisteme înainte de ainstala. În orice caz, un sfat bun pare a fi acela de a instala iniţial oversiune minimă, dar funcţională, a uneltelor Unix.

26

Page 27: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Desigur, sub un sistem Unix autentic, unelte precum grep vor func-ţiona mult mai bine. Exemplele date în continuare sunt lucrate subsistemul de operare GNU/Linux Fedora 3.

De fapt la ce este bun grep? Cu grep putem căuta prin mai multefişiere deodată, fără să deschidem un editor. Să vedem un exemplupractic:

grep ^Arheologii *.tex02-text.tex:Arheologii au o mare satisfacţiecând descoperă asemenea însemnări.

Deschideţi o consolă Unix sau, după caz, o fereastră MSdos (dacă aveţiunelte Unix instalate) sau o fereastră a emulatorului msys sau Cygwin.Tastaţi apoi numele uneltei grep urmat de o expresie scrisă în limbajultiparelor de căutare (regular expression) şi apoi numele fişierului. Euam folosit o steluţă urmată de „.tex“ pentru a indica orice fişier al căruinume se termină în „.tex“. Dacă pun doar steluţa, căutarea are loc printoate fişierele, inclusiv cele binare!

grep Arheologii *.tex02-text.tex:02-text.tex:Arheologii au o maresatisfacţie când descoperă asemenea însemnări.Binary file minf.dvi matches

Am slăbit, de altfel, şi cerinţa ca „Arheologii“ să fie la începutul rân-dului!

Să revenim însă la căutarea iniţială. Ce răspuns am primit? Mi s-a comunicat numele unui fişier, urmat de un semn de separare (douăpuncte) şi de un rând din text. Unealta grep furnizează prin urmare şicontextul în care apare termenul căutat.

Grep are ceea ce se numesc în limbajul Unix-ului „opţiuni“. Să zicem,de pildă, că nu vreau să apară numele fişierului. Atunci procedez în felulurmător:

grep -h ^Arheologii *.texArheologii au o mare satisfacţie cânddescoperă asemenea însemnări.

Opţiunea -h îi spune lui grep să nu afişeze numele fişierului. Observaţifelul în care este scrisă opţiunea. Grupul grep -h formează, de fapt, unsingur bloc. Continuă să existe deci trei blocuri în comanda de maisus: numele programului apelat, tiparul de căutare şi numele fişierului(fişierelor) în care se caută.

Comenzile date în consola unui sistem Unix sunt „comenzi în linie“.Trebuie să acordăm o mare importanţă în aceste comenzi spaţiilor albe.

27

Page 28: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Ele separă elementele din care este făcută comanda. Este absolut ne-recomandabil să folosiţi spaţii albe în numele fişierelor.

Dacă ţineţi morţiş să aveţi spaţii albe în numele fişierelor, procedaţica-n exemplul de mai jos:

grep ^Arheologii 02-text\ copie.texArheologii au o mare satisfacţie cânddescoperă asemenea însemnări.

Bara oblică inversă nu face parte din numele fişierului. Trebuie pusăînsă înaintea spaţiului alb. Chiar şi aşa grep nu poate afişa numelefişierului! Funcţionează ca şi cum ar avea activată opţiunea -h.

Ca manageri ai unei organizaţii gândiţi-vă, pornind de la acest exem-plu banal, ce probleme creează pentru organizaţia dumneavoastră lu-crul cu computere care lucrează atât sub Windows, cât şi sub Unix. Evi-dent, un sistem de computere hibrid este perfect posibil. Trebuie însăsă nu fiţi surprinsă sau surprins când informaticienii dumneavoastrăvor solicita resurse sau vor trebui să găsească soluţii pentru problemelelegate de reţeaua hibridă de computere.

Să ne întoarcem acum la rândul care începe cu „Arheologii“. Întretimp, am mai scris în fişierul respectiv, aşa c-ar trebui să apară maimulte rânduri în rezultat. Ar fi bine să afişăm numărul rândului pe careapare expresia căutată.

grep -n ^Arheologii 02-text.tex30:Arheologii au o mare satisfacţie când ...192:Arheologii au o mare satisfacţie când ...207:Arheologii au o mare satisfacţie când ...

Deşi n-am pus opţiunea -h, n-am decât numere pentru c-am indicatexact numele fişierului. Adăugarea lui -h ar putea fi însă o măsurăprudentă. Verificaţi oricum felul în care funcţionează grep.

2.2 Capcanele sortării

În exemplul care urmează nu conţinutul informaţiilor contează, ci mo-dul în care sunt manevrate. Am creat un mic fişier de tip text în caream trecut pe fiecare dintre cele trei rânduri o dată calendaristică şivaloarea unei unităţi de investiţii la un ipotetic fond mutual.3Iată ceconţine acest fişier:

3Exemplul este inspirat în mod liber din tabelul de la pagina 146 a cărţii luiGeorge Soros[14]. Valoarea unităţii de investiţii este în sensul NAVPS

28

Page 29: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

1/31/69 4012/31/76 30012/31/84 3000

În Unix există o unealtă sort care sortează rândurile dintr-un fişiertext. Chiar dacă sunteţi în Windows v-aş sfătui să eliminaţi programulsort, moştenit din vechiul msdos şi să folosiţi versiunea Unix a lui sort.

Să vedem ce rezultat produce apelarea lui sort:

sort curs1.txt12/31/76 30012/31/84 30001/31/69 40

Datele calendaristice au fost sortate ca şi cum ar fi un text! Operezcâteva modificări în fişier şi-l aduc la forma:

12/31/76 30001/31/69 4015/31/84 3000

Sortarea se va face acum altfel. Fireşte, se va face după luni!

01/31/69 4005/31/84 300012/31/76 300

Folosind subtilităţile programului sort din Unix pot sorta după ani.

sort -t/ -k3,3 curs2.txt01/31/69 4012/31/76 30005/31/84 3000

De data aceasta fişierul este văzut ca având pe fiecare rând câmpuri.Bara oblică separă câmpurile. Semnul care urmează după opţiunea -t îispune programului de sortare ce separator să folosească. După opţiunea-k urmează numerele care arată câmpurile după care se sortează. Aten-ţie însă la faptul că ultimul câmp cuprinde atât anul, cât şi valoareaunităţii de investiţii!

Având în vedere problemele ridicate de datele calendaristice cred căeste mai prudent să folosim date calendaristice de forma „an-lună-zi“.Iată şi a treia formă a micului meu fişier:

76-12-31 30069-01-31 4084-05-31 3000

29

Page 30: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Chiar şi-n această formă datele calendaristice pot fi problematice. Nuvă amintiţi de problema anului 2000? Dacă rezultatele fondului suntgândite pe termen lung? Ar putea fi vorba despre ceva de genul:

1976-12-31 3002069-01-31 403084-05-31 3000

Folosirea formei complete a anului este evident dezirabilă în cazuri deacest tip.

Cum s-ar face sortarea după valoarea unităţilor de investiţii? Voiconstrui o a cincea formă a fişierului. În această formă separ douăcâmpuri în felul următor:

1969-01-31 : 04001976-12-31 : 00302004-05-31 : 3000

Cele două puncte de pe fiecare rând servesc drept separator. Pe primulcâmp apar date calendaristice (într-o formă - sperăm - uşor de sortat)şi pe al doilea câmp apar valori ale unităţii de investiţii. M-am gânditcă al doilea câmp este văzut ca un text şi am pus zerouri pentru casortarea să aibă loc corect:

1976-12-31 : 00301969-01-31 : 04002004-05-31 : 3000

Valoarea acţiunilor ipoteticului fond este cea mai scăzută la 31 decem-brie 1976!

Adevărul este că sort din Unix poate recunoaşte numere. Un fişierde genul:

1969-01-31 : 4001976-12-31 : 302004-05-31 : 3000

poate fi sortat. Procedăm în felul următor:

sort -t: -k2,2 -n -b curs6.txt1976-12-31 : 301969-01-31 : 4002004-05-31 : 3000

30

Page 31: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Opţiunea -n îi spune programului sort să considere că are de face cunumere. Opţiunea -b cere ignorarea spaţiilor albe. S-ar putea ca ea săfie activată automat. Oricum, dacă o puneţi acest lucru n-are de ce sădăuneze.

Capcane chiar mai complicate întinde sortarea în momentul în caream lucra cu un fişier cu nume de familie româneşti. Să zicem că estevorba de data naşterii unor persoane:

Stere : 1987-10-23Tomescu : 1979-03-15Ştefan : 1984-07-04

Sortarea lor după data naşterii nu prezintă nici o problemă. Tomescueste, evident, cel mai în vârstă. Ba pot sorta uşor şi-n ordine inversă:

sort -t: -k2,2 -b -r data-nasterii.txtStere : 1987-10-23Ştefan : 1984-07-04Tomescu : 1979-03-15

Pentru a sorta în ordine inversă folosesc opţiunea -r.Sortarea după nume este însă problematică. În calculator literele au

asociate nişte coduri. Programul sort se foloseşte, de fapt, de acestecoduri pentru a sorta. În fond trebuie să sorteze după un criteriu! Pro-blema este că S are, de pildă, codul 83 şi T are codul 84, iar Ş arecodul 350. Astfel numele „Ştefan“ va fi fi în fruntea listei la sortareafără opţiuni:

sort data-nasterii.txtŞtefan : 1984-07-04Stere : 1987-10-23Tomescu : 1979-03-15

Sortarea în ordine inversă nu rezolvă desigur problema:

sort -r data-nasterii.txtTomescu : 1979-03-15Stere : 1987-10-23Ştefan : 1984-07-04

Gândiţi-vă la ce probleme creează celelalte litere româneşti care audiacritice. Mai ales că ele au coduri numerice diferite în diverse sistemede coduri!4

4Diferenţele acestea de coduri se simt lesne în paginile de web. Renunţarea însăla diacritice în paginile de web nu cred că este o soluţie.

31

Page 32: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Soluţionarea problemei de mai sus depăşeşte cadrul cărţii de faţă.Putem oferi doar o sugestie. Experimentând ca mai sus (sau citindsursa programului sort) putem să ne dăm seama că literele alfabetuluienglez sunt corect sortate. De asemenea, sunt corect sortate cifrele. Oidee ar fi să înlocuim pe S cu S1 şi pe Ş cu S2. Acesta ar fi un prim pas.Apoi sortăm şi resubstituim pentru a obţine literele româneşti normale.

Într-un plan mai general, din perspectiva managementului informa-ţiei, sortarea unui fişier de tip text ne oferă două principii utile. Ambeleprincipii pornesc de la ideea că trebuie să acordăm atenţie operaţiilorpe care vrem să le executăm cu informaţiile respective. Desigur, maidevreme sau mai târziu, vrem, să zicem, să le sortăm. Atunci trebuiesă fim atente şi atenţi la faptul că forma în care este stocată informaţiacontează (vezi mai sus problema formei datei calendaristice). Primulprincipiu este deci acela că informaţiile noastre trebuie să aibă o formăcare să ne permită să operăm lesne cu ele. Al doilea principiu ne spunecă este bine să dăm o structură explicită fişierelor. A se vedea mai susintroducerea unui separator pentru câmpurile unui rând.

2.3 Textele ca surse de date

Deşi sintagma sună pompos, „baze de date“, în fapt noi am avut dea face parţial în secţiunile 2.1 şi 2.2 cu baze date. Pentru a avea dea face cu o bază de date ne trebuie mai întâi un fişier de genul celorîn care am înscris cursurile unităţilor de investiţii la un fond mutual.Aceasta este sursa noastră de date. Mai avem nevoie şi de un limbaj pecare să-l înţeleagă programe cu care introducem şi extragem date dinsursa noastră de date. Evident, programe precum grep şi sort joacă doarparţial acest rol. Limbajul programului grep este limitat la căutareacu ajutorul tiparelor. Limbajul pe care-l înţelege sort este limitat laoperaţiuni de sortare.

Un limbaj veritabil de manevrare cu sursele de date este awk. Crea-torii awk sunt trei vestiţi specialişti în ştiinţa computerelor: Alfred Aho,Brian Kernighan şi Peter Weinberger. Ei au scris şi o carte despre awk.Puteţi citi despre Aho, Weinberger şi Kernighan în enciclopedia Wiki-pedia pe Internet.

Pentru a lucra cu awk vă trebuie mai întâi un editor de texte precumVim ca să scrieţi fişierele cu sursele de date. Acestea sunt fişiere detip text, precum versiunea extinsă a fişierului cu valorile unităţilor deinvestiţii:

1969-01-31 301972-12-31 100

32

Page 33: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

1976-12-31 3001978-12-31 5001979-12-31 10001981-12-31 7001984-05-31 3000

Mai avem nevoie, de asemenea, de programul awk ca atare. Oricedistribuţie Linux include acest program. De asemenea, dacă instalaţiunelte de programare Unix sub Windows aveţi posibilitatea de a folosiawk. În exemplele de mai jos awk este apelat într-o consolă a unui sistemLinux, respectiv Fedora Core 3.

În awk avem posibilitatea să folosim tiparele de căutare aşa cum aufost ele introduse în secţiunea 2.1. Pot să caut, de pildă, un anumit anîn fişierul de mai sus:

awk ’/1981-[0-9][0-9]-[0-9][0-9]/’ curs7.txt1981-12-31 700

Se observă că ziua şi luna sunt descrise ca perechi formate din cifre dinintervalul care începe cu 0 şi se termină cu 9. Aş fi putut pune doaranul în tipar, dar lucrul acesta ar fi riscant în cazul unui fişier real,unde anul ar putea coincide cu un şir de cifre aflat pe alt câmp.

Pe lângă tipare, limbajul awk ne permite să ne referim la acţiuni.Cea mai simplă acţiune este cea de afişare a conţinutului unui câmp.În sursa noastră de date primul câmp conţine ani:

awk ’{print $1}’ curs7.txt1969-01-311972-12-311976-12-311978-12-311979-12-311981-12-311984-05-31

Cuvântul-cheie print din limbajul awk desemnează după cum ne dămuşor seama o comandă de afişare. Câmpurile sunt desemnate prin sem-nul dolarului urmat de numărul câmpului. În sursa de date câmpurilesunt separate prin tab-uri.

Putem combina tiparele cu acţiunile în felul următor:

awk ’/1981-[0-9][0-9]-[0-9][0-9]/{print $2}’ curs7.txt700

33

Page 34: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

Atenţie la semnele de punctuaţie! Ghilimelele simple închid porţiuneascrisă în limbaj awk. Barele oblice cuprind între ele tiparul. Acţiuneaeste indicată de ceea ce este pus între acolade. La început este, evident,invocat awk, iar la sfârşit este indicat fişierul cu sursele de date.

Dacă nu se introduce explicit o altă specificaţie, fiecare rând dinsursa de date reprezintă pentru awk o înregistrare (record, în limbaengleză). Este vorba desigur despre rândurile logice, separate prin apă-sarea tastei pe care scrie „Enter“. Dacă nu se introduce altă specificaţie,câmpurile unei înregistrări sunt separate prin spaţii albe (obţinute prinapăsarea taste pentru spaţiu alb sau a tastei „Tab“).

Putem afla cu ajutorul awk numărul de câmpuri din fiecare înregis-trare:

awk ’{print "Numărul de câmpuri: "NF}’ curs7.txtNumărul de câmpuri: 2Numărul de câmpuri: 2Numărul de câmpuri: 2Numărul de câmpuri: 2Numărul de câmpuri: 2Numărul de câmpuri: 2Numărul de câmpuri: 2

În comanda awk de mai sus ghilimelele duble indică o porţiune detext. Această porţiune este afişată ca atare de către awk. Perechea demajuscule NF este numele unei variabile interne awk. Într-un limbajde programare o variabilă este precum un sertar sau o cutie în careţin valori. În acest caz, awk are din construcţie un sertar în care ţinevaloarea pentru numărul de câmpuri. Această valoare se poate schimbadesigur de la o înregistrare la alta. De aici şi numele de „variabilă“.

Limbajul awk are multe construcţii familiare celor care ştiu alte lim-baje de programare. Are însă şi multe elemente subtile, bine adaptatelucrului cu sursele de date. Iată, de pildă, cum pot extrage pentru fie-care înregistrare din sursa mea de date luna din data calendaristicăaflată pe primul câmp:

awk ’{split($1,dc,"-");print dc[2]}’ curs7.txt01121212121205

34

Page 35: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

2. Managementul informaţiei conţinute în texte

După cum am văzut mai sus acţiunile sunt invocate în acolade. Aiciavem de a face cu două acţiuni. Prima este aceea de „spargere“ (înengleză split) a primului câmp. Ar trebui ceva mai multă familiarizarecu limbajele de programare pentru a înţelege mai exact sintaxa aces-tei acţiuni. Chiar dacă vă lipsesc asemenea cunoştinţe, puteţi vedea căparanteza rotundă cuprinde trei elemente (numite tehnic „argumente“)ale acţiunii: un prim element indică numărul câmpului, al doilea aratăcă se va introduce o variabilă botezată „dc“, iar al treilea element indicăseparatorul folosit în notarea datei calendaristice. Astfel datele calen-daristice de pe primul câmp vor fi desfăcute în trei bucăţi. Nu rămânedecât să indicăm awk a doua acţiune: cea de afişare a lunii (ea fiind adoua „bucată“ din data calendaristică).

Programul awk este într-un fel uimitor. El ilustrează felul în carese poate construi o maşinărie complexă de extras date din aparentmodeste fişiere de tip text. Maşinăria aceasta este, de pildă, utilizatăintens de cei care administrează computere cu sisteme de operare detip Unix. S-ar putea, de asemana, ca ea să se ascundă undeva în spateleunor interfeţe grafice pline de butoane şi casete de dialog.

35

Page 36: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Capitolul 3

Managementul informaţieiconţinute în dicţionare

Unul dintre cele mai interesante dicţionare ale limbii române este Dic-ţionarul invers (Bucureşti: Editura Academiei, 1957). La prima vederenu pare mare lucru. Pare doar o listă de cuvinte ce se întinde pe maimult de şapte sute de pagini. La o privire mai atentă te va şoca bogăţiavocabularului limbii române. Ai toate şansele să găseşti aproape la totpasul cuvinte pe care nu le înţelegi. Omul grăbit va strâmba din naspentru că n-are şi explicaţia cuvintelor respective. Utilitatea dicţiona-rului invers este însă alta. Ordonarea cuvintelor din listă este făcutăexaminând întâi ultima literă. Toate cuvintele care se termină cu litera„a“ vor fi puse la începutul dicţionarului. Apoi ele sunt ordonate dupăa doua literă din finalul lor şi aşa mai departe. Consultând acest dic-ţionar poţi afla care sunt substantivele care se termină în a sau caresunt adjectivele care se termină în e sau în re.

Dicţionarul invers este desigur în primul rând un instrument de lu-cru, o unealtă pentru lingvişti. Este însă şi un excelent exemplu demanagement al informaţiei. O simplă ordonare diferită a materialuluipermite obţinerea rapidă de informaţii. Să culegi toate adjectivele ter-minate în e este o treabă considerabil mai complicată dacă te-ai slujide un dicţionar în care cuvintele sunt ordonate normal, după literelede la începutul lor.

Exemplul dicţionarelor nu este câtuşi de puţin fără legătură cu ma-nagementul unor lucruri mult mai puţin sacre decât cuvintele limbiiromâne. Până şi-n cazul celui mai umil depozit te poţi ciocni de listecu materiale, aparatură etc.

Dimensiunile listelor contează. În acest capitol vom avea de a face culiste foarte mari. Ceea ce ar pute fi rezolvat în cazul unor liste scurteprintr-o simplă examinare vizuală devine o problemă complicată în

Page 37: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

cazul unei liste foarte lungi. Nu ordonăm nici normal, nici invers, nicialtfel lista de cumpărături pe care o alcătuim zilnic în casă. Aceasta esteun simplu petic de hârtie pe care sunt scrise câteva cuvinte. Problemaorganizării listei s-ar pune însă cu totul altfel dac-ar fi vorba despre300 000 de cuvinte sau mult mai mult.

3.1 Dicţionarul pentru corectorul ortogra-fic

Pentru a corecta fişierele din care se compune sursa cărţii de faţă folo-sesc un corector ortografic creat de Kevin Atkinson şi denumit aspell.Corectorul aspell este parte integrantă din Linux Fedora Core1Precumtoate celelalte programe din această distribuţie aspell este un programcu sursă deschisă (şi modificabilă, atâta timp cât respecţi licenţa GNU).Piesa pe care vreau s-o înlocuiesc şi să o examinez este chiar lista decuvinte de care se foloseşte corectorul.

Invocarea corectorului se face din linia de comandă, precum în cazulde mai jos:

aspell --lang ro -c 02-text.tex

La început se tastează numele corectorului. Opţiunea –lang este ceacare indică limba textului care va fi corectat. Există un mod standardde a nota limbile. În cazul limbii române notaţia este „ro“. Opţiunea-c indică programului că trebuie să verifice (în limba engleză check)fişierul denumit „02-text.tex“. Atenţie la faptul că acesta este un fişierde tip text, nu unul binar!

Să vedem acum ce rezultate produce invocarea corectorului. Ceea cevedeţi în figura 3.1 este o consolă urxvt în care apare textul, cu subli-nieri, sugestii şi un meniu care permite operarea corecturilor. Cuvântul„Managerul“ este pus pe un fond de culoare neagră pentru că n-a fostgăsit de către aspell în dicţionar. Tot pe baza dicţionarului aspell faceo serie de sugestii.

Dicţionarul cu care lucrează aspell este creat dintr-o listă de cuvintecu o comandă de genul:

aspell --lang=ro create master ./ro.rws < ro.wl

În Unix perechea de semne ./ îi spune programului să creeze ro.rwsîn directorul curent (în directorul unde a fost apelat aspell). Tot acolo

1Există şi versiuni pentru Windows ale corectorului aspell, inclusiv o interfaţăgrafică, botezată freespell. Ca deobicei aş recomanda însă utilizarea aspell sub Linux.

37

Page 38: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

Figura 3.1: Exemplu de utilizare a corectorului aspell

trebuie să se afle o listă de cuvinte. Eu am botezat lista mea de cuvintero.wl.2Dicţionarul ro.rws are o formă specială, pe care o poate folosiaspell, dar care nu este lesne lizibilă pentru noi.

Cum facem ca dicţionarul ro.rws să devină funcţional? Asta depindede versiunea programului aspell. Eu am instalat versiunea 0.60 pentrucă aceasta poate lucra cu texte în unicod. În acest caz, ro.rws trebuiecopiat în directorul /usr/lib/aspell-0.60. Mai trebuie puse acolo fişierelero.dat, ro.multi şi ro_affix.dat. Fişierul ro.dat are un conţinut de genul:

name rocharset iso8859-2affix rospecial - -*-soundslike generic

Observaţi mai ales rândul al doilea, unde se spune că dicţionarul delimba română foloseşte setul de caractere iso8859-2. Nu vă faceţi pro-bleme dacă textul dumneavoastră este scris în codificarea utf-8 a sis-temului unicod. Versiunea 0.60 a programului aspell descifrează corect

2Puteţi găsi pe Internet un pachet gata pregătit pentru limba română. Eu descriuaici felul în care se poate construi un propriul dicţionar.

38

Page 39: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

textul respectiv, dar foloseşte un dicţionar iso8859-2. De altfel, pentrulimba română nici nu este nevoie de întreaga putere a unicod, capabilsă reprezinte texte scrise în limbi din India sau în japoneză. Versiunilemai vechi ale aspell nu pot corecta însă texte scrise în unicod.

Fişierul ro.multi are un conţinut destul de simplu:

add ro.rws

El spune aspell să folosească pentru română dicţionarul ro.rws. Dacăvreţi să faceţi pe ucenica-vrăjitoare sau ucenicul-vrăjitor, atunci acor-daţi atenţie faptului că eu am desemnat româna doar cu ro.

Despre fişierul ro_affix.dat voi spune mai multe mai jos. El lipseştede altfel din pachetul pentru limba română de pe Internet. Sistemulpoate funcţiona şi fără el.

Piesa pe care o putem însă examina vizual şi care constituie dicţio-narul ortografic de bază este lista de cuvinte. Explicarea felului în caream construit lista de cuvinte pe care o folosesc efectiv ar depăşi scopu-rile acestei cărţi. În esenţă, este vorba despre extragerea de cuvinte dinpropriile mele cărţi şi din surse liber accesibile pe Internet.3Pe scurt,este nevoie de un program care să transforme texte în liste de cuvinte.Apoi aceste liste sunt sortate, dublurile sunt eliminate şi listele suntcombinate într-o singură listă. Se pune desigur problema şi unui exa-men vizual al listei, precum şi confruntarea ei cu dicţionare ortograficetipărite. Acest proces este desigur laborios.

Să examinăm însă lista de cuvinte ca atare. Lista mea, în formaei actuală, are 288771 de intrări. Ar fi impropriu să vorbesc desprecuvinte, deoarece lista cuprinde şi forme ale aceluiaşi cuvânt. În jurulcuvântului „manager“ lista arată în felul următor:

managementmanagementulmanagementuluimanagermanagerimanagerialmanagerialămanagerialemanagerialimanageriimanagerilor

3Lista de cuvinte pentru limba română este deocamdată un proiect aflat în lucru.Când proiectul respectiv va atinge un stadiu acceptabil de dezvoltare am de gândsă afişez lista de cuvinte şi dicţionarul pe Internet şi să le plasez sub licenţa GPL.

39

Page 40: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

Forma articulată „managerul“ lipseşte din listă. Această absenţă ridicăo problemă interesantă.

Are oare rost să adaug fiecare formă, cu mâna, pe măsură ce ogăsesc? Lista ar creşte foarte mult. În plus, ar fi şi foarte multe operaţiişi corecturi de făcut manual. Aici intervine rolul fişierului ro_affix.dat.Să ne uităm în lista de cuvinte la nişte termeni precum „fir“ şi „cadru“:

....cadru/N....fir/N....

Bara oblică este un separator, un semn special care-i spune programuluiaspell că urmează un aşa-numit „steag“. Steagul este o literă. Am alesaici o literă care să sugereze că este vorba despre substantive neutre.În ro_affix.dat se află definiţiile necesare pentru steaguri. De exemplu,pentru steagul N definiţia ar putea arăta aşa:

SFX N Y 11SFX N 0 e [^aeiouă]SFX N 0 ul [^aeiouă]SFX N 0 ului [^aeiouă]SFX N 0 ele [^aeiouă]SFX N 0 elor [^aeiouă]SFX N u e [^aeiouăâî]uSFX N 0 l [^aeiouăâî]uSFX N 0 lui [^aeiouăâî]uSFX N 0 le [^aeiouăâî]uSFX N u ele [^aeiouăâî]uSFX N u elor [^aeiouăâî]u

Pe primul rând stă scris că este vorba despre sufixe, că steagul este N,că se combină eventual cu prefixe şi că definiţia care urmează are 11rânduri. Cele 11 rânduri sunt divizate în cinci coloane. Primele douăcoloane coincid cu cele de pe primul rând. A treia coloană indică dacătrebuie sau nu eliminat ceva din finalul cuvântului înainte de a adăugasufixul. Dacă se pune 0 (zero), atunci nu se taie nimic. Pe rândul şasese vede însă că trebuie eliminat u. Sufixele care se adaugă sunt pecoloana a patra. Pe coloana a cincea este tiparul finalului cuvântuluidin listă. Pe primele cinci rânduri tiparul spune că respectivul cuvântnu se termină în vocală. Pe ultimele şase rânduri tiparul ne spune căeste vorba de cuvinte terminate în consoană plus u.

Programul aspell are comenzi speciale care ne permit să testăm stea-gurile, pe măsură ce le definim:

40

Page 41: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

echo fir/N | aspell --lang ro expandfir firelor firele firului firul fire

Primul rând este la consolă (în linia de comandă, cu alte cuvinte) şieste urmat evident de o apăsare pe „Enter“. Al doilea rând ne aratăcum expandează fir/N. Chiar dacă n-aveţi aspell instalat puteţi citidocumentaţia pe Internet.

Putem testa şi a doua parte a definiţiei steagului N în felul următor:

echo cadru/N | aspell --lang ro expandcadru cadrelor cadrele cadrule cadrului cadrul cadre

Folosirea sufixelor sau prefixelor definite în ro_affix.dat ne ajută săcomprimăm lista. Comprimarea informaţiei este importantă. Ceea ceam văzut mai sus este însă şi un exemplu practic de comprimare. Com-primarea utilizează faptul că anumite părţi ale informaţiilor noastre serepetă. Este suficient să stocăm undeva tiparul comun şi să notăm doarce tipar este folosit într-un punct sau altul.

3.2 Managementul informaţiei din dicţio-narele bilingve

Pentru a construi un dicţionar bilingv simplu putem folosi structuri degenul celor studiate în capitolul 2. De pildă, pe pagina de web a RadeiMihalcea, de la University of North Texas, puteţi găsi, sub licenţă GPL,un dicţionar român-englez.

Este interesant să căutăm prin dicţionarul Radei Mihalcea cu aju-torul grep:

grep -hw curent romanian-english.txtcurent <> coursecurent <> currentcurent <> dailycurent <> draughtcurent <> fluentcurent <> fluentlycurent <> generallycurent <> instantcurent <> legalcurent <> presentcurent <> runningcurent <> trend

41

Page 42: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

curent <> usualcurent <> usually

Opţiunea -hw combină opţiunile -h, care cere să nu se afişeze numerede linie, şi -w, care cere ca tiparul să fie confruntat doar cu cuvinteîntregi.4

Se observă că Rada Mihalcea foloseşte drept separator combinaţiade semne <>. Am putea folosi sort pentru a sorta după al doilea câmp.Un editor precum Vim ne poate ajuta apoi să decupăm al doilea câmpşi să-l punem pe prima poziţie. Se obţine astfel un dicţionar englez-român. N-are însă prea mare rost să facem aceste manevre. grep nepoate veni în ajutor.

În căutarea de mai sus ajunge să adăugăm un singur r şi obţinemun efect interesant:

grep -hw current romanian-english.txtcurent <> currentcurs <> currentuzitat <> currentvalabil <> current

Ideea de a folosi grep cu astfel de dicţionare am văzut-o prima dată laFrank Richter în programul DING (DIctionary Nice Grep). Când îl des-carci de pe Internet DING are automat instalat un dicţionar german-englez. Nu este dificil însă să-i adaugi dicţionarul Radei Mihalcea.

Cu dicţionarul român-englez al Radei Mihalcea, căutările cu ajutorulDING arată în felul următor:

Combinând două programe puse sub licenţa GPL în felul arătataici, putem obţine un instrument de lucru excelent. Licenţa GPL estefoarte importantă în acest caz: ea garantează accesul la surse. Progra-mul obţinut este extrem de flexibil. Poate fi adaptat la cele mai diferiteîntrebuinţări.

Chiar fără să ştim prea multe despre managementul informaţiilorputem să construim instrumentele de lucru adecvate organizaţiei noas-tre. Inutil să spun că o organizaţie ar putea folosi forţa colectivuluiei pentru a dezvolta - în situaţiile discutate mai sus - liste de cuvinteadaptate specificului ei, dicţionare potrivite cu specificul muncii şi alteinstrumente.

Ideea este însă departe de a fi aceea că exemplele de mai sus audoar o semnificaţie practică. Ele sunt interesante şi pentru felul în carepun în lumină aspectele teoretice ale organizării muncii de stocare şi

4Dacă nu punem opţiunea -w ne vom trezi cu toate rândurile în care apare şiruldefinit în tiparul de căutare.

42

Page 43: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

Figura 3.2: Căutare în dicţionarul român-englez al Radei Mihalcea cuajutorul DING

de prelucrare a informaţiei. Dicţionarul român-englez al Radei Mihal-cea este, de exemplu, un produs colateral al muncii ei de cercetătoareîn domeniul prelucrării limbajului natural cu ajutorul calculatoarelor.Lucrul acesta se vede, de altfel, din seriile subtile de sinonime pe carele conţine dicţionarul.

3.3 Managementul definiţiilor lexicale

Voi începe această secţiune cu o invitaţie la o călătorie pe Internet. Mer-geţi la pagina de web a lui Cătălin Frâncu. Veţi găsi acolo o trimiterecătre „copilul“ său favorit: o formidabilă colecţie de definiţii lexicaledisponibile pe Internet.

Cătălin Frâncu a iniţiat alcătuirea colecţiei de definiţii şi se ocupăcu partea tehnică a proiectului Dexonline.

Dacă vreţi să examinaţi definiţiile din proiectul Dexonline şi fărăa vă conecta la Internet puteţi descărca programul dixit. Dixit estescris de către Octavian Procopiuc. Programul foloseşte baza de date aproiectului Dexonline. Dixit este disponibil atât în versiune Linux, câtşi-n versiune Windows. Figura 3.3 ne oferă un exemplu de căutare dedefiniţii cu ajutorul Dixit.

Dacă reuşiţi să instalaţi Dixit veţi vedea că foloseşte un fişier di-xit.qdb. Aceasta este sursa de date. Ce înseamnă însă extensia qdb?Despre ce fel de baze de date este vorba? Baza aceasta de date este

43

Page 44: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

Figura 3.3: Căutare de definiţii în baza de date Dexonline cu ajutorulprogramului Dixit

creaţia lui Mikio Hirabayashi. Proiectul se numeşte QDBM (Quick Da-tabase Manager).

Quick Database Manager-ul nu era parte a distribuţiei Fedora Core3 instalate pe computerul meu, aşa că a trebuit să-l adaug. Dacă dispu-neţi de un sistem Linux care foloseşte pachete rpm, atunci următoareacăutare vă va spune ceva despre ceea ce este instalat pe sistemul cucare este scrisă cartea de faţă:

rpm -q qdbmqdbm-1.8.33-1rpm -q qdbm-develqdbm-devel-1.8.33-1

Citiţi evident documentaţia de pe pagina proiectului QDBM pentru aşti mai bine ce şi cum să instalaţi.

Să vedem acum câteva comenzi simple ale QDBM. O sursă de date(un depozit, ca să folosesc metafora din proiectul QDBM) este creatăcu o comandă de genul:

dpmgr create dic.qdb

44

Page 45: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

Am creat practic un fişier qdb.Adăugarea de informaţii la sursa de date se face în felul următor:

dpmgr put dic.qdb pisica "Mamifer carnivor de talie micăşi cu ghearele ascuţite, retractile."

Comanda invocă mai întâi managerul bazei de date. Urmează comandaput (adaugă în depozitul de date). După aceea trebuie pus numele fi-şierului în care sunt stocate datele. După numele fişierului urmează ocheie. Eu am folosit drept cheie cuvântul „pisica“. Ceea ce vedeţi înfinalul comenzii între ghilimele este o valoare asociată cu cheia respec-tivă. Eu am folosit aici o versiune prescurtată a unei definiţii găsite înproiectul Dexonline.

Secretul unei baze de date QDBM este foarte simplu: intrările dinbaza de date sunt formate dintr-o pereche cheie-valoare. De altfel, in-formaticienii numesc o astfel de structură de date „dicţionar“. Felulîn care este organizat în interior un fişier qdb iese în afara sferei deinterese a cărţii de faţă. Ideea de bază este că un astfel de fişier areo structură care permite optimizarea căutărilor. Aşa se face că Dixitgăseşte atât de repede informaţiile dintr-o bază de peste un sfert demilion de definiţii lexicale.

Eu am în fişierul meu dic.qdb doar o definiţie. Să vedem totuşi cumo extrag de acolo:

dpmgr get dic.qdb pisicaMamifer carnivor de talie mică şi cu gheareleascuţite, retractile.

Nu este greu de văzut c-am folosit cheia pentru a regăsi valoarea aso-ciată ei.

Fişierele de genul lui dic.qdb nu sunt fişiere de tip text. Putem însăsă le transformăm în fişiere de tip text.

dpmgr exportdb dic.qdb dic.txt

Fişierul dic.txt este de tip text şi poate fi lesne citit.Aceste minime cunoştinţe ne permit acum să înţelegem ce se petrece

în spatele interfeţei grafice a programului Dixit. Voi folosi tot cheia„pisica“:

dpmgr get dixit.qdb pisica<Id>32424</Id> <N>PISICA</N> <D>@PIS’IC~A, @

$pisici, $ s.f. @I.@ @1.@ Mamifer domestic carnivor dinfamilia felinelor, cu corpul suplu, acoperit cu blan~a

45

Page 46: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

3. Managementul informaţiei conţinute în dicţionare

deas~a \si moale de diferite culori, cu capul rotund,cu botul foarte scurt, cu maxilarele puternice \si cughearele retractile \si ascu\tite ...

N-am reprodus decât începutul rezultatului acţiunii de căutare a valoriiasociate cheii „pisica“. Se vede că valoarea respectivă are o structură.Se văd de asemenea formatările folosite în proiectul Dexonline pentruliterele româneşti.

Proiectul Dexonline este în sine un proiect remarcabil. Îmi este defolos şi când scriu cartea de faţă şi i-ar fi de mare utilitate oricui scrie untext în limba română. Dincolo de această utilitate practică a proiectuluirespectiv am avut însă posibilitatea să mai facem un pas înainte înlumea bazelor de date.

46

Page 47: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Capitolul 4

Limbajul SQL

Dacă studiaţi o carte de informatică pentru managementul firmei, pre-cum cea scrisă de profesorul Ioan Radu şi colaboratorii săi[11], veţi găsiacolo o descriere conceptuală a fluxurilor care asigură aducerea la zi ainformaţiilor şi obţinerea de informaţii din baza de date. Nici un pro-gram din cele descrise în cartea amintită nu se descurcă de fapt fărăa avea acces la informaţii. O bună bază de date este esenţială pentrufuncţionarea oricărei organizaţii moderne.

Studiind capitolele anterioare v-aţi dat desigur seama că pentru ainteracţiona cu o sursă de date trebuie să folosim un limbaj. Pentrubazele de date „de întreprindere“ există un limbaj standard: SQL. Nu-mele limbajului vine de la iniţialele componentelor sintagmei „Struc-tured Query Language“. Adevărul este că SQL e mai mult decât unlimbaj de căutare în sursele de date. Toate bazele de date importanteînţeleg SQL şi poţi face o sumedenie de operaţii cu ajutorul SQL.

Problema cea mare a bazelor de date „de întreprindere“ este că suntdestul de greu de instalat acasă sau pe computerul de la serviciu pecare am vrea să învăţăm SQL. În principiu, lucrul acesta este posibil— chiar şi pe un sistem Windows98. Administrarea bazei de date esteînsă dificilă (mai ales în cazul începătorilor sau al persoanelor care vorsă-şi facă doar o idee despre SQL). Soluţia pe care v-o propun aici estesă folosiţi SQLite.

Autorul principal al SQLite este D. Richard Hipp. Marele avantaj alSQLite este că sursa de date este într-un singur fişiere şi nu trebuie săporneşti nici un fel de server pentru a avea acces la ea. Este o soluţieexcelentă pentru cei care învaţă SQL. Este, de asemenea, o soluţie deluat în seamă în practică: pentru bazele de date ale paginilor de web,de exemplu. În întreprindere trebuie să fiţi însă atenţi la problemelede securitate a datelor: cine are acces la fişierul cu datele stocate deSQLite are acces la toate datele. Accesul nu este selectiv.

Page 48: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Pentru învăţarea SQL (dacă porniţi de la zero) cartea scrisă de BenForta[2] este excelentă. Nu folosiţi însă exemplele din traducerea ro-mânească. Cel puţin versiunea din 2002, pe care am citit-o, este plinăde erori. Trebuie să ştii deja SQL ca să foloseşti exemplele de acolo.Descărcaţi exemplele de pe situl autorului. În limita capacităţilor SQ-Lite, exemplele de pe situl autorului merg fără probleme, iar dacă nuştiţi decât prea puţină engleză traducerea românească este totuşi utilăpentru a prinde sensul exemplelor.

Programul SQLite se poate descărca de pe Internet. SQLite este,de pildă, parte a Fedora 3 extra. Exemplele date în continuare suntlucrate cu sqlite-2.8.16. Această versiune a SQLite este în principal şi-n atenţia lui Chris Newman în cartea sa despre SQLite[8].1SQLite estedisponibilă atât pentru Linux, cât şi pentru Windows. Consultaţi situlSQLite pentru a vedea ce vi se potriveşte.

Instalarea programului SQLite nu este deloc complicată. Trebuie săfiţi doar atente şi atenţi să aveţi acces la executabilul sqlite. În Unixaceasta înseamnă că puteţi purta un dialog de acest gen:

which sqlite/usr/bin/sqlite

Citiţi însă cu grijă instrucţiunile de instalare.Programul SQLite ca atare este un instrument apelat prin inter-

mediul comenzii în linie (într-o consolă Unix sau o fereastră MSDos).S-ar putea să vreţi să aveţi la îndemână şi o unealtă care are interfaţăgrafică. Pentru aceasta descărcaţi sqlitebrowser. SQLite Database Bro-wser este capabil să creeze baze de date de tip SQLite. Atenţie însăla problemele de compatibilitate. Pentru exemplele din această cartefolosesc versiunea 1.1, care creează baze de date compatibile cu SQLite2.x (vedeţi ce scrie în meniul Help la About).

4.1 Un exemplu de bază de date SQLite

Conform principiului acestui manual ar trebui ca fiecare să lucreze cuexemple familiare. Cum eu lucrez într-o universitate unele dintre „arti-colele de inventar“ cel mai frecvent întâlnite sunt cărţile. Aşa că exem-plul meu foloseşte cărţi. Puteţi vedea însă alte exemple în cartea luiForta[2] sau în alte cărţi despre SQL.

Pentru crearea bazei de date deschid sqlitebrowser şi apăs prima ico-niţă din stânga sau merg în meniul File şi apăs New. Apare o fereastră

1Există şi sqlite3. Aceasta este versiunea pe care o dezvoltă în prezent D. RichardHipp.

48

Page 49: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

de dialog precum cea din Figura 4.1. Eu am ales drept nume pentru

Figura 4.1: Crearea unei baze de date SQLite

fişierul în care SQLite stochează datele „bib.db“ pentru că „bib“ amin-teşte de cărţi, iar „db“ este extensia standard pentru aceste baze dedate.

În continuare, va apărea imediat o altă casetă de dialog. În ea trebuiesă precizaţi numele câmpurilor şi tipurile de date care vor fi stocate încâmpurile unei înregistrări. Ideea de câmp al unei înregistrări ne estedeja familiară. Ce nu ne este familiar este conceptul de table (tabel).O bază de date SQLite poate conţine mai multe tabele. Dau un numetabelului şi apoi apăs Add. Apare o nouă casetă de dialog (a se vedeaFigura 4.2). Câmpul botezat „inv_id“ va stoca numere. Aceste numeresunt unice pentru fiecare carte.

Adevărul este că sqlitebrowser este mai bun ca vizualizor rapid alunei baze de date, dar este o unealtă cam nesigură când trebuie creatun tabel. Eu m-am slujit de un fişier bib.sql, precum cel din Figura 4.3şi de o comandă în linie pentru a crea tabelul carti din bib.db, aşa cum

49

Page 50: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Figura 4.2: Crearea câmpurilor înregistrărilor dintr-un tabel

se vede el în Figura 4.4. Am folosit comanda în linie (comanda dată înconsolă sau fereastră MSDos):

sqlite bib.db < bib.sql

pentru a crea fişierul ca atare şi tabelul respectiv.Pentru a pregăti date în vederea introducerii în tabelul carti am

construit un alt fişier sql, botezat bibdata.sql. Puteţi vedea în Figura 4.5cum apare acest fişier în fereastra grafică a editorului Vim.

Din nou, introducerea datelor ca atare se face printr-o comandă înlinie:

sqlite bib.db < bibdata.sql

Putem folosi sqlitebrowser-ul pentru a vedea datele introduse (v. Fi-gura 4.6).

50

Page 51: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Figura 4.3: Conţinutul fişierului bib.sql văzut cu Vim

Figura 4.4: Tabelul carti în sqlitebrowser

51

Page 52: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Figura 4.5: Fişierul bibdata.sql

52

Page 53: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Figura 4.6: Vizualizarea datelor din tabelul carti

53

Page 54: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

4.2 Căutarea în baza de date

Este important să ne dăm seama că fişierul bib.db este o jucărie. Areun singur tabel şi cinci înregistrări. O bază de date reală poate să fieimensă. În timp ce, dacă ne uităm în Figura 4.6, ne facem rapid o ideedespre datele din tabel, într-un tabel real acest lucru n-ar fi posibil.Aici ne vine în ajutor limbajul SQL.

Instrucţiunile SQL sunt destul de transparente pentru cine ştie limbaengleză. În continuare deschid sursa de date bib.db cu ajutorul sqlite şicer să fie afişat conţinutul câmpului aut:

[solcan@baloo 04-sql]$ sqlite bib.dbSQLite version 2.8.16Enter ".help" for instructionssqlite> SELECT aut

...> FROM carti;FortaFoucaultRothbardNolaWittgenstein

Observaţi că apare un prompt sqlite> specific managerului bazei dedate. După SELECT aut am apăsat tasta „Enter“. De asemenea, dupăFROM carti; am apăsat tasta „Enter“. Nu uitaţi să puneţi punct şivirgulă!

Programul sqlite are o istorie a comenzilor; dacă apăsaţi pe tastacu săgeata în sus sau pe cea cu săgeata în jos puteţi naviga printrecomenzi. N-are rost să tastaţi de mai multe ori aceeaşi comandă. Deasemenea, puteţi transforma lesne o comandă într-altă comandă. Istoriacomenzilor funcţionează şi după promptul ...> ceea ce mi se pare oidee extraordinar de bună.

Pot selecta şi mai multe câmpuri o dată. De exemplu, dacă vreau săvăd aşa-numitele fapte legate de publicare (locul, editura, anul) proce-dez în felul următor:

sqlite> SELECT adr, ed, an...> FROM carti;

Bucuresti|Teora|2002Pitesti|Paralela 45|2005Bucuresti|Inst.Mises Romania|2005Bucuresti|ALL|2001Bucuresti|Humanitas|2004

54

Page 55: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Cred că este foarte important să experimentaţi cu asemenea co-menzi. Puteţi experimenta, de pildă, cu condiţiile căutării descrise maijos.

Căutarea descrisă anterior era necondiţionată. La un volum mare dedate asemenea căutări mai mult ne-ar încurca. Să încercăm să găsimautorii şi titlurile pentru cărţile care costă mai puţin de 20 de RON.

sqlite> SELECT aut, titlu...> FROM carti...> WHERE pret<20;

Forta|SQLRothbard|BaniiNola|Diavolul

Condiţia este pusă după cuvântul-cheie WHERE. Dacă am pune pret>20aceasta ar însemna că valoarea din câmpul pret este mai mare de 20.Semnificaţia operatorului = este desigur evidentă. Operatorul != ser-veşte la negarea egalităţii.

O construcţie interesantă este BETWEEN . . . AND . . . (cuvinte careînseamnă în engleză între . . . şi . . . ). Efectul ei poate fi văzut mai jos:

sqlite> SELECT aut, titlu...> FROM carti...> WHERE pret BETWEEN 17 AND 21;

Forta|SQLFoucault|A supravegheaRothbard|Banii

4.3 Ordonarea informaţiilor

Închipuiţi-vă că titlurile din baza de date reprezintă cărţile achiziţionatede o bibliotecă. Ele sunt înregistrate pe măsură ce sunt cumpărate.Pentru a regăsi informaţia sau pentru a construi un catalog al biblioteciiar trebui să sortăm informaţiile.

Să vedem puţin titlurile cărţilor din baza de date:

SELECT titlu FROM carti;SQLA supravegheaBaniiDiavolulCercetari

55

Page 56: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Nu sunt evident în ordine alfabetică. Să le ordonăm alfabetic!

sqlite> SELECT titlu FROM carti...> ORDER BY titlu;

A supravegheaBaniiCercetariDiavolulSQL

Putem experimenta ordonări după diverse câmpuri.Putem ordona descendent:

sqlite> SELECT titlu FROM carti...> ORDER BY pret DESC;

CercetariA supravegheaBaniiSQLDiavolul

4.4 Prezentarea informaţiei din tabelele sq-lite

Înainte de a spune câte ceva despre prezentarea informaţiei din tabelelesqlite, ar trebui reamintit un principiu important al învăţării oricăruiprogram: află cum ieşi din programul respectiv! Aţi văzut probabil căsqlite are o comandă .help, apelând la care obţinem ajutor:

sqlite bib.dbSQLite version 2.8.16Enter ".help" for instructionssqlite> .help.............................exit Exit this program.header(s) ON|OFF Turn display of headers on or off.help Show this message.mode MODE Set mode to one of "line(s)",

"column(s)","insert", "list",or "html"

............................

.width NUM NUM ... Set column widths for "column" mode

56

Page 57: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Eu am selectat din mesajele sqlite doar pe cele relevante aici. Se vedeîn orice caz că .exit este o comandă de ieşire din program.

În continuare puteţi vedea un exemplu de afişare a informaţiei pecoloane:

sqlite> .mode columnsqlite> .headers onsqlite> SELECT aut, titlu FROM carti

...> ORDER BY pret DESC;aut titlu------------ ----------Wittgenstein CercetariFoucault A supravegRothbard BaniiForta SQLNola Diavolul

Informaţiile din tabelele sqlite pot fi lesne incluse în pagini de web.În continuare se vede cum sqlite produce un fragment de cod html (pecare-l putem insera într-un tabel html).

sqlite> .mode htmlsqlite> SELECT aut, titlu FROM carti

...> ORDER BY pret DESC;<TR><TH>aut</TH><TH>titlu</TH></TR><TR><TD>Wittgenstein</TD><TD>Cercetari</TD></TR><TR><TD>Foucault</TD><TD>A supraveghea</TD></TR><TR><TD>Rothbard</TD><TD>Banii</TD></TR><TR><TD>Forta</TD><TD>SQL</TD></TR><TR><TD>Nola</TD><TD>Diavolul</TD></TR>

În Figura 4.7 se poate vedea tabelul produs cu ajutorul sqlite.Includerea informaţiei din tabelele sqlite în paginile de web se poate

face automat, cu ajutorul unor programe (scrise în limbajul php). Ob-57

Page 58: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

4. Limbajul SQL

Figura 4.7: Extras dintr-un tabel sqlite

ţinem astfel o pagină de web în care informaţia este adusă la zi în moddinamic (fără intervenţii manuale, ca mai sus).

58

Page 59: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Capitolul 5

Managementul logic alinformaţiilor

Ideea pe care o prezentăm în acest capitol este foarte simplă: este ideeade a folosi forţa logicii predicatelor în construcţia şi administrarea debaze de date. Aplicaţiile practice ale acestei idei ne conduc către do-meniul cu rezonanţă de film ştiinţifico-fantastic al inteligenţei compu-taţionale.

5.1 Reţelele semantice

Vom începe cu elemente de teoria reprezentării cunoaşterii într-un pro-gram de computer. Dacă termenul „cunoaştere“ vi se pare nepotrivit înacest context, gândiţi în termeni de informaţii (stocate în calculator)despre ceea ce ştiu oamenii.

De exemplu, eu ştiu câte ceva despre pisica din casa noastră şi despreceea ce ştiu despre pisica din casă:

• ştiu că este un cotoi;

• ştiu că pisica din casă este color-point (i.e. mascată);

• ştiu că un cotoi este un soi de animal;

• ştiu că un cotoi are blană.

Desigur mai ştiu multe alte lucruri, dar ceea ce pare frapant este felulîn care pot conecta toate aceste cunoştinţe într-o reţea. Reprezentareagrafică din Figura 5.1 este inspirată de un exemplu din cartea lui LiMinFu[4, p.286, fig.11.2(c)].1

1LiMin Fu are un câine, ceea ce nu-i cazul familiei mele! A se vedea şi paginamea de web.

Page 60: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Figura 5.1: Un exemplu de reţea semantică

Reţeaua semantică este formată din „noduri“ conectate între ele prin„săgeţi“. Se observă că în fiecare nod este o etichetă, care arată con-ţinutul semantic al nodului respectiv. Săgeţile sunt, de asemenea, eti-chetate.

Dacă examinăm Figura 5.1 simţim imediat că reţeaua poate fi ex-tinsă. Putem spune ceva despre „animal“ şi aşa mai departe. Foarteinteresant ar fi apoi să traducem toată această schemă într-un limbajde calculator. Am putea programa atunci calculatorul ca să producăinferenţe: din informaţia cu privire la faptul că pisica noastră este uncotoi şi din informaţia că un cotoi are blană am putea trage o concluziecu privire la faptul că şi pisica noastră are blană.

Dacă sursele de informaţii organizate în felul descris mai sus ar fiuriaşe, concluziile n-ar mai fi atât de evidente ca mai sus. Am puteastoca şi extrage informaţii într-un mod logic, fără ca ele să fie şi evidentepentru noi.

5.2 WordNet pentru utilizare

Nu ştiu dacă v-aţi gândit vreodată ce programe extraordinare suntdisponibile în mod gratuit pe Internet. Vă doriţi un dicţionar al lim-bii engleze pe ecranul computerului dumneavoastră? WordNet este undicţionar absolut fabulos, uşor de instalat şi nu foarte greu de folosit.

60

Page 61: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

WordNet este creaţia unui colectiv de cercetătoare şi cercetători de laLaboratorul de Ştiinţa Cogniţiei al Universităţii Princeton, coordonatde faimosul psiholog George A. Miller. WordNet are o pagină de pecare poate fi descărcat.

Instalarea WordNet nu ridică probleme majore. Aş putea spune căsub Windows decurge chiar fără probleme. În cazul Linux trebuie săacordăm atenţie legăturilor simbolice către bibliotecile de funcţii pecare le foloseşte WordNet. Ele trebuie create în caz că WordNet emiteun mesaj de eroare în care spune că nu găseşte o anume bibliotecă.Evident, biblioteca respectivă trebuie să existe efectiv în sistem. Inter-faţa grafică WordNet foloseşte Tcl/Tk. Citiţi instrucţiunile de instalareWordNet cu atenţie. Dacă aveţi dificultăţi o soluţie este şi o căutarepe Internet: probabil cineva s-a lovit deja de problema respectivă şi i-agăsit o rezolvare.

WordNet foloseşte reţele semantice. Alegerea reţelelor semantice decătre George A. Miller şi colectivul de la Princeton nu este întâmplă-toare: ea reflectă teoriile lor despre memoria umană.

Să vedem însă cum decurge practic lucrul cu WordNet. Fie dintr-oconsolă, fie din caseta de dialog Run Application chemaţi wnb, care esteinterfaţa grafică a WordNet. Eu unul rămân la interesul pentru pisicişi introduc în caseta Search Word cuvântul cat. Nu uitaţi să apăsaţipe tasta „Enter“! Trebuie să apară (în funcţie de versiunea WordNetdesigur) ceva de genul a ceea ce puteţi vedea în Figura 5.2.

Ceea ce puteţi face în continuare este mult mai interesant. De pildă,puneţi 1 în caseta Senses. Aceasta înseamnă că vă interesează doarun prim sens. Aveţi apoi o alegere între substantiv (Noun) şi verb, încazul cuvântului „cat“. La alte cuvinte alegerea va fi diferită (mai existăadjective şi adverbe în WordNet). Apăsaţi butonul Noun şi aveţi dinnou de făcut o alegere.2Eu vă propun să alegem Hypernyms. Ceea cerezultă se vede în Figura 5.3.

Reţeaua semantică construită de către WordNet este mult mai com-plexă decât cea din Figura 5.1. Până să ajungem la „animal“ trecemprin nodul „carnivor“ şi prin nodul „mamifer“ şi alte două noduri. Ur-măriţi sensul săgeţilor duble!

WordNet vă poate oferi, de asemenea, o sumedenie de informaţiidespre sinonimele unui cuvânt sau despre antonime.

WordNet are noţiunea de meronim. Aceasta înseamnă că puteţi aflacare sunt „părţile“ fiinţei sau ale obiectului etc. Pisica are, de pildă,labe, mustăţi şi aşa mai departe.

2Ar fi bine să studiaţi documentaţia WordNet pentru a înţelege mai bine termi-nologia folosită de echipa de cercetare de la Princeton.

61

Page 62: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Figura 5.2: Startul WordNet

Închipuiţi-vă aplicaţiile mai pedestre ale meronimelor! Să zicem căaţi avea de gospodărit un depozit. Orice obiect din acel depozit ar aveapărţi. Un avion, de pildă, are o sumedenie de piese. Putem organizatoate informaţiile despre componentele avionului cu ajutorul unei bazelogice de date.

Informaţiile despre o organizaţie pot fi şi ele sistematizate cu ajuto-rul unei baze logice de date. Organizaţia are şi ea componente. Există,de asemenea, posibilitatea de a sistematiza în acest fel atribuţiile şi aşamai departe.

Să revenim însă la WordNet ca atare. Din punctul de vedere al prac-ticii scrisului (în limba engleză) WordNet oferă informaţii extrem deutile. Eu unul simt, de pildă, deseori nevoia de a găsi ce anume estea kind of. . . . De pildă, wildcat este un fel de pisică. Evident, housecat este un fel de pisică şi aşa mai departe. În terminologia WordNetaceşti termeni se numesc „hiponime“. Recursul la hiponime dă culoare

62

Page 63: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Figura 5.3: Pisica este un soi de. . .

şi concreteţe scrisului. În sensul acesta WordNet este şi un instrumentde lucru preţios, nu doar unul pentru cercetare.

Există multe aplicaţii care folosesc baza de date a WordNet, inclusivaplicaţii comerciale. Eu mă voi referi aici la o aplicaţie fără caractercomercial, WordNet Connect. Instalarea acestei aplicaţii este ceva maipretenţioasă, dar puteţi să vă faceţi o idee despre ea citind pagina deweb a programului.

Un exemplu de utilizare a WordNet Connect (pe scurt, wnconnect)aveţi şi-n Figura 5.4.

Aşa cum sugerează şi numele aplicaţiei, wnconnect identifică dru-muri prin reţeaua semantică. Poate stabili cel mai scurt drum sau poateafişa toate drumurile care leagă două cuvinte din baza de date Wor-dNet. De exemplu, dacă solicit o legătură între tiger şi cat aflu cătiger,Panthera_tigris este o instanţiere a big_cat,cat.

Mai interesant este dacă încerc să găsesc o legătură între cat şi sleepy

63

Page 64: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Figura 5.4: Un exemplu de utilizare a WordNet Connect

(somnoroasă). Programul examinează 91708 noduri. Se duce mai întâipe direcţia către fiinţă. Acest termen este apoi conexat cu stările deconştiinţă. Apoi se face o legătură cu unaware (a nu fi conştient, a nu-ţi da seama). De aici este făcută o legătură cu stările de somnolenţă.

Programul wnconnect este capabil să reprezinte şi grafic drumurileidentificate prin baza de date. Graficele pot să apară în fereastra prin-cipală a programului (v. un exemplu în Figura 5.4) sau pot fi afişate şisalvate cu ajutorul unui program separat.

64

Page 65: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

5.3 WordNet pentru meşterit

Când descărcaţi de pe Internet WordNet nu se poate să nu băgaţi deseamă că vă este oferită şi sursa bazei de date. Vi se spune că sursaeste scrisă în Prolog.

Ce este este Prolog? Un limbaj de calculator. Numele său vine de lasintagma „programare logică“. Dacă se-ntâmplă să ştiţi logica predica-telor, atunci înţelegeţi mai uşor sintaxa limbajului Prolog.

Prolog este un limbaj cu vechi state de serviciu (în lumea atât denouă a programelor de calculator). A fost creat de Alain Colmerauer laUniversitatea Aix-Marseille, acum mai bine de treizeci de ani. Robert.A. Kowalski, pe acea vreme la Universitatea din Edinburgh (mai apoila Imperial College din Londra) a contribuit mult la dezvoltarea bazelorteoretice ale Prolog.

Prolog n-are o faimă deloc bună printre programatori. Citiţi, deexemplu, ce scrie despre Prolog Nikolai Bezroukov pe situl Open SourceSoftware Educational Society.

În câteva cuvinte, putem spune că Prolog este un limbaj declarativ.Limbajele de calculator obişnuite sunt limbaje imperative, cu ajutorulacestor limbaje spunem calculatorului ce să facă, cum să acţioneze. ÎnProlog, ca şi-n logică, lucrăm cu enunţuri. Spre deosebire de logică,Prolog raportează aceste enunţuri la o bază de date. Prolog ne spunedacă enunţul corespunde sau nu cu ceva din baza de date. Dacă folosimvariabile în enunţurile noastre, Prolog ne comunică ce anume din bazasa de date s-ar potrivi cu variabilele din enunţurile noastre.

Din cele spuse mai sus se deduce destul de lesne că, din perspectivafuncţionalităţii sale, Prolog se înrudeşte cu limbaje precum SQL. Nueste, prin urmare, o întâmplare că un limbaj cu origini logico-filosoficeîşi are locul său într-o carte despre managementul informaţiilor.

Pentru a lucra direct cu sursele de date WordNet aveţi nevoie de unmediu de dezvoltare Prolog. În exemplele de mai jos eu folosesc SWI-Prolog. Trebuie să descărcaţi versiunea care vi se potriveşte, Linux sauWindows. În principiu, instalarea SWI-Prolog este neproblematică. Euprefer versiunea Linux, cu apelarea SWI-Prolog dintr-o consolă. Estefoarte sigură. Nu uitaţi că aveţi de a face, în cazul WordNet, cu o bazăde date uriaşă!

Când instalaţi sursele Prolog ale WordNet observaţi desigur că aveţide a face cu o serie de fişiere care încep cu wn_ şi se termină cu extensiapl. Acestea sunt fişierele Prolog ale WordNet. Nu toate sunt foarte mari.Chiar şi pe cele mai mari le puteţi vedea cu uşurinţă cu ajutorul Vim.S-ar putea ca abia acum să înţelegeţi avantajele tiparelor de căutare.Încercaţi să căutaţi ceva în wn_g.pl şi veţi simţi rapid nevoia de a

65

Page 66: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

apela la tipare de căutare. Fişierul de pe calculatorul meu are 115424de rânduri.

5.3.1 Fişierele Prolog ale WordNet

Pentru o foarte bună descriere a fişierelor Prolog ale WordNet apelaţila studiul Sarei Witzig[15]. Am folosit şi eu acest studiu pentru a mădocumenta în vederea elaborării acestei secţiuni. Este scris simplu, clarşi pe alocuri oferă informaţii chiar mai explicite decât cele ale autorilorWordNet.

Sarah Witzig începe cu descrierea fişierului wn_s.pl. Ea presupunedesigur că ştiţi Prolog. Eu nu voi presupune acest lucru. Aşa c-ar trebuisă aflaţi mai întâi câte ceva despre predicatele Prolog.

Dacă examinaţi wn_s.pl cu ajutorul Vim veţi constata că fişieruleste compus din rânduri care au toate aceeaşi formă. Am să iau câtevadintre aceste rânduri drept exemplu:

s(102037911,1,’domestic_cat’,n,1,0).s(102037911,2,’house_cat’,n,1,0).s(102037911,3,’Felis_domesticus’,n,1,0).s(102037911,4,’Felis_catus’,n,1,0).

Dacă ignorăm ceea ce se află în interiorul parantezelor rotunde, darreţinem virgulele, obţinem o structură de forma:

s( , , , , , ).

Acesta nu este nimic altceva decât un predicat Prolog. Tot fişierul nuface decât să definească acest predicat.

Gândiţi-vă la ceva de genul:

parinti(maria, ana, ion).

Structura aceasta din Prolog ar corespunde cu propoziţia „Părinţii Ma-riei sunt Ana şi Ion“. Dacă procedăm ca mai sus obţinem o formă culacune:

parinti( , , ).

Acesta nu este altceva decât un predicat. Este desigur logic să spunemcă nu toate modurile de a umple lacunele conduc la propoziţii adevă-rate. Aşa cum noi gândim în termeni de adevăr şi fals, Prolog se uităîn baza de date pentru a afla dacă enunţul corespunde sau nu cu ceeace se află în baza sa de date.

66

Page 67: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Să revenim acum la conţinutul fişierului wn_s.pl. El defineşte unsingur predicat, care are şase asemenea „lacune“, şase locuri în careconţinutul introdus variază. Tehnic vorbind, acestor „lacune“ le putemzice argumente. Voi simplifica predicatul din wn_s.pl şi voi reţine doartrei argumente. Folosind exemplul de mai sus lucrurile ar arăta aşa:

s(102037911,’domestic_cat’,n).s(102037911,’house_cat’,n).s(102037911,’Felis_domesticus’,n).s(102037911,’Felis_catus’,n).

Acum este mai uşor de explicat ideea-cheie a bazei de date WordNet.Observaţi că primul argument este un număr din nouă cifre. Este

acelaşi pentru toate cele patru rânduri simplificate. WordNet grupeazăcuvintele în ceea ce autorii bazei de date numesc „synset“-uri (mulţimide unu sau mai multe sinonime). Fiecare synset primeşte un numărunic. Primul argument ia deci drept valoare acest număr al unui synset.

Argumentul de pe poziţia a doua este pus între ghilimele. În felulacesta sistemul Prolog ştie că trebuie să trateze argumentul respectivca pe un text (nu încearcă să găsească în el cuvinte-cheie Prolog sau alteelemente ce ţin de maşinăria programării în Prolog). Uitându-ne la va-loarea celui de al doilea argument ştim că domestic_cat, house_cat, Fe-lis_domesticus şi Felis_catus sunt elemente ale synsetului 102037911.

Al treilea argument indică doar faptul că avem de a face cu unsubstantiv. Prescurtarea vine de la cuvântul englezesc noun.

Să mergem mai departe cu descrierea fişierelor WordNet. Dacă văuitaţi doar la dimensiunile lor nu se poate să nu vă fi sărit în ochifişierul wn_g.pl. Acum nu este greu să ne dăm seama că el defineşte unpredicat cu două argumente: primul argument are drept valori numerelesynseturilor; al doilea argument are drept valori glose.

Folosind numărul de synset pentru pisici domestice dăm peste:

g(102037911,’(any domesticated member of thegenus Felis)’).

Acum începem să ghicim şi rostul sistemului Prolog. Ca să facemasemenea căutări cu mâna ar fi imposibil — din pricina dimensiunilorfişierelor. Adevărul este că şi-n cazul unor programe care ar n-ar aveacăutări optimizate timpul de lucru ar creşte considerabil.

Fişierul wn_hyp.pl conţine definiţia, de fapt, tot pentru un singurpredicat. Putem însă să gândim lucrurile şi puţin altfel. Fiecare rând nespune, pentru un synset, care este synsetul care conţine cuvinte cu unsens mai general decât cel din primul synset. În terminologia WordNet

67

Page 68: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

acestea sunt botezate „hipernim“-uri. Evident, dacă luăm relaţia în sensinvers, dăm peste „hiponim“-uri.

În felul acesta avem o serie bogată de legături în reţeaua semantică.Căutând cu ajutorul Vim în fişierul wn_hyp.pl dau peste rândul

următor:

hyp(102037911,102037721).

Primul număr ne este deja cunoscut. Este numărul synsetului pentrupisici domestice. Al doilea număr mă trimite la noţiunea de pisică.Reţeaua semantică a englezei diferă aici de cea a românei, dar chiarşi-n română noţiunea de pisică este mai generală decât aceea de pisicăde casă: există şi pisici sălbatice. În engleză, spre deosebire de română,şi leii, tigrii (toate felinele) sunt „pisici“ (cats).

Cele trei fişiere prezentate până acum constituie inima bazei de datea WordNet. Pentru celelalte fişiere consultaţi documentaţia WordNetsau articolul scris de Sarah Witzig[15].

5.3.2 SWI-Prolog şi încărcarea WordNet

În cazul oricărui mediu de dezvoltare de programe este important săştii să-l porneşti şi să-l opreşti. Să vedem ce trebuie făcut în cazulSWI-Prolog:

pl% /home/solcan/.plrc compiled 0.00 sec, 420 bytesWelcome to SWI-Prolog (Multi-threaded, Version 5.4.6)Copyright (c) 1990-2003 University of Amsterdam.SWI-Prolog comes with ABSOLUTELY NO WARRANTY.This is free software,and you are welcome to redistributeit under certain conditions.Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

1 ?- halt.

Pornirea se face tastând pl şi „Enter“. Oprirea se face tastând halt.şi „Enter“. Nu uitaţi punctul final din comanda de oprire! Prolog, calimbaj declarativ, nu ştie — ca să spun aşa — de semnul de exclamare.Ştie de ceva care se termină cu punct.

Următorul pas este reprezentat de încărcarea fişierelor WordNet.Lucrurile se petrec în felul următor:

68

Page 69: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

1 ?- consult(wn_s).% wn_s compiled 2.91 sec, 26,139,232 bytes

Yes2 ?- consult(wn_g).% wn_g compiled 1.84 sec, 20,209,196 bytes

Yes3 ?- consult(wn_hyp).% wn_hyp compiled 0.74 sec, 6,070,392 bytes

Cuvântul-cheie este consult. Atenţie la faptul că nu se pune şi extensiadin numele fişierelor.

Am încărcat deci trei dintre fişierele WordNet. Adevărul este că în-cărcarea în acest mod a mai multor fişiere, de fiecare dată când „con-sultăm“ baza de date, ar fi foarte laborioasă. Comenzile de mai susnu pot fi puse însă ca atare într-un fişier şi încărcate de acolo. Pentruuzul meu personal mi-am alcătuit un fişier, botezat wn.pl, care asigurăîncărcarea fişierelor WordNet:

:- ensure_loaded(’wn_ant.pl’).:- ensure_loaded(’wn_at.pl’).:- ensure_loaded(’wn_cls.pl’).:- ensure_loaded(’wn_cs.pl’).:- ensure_loaded(’wn_der.pl’).:- ensure_loaded(’wn_ent.pl’).:- ensure_loaded(’wn_fr.pl’).:- ensure_loaded(’wn_g.pl’).:- ensure_loaded(’wn_hyp.pl’).:- ensure_loaded(’wn_mm.pl’).:- ensure_loaded(’wn_mp.pl’).:- ensure_loaded(’wn_ms.pl’).:- ensure_loaded(’wn_per.pl’).:- ensure_loaded(’wn_ppl.pl’).:- ensure_loaded(’wn_sa.pl’).:- ensure_loaded(’wn_sim.pl’).:- ensure_loaded(’wn_s.pl’).:- ensure_loaded(’wn_vgp.pl’).

Dacă scrieţi un asemenea fişier folosiţi Vim sau Emacs ori alt editor detexte. Poate fi şi Notepad, dar nu Word, care are alte utilizări decâtscrierea de programe.

Să vedem cum decurge acum încărcarea fişierelor WordNet:

1 ?- consult(wn).69

Page 70: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

% wn_ant.pl compiled 0.07 sec, 639,964 bytes% wn_at.pl compiled 0.01 sec, 83,368 bytes% wn_cls.pl compiled 0.08 sec, 607,348 bytes% wn_cs.pl compiled 0.00 sec, 14,408 bytes% wn_der.pl compiled 0.38 sec, 3,439,500 bytes% wn_ent.pl compiled 0.00 sec, 26,636 bytes% wn_fr.pl compiled 0.18 sec, 1,537,296 bytes% wn_g.pl compiled 1.54 sec, 19,940,484 bytes% wn_hyp.pl compiled 0.73 sec, 6,070,348 bytes% wn_mm.pl compiled 0.10 sec, 781,576 bytes% wn_mp.pl compiled 0.06 sec, 553,160 bytes% wn_ms.pl compiled 0.00 sec, 50,824 bytes% wn_per.pl compiled 0.07 sec, 634,060 bytes% wn_ppl.pl compiled 0.00 sec, 10,380 bytes% wn_sa.pl compiled 0.03 sec, 263,976 bytes% wn_sim.pl compiled 0.18 sec, 1,421,004 bytes% wn_s.pl compiled 3.26 sec, 26,404,536 bytes% wn_vgp.pl compiled 0.01 sec, 140,300 bytes% wn compiled 6.71 sec, 62,620,312 bytes

Yes

5.3.3 Explorarea bazei de date

Prolog, ca şi alte limbaje de programare, foloseşte variabile. Atâta doarcă, pentru a le înţelege bazele conceptuale, ar fi bine să ştim logicapredicatelor. Dacă n-avem cunoştinţe de logica predicatelor, cred că obună soluţie o reprezintă meşterirea de mici programe Programe prolog.

Putem începe cu dialoguri directe cu sistemul Prolog:

7 ?- s(X,_,’cat’,n,_,_).

X = 102037721

Yes

Pe măsură ce dialogăm cu sistemul Prolog acesta afişează numere ur-mate de un semn de întrebare: sistemul aşteaptă să i se indice un „scop“.Felul în care i-am indicat eu un scop seamănă destul de bine cu ope-raţiunea de simplificare a predicatului s în secţiunea 5.3.1. În loculargumentelor care au valori care nu mă interesează pun un spaţiu su-

70

Page 71: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

bliniat.3Două dintre argumente au valorile fixate de către mine.4În sfâr-şit, drept prim argument am pus o variabilă. Convenţia Prolog este cănumele variabilelor încep cu litere mari. Eu am folosit chiar o singurămajusculă.

După ce apăs „Enter“ sistemul caută să vadă dacă poate pune cevaîn locul lui X în aşa fel încât să obţină un enunţ care se găseşte înbaza sa de date. Dacă găseşte o valoare pentru X, atunci o afişează şiaşteaptă apăsarea unei taste. Dacă apăs „Enter“ căutarea se încheie.Dacă apăs pe tasta pe care este semnul pentru punct şi virgulă, atuncicăutarea continuă.

Un exemplu de continuare a căutării:

9 ?- s(X,_,’cat’,n,_,_).X = 102037721 ;X = 102043683 ;X = 102877229 ;X = 102879203 ;X = 103475580 ;X = 109269334 ;X = 109500444 ;No

Dacă mă folosesc de numerele descoperite (care sunt numere de syn-seturi), pot să descopăr glose:

10 ?- g(102037721, N).N = ’(feline mammal usually having thick soft furand being unable to roar; domestic cats; wildcats)’ ;No11 ?- g(102037911, N).N = ’(any domesticated member of the genus Felis)’ ;No

Să explorăm acum mai atent un synset:

4 ?- s(202047097,Ord,Cuvant,Cat,Sens,F).

Ord = 1Cuvant = experienceCat = vSens = 3

3Atenţie! Aceste spaţii subliniate sunt foarte importante. Sistemul ştie că predi-catul s are şase argumente.

4Atenţie şi la poziţia în care se află ’cat’ şi n! Ordinea argumentelor contează.

71

Page 72: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

F = 8 ;

Ord = 2Cuvant = receiveCat = vSens = 4F = 22 ;

Ord = 3Cuvant = haveCat = vSens = 3F = 220 ;

Ord = 4Cuvant = getCat = vSens = 7F = 36 ;

Ord = 5Cuvant = undergoCat = vSens = 1F = 13 ;

No

De data aceasta am fixat numărul synsetului, dar în rest am folositdoar variabile. Variabila Ord are drept valoare numărul de ordine alcuvântului în synset. Numerele acestea de ordine sunt unice. VariabilaCuvant are rolul pe care-l sugerează numele ei. Variabila Cat are dreptvaloare categoria gramaticală. Variabila Sens are drept valoare un nu-măr; numărul acesta este cu atât mai mic cu cât sensul respectiv alcuvântului este mai des uzitat. Valoarea variabilei F este tot o frec-venţă: numărul de apariţii într-un corp de texte folosit drept referinţăde către echipa de cercetare WordNet.

Extragerea de informaţii nu trebuie făcută neapărat dintr-un singursynset. S-ar putea să vreau să văd un cuvânt în apariţiile sale în toatesynseturile din care face parte:

7 ?- s(SynSet,Ord,’cat’,Cat,Sens,F).

SynSet = 10203772172

Page 73: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Ord = 1Cat = nSens = 1F = 18 ;

SynSet = 102043683Ord = 2Cat = nSens = 7F = 0 ;

SynSet = 102877229Ord = 2Cat = nSens = 6F = 0 ;

SynSet = 102879203Ord = 2Cat = nSens = 5F = 0 ;

SynSet = 103475580Ord = 5Cat = nSens = 4F = 0 ;

SynSet = 109269334Ord = 1Cat = nSens = 3F = 0 ;

SynSet = 109500444Ord = 2Cat = nSens = 2F = 0 ;

SynSet = 200074101Ord = 6

73

Page 74: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Cat = vSens = 2F = 0 ;

SynSet = 201371307Ord = 1Cat = vSens = 1F = 0 ;

No

Am extras, după cum se vede lesne, informaţii despre cuvântul ’cat’.Puteţi face o comparaţie cu Figura 5.2.

5.3.4 Descoperirea conexiunilor dintre informaţii

În secţiunea 5.3.3 am folosit dialogurile directe cu sistemul SWI-Prolog.Ele au desigur limitele lor. Sunt, în fond, operaţiuni de căutare manualăcând vine vorba de conexiuni: identifici un număr de synset, cauţi apoiglose şi alte operaţiuni de acest gen.

Cum Prolog este un limbaj complet, se pot scrie însă programe caresă caute ele prin baza de date. În fapt, orice program Prolog, oricâtde simplu descrie o căutare sau o regulă de căutare. Cel mai simpluprogram, în orice limbaj de programare, este cel care scrie pe ecranceva de genul „Salut lume!“.5Iată-l aici în acţiune în cazul Prolog:

4 ?- consult(obs/salutare).% obs/salutare compiled 0.00 sec, 620 bytes

Yes5 ?- salutare.Salut lume!

Yes

Am pornit SWI-Prolog din dosarul (folder -ul) în care se află fişiereleProlog ale WordNet. Pentru a nu amesteca observaţiile mele cu acestefişiere am creat un dosar obs. În acest dosar se află fişierul salutare.pl;observaţi modul în care decurge consultarea acestui fişier. Trebuie ne-apărat indicată calea către el.

5Acest program se scrie deobicei când vrei să testeze dacă merge compilatorulsau interpretorul pentru limbajul respectiv. Desigur, este şi primul program pecare-l scrii când înveţi un limbaj de programare.

74

Page 75: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

De regulă, programele Prolog sunt mult mai scurte decât progra-mele în alte limbaje de programare. Nu aşa stau lucrurile şi-n cazulsalutare.pl, care este ceva mai complicat decât omoloagele sale într-altelimbaje:

% prolog

salutare :-write(’Salut lume!’),nl.

Primul rând este un comentariu. Comentariile sunt ignorate atuncicând SWI-Prolog examinează fişierul. Ceea ce reţine sistemul Prologar putea fi tradus cam aşa în româneşte: acţiunea de salutare reuşeştedacă reuşeşte acţiunea de a scrie în terminal (pe ecran, cu alte cuvinte)semnele Salut lume! şi reuşeşte acţiunea de a trece pe un rând nou.

Semnul :- este săgeata implicaţiei din logică, orientată însă cătrestânga. Logicienii ar înţelege desigur mult mai uşor următoarea nota-ţie:6

salutare←write(’Salut␣lume!’),nl.

Observaţi şi modul elegant în care este notat spaţiul alb din mesajulcare va fi afişat pe ecran.

Cum nu dispunem în setul de bază de semne cu care lucrează com-puterele de săgeata îndreptată către stânga, trebuie să lucrăm cu com-binaţia :- care sugerează pe „se deduce din“.

Dacă examinaţi atent dialogul cu sistemul Prolog (v. pagina 75), ob-servaţi că sistemul încheie dialogul cu Yes. Normal, „căutarea“ a reuşit.Următorul program provoacă însă un dialog care se încheie cu No:

% prolog

salut :-write(’Salut lume!’),nl,!, fail.

Să vedem ce se-ntâmplă când consultăm programul de mai sus şi-lpunem să „caute“, să vadă dacă reuşeşte salut:

6Am folosit programul plTeX, creat de Michael A. Covington, pentru a trans-forma codul Prolog.

75

Page 76: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

2 ?- consult(obs/salut).% obs/salut compiled 0.01 sec, 812 bytes

Yes3 ?- salut.Salut lume!

No

Era şi normal să se încheie dialogul cu No. Căutarea fail este, princonvenţie, căutarea care nu reuşeşte niciodată.

Folosirea semnului exclamării într-un program Prolog este o ches-tiune ceva mai complicată. Aici ne putem mulţumi cu ideea că el opreşteanumite manevre de căutare în baza de date. Marele avantaj al Prologeste tocmai acela că optimizează căutările în baza de date.

Prolog este un limbaj universal. Orice program scris în alt limbajpoate fi tradus în Prolog. Ca multe alte limbaje de programare Prologeste însă mult mai bun într-o anume direcţie: căutarea în baza sa dedate.

Partea cea mai interesantă a unui program Prolog este colecţia dereguli de căutare. În continuare, este listat un program care caută săvadă ce alţi membri există într-un synset:

% prolog

memset(Cuvant) :-s(SynSet,_,Cuvant,_,_,_),s(SynSet,Ord,Membru,Cat,_,_),write(SynSet),write(’ > ’),write(Ord),write(’ > ’),write(Membru),write(’/’),write(Cat), nl,fail, !.

Aici există o singură regulă, cea pentru cătarea şi afişarea altor membriai synseturilor. Să vedem ce se-ntâmplă concret:

8 ?- consult(obs/memset).% obs/memset compiled 0.00 sec, 776 bytes

Yes76

Page 77: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

9 ?- memset(’cat’).102037721 > 1 > cat/n102037721 > 2 > true_cat/n102043683 > 1 > big_cat/n102043683 > 2 > cat/n102877229 > 1 > Caterpillar/n102877229 > 2 > cat/n102879203 > 1 > cat-o’-nine-tails/n102879203 > 2 > cat/n103475580 > 1 > kat/n103475580 > 2 > khat/n103475580 > 3 > qat/n103475580 > 4 > quat/n103475580 > 5 > cat/n103475580 > 6 > Arabian_tea/n103475580 > 7 > African_tea/n109269334 > 1 > cat/n109500444 > 1 > guy/n109500444 > 2 > cat/n109500444 > 3 > hombre/n109500444 > 4 > bozo/n200074101 > 1 > vomit/v200074101 > 2 > vomit_up/v200074101 > 3 > purge/v200074101 > 4 > cast/v200074101 > 5 > sick/v200074101 > 6 > cat/v200074101 > 7 > be_sick/v200074101 > 8 > disgorge/v200074101 > 9 > regorge/v200074101 > 10 > retch/v200074101 > 11 > puke/v200074101 > 12 > barf/v200074101 > 13 > spew/v200074101 > 14 > spue/v200074101 > 15 > chuck/v200074101 > 16 > upchuck/v200074101 > 17 > honk/v200074101 > 18 > regurgitate/v200074101 > 19 > throw_up/v201371307 > 1 > cat/vNo

77

Page 78: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Să vedem un program elementar de căutare de glose pentru un cu-vânt dat prin baza de date WordNet:

% prolog

cautare(Cuvant) :-s(SynSet,_,Cuvant,Cat,_,_),g(SynSet,Glosa),write(Cuvant),write(’/’),write(Cat),write(’ ’),write(Glosa), nl,fail, !.

cautare_a(Cuvant) :-s(SynSet,_,Cuvant,a,_,_),g(SynSet,Glosa),write(Cuvant),write(’/’),write(’a’),write(’ ’),write(Glosa), nl,fail, !.

cautare_n(Cuvant) :-s(SynSet,_,Cuvant,n,_,_),g(SynSet,Glosa),write(Cuvant),write(’/’),write(’n’),write(’ ’),write(Glosa), nl,fail, !.

cautare_v(Cuvant) :-s(SynSet,_,Cuvant,v,_,_),g(SynSet,Glosa),write(Cuvant),write(’/’),write(’v’),write(’ ’),write(Glosa), nl,fail, !.

78

Page 79: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

Voi încărca programul cautare.pl şi voi căuta glose pentru diverseleînţelesuri ale substantivului ’cat’ (pisică):

6 ?- consult(obs/cautare).% obs/cautare compiled 0.00 sec, 1,780 bytes

Yes7 ?- cautare_n(’cat’).cat/n (feline mammal usually having thick soft fur andbeing unable to roar; domestic cats; wildcats)cat/n (any of several large cats typically ableto roar and living in the wild)cat/n (a large vehicle that is driven by caterpillartracks; frequently used for moving earth inconstruction and farm work)cat/n (a whip with nine knotted cords;"British sailors feared the cat")cat/n (the leaves of the shrub Catha edulis whichare chewed like tobacco or used to make tea;has the effect of a euphoric stimulant;"in Yemen kat is used daily by 85% of adults")cat/n (a spiteful woman gossip; "what a cat she is!")cat/n (an informal term for a youth or man;"a nice guy"; "the guy’s only doing it for some doll")

No

Putem compara informaţiile obţinute cu cele din Figura 5.2.Momentul cel mai important în programul de mai sus ţine de modul

în care sunt folosite variabilele Cuvant şi SynSet. Variabilei Cuvant îidăm o valoare atunci când îi indicăm sistemului un scop (îi spunemsă vadă dacă reuşeşte căutarea unor glose pentru ’cat’ ca substantiv).Dacă valoarea lui Cuvant se potriveşte cu un element al unui synset,atunci variabila SynSet capătă o valoare. Această valoare, la rândul ei,este folosită pentru o căutare: căutarea unei glose potrivite. În felulacesta am operat o conexiune între informaţiile din baza de date. Înfond, am inferat, am dedus o nouă informaţie din baza de date.

Căutarea unor conexiuni în baza de date nu reuşeşte întotdeauna.Următorul program Prolog caută cuvinte similare:

% prolog

similare(Cuvant) :-s(SynSet1,_,Cuvant,Cat1,_,_),

79

Page 80: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

sim(SynSet1,SynSet2),s(SynSet2,_,Similar,Cat2,_,_),write(Cuvant),write(’/’),write(Cat1),write(’ :=: ’),write(Similar),write(’/’),write(Cat2), nl,fail, !.

Spre dezamăgirea mea, nu găsesc termeni similari pentru ’cat’:

10 ?- consult(obs/similare).% obs/similare compiled 0.00 sec, 868 bytes

Yes11 ?- similare(’cat’).

No

Nu este nici o eroare în eşecul căutării de mai sus. WordNet defineşterelaţii de similaritate între adjective. În sens tehnic, în WordNet, întrecuvintele care au categoriile gramaticale a sau s. Adjectivul ’good’ estesimilar cu:

22 ?- similare(’good’).good/s :=: advantageous/agood/s :=: ample/agood/a :=: good-hearted/sgood/a :=: kind/sgood/a :=: kindly/sgood/a :=: openhearted/sgood/s :=: close/agood/s :=: complete/agood/s :=: discriminating/agood/s :=: operative/agood/s :=: fortunate/agood/s :=: fresh/agood/s :=: genuine/agood/s :=: echt/agood/a :=: bang-up/sgood/a :=: bully/sgood/a :=: corking/s

80

Page 81: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

good/a :=: cracking/sgood/a :=: dandy/sgood/a :=: great/sgood/a :=: groovy/sgood/a :=: keen/sgood/a :=: neat/sgood/a :=: nifty/sgood/a :=: not_bad(p)/sgood/a :=: peachy/sgood/a :=: slap-up/sgood/a :=: swell/sgood/a :=: smashing/sgood/a :=: good_enough/sgood/a :=: goodish/sgood/a :=: redeeming(a)/sgood/a :=: satisfactory/sgood/a :=: acceptable/sgood/a :=: solid/sgood/a :=: suitable/sgood/a :=: superb/sgood/a :=: well-behaved/sgood/a :=: well_behaved/sgood/a :=: hot/sgood/a :=: angelic/sgood/a :=: angelical/sgood/a :=: beatific/sgood/a :=: saintlike/sgood/a :=: saintly/sgood/a :=: sainted/sgood/a :=: beneficent/sgood/a :=: benevolent/sgood/a :=: gracious/sgood/a :=: white/sgood/a :=: worthy/sgood/a :=: goody-goody/sgood/a :=: redemptive/sgood/a :=: redeeming(a)/sgood/a :=: saving(a)/sgood/s :=: healthful/agood/s :=: healthy/agood/s :=: intellectual/agood/s :=: nice/agood/s :=: opportune/a

81

Page 82: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

5. Managementul logic al informaţiilor

good/s :=: pleasing/agood/s :=: reputable/agood/s :=: righteous/agood/s :=: skilled/agood/s :=: sound/agood/s :=: superior/a

No

Programe mai sofisticate decât cele de mai sus mi-ar atrage atenţiacând o căutare are sau n-are sens. Chiar şi aşa ne putem face o idee,meşterind programe Prolog de genul celor de mai sus, despre căutareaîn bazele logice de date.

82

Page 83: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Capitolul 6

Comunicarea informaţiilor

Informaţiile care ar sta stocate în baze de date sau care ar avea oformă puţin sugestivă n-ar fi utile organizaţiei. Doar informaţiile caresunt comunicate sunt informaţii folositoare organizaţiei.

Raman şi Sharma[12] disting între comunicarea orală şi comunicareascrisă. Comunicarea orală include interviurile, comunicarea ocazionalăîn grup, şedinţele etc. Comunicarea scrisă include scrisorile, rapoartele,proiectele, manualele ş.a.

Indiferent de forma comunicării, un lucru este deosebit de importantatunci când ne gândim la informaţiile pe care le includem în mesajelenoastre: auditoriul. Includerea de informaţii în mesaj nu este un scopîn sine. Ele trebuie să aibă un rost şi o şansă de a fi înţelese de cătrepublicul căruia ne adresăm.

O altă idee importantă – de această dată la nivelul organizaţiei –este aceea de a evita ambuteiajele informaţionale, gâtuirile în circuitulinformaţiilor, comunicarea de repetate ori a aceloraşi informaţii. Infor-maţiile trebuie să circule lin pe canalele de comunicare ale organizaţiei.

În sfârşit, trebuie avansate recomandări numai pe baza cântăririi cugrijă a argumentelor în favoarea unei soluţii sau a alteia. Comunicareatrebuie să fie centrată pe argumente. Forma în care sunt prezentateargumentele este însă recomandabil să fie una vizuală. Formalismeleabstracte captează mai greu interesul. Un grafic sau o imagine pot să-lmenţină treaz sau să-l stârnească.

6.1 Avantajele folosirii bazelor de date

Principalul pericol care pare a pândi managementul informaţiei într-oorganizaţie este ruptura dintre informaţiile stocate şi comunicare.

Nu vi s-a-ntâmplat să daţi de mai multe ori aceleaşi informaţii?

Page 84: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

Cineva vi le-a cerut, le-a folosit, dar nu s-a priceput să le stocheze înaşa fel încât să le poată folosi şi altă-dată.

Nu doar managerii (sau mai precis subordonatele şi subordonaţii lor)suferă din pricina rupturii dintre stocul de informaţii şi comunicare. L-am auzit nu demult pe un cadru didactic suspinând că i se cerea lista delucrări în altă formă decât până atunci. Avea lista în format electronic,dar acest format era cel al Word-ului. Se gândea desigur cât timp vapierde pentru a reface lista („tăind şi lipind“).

Un exemplu foarte frecvent de management greşit al informaţiei îloferă autoarele sau autorii de diverse lucrări, disertaţii şi teze. Biblio-grafia lucrării, disertaţiei sau tezei este alcătuită sub forma unui textmai mult sau mai puţin frumos formatat. Cum faci să păstrezi însă unformat uniform în listă? Ce te faci dacă vrei să treci localitatea înain-tea editurii? Sau dacă introduci noi titluri? Obţinerea unui rezultatbun cere ore întregi de muncă.

Soluţia la problema de mai sus este folosirea unei baze de date. Depildă, în cazul bibliografiei acestei cărţi folosesc o bază de date numităbibtex. Un fragment din baza de date este vizibil în Figura 6.1.

Figura 6.1: Fragment dintr-o sursă de date bibtex

Sursa datelor unei baze bibtex este într-un fişier al cărui nume areextensia bib. Sursa de date se compune din înregistrări. Fiecare înre-gistrare are un tip. În Figura 6.1 sunt doar înregistrări de tipul book

84

Page 85: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

(carte). Există însă şi alte tipuri de înregistrări. Fiecare tip de înre-gistrare are câmpurile sale. Numele acestor câmpuri sunt urmate desemnul egal şi sunt colorate aparte în Figura 6.1. Conţinutul informa-ţiilor stocate în câmpuri este sugerat de numele acestora. În sfârşit, oînregistrare are o etichetă unică. De exemplu, cartea lui George Sorosare eticheta soros.

Ca şi-n cazul oricărei baze de date, pe lângă sursa de date avemnevoie şi de programe care să preia datele şi să le plaseze acolo undedorim. În cazul de faţă este vorba despre programul bibtex.

Cum ştie însă programul bibtex ce formă vrem să dăm bibliografiei?Pentru aceasta programul foloseşte foi de stil. Schimbarea foii de stilne permite să schimbăm forma bibliografiei. Foaia de stil ne permite,de asemenea, să ignorăm o serie de câmpuri ale bibliografiei. În cazulcărţii lui Peter Drucker, de exemplu, am folosit câmpul cv, creat adhoc, pentru a introduce câteva date despre părintele managementuluica disciplină academică.

Utilizarea bibtex este importantă nu doar din perspectiva listei bi-bliografice finale. În fapt bibtex creează un fişier pe care-l înţelege pro-gramul LATEX. În limbajul LATEX se pot da comenzi pentru introduce-rea unor trimiteri la bibliografie. În felul acesta informaţia bibliograficăeste integrată dinamic în textul cărţii: dacă introduc un nou titlu înbibliografie, sistemul trimiterilor se actualizează automat.1

În multe alte situaţii secretul este acelaşi ca şi-n cazul bibliografiei.Ce rost are să ţii liste cu angajaţi sau angajate în formatul Word? Saudiverse informaţii despre ei sau ele? Trebuie să te chinui mult ca sătransformi un fişier Word într-o sursă de date.

A pune de la început informaţiile într-o bază de date şi a asigura unflux optim al lor până ajung să fie comunicate este un lucru absolutesenţial.

În secţiunea 6.2 vom prezenta, de altfel, un program care deseneazăgrafuri. Este important să ne gândim la un astfel de program şi dinperspectiva conectării cu bazele de date. De exemplu, programul wn-connect, introdus la pagina 63 ş.u., foloseşte această posibilitate pentrua crea grafuri folosind informaţiile din baza de date WordNet.

1Detalii despre utilizarea practică a bibtex găsiţi în anexele la cartea mea Eseulfilosofic (Bucureşti: Editura Universităţii din Bucureşti, 2004) sau în pagina de weba cărţii.

85

Page 86: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

6.2 Vizualizarea informaţiilor

Comunicarea informaţiilor este mult mai eficientă dacă este însoţită şide o prezentare grafică a legăturii dintre informaţii.

Programele pentru foi de calcul includ, de regulă, şi aplicaţii careconstruiesc grafice: cu bare, sub forma „feliilor unei plăcinte“, cu diverselinii etc. Ce te faci însă dacă trebuie să construieşti repede o diagramăcu noduri şi săgeţi? O astfel de reprezentare grafică este ideală pentruprezentarea sugestivă a dependenţei informaţiilor unele de altele.

Poate v-aţi întrebat cu ce pachet am construit Figura 5.1. Cu pa-chetul GraphViz. GraphViz este un proiect cu sursă deschisă, dezvoltatla AT&T.

Sub Linux Fedora Core 3, de exemplu, am instalat pachetul (folosindarhiva graphviz-2.6.tar.gz) în felul următor. Ca root am transferat pa-chetul arhivat în /usr/src/redhat/SOURCES şi am tastat (din directorulrespectiv!) într-o consolă:

rpmbuild -tb graphviz-2.6.tar.gz

Restul rezolvă sistemul Fedora. Pentru instalare se folosesc rpm-uriledin /usr/src/redhat/RPMS/i386 în felul uzual:

rpm -Uvh graphviz-2.6-1.i386.rpmrpm -Uvh graphviz-devel-2.6-1.i386.rpmrpm -Uvh graphviz-tcl-2.6-1.i386.rpmrpm -Uvh graphviz-doc-2.6-1.i386.rpmrpm -Uvh graphviz-graphs-2.6-1.i386.rpm

Instalaţi în orice caz primul rpm şi pe cel care conţine documentaţia.Documentaţia este foarte bogată şi extrem de utilă pentru învăţarealimbajului folosit de programele din pachetul GraphViz.

6.2.1 Pachetul GraphViz

De îndată ce veţi vedea că elaborarea unui graf cu GraphViz presupunescrierea unui program s-ar putea să daţi înapoi şi să ziceţi „asta nu-ipentru mine“. „Sunt un om grăbit; am puţin timp“ nu-i un bun argu-ment aici. Dezvoltarea de diagrame cu GraphViz se face foarte repede.

Într-un excelent articol despre GraphViz, publicat de Linux Dev-Center pe 6 mai 2004, Michele Simionato explică avantajele GraphVizşi elementele sale de bază. Ideea din primul alineat al articolului estetocmai aceea că GraphViz este pachetul ideal pentru cine are de făcutmâine o prezentare şi n-are gata diagramele. Asta se poate întâmpla, de

86

Page 87: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

pildă, dacă vreţi să prezentaţi o schimbare în organigrama organizaţieisau în multe alte situaţii.

Pentru a lucra cu GraphViz aveţi nevoie de un editor precum Vimsau Emacs. Cea mai simplă diagramă (în afară de cea vidă) pare a ficea scrisă de mine în fişierul prim.dot:

// dot

graph test {

A

}

Într-o consolă, daţi apoi o comandă de genul:

dotty prim.dot

Apare o fereastră grafică şi-n ea un cerc în care stă scris A.Dacă vreţi o săgeată între două noduri, graful devine ceva mai „com-

plicat“ de programat:

// dot

digraph test {

Nod1Nod2

Nod1 -> Nod2

}

Cum dăm conţinut nodurilor grafului? Simplu:

// dot

digraph test {

Nod1 [label="Continutul primului nod"]Nod2 [label="Continutul celui de-al doilea nod"]

Nod1 -> Nod2

}87

Page 88: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

Cum etichetăm muchiile (conexiunile) dintre nodurile grafului? Pu-nem, ca şi-n cazul nodurilor, un text între ghilimelele din label="". Deexemplu:

// dot

digraph test {

Nod1 [label="Continutul primului nod"]Nod2 [label="Continutul celui de-al doilea nod"]

Nod1 -> Nod2 [label="Eticheta pe sageata"]

}

Cum inversăm direcţia săgeţii?

// dot

digraph test {

Nod1 [label="Continutul primului nod"]Nod2 [label="Continutul celui de-al doilea nod"]

Nod1 -> Nod2 [label="Eticheta pe sageata", dir=back]

}

Dacă studiaţi comparativ paşii de mai sus vă puteţi da seama ime-diat care sunt diferenţele şi cum fiecare corespunde cu o modificare înimaginea pe care-o vedeţi în fereastra grafică.

Marele avantaj al GraphViz este că pot fi scrise programe care pre-iau informaţii dintr-o bază de date şi le introduc în textul programelorGraphViz. Apoi aceste programe sunt transformate în grafuri. În felulacesta procesul de prezentare a reţelei informaţiilor poate fi automati-zat.

6.2.2 Diagrame pentru argumente

Anumite şcoli filosofice au un adevărat cult pentru argumentare. Oriceidee trebuie susţinută cu argumente, în tradiţia de gândire a unor ase-menea şcoli.

Argumentele sunt importante nu doar pentru filosofi. La urma ur-mei, sunt prezente în discuţiile de zi cu zi. Sunt importante însă şi-nprocesele de comunicare în care sunt angajaţi managerii.

88

Page 89: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

Pe scurt, ideea în favoarea căreia pledez aici este că n-ajunge să susţiicu convingere o decizie. N-ajung simplele informaţii. Trebuie oferiteargumente.

Din fericire, argumentele formulate în limbajul natural pot fi vizua-lizate şi cu ajutorul tehnicilor logicii informale. În comunicările mana-gerilor cred că aceste reprezentări vizuale nu sunt doar suficiente, cichiar mai eficiente decât formalizările matematice.

Ceea ce sugerez în continuare urmează linia din cartea lui C.A.Missi-mer[7]. Utilizez însă grafurile construite cu ajutorul GraphViz.

C.A.Missimer[7, p.16] ne spune că orice argument argument porneştede la o problemă. Nu este desigur uşor întotdeauna să descoperim pro-blema aflată în discuţie. Dacă auzim însă pe cineva susţinând că n-artrebui date note la şcoală,2atunci ne dăm seama că problema în discuţieeste cea a notării în şcoală.

Fiind dată o problemă, diverse părţi pot să avanseze răspunsuri di-ferite sau chiar diametral opuse. De pildă, unii pot fi pentru note, alţiicontra lor.

Miezul unui argument constă din raţiunile avansate în favoarea uneisoluţii. Dacă soluţiile sunt opuse, precum în chestiunea notării, atunciputem vizualiza destul de lesne aceste raţiuni (a se vedea Figura 6.2,construită pornind de la Figura 3–3 din Good Arguments [7, p.35]).

Figura 6.2: Raţiuni pro şi contra unei soluţii în problema notării

Cântărirea raţiunilor în favoarea unei soluţii sau a alteia este o parteimportantă a argumentării.

Figura 6.2 este construită folosind un fişier argcarg.dot cu următorulconţinut:

// dot2De altfel, mai nou, şi la noi în ţară, în primele patru clase, se dau calificative

(nu tradiţionalele note de la 1 la 10).

89

Page 90: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

digraph test {

Problema [label="Trebuie renuntat la note?", shape=rect ]Da [label="Da", color=blue]Nu [label="Nu", color=red]{rank=same; Da Nu}

Da -> Problema [label="ratiuni contra notare", dir=back]Nu -> Problema [label="ratiuni pro notare", dir=back]}

Pentru a obţine fişierul argcarg.png, care conţine imaginea ca atare,se foloseşte următoarea comandă (într-o consolă):

dot argcarg.dot -Tpng -o argcarg.png

Un manager poate să argumenteze pro sau contra deschiderii uneinoi filiale a organizaţiei. Poate să argumenteze pro sau contra unui noumagazin sau a introducerii în fabricaţie a unui produs ş.a.m.d. În toateaceste situaţii trebuie produse raţiuni în favoarea concluziei avansate şitrebuie indicate temeiuri pentru superioritatea acestor raţiuni în raportcu cele în favoarea unor concluzii diferite.

Această carte tratează problema managementului informaţiei. N-avem drept scop discutarea modului în care dovezile disponibile înclinăbalanţa în favoarea unei concluzii sau a alteia. Aşa ceva face obiectulunui cărţi despre gândirea critică, argumentare şi logică informală. Aicine interesează felul în care se poate manevra cu informaţiile conţinute înargumente şi modul în care ele pot fi prezentate grafic cât mai sugestiv.

Unul dintre elementele cele mai importante legate de argumentareeste identificarea presupoziţiilor. Modul de a pune problema ca atarepoate să conţină presupoziţii. Chiar dacă pare o întrebare de om ne-cioplit, legendara chestiune din Vechea Grecie „Ai pierdut coarnele?“are meritele ei. Ne atrage atenţia asupra presupoziţiilor problemei: tre-buia să am ceva ca să pot pierde acel ceva. Odată scoase la lumină,presupoziţiile pot fi reprezentate grafic.

Figura 6.3 este obţinută prin adăugarea a trei rânduri în fişierulargcarg.dot:

Presupozitie [shape=rect]{rank=sink; Presupozitie}Presupozitie -> Problema

Se observă indicarea destul de evidentă a rank-ului (rangului) presupo-ziţiei în graf.

90

Page 91: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

Figura 6.3: Reprezentarea presupoziţiei problemei

Multe cărţi de argumentare insistă asupra elementelor de susţinereintermediare. Concluzia este avansată pe temeiul unor constatări inter-mediare. Am putea, de exemplu, susţine că notele încurajează repro-ducerea necritică a lecţiilor.

De asemenea, un autor precum C.A.Missimer[7, cap.7] insistă şi asu-pra importanţei prescripţiilor. Dacă am ajunge la concluzia că trebuierenunţat la note, atunci trebuie să facem o recomandare.

Pentru a introduce elementele intermediare în sprijinul concluziei,precum şi recomandări, putem modifica codul de până acum al grafuluipentru a ajunge la forma următoare (comparaţi formele anterioare cuaceasta pentru a detecta schimbările):

// dot

digraph test {

Problema [label="Trebuie renuntat la note?", shape=rect ]Da [label="Da", color=blue]Nu [label="Nu", color=red]{rank=same; Da Nu}

Sustinere -> Problema [label="ratiuni", dir=back]Da -> Sustinere [label="ratiuni", dir=back]Recomandare -> Da [dir=back]Nu -> Problema [label="ratiuni pro notare", dir=back]

Presupozitie [shape=rect]91

Page 92: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

6. Comunicarea informaţiilor

{rank=sink; Presupozitie}Presupozitie -> Problema

}

Rezultatul este cel din Figura 6.4.

Figura 6.4: Versiunea modificată a diagramei argumentării în problemanotării

92

Page 93: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Capitolul 7

Managementul informaţiilorconţinute în proiecte

Termenul „proiect“ este ambiguu.1Un proiect poate fi conceput dreptproiect-ca-idee. În acest caz, miezul său este format dintr-un şir deobiective, bifate pe măsură ce sunt atinse.

Un proiect poate fi înţeles drept proiect-ca-propunere. Deobicei estevorba de o propunere prezentată unei comisii care aprobă resurselefinanciare solicitate prin proiect. Comisiei i se prezintă ceva care aratămai degrabă ca o carte. În orice caz, există multe elemente menite să-iajute pe membrii comisiei să se documenteze mai bine: descrieri, tabele,grafice şi multe altele.

Managementul informaţiilor diferă în cazul proiectului-ca-idee decel din cazul proiectului-ca-propunere. Proiectul-ca-idee presupune unmod de stocare a informaţiilor care facilitează generarea ideilor şi or-ganizarea lor într-un mod coerent. În cazul proiectului-ca-propunereideile trebuie să existe deja. Aici forma în care sunt prezentate con-tează. Evaluatoarele sau evaluatorii trebuie convinşi că ideile respec-tive pot fi transpuse în practică şi că fondurile alocate vor fi cheltuiteeficient.

Îţi trebuie deci un proiect-ca-idee pe care, dacă nu dispui direct defondurile necesare, trebuie să-l transformi într-un proiect-ca-propunere.O dată obţinute fondurile, proiectul trebuie dezvoltat, ceea ce ridicănoi şi interesante probleme legate de managementul informaţiilor. Înprincipiu însă, dezvoltarea proiectului presupune obiective, resurse şitermene. Informaţiile cu privire la obiective, resurse şi termene suntcele care trebuie organizate cât mai potrivit.

1O serie de exemple interesante de folosire a termenului „proiect“ găsiţi, deexemplu, pe situl factbites.

Page 94: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

7.1 Structurarea arborescentă a informaţi-ilor

Metafora arborelui este lesne inteligibilă dacă ne gândim la structuraunei cărţi de factură academică. Cartea ca atare este „rădăcina“ ar-borelui.2Capitolele sunt precum crengile care se desprind din trunchi.Din capitole se desprind alte ramuri: secţiunile. Procesul poate evidentcontinua. Important este că o secţiune se poate „desprinde“ (poate faceparte) doar dintr-un capitol.

Ca şi o carte, ideile unui proiect ni le putem reprezenta într-o formăarborescentă. Proiectul ca atare reprezintă rădăcina. Ideile-cheie repre-zintă ramurile principale ale arborelui. Pe măsură ce proiectul se con-turează ideilor-cheie le corespund obiectivele principale ale proiectului.Asemenea ramurilor care se desprind din alte ramuri, din obiectivele-cheie se desprind alte obiective ş.a.m.d.

Asemenea structuri arborescente pot fi realizate, de pildă, în lim-bajul XML. XML a fost conceput ca limbaj pentru Internet, dar aremultiple alte aplicaţii; e.g. stocarea de date. Pentru legătura dintrevaliditatea unui document XML şi o structură arborescentă se poatevedea comentariul din Lee Anne Phillips[9, p.40]. Matematic vorbind,un arbore este un graf (care nu conţine circuite). Ca orice graf, are no-duri şi muchii. Spre deosebire de graful desenat de Lee Anne Phillips,de regulă, arborii din cărţile de informatică au rădăcina sus (pentru cănoi citim paginile de sus în jos). Nodurilor terminale li se mai spune şifrunze.

7.1.1 Schema compoziţională

Corpul uman are o structură de rezistenţă: scheletul. O clădire are şi eao structură de rezistenţă. Despre o carte academică putem spune că areo schemă, un plan care leagă ideile din carte într-o structură coerentă.Tot aşa şi despre un proiect putem spune că are la bază o schemă pecare se brodează întreaga compoziţie.

În limba engleză se foloseşte termenul outline (schiţă) pentru a de-semna osatura unui proiect. Adevărul este că schiţa aceasta poate că-păta amploare şi am preferat aici sintagma „schemă compoziţională“.

Ideea de bază este cea a organizării arborescente a schemei compo-ziţionale. Dacă ne gândim la osatura proiectului ca fiind alcătuită dinobiective, atunci schema compoziţională va avea drept ramuri princi-

2Nu uitaţi că este vorba despre o metaforă! „Rădăcina“ combină, de fapt, rădă-cina şi trunchiul „arborelui“ până la punctul în care încep să se desprindă ramurile.

94

Page 95: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

pale obiectivele majore ale proiectului. Subobiectivele sunt asemeneaunor ramuri care se desprind din ramurile principale.

Cred că numărul obiectivelor majore ale unui proiect trebuie să fielimitat. Memoria de lucru nu ne permite să procesăm decât şapte (plussau minus două) obiective.3Putem însă formula subobiective ale obiec-tivelor principale şi aşa mai departe.

Numărul total al obiectivelor s-ar putea să fie considerabil. Infor-maţiile conţinute în schema proiectului vor fi greu de manevrat purmanual. Ne vom pune în mod firesc întrebarea dacă nu putem primiceva ajutor din partea unor programe de computer.

7.1.1.1 Folosirea programului Leo

O alegere interesantă pentru schema conceptuală a proiectului o repre-zintă programul Leo. Programul este scris de către Edward K. Ream.Are o pagină de web. Poate fi relativ uşor instalat. Atenţie însă la fap-tul că este scris în limbajul python. Citiţi instrucţiunile de instalarepentru sistemul dumneavoastră de operare şi vedeţi dacă aveţi sau nuinstalată versiunea potrivită pentru python.

Leo este un program sofisticat. Poate face foarte multe lucruri, darşi presupune unele cunoştinţe avansate de programare pentru anumiteutilizări ale sale. Nu aveţi însă nevoie de asemenea cunoştinţe pentru aconstrui scheme conceptuale. Practic, ar fi bine să parcurgeţi partea deoutlining a meditaţiilor (tutorial) la utilizarea Leo oferite de EdwardK. Ream pe Internet.

Exemplul pe care-l voi utiliza aici va fi chiar acela al cărţii de faţă. ÎnFigura 7.1 puteţi vedea, în parte, schema compoziţională a cărţii. Dacăstudiaţi puţin interfaţa grafică a programului Leo, veţi vedea că are treipanouri. Panoul din dreapta-sus este destinat mesajelor privitoare lafuncţionarea Leo. Voi ignora aici acest panou. Mă voi concentra asupracelorlalte panouri.

În panoul din stânga-sus vedeţi desenat un arbore al obiectivelorconţinute de proiectul acestei cărţi. De pildă, am drept obiectiv să

3A se vedea George A. Miller, The Magical Number Seven, Plus or Minus Two:Some Limits on Our Capacity for Processing Information, articol publicat iniţial înThe Psychological Review, 1956, vol. 63, pp. 81-97. În acest studiu celebru Millerdiscută limitele memoriei de lucru umane. Interesant este că putem însă opera cumodule de informaţii, care la rândul lor pot încorpora alte module de informaţiiş.a.m.d. Nu putem prelucra desigur decât şapte module simultan. Pot folosi unmodul de genul „anul căderii Constantinopolului“, combinat cu „anul declanşăriiRevoluţiei Franceze“ şi „anul naşterii lui Caragiale“ pentru a ţine minte numărul„145317891852“. Numărul respectiv are prea multe cifre pentru a opera cu el înmod direct în memoria de lucru.

95

Page 96: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

scriu despre explorarea informaţiei conţinut în texte. Un subobiectiv alacestui obiectiv este prezentarea tiparelor de căutare.

Dacă un nod al arborelui are pe el semnul „+“ puteţi da un clicşi arborele expandează. Dacă semnul este „-“ putem executa operaţiainversă (evident, nu pe imaginea din carte, ci-ntrun program real!).

Cum construim sau modificăm însă arborele? Putem folosi meniulOutline sau taste (apăsate în combinaţie atunci când un nod este selec-tat).

CTRL-I serveşte la crearea unui nod nou

CTRL-R mută nodul cu un nivel la dreapta (îl transformă în copilulnodului de deasupra sa)

CTRL-L mută nodul la stânga

CTRL-U mută nodul mai sus

CTRL-D mută nodul în jos

Dacă folosiţi meniul Outline aveţi posibilitatea să Hoist un nod (să-lvizualizaţi separat de celelalte noduri). Metoda aceasta este utilă cândarborele este foarte mare. Se poate, de asemenea, folosi această metodăşi pentru a insera „copiii“ unei „ramuri“ a arborelui.

Deşi pare foarte inocent, panoul din partea de jos a interfeţei lui Leoare ascunde foarte multe posibilităţi. Cea mai simplă utilizare a sa esteintroducerea de text. Această posibilitate este ilustrată şi-n Figura 7.1.

Putem scrie în panoul de jos şi fişiere întregi. De pildă, pot să scriuconţinutul unui fişier html (o pagină de web). Acest lucru trebuie sem-nalat în mod adecvat lui Leo. Ce-i drept, de aici începe şi partea maicomplicată a lui Leo. Există un limbaj special al marcajelor folosite decătre Leo în asemenea fişiere.

Pe scurt, Leo poate evidenţia cu ajutorul culorilor sintaxa folosită înpanoul de jos. Leo poate salva şi ca fişiere separate textele din panoulde jos.

Având posibilităţile schiţate mai sus, Leo poate fi şi un manager alproiectelor programatorilor. Toate fişierele unui proiect pot fi gospodă-rite cu ajutorul Leo.

96

Page 97: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

Figura 7.1: Schemă compoziţională în Leo

97

Page 98: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

7.1.1.2 Folosirea VimOutliner-ului

O altă posibilitate de construire a schemei conceptuale o oferă VimOu-tliner-ul lui Steve Litt. Pentru a folosi VimOutliner trebuie să aveţiinstalat Vim şi să ştiţi să-l folosiţi.

VimOutliner este deosebit de util pentru a nota rapid ideile care nevin. Nivelul la care se plasează ideea respectivă în arborele schemeicompoziţionale este determinat foarte uşor prin introducerea de taburila începutul rândului.

VimOutliner se bazează mai ales pe comenzi de la tastatură. În modulcomandă al Vim-ului combinaţia « (apăsarea de două ori a tastei pecare este inscripţionat semnul „<“) schimbă „nivelul“ de „desprindere“al „ramurii“: ea se va desprinde de pe un nivel imediat superior celuiavut anterior. Operaţia inversă este » şi ea are un sens evident.

Dacă sunteţi familiarizate sau familiarizaţi cu outliner-ul din progra-mul Word, atunci puteţi înţelege rapid ideea de outline implementatăîn VimOutliner.

Figura 7.2: Schemă compoziţională în VimOutliner

În Figura 7.2 puteţi vedea un fragment al schemei ideilor folositepentru a construi cartea de faţă. Ca şi-n schema construită cu ajuto-rul Leo, se poate identifica obiectivul prezentării posibilităţilor de agestiona informaţia cuprinsă în texte. Se observă desigur că VimOutli-ner colorează în mod diferit „ramurile“ arborelui. Obiectivele principale

98

Page 99: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

sunt colorate în roşu. Subobiectivele obiectivelor principale sunt colo-rate în albastru. Subobiectivele acestor obiective au culoarea mov.

În modul comandă al Vim este posibil să „rulăm“, „facem sul“ (fold)subramurile unei ramuri. Puneţi cursorul pe ramura ale cărei subramurivreţi să le rulaţi şi apăsaţi (succesiv) tastele zc. Desfăşurarea materia-lului rulat se face prin apăsarea zo.

VimOutliner are o serie de comenzi care se dau după apăsarea dedouă ori a tastei pe care este inscripţionată virgula. Atenţie însă lafaptul că tastele trebuie apăsate rapid. Vim este un editor pentru aşa-numita „metodă oarbă“ de tastare. Dacă staţi să căutaţi tastele dupăinscripţiile de pe ele, nu se obţin în VimOutliner efectele dorite.

Să vedem acum practic ce se poate face cu VimOutliner. Puteţi selecta(cu selecţia vizuală a Vim-ului) ramuri ale arborelui şi apoi să apăsaţi„cb fără pauze. Apar nişte casete ([_]) care pot fi bifate pe măsură ceobiectivele sunt atinse.

Bifarea obiectivelor se poate face apăsând „cx în modul comandă.Cursorul trebuie poziţionat pe ramura pe care vrem s-o bifăm.

Dacă folosim „cp putem create casete urmate de un procent. Pro-centul se schimbă în funcţie de atingerea obiectivelor subordonate.

Sub orice ramură a arborelui schemei compoziţionale putem inseratext. Pentru aceasta, pe un rând nou, punem două puncte urmate de unspaţiu. Rândurile care încep cu două puncte urmate de un spaţiu repre-zintă un text în care putem detalia observaţiile noastre despre resurselecu care putem atinge obiectivele şi termenele atingerii obiectivelor.

99

Page 100: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

7.2 Prezentarea proiectului

Pentru prezentarea proiectelor în faţa unor comisii de evaluare trebuiefolosit un sistem de tehnoredactare. Felul în care „arată“ proiectul con-tează. Sistemul de tehnoredactare ar trebui să fie însă util nu doarpentru a produce tipărituri frumoase, ci şi pentru un management efi-cient al informaţiei conţinute în proiecte.

Structura arborescentă este în continuare importantă, dar aici voiinsista mai mult pe modularizarea informaţiei.

Sistemul de tehnoredactare pe care-l folosesc în exemplele care ur-mează este LATEX. Nu este însă necesar să ştiţi LATEX pentru a înţelegeexemplul din Figura 7.3. Conţinutul exemplului din Figura 7.3 repre-

Figura 7.3: Un proiect structurat cu ajutorul LATEX

zintă o adaptare a schemei pentru un proiect-ca-propunere din Ramanşi Sharma[12, p.462].

Principiul de bază al LATEX este separarea conţinutului de formă.Când utilizăm sistemul de tehnoredactare LATEX ne concentrăm asupraconţinutului. De formă se îngrijeşte sistemul de tehnoredactare.

100

Page 101: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

Limbajul LATEX este relativ transparent. Din Figura 7.3 se vede cădocumentul LATEX are un preambul şi un corp. În preambul putem pre-ciza o serie de informaţii pe care le va folosi ulterior sistemul. De pildă,în comanda \author{} este inserată informaţia referitoare la numeleautoarei/autorului. Această informaţie va fi folosită ulterior de cătresistem.

Practic, efect „pe hârtie“ au doar comenzile din corpul documentului.Acest corp începe cu o comandă care cere sistemului să producă titlul(folosind informaţiile din preambul cu privire la autoare/autor şi titlu).Apoi sunt incluse două module: o scrisoare şi un proiect de contract.

Nu este rău ca propunerea să aibă nu doar un cuprins, ci şi liste cufiguri şi tabele, precum şi un rezumat. Evaluatoarele sau evaluatorii aunevoie de aceste elemente pentru a-şi face rapid o idee despre proiect.Nu trebuie să mizăm niciodată pe faptul că vor sta să extragă cu migalăinformaţiile relevante din propunerea care le-a fost prezentată. N-au înprincipiu alocat timp pentru aşa ceva. Ceea ce fac este o evaluare aproiectului, nu o muncă de cercetare.

Modulele principale sunt precum capitolele unei cărţi, atâta doar căaici au un conţinut mai strict determinat: trebuie explicată problemape care-şi propune să o rezolve proiectul, obiectivele care vor fi ur-mărite pentru a realiza soluţia propusă, metodele tehnice, activităţilemanageriale, costurile şi, evident, eficienţa proiectului.

LATEX permite modularizarea foarte clară a conţinutului proiectului.În funcţie de necesităţi, putem adăuga, elimina sau permuta module.Comenzile folosite sunt deosebit de simple şi eficiente.

După cum se vede şi din Figura 7.3, proiectul include concluzii şianexe. Anexele pot avea un conţinut divers, în funcţie de proiect. Demulte ori sunt însă puse în anexă grafice, diagrame sau tabele. De ase-menea, tot din anexele proiectului face parte şi o bibliografie. Bibliogra-fia poate să cuprindă cărţi, studii, rapoarte cu caracter tehnic, studiicu o circulaţie de multe ori foarte restrânsă, dar folosite în alcătuireaproiectului.

Rezultatul programului LATEX din Figura 7.3 seamănă, din punctulde vedere al tehnoredactării, cu o carte. Ar fi prea multe pagini deinclus aici, aşa că pentru a da o idee asupra a ceea ce produce LATEXam comprimat documentul şi l-am adus la forma unui articol.

În Figura 7.5 se văd titlul şi cuprinsul. Se observă şi adaptarea lalimba română a tehnoredactării proiectului. Ea se poate face utilizândpachete LATEX speciale, utilizate tot ca nişte module suplimentare, in-troduse prin comenzi în preambul.

Pe a doua pagină a proiectului formatat de către sistemul LATEXputem vedea că modulele principale sunt numerotate. Există pachete

101

Page 102: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

Figura 7.4: Inserarea modulelor în alte module cu ajutorul LATEX

speciale LATEX care ne permit să dăm o numerotare aparte anexelor şi,evident, să facem trimiteri la anexe. Aceste trimiteri sunt rezistente,ca să zic aşa, la schimbarea poziţiilor modulelor. Cu alte cuvinte, dacăeliminăm ceva din bibliografie, totul este renumerotat automat şi trimi-terile sunt modificate în consecinţă. De asemenea, referirile la paginiledin document sau din anexe sau de la un modul la altul rezistă perfectla permutarea, inserarea sau eliminarea modulelor.

Comenzile de inserare a modulelelor pot fi date şi-n alte module, nudoar în documentul principal (cel din Figura 7.3). Figura 7.4 ilustreazăacest lucru în cazul anexelor.

Cum se prezintă conţinutul modulelor? Modulele LATEX care conţinscrisoarea, proiectul de contract, descrierea problemei, anexele ş.a.m.d.sunt fişiere de tip text. Există managere speciale pentru proiecte LATEX,care ne permit să gestionăm eficient aceste fişiere.4

La urmă, dar nu în ultimul rând ca importanţă, trebuie menţionatăproblema transferării line a informaţiilor în procesul de tehnoredactarea propunerii. Trebuie studiat (şi proiectat) cu atenţie modul în careinformaţiile se transferă către fişierele LATEX (sau alte fişiere care ar fifolosite). Trebuie evitate operaţiile de retastare a materialului (operaţiicare consumă timp şi pot introduce erori în conţinutul materialelor).

Trebuie prevăzut de asemenea un interval pentru eliminarea erorilor,inclusiv a celor care ţin de forma finală a documentului. În generalprocesul de eliminare a erorilor trebuie planificat cu grijă şi nu trebuiesă ţină de improvizaţie.5

4Unele informaţii despre asemenea sisteme sunt prezentate pe situl autoruluiacestei cărţi.

5Gândiţi-vă la analogia cu o editură, care n-are doar redactori, tehnoredactori,graficieni etc., ci şi corectori sau corectoare. Munca aceasta de eliminare a erorilor,între altele, dă diferenţa dintre o carte redactată doar de autoare sau autor şi unaapărută într-o editură.

102

Page 103: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

Titlul proiectului

Autoarea/autorul proiectului

3 decembrie 2005

Scrisoare de prezentare a proiectului

• Introducere (cu menµionarea clar  a scopului proiectului)

• Conµinutul scrisorii (principalele idei ale proiectului ³i motivelepe care le-ar avea cele/cei c rora le este adresat proiectul pentrua-l accepta)

• Concluzia scrisorii.

Propunere de contract

Cuprins

1 Problema 2

2 Obiective 2

3 Metode tehnice 2

4 Activit µi manageriale 2

5 Costuri (estimare) 2

6 Concluzii 2

Lista �gurilor

Figura 7.5: Prima pagină a proiectului formatat de LATEX

103

Page 104: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

7. Managementul informaţiilor conţinute în proiecte

Rezumat

Un rezumat care s  permit  evaluatorilor s -³i fac  rapid o idee despreproiect.

1 Problema

2 Obiective

3 Metode tehnice

Metode tehnice folosite pentru a atinge obiectivele.

Planuri tehnice de acµiune.

4 Activit µi manageriale

Descrierea activit µilor manageriale care vor � întreprinse în vedereaatingerii obiectivelor.

Prezentarea cali�c rii pe care o are personalul.

5 Costuri (estimare)

Estimarea costurilor pe care le implic  atingerea obiectivelor proiectu-lui.

6 Concluzii

Anexe

Anexe la proiect (gra�ce, tabele, diagrame suplimentare).

Bibliogra�e

[1] Meenakshi Raman ³i Sangeeta Sharma. Technical Communication:

Principles and Practice. New Delhi: Oxford University Press, 2004.

Figura 7.6: A doua pagină a proiectului formatat de LATEX

104

Page 105: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Bibliografie

[1] Peter Drucker. Management: Tasks, Responsabilities, Practices.New York: Harper & Row, 1985. Citată la p. 17.

[2] Ben Forta. SQL pentru începători. Bucureşti: Teora, 2002. Citatăla p. 48.

[3] David D. Friedman. Price Theory. Cincinnati,OH: South–Western, 1990. <http://www.daviddfriedman.com/Academic/Price_Theory/PThy_ToC.html>. Citată la p. 19.

[4] LiMin Fu. Neural Networks in Computer Intelligence. New Delhi:Tata McGraw-Hill, 2003. Citată la p. 59.

[5] Rob Mattison. Understanding Database Management Systems,ediţia a 2-a. New York: McGraw-Hill, 1997. Citată la pp. 19şi 20.

[6] A. I. Mihailov, A. I. Ceornîi şi R. S. Ghilearevski. Informaticadocumentară. Bucureşti: Editura Ştiinţifică, 1970. Citată la p. 13.

[7] C. A. Missimer. Good Arguments. Englewood Cliffs, New Jersey:Prentice Hall, 1995. Citată la pp. 89 şi 91.

[8] Chris Newman. SQLite. Indianapolis: Sams, 2005. Citată la p. 48.

[9] Lee Anne Phillips. XML. Bucureşti: Teora, 2001. Citată la p. 94.

[10] Ellie Quigley. Unix Shells by Example. Upper Saddle River,NJ:Prentice Hall, 2005. Citată la p. 26.

[11] Ioan Radu, Minodora Ursăcescu şi Florin Ioniţă. Informatică pen-tru managementul firmei. Bucureşti: Editura „Tribuna Econo-mică“, 2001. Citată la p. 47.

[12] Meenakshi Raman şi Sangeeta Sharma. Technical Communication:Principles and Practice. New Delhi: Oxford University Press, 2004.Citată la pp. 83 şi 100.

Page 106: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

BIBLIOGRAFIE

[13] William F. Sharpe. Introduction to Managerial Economics. NewYork: Columbia University Press, 1973. Citată la p. 19.

[14] George Soros. The Alchemy of Finance. New York: Wiley, 1994.Citată la pp. 16, 17 şi 28.

[15] Sarah Witzig. Accessing WordNet from Prolog [pe situl PrologNatural Language Tools la Universitatea din Georgia]. <http://www.ai.uga.edu/mc/ProNTo/Witzig.pdf>, 2003, data accesării:2005-10-01. Există şi un pachet de programe asociat acestui studiu;pachetul poate fi descărcat de la http://www.ai.uga.edu/mc/ProNTo/Witzig.zip. [Cercetările publicate pe situl ProNTo suntcoordonate de profesorul Michael A. Covington]. Citată la pp. 66şi 68.

106

Page 107: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Indice

algoritm, 13, 15argumente, 88, 89aspell, 37, 38awk, 32–35

baze de date, 32, 48, 59, 62, 65,76, 82, 84, 85, 88

bibtex, 84, 85etichetă unică, 85stil, 85

câmpuri, 29, 30, 33, 49, 85cazuri, 10, 13, 20codurile literelor, 31comenzi în linie, 27, 50comunicare, 83costuri, 19, 21cunoaştere, 15, 59

date calendaristice, 29definiţii lexicale, 43dexonline, 43–46dicţionar bilingv, 42dicţionar invers, 36dicţionar ortografic, 39dixit, 43, 44

fişa de lectură, 9

graf, 87, 94muchii, 88noduri, 87

GraphViz, 86grep, 26–28, 41

hipernim, 68hiponim, 62, 68

inferenţe, 60

informaţie, 14, 15, 22, 32, 59, 83comprimarea – , 41structuri arborescente, 94

înregistrare, 34, 49, 84tipuri, 84

LATEX, 100Leo, 95logica predicatelor, 59, 65, 66

managementul informaţiilor, 17,18, 36, 42, 90, 93

manager, 17memoria

limite, 95meronim, 61

proiect, 93eliminarea erorilor, 102modularizarea, 102obiectivele, 95prezentarea, 100schema, 100, 101schema compoziţională, 94–

96, 98, 99Prolog, 65–67, 70, 75, 76, 82

căutare, 76fail, 76implicaţie, 75programe, 74variabile, 71, 79

QDBM, 44, 45

reţea semantică, 59, 60, 68reflexivitate, 17

sens, 61

Page 108: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

INDICE

sort, 29–32SQL, 47, 48, 54, 65

căutare, 55căutare condiţionată, 55ordonare, 56

SQLite, 47, 48afişare, 57ajutor, 56mod html, 57

sqlitebrowser, 48supravieţuire, 21SWI-Prolog, 65, 68

comenzi, 68consult, 69dialoguri, 70scop, 70

synset, 67

tabel, 49tipare de căutare, 23, 33, 65

Vim, 23, 69, 87, 99VimOutliner, 98

wnconnect, 63, 64WordNet, 60–63, 65–69, 72, 80

XML, 94

108

Page 109: Mihail Radu Solcan - Facultatea de Filosofiesolcan/minf/solcan_minf.pdf · o distanţă de marginea de sus a fişei care să vă permită să scrieţi un rând. Trageţi apoi o linie

Versiune pentru ecran: 4 decembrie 2005.nu este permisă tipărirea ei decât pentru

uz personal!