22
최신 정보 검색론 1. Boolean 검색

1. boolean 검색

Embed Size (px)

Citation preview

Page 1: 1. boolean 검색

최신 정보 검색론

1. Boolean 검색

Page 2: 1. boolean 검색

1.1 정보 검색의 예

• 각 질의에 대응하여 텍스트를 순차 스캔 하는 것을 방지하는 방법은 문헌을 미리 색인 (index)하는 것이다.

• Shakespeare 전집을 대상으로 Boolean 검색 모델의 기본을 살펴보자.

• Shakespeare 가 사용한 모든 단어 (Shakespeare 는 32,000 개의 서로 다른 단어를 사용했다.)에 대해 당해 문헌이 각 단어를 포함하고 있는지 아닌지를 기록한다고 해보자.

• 그 결과는 그림 1.1 과 같이 용어-문헌의 이진 발생 행렬 (incidence matrix)로 표현된다.

• 용어 (term)는 색인의 단위로서(자세한 것은 2.2 절에서 다룬다) 일반적으로 단어다.

• 당분간은 단어라고 생각해도 된다. 그렇지만 정보 검색 문헌에서는 통상적으로 용어를 지칭한다. 왜냐하면 ‘1-9" 또는 “Hong Kong“ 처럼 일부는 단어로 간주하지 않기 때문이다.

Page 3: 1. boolean 검색

1.1 정보 검색의 예

• 이제 행렬의 가로 또는 세로 중 어느 것을 보느냐에 따라. 각 용어의 벡터 값(용어가 출현한 문헌들을 나타냄)을 확인하고 내 또는 문헌의 벡터 값(문헌에 출현한 용어들을 나타냄)을 알 수 있다

Page 4: 1. boolean 검색

• 질의 식 ’‘Brutus AND Caesar AND NOT Calpurnia" 에 답하기 위해 Brutus, Caesar, Calpurnia 의 벡터 값을 계산하고 마지막 용어의 보수 값을 얻은 다음 AND 비트연산을 수행한다.

• 그래서 이 질의에 대한 답은 “'Antony and Cleopatra" 와 ‘Hamlet’ 이 된다(그림1.2).

Page 5: 1. boolean 검색

• Boolean 검색 모델(boolean retrieval model)은 용어들을 Boolean 논리식 형태로 모든 질의를 작성할 수 있는 정보 검색 모델로서, 질의식을 구성하는 용어들은 AND, OR, NOT 연산자로 결합된다.

• 이 모델은 모든 문헌을 단순한 단어의 집합으로 간주한다

• 좀 더 현실적인 시나리오를 생각해보자. 여기서 몇 가지 전문 용어와 표기도 함께 소개한다.

• 문헌 수 N=100 만 건이 있다고 가정하자. 여기서 문헌(document) 은 어떤 단위가 되었든지 간에 하나의 검색 시스템을 구축하기로 결정한 기반 단위를 의미한다.

• 문헌은 개인 메모 또는 한 책의 장일 수도 있다(자세한 사항은 2.1 .2절에서 다룬다. ).

• 검색 대상이 되는 문헌의 집단을 (문헌) 컬렉션(collection) 이라 하며,말뭉치 (corpus: 텍스트의 본문)라고도 한다.

• 각 문헌은 약 1,000 단어(책의 2-3 쪽 분량) 길이라고 가정하자.

• 공백 문자와 구두점을 포함하여 단어당 평균 6 바이트라고 가정하면/ 문헌 컬렉션은 약 6 GB 분량이 된다.

1.1 정보검색 문제의 예

Page 6: 1. boolean 검색

1.1 정보검색 문제의 예

• 이들 문헌에서 용어 수 M= 약 500,000 개 정도이다.

• 우리가 선택한 수치는 특별할 것이 없으며 데이터 양으로는 차이가 있을 수 있다.

• 그렇지만, 다루어야 할 문제가 어떤 것인지를 시사해준다. 5.1 절에서 이러한 데이터 규모에 대해 그 가정을 다루고 모델링한다.

• 우리의 목적은 단순 검색 (ad hoc retrieval) 작업을 다루는 시스템을 개발하는 것이다.

• 이것은 가장 전형적인 정보 검색 작업이다.

• 여기서/ 시스템의 목적은 임의의 사용자가 던진 질의를 한 번에 하나씩 시스템에 전달하여 사용자의 정보 요구에 적합한 문헌을 컬렉션에서 찾아 제공하는 것이다.

• 정보 요구(information need) 는 사용자가 더 알아보고자 하는 주제이며, 질의와는 다르다.

