목요일, 3월 28
Shadow

SEARCH ENGINE

검색엔진에 필요한 자료를 알아보자

#017 루씬 인 액션을 시작하며..

SEARCH ENGINE
  오늘부터 공부하게될 루씬 인 액션이라는 책이다. 한주에 한부씩을 읽고 리뷰할 예정이다. 몇년전에 검색엔진을 만들어 보고 싶은 마음에 이책의 초판을 사서 보았는데, 그 책과 지금의 책을 읽어 보니 많은 기능들이 추가 된 것을 알 수 있었다.  먼저 챕터를 살펴보고 가기 전에 출판 서평을 먼저 보도록 하겠다.   * DB에 담겨 있는 수백만 건의 정보를 마음대로 조회하지 못하거나, 사내 인트라넷의 엄청난 디렉토리 구조 안에 저장된 수많은 문서 중 원하는 내용이 들어있는 문서를 찾지 못해 어려움을 겪고 있다면, 그렇다고 상용 검색 엔진을 구입해 사용하기엔 너무 부담스러운 경우, 루씬(Lucene)이 정답이다. 이 책은 외주 개발이든 사내 개발이든 간에 전문적인 검색 기능을 필요로 한다면 최우선으로 고려해야 할 루씬에 대해 색인부터 검색과 고급 설정까지 예제 기반으로 설명한다. [(개정판) 루씬 인 액션]을 기반으로 루씬의 A부터 Z까지 완벽하게 활용하는 고성능 검색 애플리케이션을 개발해보자. * 초판이 출간된 이후 5년간 루씬 프로젝트에서 많은 부분이 달라졌다. 영향력 있는 오픈소스 프로젝트는 대부분 그렇지만 루씬도 탄탄한 기술적인 기반을 갖고 있으며, 사용자와 개발자가 참여하는 안정적인 커뮤니티가 계속해서 유지되고 있고, 이런 잠재력이 뭉쳐 엄청나게 발전하는 중이다. 초판이 출간된 이후 추가되거나 변경된 기능을 살펴보면 대략 다음과 같다. - 준실시간 검색 - 문서에서 텍스트를 추출할 때 티카(Tika) 프로젝트 활용 - NumericField를 통해 숫자 필드를 ...

#016 집단지성과 관련있는 콘텐츠 종류

SEARCH ENGINE
1. 블로그 - 다른말로 웹로그는 다른사람들과 공유하고 싶은 내용에 대해서 글을 쓰는 개인적인 온라인 저널이다. 다른 사용자들은 블로그에 댓글을 달수 있다. 블로그는 일반적으로 다이어리 형식으로 작성되며, 다른 웹 사이트를 가리키는 링크도 포함된다. 블로그의 활용: 1. 회사 웹사이트 0 회사들은 주주나 고객, 직원 다른사람들과의 연결점으로 블로그를 활용한다. 때로는 중요한 결정이나 정책에 대한 피드백을 받는데 사용하기도 한다. 또한 블로그는 어떤 결정이나 정책의 근거를 전달하는 적적한 포럼역할도 할수 있다. 또한 개발중인 제품의 피드백을 얻는데 활용할수도 있다. 2. 애플리케이션 내부- 애플리케이션에서 내외부적으로 관련성있는 정보를 제공하는데 블로그를 사용할수 있다. 애플리케이션 내부에서 사용자들이 블로깅을 하게 함으로써 다른 사람들에게 보여질수 있는 추가 콘텐츠를 만들어 낼수 있다. 3. 블로고스피어에 있느 다른 블로그 - 블로고 스피어에 있는 다른 블로그들은 여느 글은 제품에 대한 대중의 관심도를 높일수 있고, 반면에 부정적인 언급은 제품에 저주를 내릴수 있다. ...

#015 북마킹, 리뷰 등 메타데이터를 사용한 지능 정보화

SEARCH ENGINE
1. 콘텐츠 접근 방법: 텀 백터는 키워드나 태그와 관련된 가중치 값을 가지고 있다. 콘텐츠를 저장하고, 콘텐츠에 접근하거나 콘텐츠를 추천하는 사용자는 관련 아이템의 메타데이터에 영향을 받는다. 2. 협업기반 접근 방법: 북마킹된 데이터 수집하고 분석하기, 아이템 저장하기, 다른 사용자를 위한 아이템 추천하기등 수집된 데이터를 분석하는 방법은 서로 비슷하다.

