맨위로가기

검색 엔진 색인

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

검색 엔진 색인은 검색 엔진이 효율적인 검색을 위해 문서를 정리하고 저장하는 기술과 데이터 구조를 의미한다. 인덱싱은 검색 속도와 성능을 최적화하기 위해 사용되며, 병합, 저장 기술, 색인 크기, 검색 속도, 유지 관리, 내결함성 등의 설계 요소가 중요하다. 다양한 데이터 구조, 예를 들어 접미사 트리, 역색인, 인용 색인, N-그램 색인, 문서-용어 행렬 등이 사용되며, 병렬 처리 문제, 자연어 처리 문제, 문서 구문 분석, 토큰화, 언어 인식, 형식 분석, 섹션 인식, HTML 우선순위 시스템, 메타 태그 인덱싱 등 여러 기술적 과제를 해결해야 한다. 역색인은 쿼리에 포함된 단어가 있는 문서를 빠르게 찾아 관련성에 따라 순위를 매기는 데 사용되며, 구절 검색과 색인 병합 등의 기능을 포함한다.

더 읽어볼만한 페이지

  • 인터넷 검색 알고리즘 - 페이지랭크
    페이지랭크는 래리 페이지와 세르게이 브린이 개발한 알고리즘으로, 하이퍼링크로 연결된 문서 집합에서 웹 페이지의 상대적 중요도를 측정하며, 링크를 투표로 간주하여 페이지 순위를 재귀적으로 결정하고, 구글 검색 엔진의 초기 핵심 알고리즘으로 활용되었으며, 다양한 분야에서 활용된다.
  • 인터넷 검색 알고리즘 - 웹 색인
검색 엔진 색인
구글 지도
검색 엔진 색인
개요
정의웹 검색 엔진이 웹 페이지를 크롤링하여 데이터를 수집하고, 분석하여 검색 결과에 표시하기 위해 저장하는 과정
과정크롤링
색인
검색
기술적 측면
색인 대상웹 페이지
이미지
비디오
기타 파일
색인 방법텍스트 분석
링크 분석
콘텐츠 분석
주요 기술역색인
검색어 자동 완성
오탈자 교정
검색 랭킹 알고리즘
크롤링과의 관계
크롤링웹 페이지를 방문하여 데이터를 수집하는 과정
색인수집된 데이터를 검색에 사용하기 좋게 구조화하는 과정
검색 엔진 최적화 (SEO)
SEO검색 결과 상위 노출을 위해 웹 페이지를 최적화하는 과정
색인과의 관계검색 엔진이 웹 페이지를 올바르게 색인하도록 돕는 것이 중요
웹 사이트 구조, 키워드, 콘텐츠 품질 등이 중요 요소
주요 요소페이지 제목
메타 설명
콘텐츠
내부 링크 및 외부 링크
문제점
색인 지연웹 페이지가 변경되어도 검색 결과에 반영되는 데 시간이 걸릴 수 있음
누락웹 페이지가 검색 엔진에 의해 색인되지 않을 수 있음
과다 색인불필요한 정보가 색인될 수 있음
관련 기술
관련 기술검색 엔진
웹 크롤러
검색어
기타 정보
색인 서비스 제공구글 검색
네이버 검색
다음 검색
Bing
야후! 검색

2. 인덱싱의 목적 및 설계 요소

색인을 저장하는 목적은 검색어에 대한 관련 문서를 찾는 속도와 성능을 최적화하기 위함이다. 색인이 없다면 검색 엔진은 모든 문서를 일일이 스캔해야 하며, 이는 상당한 시간과 컴퓨팅 성능을 필요로 한다. 예를 들어, 1만 개의 문서 색인은 밀리초 이내에 조회할 수 있지만, 1만 개의 대용량 문서에 있는 모든 단어를 순차적으로 스캔하는 데는 몇 시간이 걸릴 수 있다. 정보 검색 시 절약되는 시간을 위해 색인을 저장하는 데 필요한 추가 컴퓨터 저장 공간과 업데이트에 필요한 시간의 상당한 증가는 감수해야 한다.

검색 엔진 아키텍처 설계의 주요 요소는 다음과 같다.[5]
병합 요소: 데이터가 색인에 입력되는 방식이다. 텍스트 말뭉치 순회 중에 단어 또는 주제 특징이 색인에 추가되는 방식과 여러 색인기가 비동기적으로 작업할 수 있는지 여부이다. 색인기는 먼저 기존 콘텐츠를 업데이트하는지 아니면 새 콘텐츠를 추가하는지 확인해야 한다. 순회는 일반적으로 데이터 수집 정책과 관련이 있다. 검색 엔진 색인 병합은 개념적으로 SQL 병합 명령어 및 기타 병합 알고리즘과 유사하다.
저장 기술: 색인 데이터를 저장하는 방법이다. 정보를 데이터 압축하거나 필터링해야 하는지 여부이다.
색인 크기: 색인을 지원하는 데 필요한 컴퓨터 저장 용량이다.
검색 속도: 역색인에서 단어를 찾는 속도이다. 데이터 구조에서 항목을 찾는 속도와 업데이트 또는 삭제 속도를 비교하는 것은 컴퓨터 과학의 중심적인 초점이다.
유지 관리: 시간이 지남에 따라 색인을 유지 관리하는 방법이다.[6]
내결함성: 서비스의 안정성이 얼마나 중요한지이다. 색인 손상 처리, 불량 데이터를 격리하여 처리할 수 있는지 여부 확인, 불량 하드웨어 처리, 파티셔닝 및 해시 기반 또는 복합 파티셔닝[7]과 같은 방식, 그리고 복제 등의 문제가 있다.

2. 1. 인덱스 설계 요소

