12주 실습강의 2009. 1학기, 소프트웨어 설계 및 실험(Ⅰ).

Slides:



Advertisements
Similar presentations
Chapter 2. Text Patterns 2.1 ~ 2.3 서울시립대 전자전기컴퓨터공학과 데이터마이닝 연구실 G 노준호.
Advertisements

1/37 한글에는 전문적인 문서 편집을 위한 고급 기능이 있다. 문서를 편리하게 수 정할 수 있도록 도와주는 찾기 / 찾아 바꾸기, 다른 위치로 이동할 수 있는 책 갈피와 하이퍼링크에 대해 알아보자. 그리고 자주 사용하는 서식을 미리 정 해 놓고 쓰는 스타일 활용법과 스타일이.
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
한강 공원 Hangang Park 박효진 정혜랑.
오토베이스9 태그 편집기를 이용한 태그 편집 오토베이스 교육센터.
컴퓨터와 인터넷.
MS SQL Server 학기, 소프트웨어 설계 및 실험 ( Ⅰ )
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
Database Laboratory, Hong Ik University
컴퓨터의 응용-검색엔진 <컴퓨터의 응용> 교수명: 용환승 공학부, 이한아
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
Entity Relationship Diagram
주)INVENTORNICS 노창배 소프트웨어 김 경 순
연결리스트(linked list).
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
6장 Mysql 명령어 한빛미디어(주).
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
PySpark Review 박영택.
컴퓨터 프로그래밍 : 실습3 2장 데이터와 식.
5장 Mysql 데이터베이스 한빛미디어(주).
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
C#.
웹 어플리케이션 보안 2016년 2학기 3. Mongo db.
Method & library.
자바 5.0 프로그래밍.
인터넷응용프로그래밍 JavaScript(Intro).
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
27장. 모듈화 프로그래밍.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
영업관제.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
USN(Ubiquitous Sensor Network)
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
MovieStory 작성자 홍성혁 소속 전자전기컴퓨터공학부 학번
ARM Development Suite v1.2
Chapter 02. 자바 기본 문법.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
텍스트 분석 기초.
데이터 동적 할당 Collection class.
13주 실습강의 학기, 소프트웨어 설계 및 실험(Ⅰ).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 1 단위, 물리량, 벡터.
Chapter 10 데이터 검색1.
12 그리드 시스템.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
Numerical Analysis Programming using NRs
7장 테이블 조인하기.
제 4 장 Record.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Harrison’s Online 이용 매뉴얼
 6장. SQL 쿼리.
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
교과서 78쪽 학습 목표 정보 관리의 필요성을 이해할 수 있다. 데이터베이스의 개념과 필요성을 이해할 수 있다.
생산성 증대 효율성 향상 측정 수행 능력.
Presentation transcript:

12주 실습강의 2009. 1학기, 소프트웨어 설계 및 실험(Ⅰ)

정보 검색(Information Retrieval) 데이터 검색 구조가 있는 데이터(structured data)의 집합에 대하여 정확한 질의어(query)를 사용하여 조건에 맞는 결과 집합을 얻는 것 데이터베이스 검색 문서 검색 구조가 없는 데이터(unstructured data)에 대하여 자유로운 형식의 모호성있는 질의어를 사용하여 관련된 결과 집합을 얻는 것 구글, 네이버 등의 검색엔진 앞으로 3주 동안의 실습은 문서 검색을 대상으로 함 대량의 문서 확보가 힘들기 때문에 실습 3주차에 만들었던 게시판을 검색 대상으로 함

용어(슬라이드 노트 참고) INDEX TERM DOCUMENTS INVERTED INDEX/FILE DICTIONARY docID DOCUMENT FREQUENCY TERM FREQUENCY POSTING Index - 색인. 검색을 효율적으로 하기 위한 용어의 리스트와 같이, key(검색에서는 각각의 Term이 된다.) - 본체의 어드레스 위치(물리적, 상대적 위치)를 쌍으로 갖고 데이터의 본체를 검색하기 위한 항목을 의미한다. Term - 검색에서는 인덱스를 구성하는 하나의 unit(=key)을 의미한다. 일반적으로 단어(words)가 이에 해당하지만, 'Hong Kong'과 같이 Word가 항상 Term이 되지는 않는다. Documents - 검색의 대상이 되는 기본 단위를 의미한다. 이것은 파일 하나, 책 전체가 될 수도 있고, 문서 안의 한 단락, 한 문장이 될 수도 있다. Inverted Index / File (역파일) - Incidence Matrix의 경우 Term - Documents의 관계를 표현하기 위해 전체 Term 수 x Dictionary 수 크기의 공간을 확보해야 한다. 이 데이터는 매우 Sparse 하기 때문에, 공간적 비용의 낭비가 심하다고 할 수 있다. 이를 대신하기 위해, Documents - Term의 목록이 아니라 그 반대, 즉 Term에 대해 Documents 들을 참조하게 한 인덱스다. Dictionary - Data Structure의 입장에서 Term(=key)-값으로 이루어진 목록을 자료 구조 측면에서 말하는 것. docID - 문서 ID, Document ID로, 검색에서 연산 및 결과 반환에 사용되는 하나의 고유값이라고 볼 수 있다. docID는 검색의 범위를 어떻게 정의하느냐에 따라(= 검색을 위한 대상의 granularity를 결정해야 한다.) 파일, 책, 문단, 문장에 각각의 docID가 부여될 수 있다. Document Frequency - Term이 나타나는 문서의 빈도. Collection Frequency와 달리, 해당 문서에서 Term이 여러 번 나오더라도, 전체 Collection(말뭉치)에서 하나의 문서에만 나올 때, 그것의 Document Frequency는 1이 된다. Term Frequency - 한 문서에서 Term이 나타나는 빈도. Posting - Inverted Index의 구성요소로, 특정 Document에서 Term이 발견될 경우, 이를 이후에 참조할 수 있도록 기록한 것.

