검색과 클러스터링

클러스터링에 대한 공부는 예전에 k-means 알고리즘을 이용한 음성데이터 클러스터링을 마지막으로 손을 가져가지 않았다가, 이번에 이런저런 책을 보면서 클러스터링에 대한 공부를 해봤다. 검색엔진이 왜 클러스터링과 관련이 있는지 알아보자! 컬렉션이 잘 클러스터링 되어 있다면, 그 해당 클러스터만을 검색해서 문서를 찾아내는것이 더 효과적이다. 이런 효과적인 성능에 비해 크러스터링은 일반적인 검색엔진에 쓰이기 힘든 factor가 있다. 1. 문서 집합에 대해서 […]

계속 읽기

블로거를 연결시켜 주는 새로운 검색 BlogReader

주변에 아주 재미난 검색 서비스를 만드시는 분이 한분 계신다.  그것도 혼자서 말이다. 그동안 올블로그나 아올린의 검색의 유명무실에 대해서 솔직히 비판을 많이 했고, 그에대한 의논을 typos님과 많이 나누었다. 물론 typos님이 거의 많은 이야기를 하셨지만, 블로그를 운영하고 양질의 블로그 포스팅을 올리려는 블로거의 입장에서 비슷한 관심사를 가진 사람을 찾아주고 묶어주는 검색이 필요했던 것이다. 누군가 블로깅을 왜 하는지에 대한 […]

계속 읽기

inverted index와 full text scan 사이에 존재하는 signature files

대부분 개발자든  누구든지간에 검색의 시발점이 되는것은 색인이라고 생각을 한다.  색인을 만든다고 하면 대부분 역색인(inverted index)를 생각한다. 여기에 정보검색의 초기시절 빠른 색인 속도와 적은 색인 구조로 제안이 되었던 색인(?)구조를 찾아봤다. 이름하여 “Signature File”구조인데 이 구조는 full text search와 inverted index 구조의 사이에 존재하는 개념이라고 생각하면 전체적인 위치를 보기에 쉬울듯 싶다. 모든 문서들을 실제 문서보다 작은 데이터로 […]

계속 읽기

일리노리 공과대학교 정보검색 랩 강의자료

전에 소개했던 Information Retrieval: Algorithms and Heuristics이라는 책에서 여러 부분 부분에 대한 공부를 틈틈히 하고 있는데, 책 자체가 너무 광범위한 내용을 함축적으로 포함한 책이라서 몇장을 보더라도 구글링을 하게 만드는 책이다. 오늘 책의 클러스터링쪽에 대한 부분을 보다가 구글링을 했는데 정말 좋은 자료를 찾았다. 일리노리 공과대학교 정보검색랩에 있는 자료인데 반갑게도 내가 보는 책이 이 랩에서 정보검색 수업 […]

계속 읽기

알고리즘 복잡도(complexity)와 언어(language)

일반적으로 알고리즘과 자료구조 그리고 복잡도에 대한 이야기를 개발자들 사이에서는 많이 한다. 그리고 자주 나는 결론은 그런걸 고민하는 시간에 다른 중요한 일을 하고, 그 문제에 대해서는 서버를 증설하면 된다는 식으로 그냥 해결 방법을 얼버무린다. 물론 서버를 증설하는 방법은 좋다. 하지만 서버를 증설했을시에 자동으로 그런 리소스 분배가 되는지도 확인해야되고 그런 중요한 부분과 또 다른 점들때문에 배보다 배꼽이 […]

계속 읽기

Hash에 대해서…

2006년 9월에 만든 자료를 올려본다. 솔직히 말하자면, 2개의 인터넷에 돌아다니는 문서를 짜집기 해서 만든 문서다.어찌보면 재편집에다가 많은(?) 내용추가가 이루어 졌다. 앞부분 Hash에 대한 자료는 거의 자료구조 책에서 나오는 내용들이고, 뒷 부분 md5 알고리즘 부분은 기억으로는 서울대학교 어느(?) 연구실에서 발표한 자료를 붙인걸로 기억한다.(이 문서 보고 자신이 만들었다고 생각하신다면 꼭 뎃글 부탁드립니다. ) SHA-1 알고리즘도 함께 붙어 […]

계속 읽기

중복 문서 제거에 대한 : 주로 Shingle 방법

문서의 색인을 만드는데 중복문서 제거는 항상 이슈가 되는 사항이다. 물론 이 부분은 문서를 수집하는 시기부터 웹로봇이 주로 행하는 작업이기도 하고 로봇을 지나 온 문서도 마찬가지로 중복 문서가 존재하고 있는게 사실이다. 중복을 어느정도를 중복으로 봐야 되는지도 상당히 중요한 이슈 사항이여서 exact duplicate 와 유사도를 측정해 중복을 판단하는 방법이 존재하고 있다. exact duplicate는 구현자체는 그리 어렵지 않지만 […]

계속 읽기

인덱싱을 하기전에 어느정도 문서에 대한 ordering을 한다면…

먼저 인덱싱을 하기전에 문서를 reordering을 한다면 문서의 압축 효율이 좋아진다는 논문이 있다.(Blsndford and Blelloch, 2002, Silvestri et al., 2004) reordering이 왜 필요하냐면 문서의 포스팅 파일을 만들기 위해 텀에 대한 문서 번호를 색인에 쓸때 문서의 d-gap을 줄이기 위해서 사용한다. 예를들어 term t가 나오는 문서가 D1, D100, D600 에 해당한다면 이들의 doc no를 색인에 쓸때 1, 99, […]

계속 읽기

색인 압축 기법 정리 : Byte Align and Gamma Compression

색인 압축에는 두가지 영역이 있는데 첫번째 영역은 Term Dictionary의 영역과, 두번째 영역은 posting 영역의 압축이 있다. Term Dic의 압축은 일단 다루지는 않겠고, (이 부분의 압축 기법은 Lucene 색인 파일 구조에 잘 나타나 있다. 예를 들어 prefix를 공유하는 기법이라든지 말이다.) posting list영역의 압축 기법은 대표적으로 연속된 doc id를 기준으로 d-gap을 이용하는데, 이 d-gap을 어떤식으로 저장을 하는것이 […]

계속 읽기

Lucene index file format 발표 자료

현재 다니는 회사 입사 초기에 만들어 발표했던 발표자료이다. 입사하기 전에 인덱스 파일 포멧에 관심이 많이 있어 블로그에 Lucene 색인구조에 대해서 강좌를 썼었고, 그것을 기반으로 간단하게 발표자료를 만들었다. 이번에 Lucene에 가봤더니 벌써 Lucene Index File Format 2.1 버전이 올라와 있더군.버전이 올라간 기념으로 2.0기반으로 만들었던 색인 파일 발표자료를 공개한다. 잠깐 봤는데 compound 파일의 포멧과 lock 파일에 대한것이 […]

계속 읽기