검색 엔진 아키텍처 설계의 주요 요소는 다음과 같다.[5]

  • 병합 요소: 데이터가 색인에 입력되는 방식이다. 텍스트 말뭉치 순회 중에 단어 또는 주제 특징이 색인에 추가되는 방식과 여러 색인기가 비동기적으로 작업할 수 있는지 여부이다. 색인기는 먼저 기존 콘텐츠를 업데이트하는지 아니면 새 콘텐츠를 추가하는지 확인해야 한다. 순회는 일반적으로 데이터 수집 정책과 관련이 있다. 검색 엔진 색인 병합은 개념적으로 SQL 병합 명령어 및 기타 병합 알고리즘과 유사하다.
  • 저장 기술: 색인 데이터를 저장하는 방법이다. 정보를 데이터 압축하거나 필터링해야 하는지 여부이다.
  • 색인 크기: 색인을 지원하는 데 필요한 컴퓨터 저장 용량이다.
  • 검색 속도: 역색인에서 단어를 찾는 속도이다. 데이터 구조에서 항목을 찾는 속도와 업데이트 또는 삭제 속도를 비교하는 것은 컴퓨터 과학의 중심적인 초점이다.
  • 유지 관리: 시간이 지남에 따라 색인을 유지 관리하는 방법이다.[6]
  • 내결함성: 서비스의 안정성이 얼마나 중요한지이다. 색인 손상 처리, 불량 데이터를 격리하여 처리할 수 있는지 여부 확인, 불량 하드웨어 처리, 파티셔닝 및 해시 기반 또는 복합 파티셔닝[7]과 같은 방식, 그리고 복제 등의 문제가 있다.

3. 인덱스 데이터 구조

검색 엔진 아키텍처는 다양한 설계 요소를 충족하기 위해 색인 생성 방식과 색인 저장 방법이 서로 다르다.

;접미사 트리

: 나무처럼 그림으로 표현되는 구조로, 선형 시간 조회를 지원한다. 단어의 접미사를 저장하여 구축된다. 접미사 트리는 일종의 트라이이다. 트라이는 확장 해싱을 지원하며, 이는 검색 엔진 색인 생성에 중요하다.[8] DNA 서열에서 패턴을 검색하고 클러스터링하는 데 사용된다. 주요 단점은 트리에 단어를 저장하는 데 단어 자체를 저장하는 데 필요한 공간을 초과하는 공간이 필요할 수 있다는 것이다.[9] 대안적인 표현으로 접미사 배열이 있는데, 이는 가상 메모리가 덜 필요하고 BWT 알고리즘과 같은 데이터 압축을 지원하는 것으로 간주된다.

;역색인

: 일반적으로 해시 테이블 또는 이진 트리 형태로 각 원자 검색 기준의 발생 목록을 저장한다.[10][11][12]

;인용 색인

: 인용 분석(이는 서지학의 주제임)을 지원하기 위해 문서 간 인용 또는 하이퍼링크를 저장한다.

;''n''-그램 색인

: 다른 유형의 검색 또는 텍스트 마이닝을 지원하기 위해 길이가 ''n''인 데이터 시퀀스를 저장한다.[13]

;문서-용어 행렬

: 잠재 의미 분석에 사용되며, 문서 내 단어의 발생 횟수를 2차원 희소 행렬에 저장한다.

3. 1. 주요 데이터 구조

검색 엔진 아키텍처는 다양한 설계 요소를 충족하기 위해 색인 생성 방식과 색인 저장 방법이 서로 다르다.

;접미사 트리

: 나무처럼 그림으로 표현되는 구조로, 선형 시간 조회를 지원한다. 단어의 접미사를 저장하여 구축된다. 접미사 트리는 일종의 트라이이다. 트라이는 확장 해싱을 지원하며, 이는 검색 엔진 색인 생성에 중요하다.[8] DNA 서열에서 패턴을 검색하고 클러스터링하는 데 사용된다. 주요 단점은 트리에 단어를 저장하는 데 단어 자체를 저장하는 데 필요한 공간을 초과하는 공간이 필요할 수 있다는 것이다.[9] 대안적인 표현으로 접미사 배열이 있는데, 이는 가상 메모리가 덜 필요하고 BWT 알고리즘과 같은 데이터 압축을 지원하는 것으로 간주된다.

;역색인

: 일반적으로 해시 테이블 또는 이진 트리 형태로 각 원자 검색 기준의 발생 목록을 저장한다.[10][11][12]

;인용 색인

: 인용 분석(이는 서지학의 주제임)을 지원하기 위해 문서 간 인용 또는 하이퍼링크를 저장한다.

;''n''-그램 색인

: 다른 유형의 검색 또는 텍스트 마이닝을 지원하기 위해 길이가 ''n''인 데이터 시퀀스를 저장한다.[13]

;문서-용어 행렬

: 잠재 의미 분석에 사용되며, 문서 내 단어의 발생 횟수를 2차원 희소 행렬에 저장한다.

4. 병렬 처리 문제

검색 엔진 설계에서 주요 과제 중 하나는 직렬 컴퓨팅 프로세스의 관리이다. 경합 상태 및 일관성 오류가 발생할 가능성이 많다.[14] 예를 들어, 새로운 문서가 자료에 추가되면 색인이 업데이트되어야 하지만, 동시에 색인은 검색 쿼리에 계속 응답해야 한다. 이것은 두 개의 경쟁 작업 간의 충돌이다. 저자는 정보의 생산자이고, 웹 크롤러는 이 정보를 소비하여 텍스트를 가져와 캐시(또는 코퍼스)에 저장한다고 생각해 보자. 순방향 색인은 코퍼스가 생성한 정보를 소비하고, 역방향 색인은 순방향 색인이 생성한 정보를 소비한다. 이것은 일반적으로 '''생산자-소비자 모델'''이라고 한다. 색인 생성기는 검색 가능한 정보의 생산자이고, 사용자는 검색해야 하는 소비자이다.[14] 분산 저장소와 분산 처리를 사용할 때 이러한 과제는 더욱 커진다. 색인된 정보의 양이 증가함에 따라 확장하기 위해 검색 엔진 아키텍처는 여러 대의 기계가 동시에 작동하는 분산 컴퓨팅을 포함할 수 있다. 이렇게 하면 불일치 가능성이 증가하고 완벽하게 동기화된 분산 병렬 아키텍처를 유지하기가 더 어려워진다.[14]