#014 예제를 통해 본 등급의 지능 정보화

SEARCH ENGINE
간단하게 아이템에 대한 등급 정보를 합한후 평균값을 제강하는 방법 - 가장 인기있는 등급이 높은 상위 열개의 아이템을 뽑을때 유용할 것이다. 클러스터링- 비슷한 사용자들을 묶어줄수있는 기법 : 특정 사용자와 비슷한 사용자들의 그룹에서 계산되어 나온 아이템의 평균 등급은 이전에 설명한 일반적인 평균 등급에 비해 더 적절하다. 사진1 사진2 사진3 평균 제인 3 4 2 3 도 2 2 4 8/3 존 1 3 5 3 평균 2 3 11/3 26/3 위의 예제 데이터를 기반으로 아래와 같은 질문에 답을 해 보자 1. 특정 아이템과 유사한 아이템은 무엇인가? 2. 한 사용자와 유사한 다른 사용자는 누구인가? 이에 대한 답변은 코사인 기반 유사도와 상관계 기반 유사도, 적응 코사인기반 유사도 기법을 사용해 도출할수 있다. 1. 코사인 기반의 유사도 관계  : 두 벡터의 내적  : 행이 사진, 열이 사용자에 상응되게끔 행렬을 전치 한다. 열의 각 항목이 의미하는 바는 사진을 설명하는 차원이라 생각하면된다.  :첫번째 행에서는 ROOT(3^2+2^2+1^2) = root14 = 3.1744 존 제인 도 사진1 0.8018 0.5345 0.2673 사진2 0.7428 0.3714 0.557 사진3 0.2981 0.5963 0.7454 이 결과를 기반으로 벡터의 내적을 계산하면 두아이템간의 유사도를 알수 있다. 사진...

#013 웹2.0이란.

SEARCH ENGINE
웹 2.0이란 결국 비슷한 사람들을 서로 연결해주는 방법에 대한 것이다. 유사성은 취향, 직위, 의견 또는 지리적 위치등이 될수 있다. 취향과 의견은 리뷰와 추천에서 자주 나타난다. 이런 것들은 다음과 같은 상황에서 다른 사용자에게 매우 큰 영향을 준다. 1. 편견이 없는 의견 2. 유사한 사용자의 리뷰 3. 영향력이 큰 사람의 취향이나 의견

#012 유사도 계산(데이터 유형)

SEARCH ENGINE
1. 템벡터는 방향과 크기가 있는 벡터다 알고리즘은 분석 작업을 하기 위해 데이터를 입력 받는다. 여러 인스턴스로 구성된 데이터는 테이블 형태로도 표현할수 있다. 이런 테이블에서 데이터가 어떻게 분포되어 있느냐에 따라, 고밀도 데이터셋과 고차원 저밀도 데이터 셋으로 구분된다. 2. 데이터 유형 예) 사이트에 세사람이 머무는 시간         나이        성별       하루동안 사이트에 머무는 시간 존     25           M           25 조     30           M           20 제인  20           F            30 데이터셋에서 사이트에서 보낸시간을 예측 할수 있는 중요 인자는 나이, 사이트에서 보낸시간이다. 그러나 성별 속성은 예측에 필요없는 데이터 이다. 1. 고밀도 데이터셋 - 사용자가 늘어날수록 데이터셋의 행은 늘어난다.   - 행의 개수가 열의 개수보다 더 많다.   - 고밀도 데이터 셋은 각 셀마다 값이 존재한다. ------------------------------------------------------------- 고차원 저밀도 데이터셋은 일반적인 형태의 텀 백터이다. 이 데이터 셋을 이해하기 위해서는 지난주라는 시간 영역을 생각하여야 한다. 같은 시간 영역에서 비디오를 본 사용자 집단과 아닌경우로 나눌수 있다.         동영상1   동영상2   동영상3... 존     1 조     1             1 제인                         ...

#011 비구조적 텍스트에서 지능형 정보 추출

