검색엔진의 기초 세미나 후기

약 40개의 기념품을 가져갔지만 모두 드리지 못해 죄송합니다.생각보다 많은 분들이 오셔서 다 드리지 못했네요. ^^; 혼자 들고가기 너무 힘들었답니다. 비까지 오는데… 그래도 학생들 기념품 받고 안받고 기분의 차이가 크니 좋은 홍보 했다고 생각합니다. ^^ ps. 오늘 알았던 사실인데 이게 수업이더군요. 무슨과목인지 확인은 못했지만 초빙강사 형식으로 진행이 된걸로 봅니다.

계속 읽기

Language Model (2)

점심시간을 틈타 Language Model의 마지막 포스팅을 해본다. 먼저번 포스팅헤서 P(q|Md)를 구하는게 목적이라는 언급을 했었고, 그 값을 구하기 위한 식을 만들었다. 그럼 문서 기반으로 정확히 식을 구하기 위해 어떻게 해야 할까? 모든 쿼리에 대해서 문서에 대한 t.f(term frequency)를 구하고 문서에 존재하는 모든 텀의 갯수를 dl이라는 변수에 할당을 해서 위와 같은 식으로 model과 쿼리의 확률을 구하는것이다. 그런데 […]

계속 읽기

Language Model (1)

그동안 좀 봐뒀던 Language Model을 정리하고자 한다.사실 Language Model은 예전에 내가 보던 Information Retrival : Algorithm and Heuristic이라는 책에서 봤었지만, 정리까지는 안해봤다.(난 뭐든 정리가 필요하다.) Language Model이라함은 정보검색을 하다보면 나오는 unigram, bigram trigram이라는 말과 전혀 다르지 않다. 위 자체가 그대로 문서를 표현하는 모델링 방법이 될수 있는것이다. 각 문서 내에서 빈도수 및 여러 factor를 가지고 아래와 […]

계속 읽기

처음 검색엔진 개발을 했을때…

잉카 인터넷이라는 회사에서 처음 검색엔진이라는 것을 만져봤다. 그곳에서 연구했던 것들이 지금에서는 나의 큰 자산으로 작용하고 있는건 부정할 수 없는 사실이다. 안타깝게도 그곳에서 만든 Kimap이라는 Knowledge Map이라는 뜻의 검색엔진은 회사 Product에서 제외가 되어 버렸다. 얼마전까지만 해도 있더니만, 결국 없어지고 말았다. 엔진의 모티베이션이 되는것은 자동분류라는것이였다. 이 엔진팀에 같이 있었던 친구는 현재 대학4학년인데, 그 친구가 첫눈이 나왔던 시절에 […]

계속 읽기

pagerank 단점 보완할수 있을까?

Pagerank의 가장 큰 문제점은 좋은 글이 시간이 가면 갈수록 너무 유명해져서 새롭게 등장하는 좋은 글이 랭킹의 위로 올라갈 기회를 안준다는데 있다. 물론 구글에서도 이런것에 대한 개선사항이 있었겠지만, 어제 화장실에서 철학책을 뒤적이면서 링크 정보를 활용한 랭킹시스템에 위의 문제를 개선할 좋은 방법을 생각해 냈다. 상대적인것과 절대적인 것의 의미의 차이를 잘 생각해보면 알수 있다. 다만 구현상에 중요한것은 링크정보를 […]

계속 읽기

문서 중복에 대해서 .

문서 중복에 대해서 예전에 Shingle 방법에 대한글을 쓴 경험이 있다. 주로 중복문서의 제거의 Key Issue는 검색 복잡도를 해결하는것이라고 할 수 있다. md5 hash를 이용하는 방법은 O(n)의 복잡도를, Shingle 계열의 방법을 사용하는것은 O(n^2)의 복잡도를 자랑한다. 어느글과 비슷한 글을 찾기 위한 기능을 검색엔진에서 제공한다면 아마도 주로 Shingle을 이용한 여러가지 방법들중에 하나를 사용해서 제공하리라 본다. 하지만 이는 미리 […]

계속 읽기

오픈마루에서 Inverted Index Compression에 대해서 발표했습니다.

오늘 오픈마루에서 inverted index compression 발표를 했다. ppt는 아래 논문과 서적을 참고로 만들었다. 무엇보다 이 발표자료를 만들면서 그동안 몇가지 알고리즘을 알고 있었던것과 더불어 새로운 알고리즘까지 내 자신이 스스로 총정리 할 수 있었던 아주 좋은 기회가 되었던거 같다.그리고 앞으로 어떤 Doc Id특성을 가지고 있을경우는 어떤걸 쓴다든지 하는 그런 나만의 아니 그 누구나 수긍할 수 있는 설득력 […]

계속 읽기

Distribute Indexing과 MapReduce

오늘 커널 공부하다가 지루한 나머지 Distribute Indexing에 대한 공부를 좀 해봤다. (역시나 지루한 코드를 보는것보다 이런 개념 학습이 더 재미난다. ^^) 예전에 MapReduce에 대한 개념을 설명할 때가 있었다. 이때 내가 느낀것은 단 한가지 였다. MapReduce는 큰일을 작은 일로 분산시켜서 처리할때 굉장히 심플한 처리 공정을 보여 준다는 것이다.  그럼 여기서 Distribute Indexing을 하는 이유는 무엇인가? 1. 웹 […]

계속 읽기

Query Processing을 효율적으로 하자면?

쿼리 프로세싱(Query Processing)은 검색 결과를 가져오는 프로세스이다. 그럼 어떻게 Query에 맞는 결과를 가져올 것인가? 각 term의 모든 posting list를 가져와서 교집합을 하던가 합집합을 하던가… 아니면 이것들 후보 문서 모두를 vector space 모델이나 확률모델을 적용해서 가져오는 방법이 있겠다.하지만 위의 방법은 너무 복잡도가 크고, 이 문제때문에 검색 시간이 많이 걸릴것이다. 그래서 Query Process분야에서는 얼마나 빨리 가져오는 문제가 […]

계속 읽기