반응형

구현 26

9. 랭커 만들기

9. 랭커 만들기 랭커는 검색 요청이 오면 검색 질의에 근접한 웹 페이지를 순위화 해주는 엔진입니다. 여기에서는 라이브러리 형태로 제작할 것입니다. 수 많은 자료 중에서 원하는 결과를 검색하면 검색 결과도 많을 수 있습니다. 이 때 사용자는 검색 결과에서 다시 원하는 결과를 검색하는 비용이 들 수 있습니다. 자료의 양이 많아지면서 검색 엔진도 보다 효과적으로 검색 결과를 제공하기 위해 똑똑해지고 있습니다. 이를 위해 시멘틱 처리의 알고리즘이 필요한데 여기서 다루는 랭커는 시멘틱 처리를 하는 기본적인 알고리즘을 사용할 것입니다. 랭커에서 순위를 매기는 방법은 다양한데 여기에서는 TF IDF 방식을 사용할 것입니다. TF는 Term Frequency의 약어로 특정 단어가 얼마나 자주 나오는지에 관한 값입니다..

8. 역 파일 생성기 만들기

8. 역 파일 생성기 만들기 역 파일 생성기는 검색 효율을 높이기 위해 형태소 이름으로 포함하는 웹 페이지를 빠르게 검색할 수 있는 역 파일을 생성하는 엔진입니다. 역 파일 생성기는 웹 로봇에서 수집한 내용을 형태소 분석기로 분석한 결과를 역 파일 목록에 추가하는 작업을 수행합니다. 역 파일 목록에 추가하는 작업에서는 새로운 형태소를 발견하면 역 파일 목록에 형태소를 추가하고 추가한 형태소마다 테이블을 동적으로 생성합니다. 그리고 생성한 동적 테이블에 웹 페이지 주소와 참조 개수를 추가합니다. 대부분의 이를 수행할 수 있는 작업은 저장 프로시저로 만들었습니다. 여기에서는 미리 작성한 저장 프로시저를 이용하는 역 파일 생성기를 만듭시다. 역 파일 생성기에서는 검색 질의 내용에 포함한 형태소 이름으로 포함하..

7. 형태소 분석기 만들기

7. 형태소 분석기 만들기 이번에는 문자열의 내용을 분석하는 형태소 분석기를 만들어봅시다. 형태소 분석기는 원본 내용을 형태소 단위로 분할하는 엔진입니다. 형태소 분석기는 웹 검색 엔진의 일부로 웹 로봇이 수집한 페이지의 내용을 분석하거나 검색 질의를 분석할 때 사용합니다. 형태소 분석기도 라이브러리로 만들기로 했는데 여기에서는 라이브러리 작성과 함께 정상적으로 만들어졌는지 확인하는 예광탄도 만듭시다. 7.1 형태소 분석기 예광탄 만들기 [그림 7.1] 형태소 분석기 메인 폼 자식 컨트롤 배치 using System; using System.Collections.Generic; using System.Windows.Forms; using WSE_Core; using MorphemeParserLib; na..

6.4.3 WebRobot 서비스 테스트 클라이언트 만들기

6.4.3 WebRobot 서비스 테스트 클라이언트 만들기 설치한 웹 로봇 서비스가 잘 동작하는지 확인하기 위해 테스트 클라이언트를 만들어 봅시다. 테스트 클라이언트는 윈도우즈 폼 응용으로 만듭시다. 그리고 메인 폼에서 수집 가동을 시작하거나 멈추게 할 수 있고 수집 주기를 설정하고 Seed 사이트를 추가하는 등의 작업을 할 수 있게 컨트롤을 배치하세요. [그림 6.7] 웹 수집 로봇 테스트 클라이언트 메인 폼 컨트롤 배치 /// /// Seed 사이트 목록 가져오기 메서드 /// /// Seed 사이트 목록 public static List GetSeedSite() { List list = new List(); SqlCommand scom = MakeSPCommand( "Select Url From C..

6. 4 웹 로봇 서비스 만들기

6. 4 웹 로봇 서비스 만들기 웹 로봇은 독립적으로 수행이 가능한 서비스입니다. 또한 웹 로봇은 관리자가 설정에 사용하는 WSE Manager로 수집 주기 설정 및 Seed 사이트 등록과 웹 수집 가동 시작과 멈춤을 제어할 수 있어야 합니다. 여기에서는 웹 로봇을 .NET 리모팅 서비스를 윈도우 서비스 형태로 만들기로 할게요. 6.4.1 Generic 라이브러리 만들기 .NET 리모팅 서비스를 제공할 때는 서비스 측과 클라이언트 측에서 공통으로 사용하는 라이브러리가 필요합니다. GenericWebRobotLib 이름의 클래스 라이브러리 프로젝트를 추가합시다. .NET 리모팅 서비스에서 제공하는 클래스는 MashalByRefObject를 파생한 형식이어야 합니다. public class GenericWe..