간략한 과정 문서 수집 문서 전처리 문서 분석 문서 색인 역파일 생성 역파일 저장 문서 검색 수작업, robot 색인어 사전 구축, 색인어와 문서 id 부여 역파일 생성 색인어 기준으로 각 문서 내용 정렬 문서를 색인어별로 merge 역파일 저장 문서 검색 질의어 색인 질의

Inverted index For each term T, we must store a list of all documents that contain T. 2 4 8 16 32 64 128 3 5 13 21 34 1 Posting Dictionary Brutus Calpurnia Caesar Postings lists

Friends, Romans, countrymen. Inverted index 생성 Tokenizer Token stream. Friends Romans Countrymen Linguistic modules Modified tokens. friend roman countryman Indexer Inverted index. 2 4 13 16 1 More on these later. Documents to be indexed. Friends, Romans, countrymen.

Indexer steps 1 Sequence of (Modified token, Document ID) pairs. Doc 1 I did enact Julius Caesar I was killed i' the Capitol; Brutus killed me. So let it be with Caesar. The noble Brutus hath told you Caesar was ambitious

Indexer steps 2 Sort by terms. Core indexing step.

For document’s ranking Indexer steps 3 Multiple term entries in a single document are merged. Frequency information is added. Why frequency? For document’s ranking Term Frequency(tf)가 높으면 해당 문서에 단어가 여러 번 나타났다는 것이므로 문서의 중요도는 올라가게 된다. Document Frequency(df)가 높으면 많은 문서에 자주 나타나는 단어이므로 중요도는 낮아진다.

Indexer steps 4 For searching Inverted index – in hard disk Dictionary – in main memory

게시판 검색 일반적인 게시판 검색 실습용 게시판 검색 데이터 검색 데이터베이스에서 SQL의 like 등의 문법으로 검색 문서 검색 Inverted index를 이용한 검색 그러나 일반적인 문서 검색과는 차이가 있음

실습 - 검색 문서 수집 문서 전처리, 분석 문서 색인 역파일 생성, 저장 문서 검색 검색범위는 게시판 제목으로 제한 간단하게 공백(white space) 단위로 tokenize 문서 색인 다음 주 실습에서... 역파일 생성, 저장 DB에 저장, Term Frequency는 사용하지 않음 문서 검색 질의어 색인 : 다음 주 실습에서... 질의 : 공백(white space)을 AND연산하여 검색, ‘|’(bar)를 OR연산하여 검색

실습 - DB 스키마 InvertedIndex ( term#, postingslists, df ) Name Type Data(예) term nvarchar(50) – string 실버라이트 posting_list nvarchar(max) – string 1 5 17 (숫자 사이는 white space) df int 3 ExpBoard ( index#, writer, password, title, contents, read, date ) - 실습 3주차와 동일 - ‘#’은 key를 의미함 Term을 key로 두어 검색을 빠르게 한다.(MS SQL 내부적으로 binary search를 할 수도 있고, hash를 쓸 수도 있고,…)

실습 - Code 문서 수집 ~ 역파일 저장 공백 단위로 tokenize Dictionary에 term이 있을 경우 공백으로 docID 구분 Dictionary에 term이 없을 경우

실습 - Code 문서 검색 Term(검색어)에 대한 Postings list(게시판 index번호 목록)를 반환 찾기 못할 경우 -1을 반환

실습 - Code 문서 검색 공백 단위로 tokenize 각각의 index로 data(document)를 가져옴

실습 - 해결해야 할 문제 2개 이상의 term들로 이루어진 질의 Document의 수정, 삭제 시 AND연산, OR연산 등 Document의 수정, 삭제 시 DB에서 삭제(?) Document 우선 순위 적용 Term Frequency의 사용(DB 스키마 수정 필요) Document, 질의어의 색인 다음 주 실습에서 ... 검색된 부분의 하이라이팅 검색 속도 글쓴이, 본문 등의 검색 그 외 여러가지

실습 – AND 연산 오늘의 실습 내용 위의 예에서 질의어가 ‘Brutus Calpurnia’이면 Brutus와 Calpurnia의 AND연산을 통해 docID가 2와 8인 것을 찾아낸다. 2 4 8 16 32 64 128 3 5 13 21 34 1 Posting Dictionary Brutus Calpurnia Caesar Postings lists

실습 – 추가구현(OR 연산) 2 4 8 16 32 64 128 3 5 13 21 34 1 Posting 위의 예에서 질의어가 ‘Brutus|Calpurnia’이면 Brutus와 Calpurnia의 OR연산을 통해 docID가 1,2,3,4,5,8,13,16,21,32,34,64,128인 것을 찾아낸다. Dictionary Brutus Calpurnia Caesar Postings lists