inverted index 생성 방법
- 문서 수집
- 텍스트 토큰화
- 토큰에 대한 언어 분석
- 위에서 분석된 토큰에 대한 인덱스
위에서 텍스트 토큰을 했을 경우, 해당 텍스트를 분석해야 한다. 그런데, 간단해 보이는 여기에서 큰 문제가 발생한다.
예를 들어서, 위의 과정 2,3은 화이트 스페이스 단어로 토큰을 나눈다거나 쉽게 생각할 수 있다.
하지만, 우리 앞을 가로막는 것은 토큰의 인식 방법이나, 문서 인코딩이 문제가 될 수 있다.
예를 들어서, 같은 “문서” 라는 단어지만, euc-kr, UCS2, utf-8 모두 값이 다르다. –_- 즉, 중간에 이런것에 대해서 맞춰주는 뭔가가 필요하다는 거다. 예를 들어, 1차적으로 모두 유니코드로 변경한다든지…
그리고 입력 단어가, 좌->우 가 아니라, 우->좌 가 된다든지, 등의 문제가 생긴다.
위에는 책에서 예를 들었던 부분…
이런 부분에서만 아니라, 또한 이런 부분도 나온다. PDF, HWP, Office 계열의 경우에는 인코딩 되어 있으므로 바로 분석이 되지 않는 경우도 있을 수 있다.
2장의 주 내용은 거의 제목처럼 Term( 일종의 토큰 ) 을 어떻게 나누고 처리할 것인가? 이다.
여기서 처리도, 타입을 나누는 방법 이런것이 아니라, 단어를 저장할 때, type 정보를 같이 저장한다든지
(즉, 단어, 동사, 명사, 형용사 등의 형태소 정보?)
그리고 O’Neill 같은 단어가 있을 때,
neill
oneill
o’neill
o’ neill
o neill 등 어떤식으로 색인을 잡을 것인가도 고민해야 할 문제이다.
그리고 불용어 들은 어떻게 처리할 것인지?
a an and are as at be by for from
has he in is it its of on that the
to was were will with 등은 색인의 가치가 없는 단어인 것이다. (나오기는 엄청 나온다.)
또한 단어의 단,복수 아니면, 대소문자 구분 등 에 대해서도 색인을 어떻게 할 것인가 고민해야 한다
예를 들어, Windows 라고 쿼리가 올 경우, Windows, windows window 를 모두 매치시킬것인가
말것인가 등의 문제이다. C.A.T. 를 CAT 로 볼것인가? cat 로 볼것인가 등등도 문제가 될 수 있다.
2장에서는 이런 문제거리 들에 대해서 기본적으로 던져준다.