6. 3 웹 로봇 예광탄 구현

6. 3 웹 로봇 예광탄 구현 Main 폼에 웹 수집기 개체를 참조하는 멤버 필드를 선언합니다. WebCollect wc = null; Main 폼에 Load 이벤트 핸들러를 추가합니다. private void MainForm_Load(object sender, EventArgs e) Main 폼이 로드할 때 웹 수집기 개체를 생성하고 수집 대상 사이트 목록을 갱신하는 작업을 수행합니다. wc = new WebCollect(); UpdateCandidate(); 그리고 웹 페이지 수집 이벤트 핸들러를 추가합니다. wc.WebPosted += new WebPostedEventHandler(wc_WebPosted); 수집 대상 사이트 목록을 갱신하는 메서드를 작성합시다. private void UpdateC..

6.2.5 WebPostedEventArgs 구현

6.2.5 WebPostedEventArgs 구현 웹 페이지 수집 요청의 결과를 통보하는 방법은 이벤트 방식을 사용합시다. 이를 위해 웹 페이지 수집 결과를 인자로 하는 대리자를 정의합니다. 이벤트 방식을 사용하는 대리자는 일반적인 이벤트 핸들러의 구조를 사용합시다. 일반적으로 이벤트 핸들러는 이벤트를 발생한 개체와 이벤트를 처리하기 위해 필요한 인자를 받습니다. 따라서 여기에서도 이벤트를 발생한 개체와 이벤트를 처리하기 위한 인자를 입력 인자로 받는 대리자를 정의합시다. public delegate void WebPostedEventHandler(object sendor,WebPostedEventArgs e); 웹 페이지 수집 결과 이벤트 인자 형식을 정의합시다. public class WebPoste..

6.2.1 WebCollect 구현

6.2.1 WebCollect 구현 이제 웹 로봇 라이브러리에 필요한 형식을 구현합시다. 먼저 관리자 응용인 WSE Manager로 웹 수집을 가동하거나 멈추게 하거나 수집 주기 등을 설정할 때 사용하는 WebCollect 형식부터 구현합시다. public class WebCollect WebCollect에서는 수집 주기와 상대적 깊이, 주기적인 수집을 위한 타이머가 필요합니다. 수집 주기의 최소값과 상대적 깊이의 최대값을 상수로 정의합니다. 그리고 타이머 개체를 참조할 멤버 필드를 선언하고 상대적 깊이를 설정할 멤버 필드를 선언합니다. 상대적 깊이의 초기값은 상수로 정의한 최대값으로 설정할게요. public const int min_interval = 5000; public const int max_d..

5.1.1 ExistedCandidate 저장 프로시저

5.1.1 ExistedCandidate 저장 프로시저 ExistedCandidate 저장 프로시저는 입력 인자로 사이트 주소와 OUTPUT 형태의 인자로 존재 여부가 있습니다. CREATE PROCEDURE dbo.ExistedCandidate ( @Url varchar(200), @Existed int OUTPUT ) 존재하는지 확인은 Select 쿼리문의 결과를 이용합시다. SQL 쿼리문을 사용해 본 적이 없다면 별도의 레퍼런스를 통해 학습이 필요합니다. if exists (select * from CandidateTable where Url=@Url) begin set @Existed = 1 end else begin set @Existed = 0 end 다음은 ExistedCandidate 저장..

[프로젝트 개발 공정 가이드] 2. 프로젝트 개발 공정 개요

2. 프로젝트 개발 공정 개요 비지니스 프로젝트를 개발할 때 어떠한 공정으로 진행하는 것인지 연구하는 곳은 많습니다. 그리고 이를 특정 개발 방법론으로 소개를 하는데 여기에서는 CBD 개발 방법론을 기본으로 소개할 것입니다. CBD 개발 방법론은 어러 개의 서브 프로젝트를 컴포넌트화하여 이들 사이의 관계를 정의하여 개발하는 방법론입니다. CBD 개발 방법론으로 프로젝트를 진행할 때 중간 결과물들은 CASE 도구(Rose, Together, StarUml,...)를 사용하는 부분이 생깁니다. 일부 개발자들은 CASE 도구에 의해 만드는 중간 결과물을 상사에게 보여주기 위한 것이며 실효성이 떨어져서 전체 비용을 증가시킨다고 생각하기도 합니다. 하지만 이는 개발 공정을 적용하는 과정에서 왜 그러한 것들을 만드..

반응형