introduction to information retrieval http ...arjun/courses/nlp/bool_txt_retrieval_schtuetze.pdf ·...

34
Introduction Inverted index Processing Boolean queries Query optimization Course overview Introduction to Information Retrieval http://informationretrieval.org IIR 1: Boolean Retrieval Hinrich Sch¨ utze Center for Information and Language Processing, University of Munich 2014-04-09 Sch¨ utze: Boolean Retrieval 1 / 60

Upload: others

Post on 17-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Introduction to Information Retrievalhttp://informationretrieval.org

IIR 1: Boolean Retrieval

Hinrich Schutze

Center for Information and Language Processing, University of Munich

2014-04-09

Schutze: Boolean Retrieval 1 / 60

Page 2: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Take-away

Boolean Retrieval: Design and data structures of a simpleinformation retrieval system

Schutze: Boolean Retrieval 2 / 60

Page 3: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Definition of information retrieval

Information retrieval (IR) is finding material (usually documents) ofan unstructured nature (usually text) that satisfies an informationneed from within large collections (usually stored on computers).

Schutze: Boolean Retrieval 4 / 60

Page 4: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview
Page 5: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview
Page 6: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Boolean retrieval

The Boolean model is arguably the simplest model to base aninformation retrieval system on.

Queries are Boolean expressions, e.g., Caesar and Brutus

The seach engine returns all documents that satisfy theBoolean expression.

Schutze: Boolean Retrieval 7 / 60

Page 7: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Boolean retrieval

The Boolean model is arguably the simplest model to base aninformation retrieval system on.

Queries are Boolean expressions, e.g., Caesar and Brutus

The seach engine returns all documents that satisfy theBoolean expression.

Does Google use the Boolean model?

Schutze: Boolean Retrieval 7 / 60

Page 8: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Does Google use the Boolean model?

On Google, the default interpretation of a query [w1 w2

. . .wn] is w1 AND w2 AND . . . AND wn

Schutze: Boolean Retrieval 8 / 60

Page 9: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Outline

1 Introduction

2 Inverted index

3 Processing Boolean queries

4 Query optimization

5 Course overview

Schutze: Boolean Retrieval 9 / 60

Page 10: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Unstructured data in 1650: Shakespeare

Schutze: Boolean Retrieval 10 / 60

Page 11: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Unstructured data in 1650

Which plays of Shakespeare contain the words Brutus and

Caesar, but not Calpurnia?

Schutze: Boolean Retrieval 11 / 60

Page 12: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Unstructured data in 1650

Which plays of Shakespeare contain the words Brutus and

Caesar, but not Calpurnia?

One could grep all of Shakespeare’s plays for Brutus andCaesar, then strip out lines containing Calpurnia.

Why is grep not the solution?

Slow (for large collections)grep is line-oriented, IR is document-oriented“not Calpurnia” is non-trivialOther operations (e.g., find the word Romans nearcountryman) not feasible

Schutze: Boolean Retrieval 11 / 60

Page 13: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Term-document incidence matrix

Anthony Julius The Hamlet Othello Macbeth . . .and Caesar Tempest

CleopatraAnthony 1 1 0 0 0 1Brutus 1 1 0 1 0 0Caesar 1 1 0 1 1 1Calpurnia 0 1 0 0 0 0Cleopatra 1 0 0 0 0 0mercy 1 0 1 1 1 1worser 1 0 1 1 1 0. . .Entry is 1 if term occurs. Example: Calpurnia occurs in Julius Caesar.Entry is 0 if term doesn’t occur. Example: Calpurnia doesn’t occur in The

tempest.

Schutze: Boolean Retrieval 12 / 60

Page 14: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Incidence vectors

So we have a 0/1 vector for each term.

To answer the query Brutus and Caesar and not

Calpurnia:

Take the vectors for Brutus, Caesar, and Calpurnia

Complement the vector of Calpurnia

Do a (bitwise) and on the three vectors110100 and 110111 and 101111 = 100100

Schutze: Boolean Retrieval 13 / 60

Page 15: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

0/1 vectors and result of bitwise operations

Anthony Julius The Hamlet Othello Macbeth . . .and Caesar Tempest

CleopatraAnthony 1 1 0 0 0 1Brutus 1 1 0 1 0 0Caesar 1 1 0 1 1 1Calpurnia 0 1 0 0 0 0Cleopatra 1 0 0 0 0 0mercy 1 0 1 1 1 1worser 1 0 1 1 1 0. . .