• 질의 (query) 는 사용자의 정보 요구를 컴퓨터에 전달하기 위해 사용자가 표현하는 것이다.

• 어떤 문헌이 사용자의 개인적인 정보요구와 관련하여 가치 있는 정보를 수록하고 있다고 사용자가 판단한다면 그 문헌은 적합(relevant) 문헌이다.

Page 7: 1. boolean 검색

• 앞에서 설명한 예제는 정보 요구가 특정 단어들로 정의되었다는 점에서 다소 작위적이다

• 반면. 사용자는 “파이프 누수” 주제에 관심이 있을 때. 그 단어들을 정확하게 표현하든지 아니면 “파이프 파열” 등 다른 단어로 그 개념을 표현하든지 상관없이 적합문헌을 찾고 싶어 한다.

• 정보검색 시스템의 유효성 (effectiveness)을 평가하는데 있어서(예: 검색 결과의 품질) 사용자는 어떤 질의에 대해 시스템이 반환한 결과에 대한 다음의 두 가지 핵심적인 통계량을 알고 싶어 한다

• 정확률(Precision): 반환된 결과 중 정보 요구에 적합한 비율은 얼마인가?

• 재현율(Recall) : 컬렉션에 포함된 적합 문헌 중 시스템에 의해 반환된 적합 문헌이 차지하는 비율은 얼마인가

• 정획률과 재현율을 포함한 적합성과 평가척도에 대한자세한 논의는 8 장에서 다룬다.

Page 8: 1. boolean 검색

• 단순한 방법으로 용어-문헌 행렬을 민들 수는 없다.

• 왜냐하면, 500 K x 1M 행렬은 오백억 개의 0 과 1 을 항으로 갖기 때문에 컴퓨터 메모리에 적재하기 어렵다.

• 그러나 이 행렬은 극단적으로 희소하기 때문에, 0 이 아닌 값을 갖는 항은 얼마 되지 않는다는 점에 주목해야 한다

• 즉 각 문헌은 1,000 개의 단어로 구성되고/ 그 행렬은 많아야 10 억 개의 1 을 가지므로 99.8% 의 항들은 0 을 갖는다.

• 따라서 1 을 갖는 향들만을 기록하는 것이 훨씬 더 좋다.

• 이 방법이 바로 역색인 (inverted index) 이며 정보 검색에서 첫 번째 주요 개념의 핵심을 이룬다.

• 색인은 항상 용어로부터 용어들이 출현한 문헌의 특정 부분으로 사상되므로 “역(inverted)" 이라는 말을 붙일 필요는 없다

• 그럼에도 역색인 혹은 역파일 (inverted file)은 정보검색 분야에서는 표준용어가 되었다

Page 9: 1. boolean 검색

• 역색인의 기본원리는 그림 1.3 에서 보는 바와 같다. 용어 사전 (dictionary)을 어휘집 (vocabulary)

• 또는 어휘 사전(lexicon) 이라고도 하는데 이 책에서는 자료구조를 말할 때는 사전이라 하고,용어 집합에 대해서는 어휘집이라 한다.

• 다음으로,각 용어에 대해서 어떤 문헌에 그 용어가 출현하는지를 기록하는 목록을 작성한다.

• 이 목록의 각 행을 통상 포스팅 (posting) 이라 하는데 그 항에는 어떤 문헌에서 출현하는 용어를 기록한다.(그 문서 내의 위치도 기록한다.)

Page 10: 1. boolean 검색

1.1 정보 검색의 예

• 그렇게 되면 그 목록을 포스팅 목록(postings list) (또는 역목록)"이라 하고/ 모든 포스팅 목록들을 일컬어 포스팅 (posting) 이라 한다.

• 그림 1.3 에 있는 사전은 알파뱃 순으로 정렬되었고,각 포스팅 목록은 문헌 식별변호로 정렬

• 이것이 왜 필요한 것인가에 대해서는 아래의 1.3 절에서 살펴보고, 나중에는 이 방법의 대안에 대해서도 살펴볼 것이다(7. 1.5 절).되어 있다.

Page 11: 1. boolean 검색

1.2 역색인 구축의 첫 단계

• 검색할 때 색인의 효과를 높이려면 미리 색인을 구축해두어야 한다.

• 그 주요 과정은 다음과 같다.

• 처리 과정의 초기 단계/ 즉 1~3 단계는 2.2 절에서 살펴볼 것이다.

• 그때까지는 토큰(token)과 정규화 토큰(normalized token)을 단어와 거의 유사한 것으로 간주한다.

• 여기서는 첫 세 단계를 이미 수행했다고 가정하고/ 정렬-기반 색인 (sort-based indexing)으로 기본적인 역색인 구축내용을 살펴본다.

