Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indec

Documente similare
Capitole Speciale de Informatică Curs 1: Extragerea informaţiilor. Modelul boolean şi modelul boolean extins 27 septembrie 2018 Extragerea informaţiil

Capitole Speciale de Informatică Curs 4: Calculul scorurilor în un sistem complet de extragere a informaţiilor 18 octombrie 2018 Reamintim că în cursu

Curs 6: Clasificarea surselor de informatii - Clasificarea Bayes Naiva. Modelul Bernoulli

Capitole Speciale de Informatica - Curs 5: Extragerea informatiilor prin feedback de relevanta. Metode probabiliste de extragere a informatiilor

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1.

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Microsoft Word - Curs_08.doc

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Subiectul 1

Transmisia datelor multimedia in retele de calculatoare <Titlu Lucrare>

Microsoft Word - O problema cu bits.doc

Dorel LUCHIAN Gabriel POPA Adrian ZANOSCHI Gheorghe IUREA algebră geometrie clasa a VIII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Analiză statică Analiza fluxului de date 23 octombrie 2014

Microsoft Word - CarteC.doc

Microsoft Word - CarteC.doc

Programarea şi utilizarea calculatoarelor

E_d_Informatica_sp_SN_2014_bar_10_LRO

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

Microsoft Word - Lab1a.doc

Microsoft Word - PCLP2_Curs_4_2019.doc

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Analiză de flux de date 29 octombrie 2012

CURS

Programarea şi utilizarea calculatoarelor

Slide 1

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

SUBPROGRAME

Microsoft Word - Curs_09.doc

METODE NUMERICE ÎN INGINERIE

Microsoft Word - Algoritmi genetici.docx

tehnologii web

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XI 1.Fişierul text bac.in conţine cel mult 1000 de

Limbaje de Programare Curs 8 – Fisiere

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Secţiunea 7-8 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 ID 100 puncte Calculatoarele trebuie să se recunoască în rețeau

MergedFile

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

Teoria Grafurilor şi Combinatorică recapitulare Principii de numărare Reţineţi că: P (n, r) este numărul de şiruri (sau r-permutări) de forma A 1,...,

E_d_Informatica_sp_MI_2015_bar_02_LRO

Diapositive 1

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

Microsoft Word - 2 Filtre neliniare.doc

Informație și comunicare

Microsoft Word - Volum-RRIOC-2-2

Microsoft Word - Curs1.docx

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

Facultatea de Matematică Anul II Master, Geometrie Algebrică Mulţimi algebrice ireductibile. Dimensiune 1 Mulţimi ireductibile Propoziţia 1.1. Fie X u

Gheorghe IUREA Adrian ZANOSCHI algebră geometrie clasa a VII-a ediţia a V-a, revizuită mate 2000 standard EDITURA PARALELA 45 Matematică. Clasa a VII-

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Noțiuni de bază ale criptografiei

Limbaje de Programare Curs 5 – Siruri de caractere

Politica N21 privind modulele Cookie mobile Network TwentyOne se angajează să vă protejeze pe dumneavoastră și orice date (anonime sau de altă natură)

Tehnici de securitate pe bază de ontologii în sistemele de biblioteci virtuale

OPERATII DE PRELUCRAREA IMAGINILOR 1

Grile si probleme siruri de caractere in C++ ŞIRURI DE CARACTERE Itemii următori sunt preluaţi din variantele de bacalaureat În secvenţa de i

8.1. Elemente de Aritmetică. 8. Aplicatii (15 aprilie 2019) Lema 8.1. Fie (A, +) un grup abelian şi H, K A. Atunci H K şi H + K = {h + k h H şi k K} s

Creational design patterns

Grafuri - Concepte de baza. Tipuri de grafuri. Modalitati de reprezentare

L7

CRIPTOSISTEME SIMETRICE I

CAPITOLUL I

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Limbaje Formale, Automate si Compilatoare

Microsoft Word - Curs_10.doc

Slide 1

Utilizare Internet

1

Microsoft Word - RES nr. 3_corectat.doc

Pattern Recognition Systems

Mic ghid de folosire a Gmail

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

