티스토리 뷰

반응형

복습

역색인의 구축에 필요한 단계

1. 색인대상 문헌을 수집한다.

2. 텍스트를 토큰화한다.

3. 토큰에 언어학적 전처리를 수행한다.

4. 각 용어가 출현한 문헌을 색인한다.

 

2장의 내용

1. 문헌의 기본 단위를 어떻게 정의할 것인지, 문헌을 구성하는 문자열을 어떻게 판별해야 하는지를 설명

2. 토큰화및 전처리에 관해 몇가지 중요한 언어학적 이슈 검토 -> 어휘집이 결정된다.

3. 빠른질의 처리를 위한 포스팅 목록의 확장형 자료구조를 살펴본다.

4. 구절과 근접 질의 처리에 적합하여 확장형 Boolean 모델과 웹에서 모두 공통적으로 사용되는 종류의 포스팅 자료구조 구축방법을 다룬다.

 

1. 문헌 식별과 문자열 복호화

 

- 바이트 열을 선형의 문자열로 변환한다. : ascii , utf-8 처리

- doc, zip, pdf 안의 문자열일 경우 해당 포멧의 부호를 고려해야할 필요가 있다. 이는 해당 프로그램에서 제공해주는 복호화 라이브러리를 이용한다.

 

2. 문헌 단위의 선택

 

문헌 단위 : 색인을 위한 단위 

아주 긴 문헌에 대해서는 색인단위라는 이슈가 발생한다.

 

책으로 구성한 컬렉션에서 책 한권은 좋은 문헌 단위가 아니다.

 

왜? 

Chinese Toys를 찾고자 할때 문헌단위가 "한 권" 이면 첫번째 챕터에 China가 나오고 마지막 챕터에 Toys가 나오는 책을 적합한 결과랍시고 반환할지도 모른다.

 

그래서?

한 챕터가 적절하다.

 

그렇지만... 

한 단락은 안될까?

문헌 단위가 매우 작다면, 용어들은 여러 작은 문헌들에 걸쳐서 분포하기 때문에 중요한 단락들을 놓치기 쉽다. 반대로 문헌 단위가 매우 크면 쓸데없는 결과가 나오기때문에 사용자가 적합한 정보를 찾기가 어려워진다. 

즉, 재현율과 정확률가의 상반관계 때문에 적절한 기준점을 찾아야 한다. 

 

정보검색시스템은 색인단위를 선택할 수 있도록 설계되어야 한다.

 

3. 용어 어휘집 결정

 

토큰화

- 구두점 and 띄어쓰기로 한 토큰을 정의한다. 이때 구두점은 제거된다.

 

Input       : Friends, Romans, Countrymen, lend me your ears;

Output    : Friends     Romans     Countrymen     lend      me      your      ears

 

토큰

- 어떤 특정 문헌내에서 처리하기 유용한 의미단위로 묶인 문자열의 인스턴스

- 형(type)은 동일한 문자열을 포함하는 토큰들의 종류

- 용어(term)은 정보 검색 시스템의 사전에 포함되는 형 (아마도 정규화된)

 

하이픈 처리

짧은 길이의 접두사는 허용하지만 일정 길이 이상의 접두사는 허용하지 않는등의 규칙으로 처리한다.

 

공백처리

단일 토큰으로 취급해야할것도 잘라버리는 경우가 생긴다.

ex ) 전화번호, 날짜, 고유어등

토큰화의 이슈는 구절 질의 처리와 서로 관련된다.

 

lowercase, lower-case, lower case 이 세 질의에 동일한 검색결과를 원한다.뒤의 두경우는 하이픈을 분리한뒤 구절색인을 활용하여 처리할 수 있다.

첫번째 경우는 어떤 색인어가 가끔 두 단어로 표기되기때문에 이런 방식으로도 색인해야함을 알아야 문제를 바로잡을 수 있다.

- 그래서 해결방법은 뭐냐? 사용자에게 하이픈을 쓸 수 있는 곳이라면 하이픈을 쓰도록 장려하고, 하이픈을 포함한 질의가 들어오면 over-eager, "over eager" , overeager 세가지 형태로 찾는 것.

 

복합어 처리기 (독일단어)