5. 역색인 (Inverted Index)

검색어를 평가할 때 역색인을 사용하여 쿼리에 포함된 단어가 있는 문서를 빠르게 찾은 다음 관련성에 따라 이러한 문서의 순위를 매긴다.[15] 역색인은 각 단어가 포함된 문서 목록을 저장하므로 검색 엔진은 직접 액세스하여 일치하는 문서를 빠르게 검색하기 위해 쿼리의 각 단어와 관련된 문서를 찾을 수 있다.

역색인
단어문서
the문서 1, 문서 3, 문서 4, 문서 5, 문서 7
cow문서 2, 문서 3, 문서 4
says문서 5
moo문서 7



이 색인은 단어의 빈도와 위치에 대한 정보를 저장하지 않으므로 특정 문서 내에 단어가 있는지 여부만 확인할 수 있다. 따라서 부울 색인으로 간주된다. 이러한 색인은 어떤 문서가 쿼리와 일치하는지 확인하지만 일치하는 문서의 순위를 매기지는 않는다. 일부 설계에서는 각 문서의 각 단어 빈도 또는 각 문서의 단어 위치와 같은 추가 정보가 색인에 포함된다.[15] 위치 정보를 사용하면 검색 알고리즘이 구문 검색을 지원하기 위해 단어 근접성을 식별할 수 있다. 빈도는 쿼리에 대한 문서의 관련성 순위를 매기는 데 도움이 될 수 있다. 이러한 주제는 정보 검색의 중심 연구 초점이다.

역색인은 모든 단어가 각 문서에 있는 것은 아니므로 희소 행렬이다. 컴퓨터 저장 장치 메모리 요구 사항을 줄이기 위해 2차원 배열과는 다르게 저장된다. 이 색인은 잠재 의미 분석에서 사용하는 용어 문서 행렬과 유사하다. 역색인은 해시 테이블의 한 형태로 간주될 수 있다. 경우에 따라 색인은 이진 트리의 형태인데, 추가 저장 공간이 필요하지만 조회 시간을 단축할 수 있다. 더 큰 색인에서는 아키텍처가 일반적으로 분산 해시 테이블이다.[16]

5. 1. 역색인의 구조 및 작동 방식

많은 검색 엔진은 검색어를 평가할 때 역색인을 사용하여 쿼리에 포함된 단어가 있는 문서를 빠르게 찾은 다음 관련성에 따라 이러한 문서의 순위를 매긴다.[15] 역색인은 각 단어가 포함된 문서 목록을 저장하므로 검색 엔진은 직접 액세스하여 일치하는 문서를 빠르게 검색하기 위해 쿼리의 각 단어와 관련된 문서를 찾을 수 있다.

역색인
단어문서
the문서 1, 문서 3, 문서 4, 문서 5, 문서 7
cow문서 2, 문서 3, 문서 4
says문서 5
moo문서 7



이 색인은 단어의 빈도와 위치에 대한 정보를 저장하지 않으므로 특정 문서 내에 단어가 있는지 여부만 확인할 수 있다. 따라서 부울 색인으로 간주된다. 이러한 색인은 어떤 문서가 쿼리와 일치하는지 확인하지만 일치하는 문서의 순위를 매기지는 않는다. 일부 설계에서는 각 문서의 각 단어 빈도 또는 각 문서의 단어 위치와 같은 추가 정보가 색인에 포함된다.[15] 위치 정보를 사용하면 검색 알고리즘이 구문 검색을 지원하기 위해 단어 근접성을 식별할 수 있다. 빈도는 쿼리에 대한 문서의 관련성 순위를 매기는 데 도움이 될 수 있다. 이러한 주제는 정보 검색의 중심 연구 초점이다.

역색인은 모든 단어가 각 문서에 있는 것은 아니므로 희소 행렬이다. 컴퓨터 저장 장치 메모리 요구 사항을 줄이기 위해 2차원 배열과는 다르게 저장된다. 이 색인은 잠재 의미 분석에서 사용하는 용어 문서 행렬과 유사하다. 역색인은 해시 테이블의 한 형태로 간주될 수 있다. 경우에 따라 색인은 이진 트리의 형태인데, 추가 저장 공간이 필요하지만 조회 시간을 단축할 수 있다. 더 큰 색인에서는 아키텍처가 일반적으로 분산 해시 테이블이다.[16]

5. 2. 구절 검색 (Phrase Search)

위치 색인은 역색인의 특수한 형태로, 구절 검색을 위해 사용된다. 위치 색인은 토큰을 포함하는 문서의 ID뿐만 아니라, 포스팅 목록 내 문서에서 토큰의 정확한 위치도 저장한다.[17] "First Witch"라는 구절을 검색하려면 다음과 같은 단계를 거친다.[17]

# "first"와 "witch"에 대한 포스팅 목록을 검색한다.

# "first" 이후에 "witch"가 발생하는 첫 번째 시점을 식별한다.

# 이 발생이 "first"의 발생 바로 다음에 있는지 확인한다.

# 그렇지 않으면 다음 "first"의 발생으로 넘어간다.

이진 검색을 사용하여 포스팅 목록을 탐색하면 이 절차의 시간 복잡도를 최소화할 수 있다.[17]

5. 3. 색인 병합 (Index Merging)

역색인은 병합 또는 재구축을 통해 채워진다. 재구축은 병합과 유사하지만 먼저 역색인의 내용을 삭제한다. 시스템 구조는 증분 색인을 지원하도록 설계될 수 있으며,[18] 여기서 병합은 추가 또는 업데이트할 문서를 식별한 다음 각 문서를 단어로 구문 분석한다. 기술적으로 정확히 말하면, 병합은 일반적으로 가상 메모리에 있는 새로 색인된 문서를 하나 이상의 컴퓨터 하드 드라이브에 있는 색인 캐시와 통합한다.