Aggregating Data

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Ghidul pentru utilizator

Microsoft Word - Rezolvarea Test 16 carte 2015.doc

Instructiuni pt. depunerea declaratiei A4200 Declaratia A4200 se construieste pornind de la o colectie de fisiere XML, reprezentand fiecare o zi fisca

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Addendum Syllabus 6 Microsoft Access 2016 REF Syllabus 6.0 Cunoașterea domeniilor în care se utilizează bazele de date Datorită potenţialului ma

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Secţiunea Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 PIEPTBICEPS 100 puncte Mihai este un bodybuilder cunoscut în Romania. El

Declararea variabilelor

CL2009R0976RO bi_cp 1..1

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

LABORATOR 1. Stocarea si partajarea fisierelor online cu ajutorul Dropbox, WeTransfer.com PREZENTAREA LUCRĂRII DE LABORATOR Lucrarea de laborator îşi

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

(Microsoft PowerPoint SIBIUEVIDENTA [Doar \356n citire])

Transcriere:

Capitole Speciale de Informatică Curs 2: Determinarea vocabularului de termeni şi a listelor de postări 4 octombrie 2018 Reamintim că listele de indecşi inversaţi se construiesc în 4 paşi: 1. Se colectează o mulţime D de documente care se vor indexa. 2. Se tokenizează textul din documentele colecţiei. 3. Tokenurile se preprocesează lingvistic. 4. Se indexează documentele în care apare fiecare termen. Scopul acestui curs este să indice cum se determină unităţile de măsură a documentelor, şi secvenţele de caractere pentru conţinutul lor. aspectele importante ale tokenizării şi preprocesării lingvistice. implementarea listelor de postări şi a listelor extinse de postări. structuri de date utile pentru interogări ce includ fraze şi operatori de proximitate. 1 Determinarea documentelor şi decodificarea secvenţei de caractere De obicei, documentele în format electronic sunt secvenţe de octeţi stocate în un fişier sau pe un browser web. Se folosesc mai multe metode de codificare/decodificare a secvenţelor de caractere în secvenţe de caractere: ASCII, Unicode UTF-8, UTF-16, etc. Preoprocesarea acestor documente presupune: 1. Determinarea codificării corecte, urmată de decodificare. Determinarea codificării dorecte este o problemă de clasificare în machine learning, care poate fi rezolvată în mai multe feluri: cu metode euristice, pe baza unei selecţii a utilizatorului, sau pe baza metadatelor asociate cu documentul respectiv. 1

2. Uneori, secvenţa de caractere produsă prin decodificare mai trebuie preprocesată. De exemplu, documentele XML conţin entităţi care se înlocuiesc cu carctere speciale. De exemplu, & se înlocuieşte cu &. In general, produsele software comerciale trebuie să ştie să recunoască şi să decodifice un număr mare de tipuri de documente şi codificări. De obicei, decodificarea în un şir de caractere se face cu biblioteci software achiziţionate cu licenţă în acest scop. Aceste biblioteci ştiu şi cum să decodifice texte scrise în arabă sau japoneză, care nu sunt simple şiruri de caractere scrise de la stânga la dreapta. 3. Să se decidă ce unitate de măsură a documentelor (engl. document unit) să folosească. Adeseori, un document no corespunde unui fişier: un ficşier zip poate arhiva mai multe documente; mesajele din mail-boxul unui utilizator sunt toate stocate în un singur fişier; unele programe (precum latex2html) descompun un document în mai multe fişiere separate. Prin urmare, se pune problema determinării granularităţii: cât de mare să fie un document; cum definim şi cum determinăm o unitate de măsură pentru documente. 2 Determinarea vocabularului de termeni Secvenţa de caractere produsă prin decodificare se desparte în tokenuri. De obicei, tokenurile se sunt separate prin semne de punctuaţie şi secvenţe de caractere speciale (eng. whitespace). De exemplu, tokenizarea textului Friends, Romans, Countrymen, lend me your ears. produce secvenţa de tokenuri Friends Romans Countrymen lend me your ears Apoi, se rulează un proces de normalizare care extrage o secvenţă de termeni din lista de tokenuri. Termenii vor fi elementele incluse în dicţionarul sistemului de IR. Tokenizarea este o problemu a dificilă: cum definim şi cum determinăm tokenurile? De exemplu, cum tokenizarea frazei Mr. O Neill thinks that the boys stories about Chile s capital aren t amusing. se poate face corect doar după ce se detectează limbajul în care ese scris textul. O tehnică foarte eficientă de detecţie a limbajului este cea bazată pe clasificatori ce utilizează subsecvenţe scurte de caractere. Alte probleme complexe rezolvate de algoritmii avansaţi de tokenizare sunt: interpretarea corectă a liniuţei de subliniere. De exemplu co-education şi Hewlett-Packard sunt considerate un singur token. recunoaşterea grupurilor de cuvinte care constituie un singur token. De exemplu Los Angeles sau New York University. 2