result: 1 0 0 1 0 0

Schutze: Boolean Retrieval 14 / 60

Page 16: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Bigger collections

Consider N = 106 documents, each with about 1000 tokens

⇒ total of 109 tokens

On average 6 bytes per token, including spaces andpunctuation ⇒ size of document collection is about 6 · 109 =6 GB

Assume there are M = 500,000 distinct terms in the collection

Schutze: Boolean Retrieval 16 / 60

Page 17: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Can’t build the incidence matrix

M = 500,000× 106 = half a trillion 0s and 1s.

But the matrix has no more than one billion 1s.

Matrix is extremely sparse.

What is a better representations?

We only record the 1s.

Schutze: Boolean Retrieval 17 / 60

Page 18: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Inverted Index

For each term t, we store a list of all documents that contain t.

Brutus −→ 1 2 4 11 31 45 173 174

Caesar −→ 1 2 4 5 6 16 57 132 . . .

Calpurnia −→ 2 31 54 101

...

︸ ︷︷ ︸ ︸ ︷︷ ︸

dictionary postings

Schutze: Boolean Retrieval 18 / 60

Page 19: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Tokenization and preprocessingDoc 1. I did enact Julius Caesar: Iwas killed i’ the Capitol; Brutus killedme.Doc 2. So let it be with Caesar. Thenoble Brutus hath told you Caesarwas ambitious:

=⇒

Doc 1. i did enact julius caesar i waskilled i’ the capitol brutus killed meDoc 2. so let it be with caesar thenoble brutus hath told you caesar wasambitious

Schutze: Boolean Retrieval 20 / 60

Page 20: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Generate postings

Doc 1. i did enact julius caesar i waskilled i’ the capitol brutus killed meDoc 2. so let it be with caesar thenoble brutus hath told you caesar wasambitious

=⇒

term docID

i 1did 1enact 1julius 1caesar 1i 1was 1killed 1i’ 1the 1capitol 1brutus 1killed 1me 1so 2let 2it 2be 2with 2caesar 2the 2noble 2brutus 2hath 2told 2you 2caesar 2was 2ambitious 2

Schutze: Boolean Retrieval 21 / 60

Page 21: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Sort postingsterm docID

i 1did 1enact 1julius 1caesar 1i 1was 1killed 1i’ 1the 1capitol 1brutus 1killed 1me 1so 2let 2it 2be 2with 2caesar 2the 2noble 2brutus 2hath 2told 2you 2caesar 2was 2ambitious 2

=⇒

term docID

ambitious 2be 2brutus 1brutus 2capitol 1caesar 1caesar 2caesar 2did 1enact 1hath 1i 1i 1i’ 1it 2julius 1killed 1killed 1let 2me 1noble 2so 2the 1the 2told 2you 2was 1was 2with 2

Schutze: Boolean Retrieval 22 / 60

Page 22: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Create postings lists, determine document frequencyterm docID

ambitious 2be 2brutus 1brutus 2capitol 1caesar 1caesar 2caesar 2did 1enact 1hath 1i 1i 1i’ 1it 2julius 1killed 1killed 1let 2me 1noble 2so 2the 1the 2told 2you 2was 1was 2with 2

=⇒

term doc. freq. → postings lists

ambitious 1 → 2

be 1 → 2

brutus 2 → 1 → 2

capitol 1 → 1

caesar 2 → 1 → 2

did 1 → 1

enact 1 → 1

hath 1 → 2

i 1 → 1

i’ 1 → 1

it 1 → 2

julius 1 → 1

killed 1 → 1

let 1 → 2

me 1 → 1

noble 1 → 2

so 1 → 2

the 2 → 1 → 2

told 1 → 2

you 1 → 2

was 2 → 1 → 2

with 1 → 2

Schutze: Boolean Retrieval 23 / 60

Page 23: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Split the result into dictionary and postings file

Brutus −→ 1 2 4 11 31 45 173 174

Caesar −→ 1 2 4 5 6 16 57 132 . . .

Calpurnia −→ 2 31 54 101

...

︸ ︷︷ ︸ ︸ ︷︷ ︸

dictionary postings file

Schutze: Boolean Retrieval 24 / 60

Page 24: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Simple conjunctive query (two terms)

Consider the query: Brutus AND Calpurnia