구문 분석 후, 색인기는 적절한 단어에 대한 문서 목록에 참조된 문서를 추가한다. 대규모 검색 엔진에서는 역색인에서 각 단어를 찾는 과정(문서 내에 발생했다고 보고하기 위해)이 너무 시간이 많이 걸릴 수 있으므로 이 과정은 일반적으로 두 부분, 즉 순색인 개발과 순색인의 내용을 역색인으로 정렬하는 과정으로 분할된다. 역색인은 순색인의 반전이기 때문에 그렇게 명명되었다.

6. 순방향 색인 (Forward Index)

순방향 색인은 각 문서에 대한 단어 목록을 저장한다. 순방향 색인을 개발하는 이유는 문서를 구문 분석할 때 문서당 단어를 중간에 저장하는 것이 더 효율적이기 때문이다. 이러한 구분은 비동기 시스템 처리를 가능하게 하여 역색인 업데이트 병목 현상을 부분적으로 해결한다.[19] 순방향 색인은 정렬되어 역색인으로 변환된다. 순방향 색인은 본질적으로 문서별로 정리된 문서와 단어의 쌍 목록이다. 순방향 색인을 역색인으로 변환하는 것은 단어별로 쌍을 정렬하는 것만으로 충분하다. 이러한 측면에서 역색인은 단어별로 정렬된 순방향 색인이다.

순방향 색인
문서단어
문서 1the, cow, says, moo
문서 2the, cat, and, the, hat
문서 3the, dish, ran, away, with, the, spoon


7. 압축 (Compression)

대규모 검색 엔진 색인을 생성하거나 유지 관리하는 것은 상당한 저장 용량 및 처리 과제를 나타낸다. 많은 검색 엔진은 디스크의 색인 크기를 줄이기 위해 일종의 압축을 사용한다.[20]

전체 텍스트 인터넷 검색 엔진의 경우, 20억 개의 웹 페이지에 대한 비압축 색인은 5,000억 개의 단어 항목을 저장해야 하며, 문자당 1바이트 또는 단어당 5바이트일 경우 저장 공간만 2,500GB가 필요하다.[21][22] (단일 문자를 저장하는데 8비트(또는 1바이트)가 필요하며, 일부 인코딩은 문자당 2바이트를 사용하며, 페이지의 특정 단어에 있는 평균 문자 수는 5개로 추정할 수 있다.) 이 저장 공간 요구 사항은 내결함성 분산 저장 아키텍처의 경우 더 커질 수 있다. 선택한 압축 기술에 따라 색인은 이 크기의 일부로 줄일 수 있지만, 그 대가는 압축 및 압축 해제에 필요한 시간과 처리 능력이다.

대규모 검색 엔진 설계에는 저장 비용뿐만 아니라 저장 장치에 전력을 공급하는 전기 비용도 포함되므로 압축은 비용의 척도이다.

8. 문서 구문 분석 (Document Parsing)

문서 파싱은 문서나 기타 미디어의 구성 요소(단어)를 분리하여 순방향 색인과 역방향 색인에 삽입하는 과정이다. 발견된 단어를 '토큰'이라고 하며, 검색 엔진 색인자연어 처리의 맥락에서 파싱은 더 일반적으로 토큰화라고 한다. 때로는 단어 경계 불명확성 해소, 태깅, 텍스트 분절, 콘텐츠 분석, 텍스트 분석, 텍스트 마이닝, 콘코던스 생성, 음성 분절, 렉싱, 또는 어휘 분석이라고도 한다. '색인', '파싱', '토큰화'라는 용어는 회사 내부에서 서로 바꿔 사용되기도 한다.

자연어 처리는 지속적인 연구와 기술적 개선이 이루어지고 있는 분야이다. 토큰화는 양질의 검색을 지원하기 위한 색인을 위해 문서에서 필요한 정보를 추출하는 데 많은 어려움을 야기한다. 색인을 위한 토큰화는 여러 기술을 포함하며, 그 구현은 일반적으로 기업 비밀로 유지된다.

== 자연어 처리 문제 ==

자연어 처리(NLP)는 검색 엔진 색인에서 중요한 역할을 하며, 다음과 같은 문제들을 야기한다.

; 단어 경계 모호성

영어와 달리 중국어일본어와 같이 공백으로 단어가 명확하게 구분되지 않는 언어의 경우, 토큰화 과정이 더 복잡하다. 검색 엔진은 사용자가 검색할 단어를 정확하게 식별하기 위해 언어별 논리를 사용하여 단어 경계를 파악한다.

; 언어 모호성

검색 엔진은 일치하는 문서의 순위를 매기기 위해 각 단어의 언어나 어휘 범주(품사)와 같은 추가 정보를 수집한다. 이러한 기술은 언어마다 구문이 다르기 때문에 언어에 따라 달라진다. 일부 검색 엔진은 문서 토큰화 과정에서 문서의 언어를 자동으로 식별하려고 시도한다.

; 다양한 파일 형식

검색 엔진은 다양한 파일 형식을 올바르게 처리하여 문서 내 문자를 나타내는 바이트를 정확하게 식별해야 한다. 여러 파일 형식을 지원하는 검색 엔진은 문서를 올바르게 열고 액세스하여 문자를 토큰화할 수 있어야 한다.

; 잘못된 저장

자연어 데이터의 품질이 항상 완벽하지 않을 수 있다. 특히 인터넷 문서 중에는 파일 프로토콜을 제대로 따르지 않는 경우가 많다. 바이너리 문자가 문서에 잘못 인코딩될 수 있으며, 이를 제대로 처리하지 않으면 색인 품질이나 성능이 저하될 수 있다.

== 토큰화 (Tokenization) ==