Page 12: 1. boolean 검색

1.2 역색인 구축의 첫 단계

• 어떤 문헌 컬렉션 내에서, 각 문헌은 문헌식 별자(do cID) 라는 고유한 연속번호를 갖는다고 전제한다.

• 색인 구축과정에서 새로운 문헌이 들어오면 각각에 그냥 연속적인 정수를 할당할 수 있다.

• 색인의 입력값은 각 문헌의 정규화 토큰 목록이며 그림 1 .4처럼 용어-문헌 식별자 쌍으로 구성된 목록으로 간주할 수 있다.

Page 13: 1. boolean 검색

1.2 역색인 구축의 첫 단계

• 색인 결과를 저장하기 위해서 사전과 포스팅 목록을 위한 저장 공간이 필요하다.

• 포스팅 목록이 더 커서, 사전은 일반적으로 메모리 에 있는데 비해 포스팅 목록들은 디스크에 저장된다.

Page 14: 1. boolean 검색

1.3 Boolean 질의 처리

• 역색인과 기본 불리언 검색 모델을 이용해서 질의를 어떻게 처리할까? 다음과 같이 단순 결합 질의 (simple conjllnctive qllery) 처리를 생각해보라.

• 그림 1.3 에서 일부 보았던 역색인에 대해 다음을 수행한다.

• 1. 사전에서 Brutus 의 위치를 확인한다.

• 2. Brutus 와 관련된 포스팅을 검색한다.

• 3. 사전에서 Calpurnia 의 위치를 확인한다.

• 4. Calpurnia 와 관련된 포스팅을 검색한다.

• 5 그림 1 .5에서 보았던 것처럼 두 포스팅 목록의 교집합을 구한다.

Page 15: 1. boolean 검색

1.3 Boolean 질의 처리

• 교집합(intersection) 연산은 매우 중요하다.

• 왜냐하면, 두 용어를 모두 포함하는 문헌들을 빨리 찾을 수 있도록 하기 위해서다.

• 포스팅 목록으로부터 교집합 연산을 효과적으로 수행해야 하기 때문이다

• 병합 알고리즘을 이용하여 포스팅 목록의 교집합을 구하는 단순하고도 효과적인 방법이 있다(그림 1.6)

Page 16: 1. boolean 검색

1.3 Boolean 질의 처리

• 디음과 같이 좀더 복잡한 질의를 처리하기 위해 교집합연산을 확장할 수 있다.

• 질의 최적화(query optimization) 란 시스템이 수행해야 할 총 작업량을 최소화시킬 목적으로 질의에 대한 응답을 조직하는 방법을 선택하는 과정이다.

• 불리언 질의에 대한 최적화의 주요 내용은 포스팅 목록에 접근하는 순서를 결정하는 것이다.

• 질의 처리를 위한 최적의 순서는 무엇일까? 다음과 같이 f 개의 용어들을 AND 조합한 질의를 생각해보자.

• t 개의 용어에 대해 포스팅을 찾은 다음 AND 연산을 수행해야 한다.

• 가장 일반적인 방법은 문헌 빈도가 낮은 용어부터 처리하는 것이다.

• 만일 제일 작은 두 포스팅 목록에 대해 교집합 연산부터 수행하면 모든 중간 결과는 제일 작은 포스팅 목록보다 결코 크지 않을 것이므로 총 작업량을 최소화시킬 수 있다.

Page 17: 1. boolean 검색

1.3 Boolean 질의 처리

• 따라서 그림 1.3 의 포스팅 목록에 대해 위의 질의는 다음과 같이 실행한다.

• 이것이 사전에 용어의 출현 빈도를 기록하는 첫 번째 이유이다.

• 이처럼 어떤 포스팅 목록에 접근하기 이전에 메모리에 있는 데이터를 근거로 연산순서를 결정할 수 있다.

• 이제 다음과 같이 더 일반적인 질의를 최적화시키는 방법에 대해 생각해 보자.

• 이전과 마찬가지로, 모든 용어의 출현 빈도를 얻으면 그 논리합 용어의 출현 빈도를 합하면 각 OR 항의 크기를 예측할 수 있다.

• 그런 다음 논리합으로 묶인 각 용어의 크기가 낮은 순서부터 질의를 처리한다.

• 임의의 Boolean. 질의에 대해서 복잡한 질의식의 경우, 중간 단계의 질의식에 대한 답들을 평가하여 임시로 저장해야 한다.

• 그러나 많은 경우, 질의는 순전히 논리곱으로 구성된다

Page 18: 1. boolean 검색

1.3 Boolean 질의 처리

