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

1. boolean 검색

May 21, 2015

Download

Education

Jungkyu Lee
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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 질의는 정확하다.

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