컴퓨터는 자연어 문서의 구조를 이해하지 못하므로, 토큰(token)이라고 하는 개별 단어를 식별하도록 프로그래밍해야 한다. 이러한 프로그램은 일반적으로 토크나이저(tokenizer) 또는 파서(parser) 또는 렉서(lexer)라고 불린다. 많은 검색 엔진과 기타 자연어 처리 소프트웨어는 전문 프로그램 (예: YACC 또는 렉스(Lex))을 구문 분석에 통합한다.

토큰화 과정에서 파서는 단어와 구두점과 같은 다른 요소를 나타내는 문자열을 식별한다. 이러한 요소는 숫자 코드로 표현되며, 일부는 인쇄되지 않는 제어 문자이다. 파서는 개체 (예: 이메일(email) 주소, 전화번호, URL(Uniform Resource Locator))도 식별할 수 있다. 각 토큰을 식별할 때 토큰의 대소문자(대문자, 소문자, 혼합, 고유 명사), 언어 또는 인코딩, 어휘 범주('명사' 또는 '동사'와 같은 품사), 위치, 문장 번호, 문장 내 위치, 길이 및 줄 번호와 같은 여러 특성이 저장될 수 있다.

== 언어 인식 (Language Recognition) ==

검색 엔진이 여러 언어를 지원하는 경우, 토큰화 과정의 일반적인 첫 단계는 각 문서의 언어를 식별하는 것이다. 후속 단계의 상당수는 어간 추출 및 품사 태깅과 같이 언어에 따라 달라진다. 언어 인식은 컴퓨터 프로그램이 문서의 언어를 자동으로 식별하거나 분류하려고 시도하는 과정이다. 언어 인식의 다른 이름으로는 언어 분류, 언어 분석, 언어 식별 및 언어 태깅이 있다. 자동 언어 인식은 자연어 처리 분야에서 지속적인 연구 과제이다. 단어가 속한 언어를 찾는 데에는 언어 인식 차트를 사용하는 것이 포함될 수 있다.

== 형식 분석 (Format Analysis) ==

검색 엔진이 여러 문서 형식을 지원하는 경우, 문서는 토큰화를 위해 준비되어야 한다. 많은 문서 형식이 텍스트 내용 외에도 서식 정보를 포함하고 있기 때문이다. 예를 들어, HTML 문서는 줄 바꿈, 굵은 글꼴, 글꼴 크기 또는 스타일과 같은 서식 정보를 지정하는 HTML 태그를 포함한다. 검색 엔진이 콘텐츠와 '마크업'의 차이를 무시하면, 불필요한 정보가 색인에 포함되어 검색 결과가 저하될 수 있다. 형식 분석은 문서에 포함된 서식 내용을 식별하고 처리하는 것으로, 이는 문서가 컴퓨터 화면에 렌더링되거나 소프트웨어 프로그램에 의해 해석되는 방식을 제어한다. 형식 분석은 구조 분석, 형식 파싱, 태그 제거, 형식 제거, 텍스트 정규화, 텍스트 정리 및 텍스트 준비라고도 한다.

형식 분석의 어려움은 다양한 파일 형식의 복잡성으로 인해 더욱 복잡해진다. 특정 파일 형식은 독점적이며 공개된 정보가 거의 없지만, 다른 파일 형식은 잘 문서화되어 있다. 많은 검색 엔진이 지원하는 일반적이고 잘 문서화된 파일 형식은 다음과 같다.



다양한 형식을 처리하기 위한 옵션에는 형식을 개발, 유지 관리 또는 소유하는 조직에서 제공하는 공개적으로 사용 가능한 상용 파싱 도구를 사용하거나 사용자 지정 파서를 작성하는 것이 포함된다.

일부 검색 엔진은 압축 또는 암호화된 파일 형식으로 저장된 파일의 검사를 지원한다. 압축 형식을 사용하는 경우, 색인 생성기는 먼저 문서의 압축을 푼다. 이 단계는 하나 이상의 파일을 생성할 수 있으며, 각 파일은 별도로 색인되어야 한다. 일반적으로 지원되는 압축 파일 형식은 다음과 같다.

  • ZIP - Zip 보관 파일
  • RAR - Roshal ARchive 파일
  • CAB - 마이크로소프트 윈도우 Cabinet 파일
  • Gzip - gzip으로 압축된 파일
  • BZIP - bzip2를 사용하여 압축된 파일
  • Tape ARchive (TAR), 유닉스 보관 파일(자체적으로 압축되지 않음)
  • TAR.Z, TAR.GZ 또는 TAR.BZ2 - Compress, GZIP 또는 BZIP2로 압축된 유닉스 보관 파일


형식 분석에는 색인에 '잘못된 정보'가 포함되지 않도록 하기 위한 품질 개선 방법이 포함될 수 있다. 콘텐츠는 서식 정보를 조작하여 추가 콘텐츠를 포함할 수 있다. 스팸덱싱을 위해 문서 서식을 악용하는 예는 다음과 같다.

  • 서식을 사용하여 컴퓨터 화면에는 표시되지 않지만 색인 생성기에는 표시되는 섹션에 수백 또는 수천 개의 단어를 포함하는 것(예: HTML의 숨겨진 "div" 태그로, 이는 이를 위해 CSS 또는 JavaScript를 사용할 수 있음).
  • 단어의 전경 글꼴 색상을 배경 색상과 동일하게 설정하여 문서를 보는 사람에게는 단어가 컴퓨터 화면에 숨겨져 있지만, 색인 생성기에는 숨겨져 있지 않게 하는 것.


== 섹션 인식 (Section Recognition) ==