To find all matching documents using inverted index:1 Locate Brutus in the dictionary2 Retrieve its postings list from the postings file3 Locate Calpurnia in the dictionary4 Retrieve its postings list from the postings file5 Intersect the two postings lists6 Return intersection to user

Schutze: Boolean Retrieval 27 / 60

Page 25: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Intersecting two postings lists

Brutus −→ 1 → 2 → 4 → 11 → 31 → 45 → 173 → 174

Calpurnia −→ 2 → 31 → 54 → 101

Intersection =⇒

Schutze: Boolean Retrieval 28 / 60

Page 26: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Intersecting two postings lists

Brutus −→ 1 → 2 → 4 → 11 → 31 → 45 → 173 → 174

Calpurnia −→ 2 → 31 → 54 → 101

Intersection =⇒ 2

Schutze: Boolean Retrieval 28 / 60

Page 27: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Intersecting two postings lists

Brutus −→ 1 → 2 → 4 → 11 → 31 → 45 → 173 → 174

Calpurnia −→ 2 → 31 → 54 → 101

Intersection =⇒ 2 → 31

Schutze: Boolean Retrieval 28 / 60

Page 28: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Intersecting two postings lists

Brutus −→ 1 → 2 → 4 → 11 → 31 → 45 → 173 → 174

Calpurnia −→ 2 → 31 → 54 → 101

Intersection =⇒ 2 → 31

This is linear in the length of the postings lists.

Note: This only works if postings lists are sorted.

Schutze: Boolean Retrieval 28 / 60

Page 29: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Intersecting two postings lists

Intersect(p1, p2)1 answer ← 〈 〉2 while p1 6= nil and p2 6= nil

3 do if docID(p1) = docID(p2)4 then Add(answer , docID(p1))5 p1 ← next(p1)6 p2 ← next(p2)7 else if docID(p1) < docID(p2)8 then p1 ← next(p1)9 else p2 ← next(p2)10 return answer

Schutze: Boolean Retrieval 29 / 60

Page 30: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Query processing: Exercise

france −→ 1 → 2 → 3 → 4 → 5 → 7 → 8 → 9 → 11 → 12 → 13 → 14 → 15

paris −→ 2 → 6 → 10 → 12 → 14

lear −→ 12 → 15

Compute hit list for ((paris AND NOT france) OR lear)

Schutze: Boolean Retrieval 30 / 60

Page 31: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Boolean retrieval model: Assessment

The Boolean retrieval model can answer any query that is aBoolean expression.

Boolean queries are queries that use and, or and not to joinquery terms.Views each document as a set of terms.Is precise: Document matches condition or not.

Primary commercial retrieval tool for 3 decades

Many professional searchers (e.g., lawyers) still like Booleanqueries.

You know exactly what you are getting.

Many search systems you use are also Boolean: spotlight,email, intranet etc.

Schutze: Boolean Retrieval 31 / 60

Page 32: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Query optimization

Consider a query that is an and of n terms, n > 2

For each of the terms, get its postings list, then and themtogether

Example query: Brutus AND Calpurnia AND Caesar

What is the best order for processing this query?

Schutze: Boolean Retrieval 36 / 60

Page 33: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Query optimization

Example query: Brutus AND Calpurnia AND Caesar

Simple and effective optimization: Process in order ofincreasing frequency

Start with the shortest postings list, then keep cutting further

In this example, first Caesar, then Calpurnia, thenBrutus

Brutus −→ 1 → 2 → 4 → 11 → 31 → 45 → 173 → 174

Calpurnia −→ 2 → 31 → 54 → 101

Caesar −→ 5 → 31

Schutze: Boolean Retrieval 37 / 60

Page 34: Introduction to Information Retrieval http ...arjun/courses/nlp/bool_txt_retrieval_Schtuetze.pdf · Introduction Invertedindex ProcessingBoolean queries Queryoptimization Courseoverview

Introduction Inverted index Processing Boolean queries Query optimization Course overview

Optimized intersection algorithm for conjunctive queries

Intersect(〈t1, . . . , tn〉)1 terms ← SortByIncreasingFrequency(〈t1, . . . , tn〉)2 result ← postings(first(terms))3 terms ← rest(terms)4 while terms 6= nil and result 6= nil

5 do result ← Intersect(result, postings(first(terms)))6 terms ← rest(terms)7 return result

Schutze: Boolean Retrieval 38 / 60