2009-05-09 3 views

답변

12

간단한 경우는 역 색인입니다.

가장 기본적인 알고리즘은 간단하다 :

  • 고유 단어의
  • 정상화 목록을 작성, 단어의 파일을 검색하고 단어를
  • 장소 파일에 그 단어 동점 항목에 필터 귀하의 색인

세부 사항은 일이 까다로울 수 있지만 기본 사항은 같습니다.

단어를 "정규화하고 필터링"함으로써 모든 단어를 소문자로 변환하고 일반적인 "중지 단어"(if, in, a 등)를 제거하거나 "형태소 분석"(흔히 사용하는 공통 접미사 제거 및 복수형 등).

그런 다음 파일에 대한 고유 한 단어 목록을 얻었으므로 색인을 작성할 수 있습니다.

저장 공간을 줄이기위한 최적화, 단어의 지역성을 확인하는 기술이 있습니다 (예 : 문서의 "그"근처에 "this"가 있음).

그러나 이것이 기본적인 방법입니다.

2

언제든지 Apache Lucene과 같은 것을 볼 수 있습니다.

Apache Lucene은 전적으로 Java로 작성된 고성능의 완전한 텍스트 검색 엔진 라이브러리입니다. 전체 텍스트 검색이 필요한 거의 모든 응용 프로그램, 특히 교차 플랫폼에 적합한 기술입니다.

10

정말 기본적인 설명입니다. 자세한 내용은이 교재 (무료 온라인) http://informationretrieval.org/ ¹

1)을 읽을 수 있습니다. 모든 파일에 대해 색인을 작성하십시오. 색인은 데이터 집합 ("코퍼스"라고 함)에서 발생하는 모든 고유 단어로 구성됩니다. 각 단어마다 문서 ID 목록이 연관되어 있습니다. 각 문서 ID는 해당 단어가 들어있는 문서를 참조합니다.

변형 : 인덱스를 생성 할 때 스톱 워드 ("a", "the"등)를 무시하려는 경우가 있습니다. 그래도 조심해야합니다 ("될 것"또는 "하지 말 것"은 불용어로 구성된 실제 질의입니다).

때때로 단어를 줄기도합니다. 접미사와 접두어를 더 많이 사용하는 영어 이외의 언어에서는 검색 품질에 더 많은 영향을줍니다.

2) 사용자가 쿼리를 입력하면 해당 목록을 찾아 병합합니다. 엄격한 부울 쿼리 인 경우 프로세스는 매우 간단합니다. AND의 경우 모든 단어 목록, OR 또는 적어도 하나의 단어 목록에 docid가 있어야합니다.

3) 결과의 순위를 매기려면 여러 가지 방법이 있지만 기본 아이디어는 예상되는 빈도와 비교하여 문서에서 단어가 나오는 빈도를 사용하는 것입니다 문서가 어느 정도 관련성이 있음을 나타내는 신호로서 코퍼스의 모든 문서에서 발생해야합니다. 교과서를 참조하십시오.

4) 또한 저장 워드 위치는 문구를 추론 할 수있는 등

당신이 순위에 비해)라는 용어를 포함하는 모든 문서 (리콜에 더 많은 관심으로 그 대부분은 데스크톱 검색에 대한 무관하다.


이전 http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html 접근에 뒤로 기계

+1

를 통해 제공 한 링크가 끊어 ¹. – kta

관련 문제