1.1. 개요
“정보검색”(information retrieval) 은 대량의 정보 모음으로부터 사용자의 “정보요구”(information need)에
“적합”(relevant)한 자료를 찾는 것입니다.
대량의 정보 모음으로는 문서집합, 자연어 텍스트들이 있습니다.
이 중 사용자가 요구한 내용에 적합한 자료들로만 찾는 기술이 정보검색입니다.
정보검색은 데이터 베이스의 SQL과 유사한(동형 사상) 개념 같지만, 조금 다릅니다.
데이터 베이스는 “SQL” 질의를 이용하여 “구조적”(Structured data) 데이터인
관계지향 데이터베이스(Relational Database)에서 자료를 찾는 과정이라면,
정보검색은 “자연어”(NL) 질의를 이용하여 “비구조적”(Unstructured data) 데이터인
텍스트(Text) 에서 자료를 찾는 과정입니다.
“자연어”(Natural Language) 는 사람들이 사용하는 언어이며, 나라언어나 인공언어들이 포함됩니다.
“텍스트”(Text) 는 단어(Word) , 구(Phrase) , 문장(Sentence) 등의 자연어로 이루어진 문자의 표현방식입니다.
정보검색에서 자연어의 난해한 부분으로
1). “동의어”(Synonym) : 같은 의미를 같는 다른 단어들을 말합니다.
2). “동형이의어”(Homograph) : 다른 의미를 같는 같은 단어들을 말합니다.
3). “다의어”(polyseme) : 비슷한 의미이지만 상황에 따라 다른 같은 단어들을 말합니다.
이 존재하고 이들은 다른 내용까지 포함하여 정확도를 올리는 방식을 사용합니다.
“자연어이해”(Natural Language Understanding 또는 NLU) 는
컴퓨터에게 질의 및 문서의 모든 텍스트들의 문맥을 “이해”(Understanding) 시키는 방식입니다.
대표적으로 문장 분할 후, 형태소 분석, 품사 태깅, 구문 분석, 의미 분석들을 적용합니다.
“정보검색 시스템”(Information Retrieval system 또는 IR system) 은 다음과 같습니다.
“문서집합”(Document Collection)을 “색인 모듈”(Indexer) 에 “색인”(Indexing) 하여 등록하고,
사용자가 “질의”(Query)를 요청하면, “검색모듈”(Retriever)이 받아서 색인 파일의 역원에 “검색”(Retrieving) 하여,
찾은 “관련 문서 리스트”(Relevant document list)를 응답해주는 시스템입니다.
정보검색시스템은 기본적으로 검색 대상 정보 유형과 텍스트 유형, 서비스 유형에 따라
텍스트 단위, 검색 문서 규모, 적합성 등을 고려하여 설계가 이루어 집니다.
검색 대상 정보 유형 :
텍스트(Text retrieval) , 오디오(Sound retrieval) , 이미지(Image retrieval) , 비디오(Moving picture retrieval) 등
검색 대상 텍스트 유형 :
웹 문서(Web search) , 뉴스(News search) , 특허(Patent retrieval) , 학술문헌(논문, 보고서)(Academic search service) , 트윗(Tweet)(Tweet retrieval) , 책(Book search) 등
검색 응용 및 서비스 유형 :
추천시스템(Recommender system) , 질의응답시스템(Question-answering system) ,
교차언어정보검색(Cross-language information retrieval) , 문서분류(Document classification) ,
문서군집화(Document clustering) 등
텍스트 단위 :
문서(Document) , 장(Chapter) , 단락(Paragraph) , 문장(Sentence) , 구(Phrase) , 단어(Word) , 문자(Character) 등
검색 문서 규모 :
웹 검색(Web search) , 특정 도메인 검색(Domain-specific search) ,
기업용 또는 컴퓨터 검색(Enterprise | Desktop search) 등
“적합성”(Relevance) : 어떠한 문서가 질의에 적합한지 따지는 판단근거입니다.
대표적으로 적합성정도(매우적합 , 적합 , 부분적합 , 부적합) , 사용자(수준) 간의 적합성 ,
서로 다른 작성 시간의 적합성 , 서로 다른 우선 순위 간의 적합성 등이 있습니다.
1.2. 색인
문서집합에서 색인 모듈을 통해 “역파일 색인”(Inverted index)테이블까지 생성하는 과정을
“색인”(Indexing)이라고 표현합니다.
색인과정은 크게 5가지 방법을 따라 역파일 색인 테이블을 생성합니다.
1). “텍스트 추출”(Text Extraction) : “이진 문서 파일”(Binary Document File) 을 텍스트 단위로 추출하는 작업입니다.
2). “토큰 추출”(Tokenization) : 텍스트(문장 또는 절)를 특정 토큰(단어 또는 품사)으로 분리하는 작업입니다.
3). “불 용어 제거”(Stop-Word Removal) : 토큰들 중에서 의미가 없는 토큰들을 줄여 효율성을 높이는 작업입니다.
(보통 관사, 전치사, 대명사, be 동사 등의 자주 사용되는 “의미가 없는 것”(정보량이 낮은 것)들을
불 용어로 취급합니다.)
4). “어간 추출”(Stemming) : 모든 토큰의 어간을 추출하여 효율성을 높이는 작업입니다.
불용어 제거 이후 의미있는 토큰만 남았지만 대부분 자연어에서는 의미와 함께 문법 용어를 합쳐서 사용합니다.
이 때, 토큰의 의미를 “어간”(Stem)이라하고 문법적 의미를 “어미”(Ending)라고 표현합니다.
그래서 어간만을 사용한다면, 더 효율적인 검색 시스템을 설계 할 수 있습니다.
( 대표적인 어간 추출 방식으로는 Porter’s stemmer가 있습니다. )
5). “역파일 색인”(Inverted Indexing) : 색인 용어를 열쇠로 용어 출현 문서번호를 출력해주는 작업입니다.
먼저, 문서에 번호을 부여하고 해당 문서에 출현 용어를 테이블로 정리한 뒤 “역 테이블”(Invert) 작업을 진행하고,
“정렬”(Sort)과 “병합”(Merge)하여, 출현 용어 => 해당 된 문서번호 리스트 , 빈도 수의 형태로 변환합니다.
색인 과정에서 “a bag of words”로 “문서 표현”(Document Representation)이 이루어지는데,
용어들을 집합에 넣어서 정리하는 과정에서 중복 제거, 순서 무시등의 “단어간의 독립성”을 부여하기 때문입니다.