Segmentarea unor cuvinte compuse lungi. De exemplu, cuvântul german Lebensversicherungsgesellschaftsangestellter înseamnă angajat al unei companii de asigurare pe viaţă şi poate fi descompus în mai mute tokenuri. Eliminarea unor cuvinte de legătură folosite frecvent. Cuvinte precum şi sau articole precum al se omit din lista de tokenuri.... 3 Normalizarea tokenurilor Normalizarea este procesul de împărţire a tokenurilor în clase de echivalenţă, adică mulţimi de tokenuri care au acelaşi înţeles sau înţelesuri foarte asemănătoare. De exemplu, tokenurile maşină şi automobil sunt echivalente Prin urmare, când căutam documente despre maşină, vrem să găsim şi documente despre automobil. O soluţie la această problemă este să reprezentăm toţi termenii din o clasă de echivalenţă cu un singur termen. Înlocuirea unui termen cu reprezentantul clasei sale de echivalenţă se numeşte normalizare. Altă soluţie este să reţinem care termeni sunt sinonimi. De obicei, acest lucru se realizează în 2 feluri: 1. Se indexează toate tokenurile nenormalizate şi se asociază o listă de expansiune pentru toţi termenii admişi în o cerere de informare. De exemplu, maşină se va putea înlocui cu maşină OR automobil. 2. Expansiunea tokenurilor se face pe durata indexării. De exemplu, un document care conţine maşină se indexează şi pentru tokenul automobil. Unele probleme de normalizare trebuie să ţină cont de limbajul din care provin tokenurile:... În engleză, accentele şi diacriticile au de obicei un rol marginal normalizarea se poate face eliminând diacriticile: cliche în loc de cliché, naive în loc de naïve. În alte limbi, precum spaniola, un accent poate schima complet sensul unui cuvânt: peña înseamnă faleză, iar pena înseamnă durere. 4 Liste extinse de postări În cursul 1 am vazut că intersecţia a 2 liste de postări de lungimi m şi n se poate face în timp O(m + n). Dacă dorim timpi şi mai scurţi (sub-liniari) de calcul al intersecţiei, putem folosi liste cu pointeri de ocolire (engl. skip lists): 3

pointerii de ocolire sunt scurtături efective care ne permit să evităm să procesăm porţiuni mari din listele de postări care nu apar în rezultatul intersecţiei. Figura de mai jos ilustrează 2 liste de postări cu pointeri de ocolire: Brutus 2 4 8 16 19 23 28 43 Caesar 1 2 3 5 8 41 51 60 61 Apar 2 probleme noi: (1) unde se plasează pointerii de ocolire, şi (2) cum se poate face intersecţie rapidă cu pointeri de ocolire. Algoritmul de intersecţie cu pointeri de ocolire se poate defini în mai multe feluri. O posibilitate este ilustrată mai jos: IntersectCuOcoliri(p 1, p 2 ) 1 raspuns := 2 while p 1 Nil and p 1 Nil do 3 if docid(p 1 ) = docid(p 2 ) 4 adaugă docid(p 1 ) la raspuns 5 p 1 := next(p 1 ) 6 p 2 := next(p 2 ) 7 else if docid(p 1 ) < docid(p 2 ) 8 if hasskip(p 1 ) and (docid(skip(p 1 )) docid(p 2 )) 9 while hasskip(p 1 ) and (docid(skip(p 1 )) docid(p 2 )) do 10 p 1 := skip(p 1 ) 11 else p 1 := next(p 1 ) 12 else if hasskip(p 2 ) and (docid(skip(p 2 )) docid(p 1 )) 13 while hasskip(p 2 ) and (docid(skip(p 2 )) docid(p 1 )) do 14 p 2 := skip(p 2 ) 15 else p 2 := next(p 2 ) 16 return raspuns Observaţii: Pointerii de ocolire sunt folositori pentru a face mai rapida operaţia de intersecţie; nu pot fi folosiţi pentru operaţia de reuniune. Mai mulţi pointeri de ocorire implică rute de ocolire mai scurte mai multe teste de ocolire ş mai mult spaţiu ocupat de pointerii de ocolire. O euristică simplă care funcţionează bine în practică este ca pentru liste de postări de lungime P să alocăm P pointeri de ocolire care sar peste căte P postări. 4