SEARCH ENGINE
벡터스페이스 모델 벡터공간 모델 상에서 각 도큐먼트들과 질문자들은 n차원 공간 속의 벡터들로 취급되며, 이때 각 차원들은 색인용어들로 표현된다. 이 기법에 의한 검색 절차는 다음과 같다. 1) 용어의 가중치는 정규화된 도큐먼트내의 빈도(TF)와 이의 역빈도수(IDF)를 조합하여 게산 2) "낮은 식별치(poor discrimination value)의 값을 지닌 용어들은 시소러스내의 저 빈도용어들로 대치되며 구의 경우 고빈도 용어들로 대체된다. 3) 각 도큐먼트들은 이용자 질문에 대해서 그 유사성의 순위별로 출력되며, 이러한 과정은 코사인 상관도에 의해 계산된다. (벡터 공간 내에서 이용자의 질의에 가장 근접해 있는 도큐먼트들을 직관적으로 검색해낸다.) 자세한 내용은 다운받아 보시길... 1. Definition 2. Applications 3. Examples 4. Limitations 5. Reference 6. Models based on and extending the vector space model  COF-Vector Space Model.pdf 벡터 스페이스 모델은 문서를 표현하는데 가장 많이 사용되는 방법 텍스트-텀가중치-텀가중치-텀가중치 의 형태로 문서를 표현하는데, 이는 문서에 등장하는 텀과 각 텀의 관련 가중치로 구성된다. 텀백터는 아이템과 관련된 메타데이터를 표현하는 하나의 표현형태이다. 텀가중치는 텀의 빈도와 역문서빈도(TFIDF)를 조합하여 결정된다. 텀 빈도는 한 문서안에서 텀의 출연한 빈도이다. 특정 문서내에서 자주...

#010 협업필터링

SEARCH ENGINE
협업 필터링은 주로 메모리 기반과 모델기반으로 나뉜다. 메모리 기반 방법: 유사도를 측정하여 유사한 사용자를 찾은후에 이들이 평가한 등급에 유사도에 따른 가중치를 부여한 평균값을 기반으로 예측을 한다.   - 이방법은매우 많은 데이터를 처리할때 문제가 발생할수있으며, 데이터 희소 문제에도 굉장히 민감하다. 모델기반 접근방법: 선형대수학, 확률론, 신경망 클러스터링, 레이턴트 클리스 등 다양한 방법을 이용해 예측모델을 만든다.

#009 집단지성 알고리즘1

SEARCH ENGINE
1. 사용자와 아이템   - 속성기반 : 사용자 속성정보는 일반적으로 애플리케이션의 기본적인 특징에 의존한다.       - 사용자 속성은 나이, 성별, 주소, 직업, 연봉 또는 교육 수준과 같은 개인정보를 포함할수 있다.   - 콘텐츠 기반: 문서의 내용을 분석해서 생성할수 있다. 막약 비구조적 텍스트에서 메타데이터를 추출하는 정보 검색과 텍스트 마이닝 영역에서 수많은 연구들이 진행된다면, 제목, 부제, 키워드, 하나의 문서나 관심영역의 문서 집합에서 나타내는 단어 빈도수 그리고 해당 아이템과 관련된 유용한 정보를 제공하는 다른 데이터등을 전환할수 있다.   - 사용자 행동 기반 : 물품을 구매하거나 콘텐츠를 작성하고, 아이템에 등급을 주거나 투표를 하는 등의 행동을 기반으로 사용자의 의도에 대해 명백한 정보를 제공해 준다. 사용자 프로필의 속성 계측도 1. 속성-( 숫자형, (항목형-서열형, 범주형)) ...

#008 지능화 시스템 아키텍쳐

SEARCH ENGINE
1. 동기식 서비스   - 클라이언트의 요청을 동기 방식으로 처리한다. (클라이언트는 서비스가 응답을 보내줄때 까지 대깋산다.) 이런종류의 서비스는 빨라야 한다.  - 이런 서브의 예로는 실시간 상품 추천 엔진, 사용자 프로필의 모델을 제공하는 서비스, 검색 쿼리에 따른 결과를 제공하는 서비스 등이 있다.   - 대용량 처리와 높은 성능을 위해 동기 서비스는 무상태형이어야 한다. (서비스가 요청을 처리할때 필요한 정보들은 모두 데이터베이스나 파일과 같이 영속적인 자원에서 받거나 서비스 요청의 일부분에 속하여 서버에 전달되어야 한다.) 2. 비동기식 서비스   - 작업 처리에 좀더 많은 시간이 필요하기 때문에 백그라운드에서 실행된다. 예측 모델이나 클러스터링을 통해 사용자 프로필을 학습하거나 검색을 위해 인덱싱을 하는 작업뿐만 아니라, 여러개의 인스턴스를 띄워 놓고 메시징 서버의 큐를 공유해 데이터를 처리한다. ...