- 어떤 단어를 어휘집에 출현하는 여러 단어들로 분해될수 있는지를 검사하는 방식으로 구현된다.

- 독일어는 공백없이 복합명사 compound noun을 공백없이 표기한다.

    ex ) Computerlinguistik = 'computational linguistics'

- 이런 문제는 단어들 사이에 공백을 잘 안쓰는 동아시아언어에서 활용도가 높다. (중국어, 일본어, 한국어, 타이어)

 

단어 분할 word segmentation

- 언어 전처리중의 하나

- 방식들

  > 대규모 어휘집을 구축후, 미등록 단어에 대해서는 긴 어휘 중심으로 분할한다.

  > 수동으로 분할된 단어들로 학습시키는 은닉 마르코프 모델

  > 조건부 확률 필드 (기계학습 모델)

  > 단어기반 색인 방식을 버리고 짧은 부분 문자열을 모두 색인하는 방식이 있다. kmp -> 중국어에 효과적

- 여튼 절대적인 분할 방식 따위 없음

 

 

불용어 stop-words

- 너무 자주 출현해서 문헌에서 완전히 제거시켜 버리는 것들

- 어떻게 정하냐

  > 컬렉션빈도별로 용어들을 정렬한 다음, 가장 자주 출현하는 용어들을 선별하여 불용어 목록을 만든다. 이때 색인대상 인 단어들이 있으면 수작업으로 제외시킨다. 그리고 불용어 목록에 속한 용어들은 색인과정에서 버린다. 

- 웹검색 엔진은 일반적으로 불용어 목록을 사용하지 않는다.

  > 왜? 여러가지 좋은 알고리즘이 나와서 불용어 목록을 색인에 포함하든 불포함하든 질의처리시간에 별 영향을 주지 않기 때문.

 

단, 구절탐색인 경우 불용어는 유의미하다.

 

 

4. 정규화( 용어 동치류 )

 

- 질의 토큰과 문헌토큰이 완전 같으면 찾는것은 어렵지 않다. 그러나, USA 와 U.S.A는???

- 토큰 정규화 token normalization : USA와 U.S.A 처럼 겉보기에 달라도 같은 것으로 취급할 수 있게 규범화시키는 과정

   > 동치류 equivalence class 를 생성시킨다.

      * 생성방법 1 :

       - 집합의 한 원소의 이름을 따라서 명명한다. 

       - anti-discriminatory 와 anti discriminatory를 antidiscriminatory에 사상시켜놓으면 둘중 하나라도 질의에 있으면 antidiscriminatory를 검색한다. 즉, 하이픈문자 제거 방식

      * 생성방법 2 : 동의어사전을 만든다. 수작업

   > 색인을 구축하는 과정에 용어를 확장하는 것 

      - 문헌이 automobile을 포함하고 있으면 이 문헌을 car로도 색인한다. 그 반대의 경우도 마찬가지

      - 이 방법은 동치류를 사용하는 것보다 비효율적이다. 왜냐하면 이 경우에 더 많은 포스팅을 저장하고 병합하기 때문. 그러나 유연성은 더 좋다. 확장과정이 비대칭적일 수 있기때문에.

 

 

강세와 발음구분 기호

- 발음구분기호 버리고 토큰화시킨다. (사람들은 귀찮아서 검색할때 발음기호 안쓴다)

 

대문자/대소문자 통일

- 모든 토큰을 소문자로 변화해서 문자를 통일한다.

  장점 : automobile을 검색해도 Automobile에 해당하는 검색결과가 나온다.

  단점 : Window를 쳤는데 window가 나온다. (Window : 운영체제, window : 창문)

 

- 몇몇 토큰만을 소문자로 만든다.

  > 문장의 첫단어와 제목의 모든 단어만 소문자로 바꾼다. 이러면 중간에 나오는 단어는 대문자임을 계속 유지하니까 해당 단어의 고유명사성이 훼손돼지 않을 수 있다.

 

영어에서의 다른 이슈

colour 와 color를 같은거로 처리해줘

2019.08.08 과 8 August 2019 를 같은것으로 처리해줘

 

 

반응형

'데이터 엔지니어 > 최신 정보 검색론' 카테고리의 다른 글

[Ch01] Boolean 검색  (1) 2020.05.18
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함