• 왜냐하면, 질의 언어의 속성 때문이거나 아니면 단순히 사용자들이 표현하는 질의의 가장 일반적인 유형이기 때문이다.

• 이런 경우에는 병합포스팅 목록을 두 개의 입력과 하나의 출력이 있는 기능으로보는것보다는각각검색된포스팅목록과 현재 메모리에 있는 중간 결과를 교집합 연산시키는 것이 훨씬 효율적이다.

• 여기서 중간 결과는 가장 적은 출현 빈도를 보이는 포스팅 목록을 로딩하여 초기화한다.

• 이 알고리즘은 그림 1. 7과 같다.

Page 19: 1. boolean 검색

1.3 Boolean 질의 처리

• 교집합 연산은 따라서 비대칭이다. 왜냐하면, 중간결과는 메모리에 있지만 교집합될 용어의 포스팅 목록은 디스크에 있기 때문이다.

• 또 중간 결과는 항상 적어도 다른 목록만큼 짧아지며,많은 경우 매우 짧아진다.

• 포스팅 교집합은 그림 1.6 과 같은 알고리즘으로 문제없이 처리되지만, 목록 길이 간의 차이가 매우 클 때는 다른 대안을 생각할 수 있다.

• 중간 결과 목록에서 불필요한 항목을 수정하거나 표시하여 교집합을 계산할 수 있다.

• 또는, 중간 결과 목록의 포스팅 목록이 길면 이진 검색을 수행할 수도 있다. 또 다른 방법은 긴 포스팅 목록을 해시 테이블로 저장함으로써 중간결과에 포함되어 있는지를 확인하는 시간은 선형이나 로그시간이 아니라 상수시간으로 계산할 수 있다.

Page 20: 1. boolean 검색

1.4 확장 Boolean 모델과 순위 검색

• Boolean 검색 모델은 벡터 공간모형 (6.3 절)과 같은 순위 검색 모형 (ranked retrieval model)과 비교된다.

• 순위 검색 모형에서 사용자는 대부분 자연어 질의 (free text query), 즉 질의를 표현하려면 연산자와 같은 정교한 언어를 사용하지 않고 자연어 문장처럼 단어를 나열하는 편이 더 효과적인 방법이며, 시스템도 질의에 가장 적합한 순으로 문헌을 정렬하는 편이 더 효과적일 것이다.

• 수십 년 동안 이러한 장점을 갖는 순위 검색 모형에 관한 학술적인 연구기- 있었음에도 대부분의 검색 시스템은 Boolean 검색 모델을 사용해왔다.

• 근 30 년 동안 대형 정보 제공;7;1들도 검색 시스템의 선택 사양으로만 제공해 오긴 했지만 그렇다고 해서 현재 사용되는 Boolean 연산지들(AND, OR, NOT)만을 제공하는 것은 아니다.

• 단순 Boole때 질의에서는 검색 결과가 정렬되지 않아서 시용자들이 원히는 정보를 이용하기에는 너무 제한적이다.

• 그리고 이들시스템은 근접 연산자와 같은 추가적인 연산자를 제공하는 확장 Boolean 검색 모델을 구현하였다.

Page 21: 1. boolean 검색

1.4 확장 Boolean 모델과 순위 검색

• 근접 연산자(proximity operator) 는 질의 에 있는 두 용어가 한 문헌에서 서로 가까이 출현하는 조건을 지정하는 데 사용된다. 여기서 말하는 근접은 단어 사이의 거리일 수도 있고 문장이나 문단과 같은 구조적인 단위로 제한승}는 것을 의미하기도 한다.

• 웹 검색에서는 긴 질의나 근접 연산지를 사용하는 것이 일반적이지 않다는 것을 알아야 한다.

• 질의 길이는 평균 10 단어 내외다. 웹 검색의 일반적인 형태와는 달리, 여기서는 단어 사이의 공백은 OR 을 의미하고, &는 AND이며 , Is, /p, /k 는 문장/ 문단 혹은 k 개 단어 내에서 어울려야 됨을 의미한다. 또한/큰따옴표(“")는 구절 검색(phrase search)(연속적인 단어)을 의미한다(2 .4절 참조).

Page 22: 1. boolean 검색

1.4 확장 Boolean 모델과 순위 검색

• 많은 사용샤 특히 전문가들은 Boolean 질의 모델을 더 선호한다. Boolean 질의는 정확하다.

• 하나의 문헌은 특정 질의에 일치하거나 그렇지 않다. 사용자는 무엇이 검색될지를 더욱더 잘 통제할 수 있고 투명하게 확인할 수 있도록 제안한다.