일부 검색 엔진은 토큰화 이전에 문서의 주요 부분을 식별하는 구역 인식 기능을 통합한다. 모든 문서가 잘 정리된 장과 페이지로 나뉘어진 잘 쓴 책처럼 읽히는 것은 아니다. 에 있는 많은 문서에는 잘못된 내용과 주요 내용(문서의 주제)이 포함되지 않은 부수적인 섹션이 포함되어 있다. 예를 들어, 위키피디아 웹사이트의 기사에는 다른 웹 페이지에 대한 링크가 포함된 사이드 메뉴가 표시된다. HTML이나 PDF와 같은 일부 파일 형식은 콘텐츠가 여러 열에 표시되도록 허용한다. 콘텐츠가 보기 영역의 여러 영역에 표시되거나 렌더링되더라도 원시 마크업 콘텐츠는 이 정보를 순차적으로 저장할 수 있다. 원시 소스 콘텐츠에 순차적으로 나타나는 단어는 이러한 문장과 단락이 컴퓨터 화면의 다른 부분에 렌더링되더라도 순차적으로 색인된다. 검색 엔진이 이 콘텐츠를 일반 콘텐츠처럼 색인하는 경우 혼합된 콘텐츠와 부적절한 단어 근접성으로 인해 색인의 품질과 검색 품질이 저하될 수 있다.

이러한 문제점은 다음과 같다.

  • 서로 다른 섹션의 콘텐츠가 실제로는 관련이 없는데도 색인에서 관련이 있는 것으로 처리된다.
  • 조직적인 "사이드 바" 콘텐츠가 색인에 포함되지만, 사이드 바 콘텐츠는 문서의 의미에 기여하지 않으며, 색인에는 문서의 부실한 표현이 채워진다.