O altă extensie utilă a listelor simple de postări sunt listele de indecşi poziţionali. O listă de indecşi poziţionali pentru un termen t reţine mai multe informaţii: frecvenţa lui t în colecţia de documente, adică în câte documente apare t. pentru fiecare document cu identificatorul docid, o postare de forma unde docid, n : pos 1, pos 2,... pos 1, pos 2,... sunt poziţiile (sortate crescător) unde apare termenul t in documentul cu identificatorul docid. n este numărul de aparţii al lui t in documentul cu identificatorul docid. De exemplu, listele de indecşi poziţionali ai termenilor to şi be în o colecţie de documente ar putea arăta astfel: to,993427: 1,6: 7, 18, 33, 72, 86, 231 ; 2,5: 1, 17, 74, 222, 255 ; 4,5: 8, 16, 190, 429, 433 ;... be,178239: 1,2: 17, 25 ; 4,5: 17, 191, 291, 430, 434 ; 5,3: 14, 19, 101 ;... Listele de indeşi poziţionali permit găsirea documentelor care conţin fraze, adică secvenţe de termeni. De exemplu, găsirea documentelor care conţin to be poate decurge astfel: se caută poziţiile în lista de indecşi poziţionali ai lui be care sunt imediat după o poziţie în lista de indecşi poziţionali ai lui to în acelaşi document. De pildă, pentru listele ilustrate mai sus, rezultatul căutării va fi to:..., 4 :..., 429, 433,... be:..., 4 :..., 430, 434,... Un algoritm mai general, care găseşte toate perechile de poziţii din 2 liste de indecşi poziţionali care sunt la cel mult k cuvinte distanţă una de cealaltă, este ilustrat în figura 1. 5

PositionalIntersect(p 1, p 2, k) 1 raspuns := 2 while p 1 Nil and p 1 Nil do 3 if docid(p 1 ) = docid(p 2 ) 4 l := 5 pp 1 := pozitii(p 1 ) 6 pp 2 := pozitii(p 2 ) 7 while pp 1 Nil do 8 while pp 2 Nil do 9 if pos(pp 1 ) pos(pp 2 ) k 10 adaugă pos(pp 2 ) la l 11 else if pos(pp 2 ) > pos(pp 1 ) 12 break 13 pp 2 := next(pp 2 ) 14 while l and l[0] pos(pp 1 ) > k do 15 şterge l[0] din l 16 for each ps l do 17 adaugă docid(p 1 ), pos(pp 1 ), ps la raspuns 18 pp 1 := next(pp 1 ) 19 p 1 := next(p 1 ) 20 p 2 := next(p 2 ) 21 else if docid(p 1 ) < docid(p 2 ) 22 p 1 := next(p 1 ) 23 else p 2 := next(p 2 ) 24 return raspuns Figure 1: Algoritm de intersecţie de proximitate dintre 2 liste extinse de postări. Bibliografie 1. Capitolul 2 din Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze: An Introduction to Information Retrieval. Ediţie online (c) 2009 Cambridge UP. http://nlp.stanford.edu/ir-book/pdf/irbookonlinereading.pdf 6