구역 분석에는 검색 엔진이 각 문서의 렌더링 로직(본질적으로 실제 문서의 추상적 표현)을 구현한 다음 해당 표현을 색인해야 할 수 있다. 예를 들어, 인터넷의 일부 콘텐츠는 자바스크립트를 통해 렌더링된다. 검색 엔진이 페이지를 렌더링하고 페이지 내의 자바스크립트를 평가하지 않으면 이 콘텐츠를 동일한 방식으로 "보지" 못하고 문서를 잘못 색인하게 된다. 일부 검색 엔진이 렌더링 문제를 신경 쓰지 않기 때문에 많은 웹 페이지 디자이너는 자바스크립트를 통해 콘텐츠를 표시하는 것을 피하거나 [https://worldwidenews.ru/2020/05/27/noscript-tag/ Noscript] 태그를 사용하여 웹 페이지가 제대로 색인되도록 한다. 동시에, 이 사실은 악용되어 검색 엔진 색인 생성기가 사용자와 다른 콘텐츠를 "보도록" 만들 수도 있다.

8. 1. 자연어 처리 문제

자연어 처리(NLP)는 검색 엔진 색인에서 중요한 역할을 하며, 다음과 같은 문제들을 야기한다.

; 단어 경계 모호성

영어와 달리 중국어일본어와 같이 공백으로 단어가 명확하게 구분되지 않는 언어의 경우, 토큰화 과정이 더 복잡하다. 검색 엔진은 사용자가 검색할 단어를 정확하게 식별하기 위해 언어별 논리를 사용하여 단어 경계를 파악한다.

; 언어 모호성

검색 엔진은 일치하는 문서의 순위를 매기기 위해 각 단어의 언어나 어휘 범주(품사)와 같은 추가 정보를 수집한다. 이러한 기술은 언어마다 구문이 다르기 때문에 언어에 따라 달라진다. 일부 검색 엔진은 문서 토큰화 과정에서 문서의 언어를 자동으로 식별하려고 시도한다.

; 다양한 파일 형식

검색 엔진은 다양한 파일 형식을 올바르게 처리하여 문서 내 문자를 나타내는 바이트를 정확하게 식별해야 한다. 여러 파일 형식을 지원하는 검색 엔진은 문서를 올바르게 열고 액세스하여 문자를 토큰화할 수 있어야 한다.

; 잘못된 저장

자연어 데이터의 품질이 항상 완벽하지 않을 수 있다. 특히 인터넷 문서 중에는 파일 프로토콜을 제대로 따르지 않는 경우가 많다. 바이너리 문자가 문서에 잘못 인코딩될 수 있으며, 이를 제대로 처리하지 않으면 색인 품질이나 성능이 저하될 수 있다.

8. 2. 토큰화 (Tokenization)

컴퓨터는 자연어 문서의 구조를 이해하지 못하므로, 토큰(token)이라고 하는 개별 단어를 식별하도록 프로그래밍해야 한다. 이러한 프로그램은 일반적으로 토크나이저(tokenizer) 또는 파서(parser) 또는 렉서(lexer)라고 불린다. 많은 검색 엔진과 기타 자연어 처리 소프트웨어는 전문 프로그램 (예: YACC 또는 렉스(Lex))을 구문 분석에 통합한다.

토큰화 과정에서 파서는 단어와 구두점과 같은 다른 요소를 나타내는 문자열을 식별한다. 이러한 요소는 숫자 코드로 표현되며, 일부는 인쇄되지 않는 제어 문자이다. 파서는 개체 (예: 이메일(email) 주소, 전화번호, URL(Uniform Resource Locator))도 식별할 수 있다. 각 토큰을 식별할 때 토큰의 대소문자(대문자, 소문자, 혼합, 고유 명사), 언어 또는 인코딩, 어휘 범주('명사' 또는 '동사'와 같은 품사), 위치, 문장 번호, 문장 내 위치, 길이 및 줄 번호와 같은 여러 특성이 저장될 수 있다.

8. 3. 언어 인식 (Language Recognition)

검색 엔진이 여러 언어를 지원하는 경우, 토큰화 과정의 일반적인 첫 단계는 각 문서의 언어를 식별하는 것이다. 후속 단계의 상당수는 어간 추출 및 품사 태깅과 같이 언어에 따라 달라진다. 언어 인식은 컴퓨터 프로그램이 문서의 언어를 자동으로 식별하거나 분류하려고 시도하는 과정이다. 언어 인식의 다른 이름으로는 언어 분류, 언어 분석, 언어 식별 및 언어 태깅이 있다. 자동 언어 인식은 자연어 처리 분야에서 지속적인 연구 과제이다. 단어가 속한 언어를 찾는 데에는 언어 인식 차트를 사용하는 것이 포함될 수 있다.

8. 4. 형식 분석 (Format Analysis)

검색 엔진이 여러 문서 형식을 지원하는 경우, 문서는 토큰화를 위해 준비되어야 한다. 많은 문서 형식이 텍스트 내용 외에도 서식 정보를 포함하고 있기 때문이다. 예를 들어, HTML 문서는 줄 바꿈, 굵은 글꼴, 글꼴 크기 또는 스타일과 같은 서식 정보를 지정하는 HTML 태그를 포함한다. 검색 엔진이 콘텐츠와 '마크업'의 차이를 무시하면, 불필요한 정보가 색인에 포함되어 검색 결과가 저하될 수 있다. 형식 분석은 문서에 포함된 서식 내용을 식별하고 처리하는 것으로, 이는 문서가 컴퓨터 화면에 렌더링되거나 소프트웨어 프로그램에 의해 해석되는 방식을 제어한다. 형식 분석은 구조 분석, 형식 파싱, 태그 제거, 형식 제거, 텍스트 정규화, 텍스트 정리 및 텍스트 준비라고도 한다.

형식 분석의 어려움은 다양한 파일 형식의 복잡성으로 인해 더욱 복잡해진다. 특정 파일 형식은 독점적이며 공개된 정보가 거의 없지만, 다른 파일 형식은 잘 문서화되어 있다. 많은 검색 엔진이 지원하는 일반적이고 잘 문서화된 파일 형식은 다음과 같다.

다양한 형식을 처리하기 위한 옵션에는 형식을 개발, 유지 관리 또는 소유하는 조직에서 제공하는 공개적으로 사용 가능한 상용 파싱 도구를 사용하거나 사용자 지정 파서를 작성하는 것이 포함된다.

일부 검색 엔진은 압축 또는 암호화된 파일 형식으로 저장된 파일의 검사를 지원한다. 압축 형식을 사용하는 경우, 색인 생성기는 먼저 문서의 압축을 푼다. 이 단계는 하나 이상의 파일을 생성할 수 있으며, 각 파일은 별도로 색인되어야 한다. 일반적으로 지원되는 압축 파일 형식은 다음과 같다.

  • ZIP - Zip 보관 파일
  • RAR - Roshal ARchive 파일
  • CAB - 마이크로소프트 윈도우 Cabinet 파일
  • Gzip - gzip으로 압축된 파일
  • BZIP - bzip2를 사용하여 압축된 파일
  • Tape ARchive (TAR), 유닉스 보관 파일(자체적으로 압축되지 않음)
  • TAR.Z, TAR.GZ 또는 TAR.BZ2 - Compress, GZIP 또는 BZIP2로 압축된 유닉스 보관 파일


형식 분석에는 색인에 '잘못된 정보'가 포함되지 않도록 하기 위한 품질 개선 방법이 포함될 수 있다. 콘텐츠는 서식 정보를 조작하여 추가 콘텐츠를 포함할 수 있다. 스팸덱싱을 위해 문서 서식을 악용하는 예는 다음과 같다.

  • 서식을 사용하여 컴퓨터 화면에는 표시되지 않지만 색인 생성기에는 표시되는 섹션에 수백 또는 수천 개의 단어를 포함하는 것(예: HTML의 숨겨진 "div" 태그로, 이는 이를 위해 CSS 또는 JavaScript를 사용할 수 있음).
  • 단어의 전경 글꼴 색상을 배경 색상과 동일하게 설정하여 문서를 보는 사람에게는 단어가 컴퓨터 화면에 숨겨져 있지만, 색인 생성기에는 숨겨져 있지 않게 하는 것.

8. 5. 섹션 인식 (Section Recognition)

일부 검색 엔진은 토큰화 이전에 문서의 주요 부분을 식별하는 구역 인식 기능을 통합한다. 모든 문서가 잘 정리된 장과 페이지로 나뉘어진 잘 쓴 책처럼 읽히는 것은 아니다. 에 있는 많은 문서에는 잘못된 내용과 주요 내용(문서의 주제)이 포함되지 않은 부수적인 섹션이 포함되어 있다. 예를 들어, 위키피디아 웹사이트의 기사에는 다른 웹 페이지에 대한 링크가 포함된 사이드 메뉴가 표시된다. HTML이나 PDF와 같은 일부 파일 형식은 콘텐츠가 여러 열에 표시되도록 허용한다. 콘텐츠가 보기 영역의 여러 영역에 표시되거나 렌더링되더라도 원시 마크업 콘텐츠는 이 정보를 순차적으로 저장할 수 있다. 원시 소스 콘텐츠에 순차적으로 나타나는 단어는 이러한 문장과 단락이 컴퓨터 화면의 다른 부분에 렌더링되더라도 순차적으로 색인된다. 검색 엔진이 이 콘텐츠를 일반 콘텐츠처럼 색인하는 경우 혼합된 콘텐츠와 부적절한 단어 근접성으로 인해 색인의 품질과 검색 품질이 저하될 수 있다.

이러한 문제점은 다음과 같다.

  • 서로 다른 섹션의 콘텐츠가 실제로는 관련이 없는데도 색인에서 관련이 있는 것으로 처리된다.
  • 조직적인 "사이드 바" 콘텐츠가 색인에 포함되지만, 사이드 바 콘텐츠는 문서의 의미에 기여하지 않으며, 색인에는 문서의 부실한 표현이 채워진다.


구역 분석에는 검색 엔진이 각 문서의 렌더링 로직(본질적으로 실제 문서의 추상적 표현)을 구현한 다음 해당 표현을 색인해야 할 수 있다. 예를 들어, 인터넷의 일부 콘텐츠는 자바스크립트를 통해 렌더링된다. 검색 엔진이 페이지를 렌더링하고 페이지 내의 자바스크립트를 평가하지 않으면 이 콘텐츠를 동일한 방식으로 "보지" 못하고 문서를 잘못 색인하게 된다. 일부 검색 엔진이 렌더링 문제를 신경 쓰지 않기 때문에 많은 웹 페이지 디자이너는 자바스크립트를 통해 콘텐츠를 표시하는 것을 피하거나 [https://worldwidenews.ru/2020/05/27/noscript-tag/ Noscript] 태그를 사용하여 웹 페이지가 제대로 색인되도록 한다. 동시에, 이 사실은 악용되어 검색 엔진 색인 생성기가 사용자와 다른 콘텐츠를 "보도록" 만들 수도 있다.

9. HTML 우선순위 시스템

색인 생성 과정에서는 우선순위를 정하기 위해 HTML 태그를 인식해야 하는 경우가 많다. 텍스트의 처음에 있는 ''strong''이나 ''link''와 같은 레이블에 대한 우선순위를 최적화하기 위해 낮은 우선순위부터 높은 우선순위까지 색인을 생성하는데, 이러한 레이블이 관련성이 없을 수도 있다. 구글과 빙과 같은 일부 색인 생성기는 강력한 형식 시스템 호환성 때문에 검색 엔진이 큰 텍스트를 관련 소스로 간주하지 않도록 한다.[23]

10. 메타 태그 인덱싱

메타 태그 색인은 웹 콘텐츠를 구성하고 분류하는 데 중요한 역할을 한다. 특정 문서에는 작성자, 키워드, 설명 및 언어와 같은 메타 정보가 포함되어 있다. HTML 페이지의 경우, 메타 태그에는 색인에 포함되는 키워드가 포함된다.[24] 초기 인터넷 검색 엔진 기술은 순방향 색인의 메타 태그에 있는 키워드만 색인화했다.[24] 당시에는 전문 색인이 잘 확립되지 않았고, 컴퓨터 하드웨어도 그러한 기술을 지원할 수 없었다.[24]

1990년대 인터넷이 성장함에 따라 많은 오프라인 기업들이 온라인으로 진출하여 회사 웹사이트를 구축했다. 웹페이지를 설명하는 데 사용되는 키워드는 설명적인 것에서 특정 검색어에 대한 검색 결과 상위에 웹페이지를 배치하여 판매를 유도하도록 설계된 마케팅 중심의 키워드로 바뀌었다. 이러한 키워드가 주관적으로 지정되었다는 사실은 스팸 색인으로 이어졌고, 이는 1990년대 많은 검색 엔진이 전문 색인 기술을 채택하게 만들었다. 전문 색인은 더 객관적이었고 검색 엔진 결과의 품질을 향상시켰다.[24]

데스크톱 검색에서 많은 솔루션은 메타 태그를 통합하여 작성자가 파일 콘텐츠에서 명확하지 않은 다양한 파일의 콘텐츠 색인 방식을 추가로 사용자 지정할 수 있는 방법을 제공한다.

참조

[1] 논문 Dynamic Inverted Indexes for a Distributed Full-Text Retrieval System University of Waterloo 1995-02-01
[2] 학술지 RDF-powered semantic video annotation tools with concept mapping to Linked Data for next-generation video indexing https://ap01.alma.ex[...] 2016-08-01
[3] 웹사이트 Wang03-shazam http://www.ee.columb[...] 2022-03-01
[4] 논문 Fast Multiresolution Image Querying http://grail.cs.wash[...] Department of Computer Science and Engineering, University of Washington 1995-12-01
[5] 논문 Execution Performance Issues in Full-Text Information Retrieval Computer Science Department, University of Massachusetts Amherst 1995-10-01
[6] 학술지 Optimizations for dynamic inverted index maintenance 1990-01-01
[7] 웹사이트 Linear Hash Partitioning http://dev.mysql.com[...] 2006-12-01
[8] 웹사이트 trie https://xlinux.nist.[...]
[9] 서적 Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology Cambridge University Press 1999-01-01
[10] 웹사이트 inverted index https://xlinux.nist.[...] 2006-12-01
[11] 학술지 Information retrieval: information storage and retrieval using AVL trees 1965-08-26
[12] 학술지 The balanced tree and its utilization in information retrieval 1963-12-01
[13] 웹사이트 Google Ngram Datasets http://www.ldc.upenn[...] 2013-09-29
[14] 논문 MapReduce: Simplified Data Processing on Large Clusters Google, Inc. OSDI 2004-01-01
[15] 웹사이트 IR Basics of Inverted Index http://www.cs.clemso[...] 2011-08-01
[16] 논문 Hybrid Global Local Indexing for Efficient Peer to Peer Information Retrieval http://www.cs.roches[...] University of Rochester
[17] 서적 Information retrieval: implementing and evaluating search engines The MIT Press 2016-01-01
[18] 논문 Incremental Updates of Inverted Lists for Text Document Retrieval Stanford University 1993-12-01
[19] 웹사이트 The Anatomy of a Large-Scale Hypertextual Web Search Engine http://infolab.stanf[...] Stanford University 2006-12-01
[20] 학술지 Storage analysis of a compression coding for a document database 1972-02-01
[21] 웹사이트 The Unicode Standard - Frequently Asked Questions https://www.unicode.[...] 2006-12-01
[22] 웹사이트 Storage estimates https://web.archive.[...] 2006-12-01
[23] 뉴스 Hypertext Markup Language 5 Google Webmaster Tools 2012-01-01
[24] 간행물 Hypertext Markup Language - 2.0 Network Working Group 1995-11-01
[25] 논문 Dynamic Inverted Indexes for a Distributed Full-Text Retrieval System University of Waterloo 1995-02-01
[26] 학술지 RDF-powered semantic video annotation tools with concept mapping to Linked Data for next-generation video indexing https://ap01.alma.ex[...] 2016-08-01
[27] 웹사이트 Wang03-shazam http://www.ee.columb[...]
[28] 논문 Fast Multiresolution Image Querying http://grail.cs.wash[...] Department of Computer Science and Engineering, University of Washington 1995-12-01



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com