TopicMap 검색시스템 Topic Map 기반검색솔루션 EZSEARCH 2009.11.27 1
순서 배경 환경변화 개발배경 솔루션개요 기본개념 시스템특징 솔루션세부사항 결론 주요기능 제품구성 활용 아키텍처 전망과중기계획 회사소개 2
배경 3
환경변화 어제, 오늘그리고내일 4
환경변화 Semantic Web, Ontology & Topic Maps 개념 (Tim Berners-Lee, J.Handler & Ora Lassila, 2001) A document or file that formally defines the relationships among terms. Taxonomy, Inference rules Knowledge Representation Topic Maps 주요개념 : Topics, Associations, Occurrences 현행표준 ISO/IEC 13250 TMRM 과 TMDM XML Serialization 포맷 : XTM 1.0 (2000) 및 XTM 2.0(2006) 기타의 serialization formats: 관련표준 CXTM, CTM, GTM, 기타 (LTM, AsTMa, ) Topic Maps API: TMAPI (2004) 및 TMAPI 2.0 Query 표준 : ISO 18048: TMQL Constraint 표준 ISO 19756: TMCL - Topic Maps Constraint Language 이전의표준 : HyTime (1992), Earlier versions of ISO 13250. 5
개발배경 개발배경 1. 검색의중요성과개선의시급성 ( 원하는정보를정학하게찾아주는검색시스템필요 ) 2. 데이터관리 기존데이터, 대용량데이터 데이터베이스 3. 개발생산성과이용자편의성 AJAX 와 OOP 기법의활용 4. Topic Map 의진화 Domain 별특화 접근방법 Topic Map 개념을검색 Index 에적용 Ubiquitous Semantic Web ( 정보자원자체의구조화 ) 시소러스검색 USE, AS-IS, BT, NT, RT 기반 시맨틱웹검색 Domain 별개념관계 Topic Map 에의한검색 검색을위한특별한처리 개념간관련된어휘는포함하고있으나, 개념사이의관계정의가없음 구축된 DB를검색에활용하고자할때통합된동의어ㆍ관련어사전처리가복잡 Semantic Web 기반사전 개념어, 인명, 지명등 Domain 별각각의 Topic 구조로개념사이의관계정의가능 구축된 DB를검색에활용하고자할때동의어ㆍ관련어사전처리 Topic Keyword DB 생성에의해기존 DB의수정없이성능구현가능 신규 DB를용이하게 Semantic Web 기반으로구축 기존접근방법 새로운접근방법 6
솔루션개요 7
기본개념 신개념검색서비스 온톨로지방식적용 Ubiquitous Semantic Web ( 정보자원자체의구조화 ) Topic Map 기반 Index 구축 Web 3.0 TopicMap 기반의키워드추천검색 이용자가찾고자하는개념제시 이용자가찾고자하는개체 ( 상품명, 인물, 지명, 계정과목, 기술등 ) 제시 검색정확성, 검색속도의획기적향상 8
시스템특징 최종사용자편의성및검색성능고도화 기존검색개념과는전혀다른의미기반의검색기능구현 시스템및 DB 최적화 Taxonomy 에의해 TM Keyword 의우선순위 (weight) 설정 경제성 일정과시간의단축 1~3 개월내모든작업완료 향후의데이터변화및확장에대해사용자가직접작업또는작업대행 기존시스템 / 데이터와의통합 어떤시스템, 어떤환경에도적용가능 자체의데이터베이스 + 기존 DB 통합적용 Proven Technology, Scalability Web 기술, OOP 기술, AJAX Unix/Linux/Windows Server 및 Apache/IIS 등이용가능 IE, Firefox, et 활용분야 국가 / 공공기관의지식검색 쇼핑몰의상품검색 지자체의홈페이지 / 민원 / 문서검색 박물관의유물정보검색 도서관의목록정보검색 기업 / 단체의회계자료검색 9
주요기능 Taxonomy 관리시스템 Topic Taxonomy 는관리자가직접구축할수있도록 Topic 추가, 수정, 삭제기능이제공되며, 기본 Topic Taxonomy 제공이가능함 특허 Domain ROOT A 생활필수품 B 처리조작, 운수 C 화학, 야금 D 섬유, 지류 A01 농업, 임업 A21 가루반죽 A22 도살, 육처리 Topic Taxonomy 구조 ( 특허 Domain 의예 ) A01B 토작업 A01C 식부, 파종 A01D 수확, 예취 A01F 탈곡 Hierarchy( 분류 ) Topic (Conceptual) Hierarchy 구조로되어, 다른분류체계로쉽게 Migration 가능. 주제를 Node 로하여각 Node 별로한자, 동의어, 관련어, 파생어등의 Lexicon 으로연결. Lexicon( 사전 ) 이지메타가보유한각종사전데이터베이스를기반으로동의어 / 유의어확장검색에적합하도록구축 한국어어휘처리과정의최대난점중하나인동음이의어, 한자어문제를용도에맞게처리할수있도록독자적인스키마구조를갖고구축. 10
Topic Keyword 생성 Topic Keyword 생성은기보유 DB 의인덱스와 Topic 사전을대조하여 Topic Keyword DB 를생성하는구조. 하나의검색어에대응하는 Keyword 가많을경우자체 Rule 에의해중요도를계산함 기존 Legacy DB KEY SUBJECT ITEM 0001 열교환기설계와열적 김석권 Topic Taxonomy Mapping Table TOPIC SYNONYM High Level/Lower Level 전열 열교환, 열복사 WORD REFERING KEYWORD ITEM KEY 전열열교환, 열복사 열교환기설계와 김석권 0001 Topic Keyword DB 11
키워드추천시스템 사용자의검색어를실시간으로분석하여적합한키워드를제시하는기능 검색조건입력추천 Keyword 제시검색 Keyword 선택 관리자 등록관리 Legacy DB Topic 사전 추출변환매핑 Index1 Index2 Topic Keyword DB 검색엔진 검색인터페이스 이용자 검색결과목록상세정보보기원문보기새로운 Topic 검색 12
제품구성 EZ Search 토픽 ( 주제어 ) 검색 검색창에검색어를입력하면, 검색창하단의 추천키워드창 을통해의미별로관련된개념을보여주고, 추천키워드창 에서개념을선택하면선택한개념을 OR 검색할수있도록검색식을자동완성함 이용자가검색창에검색어를입력하면글자를분석하여자동으로검색어와맞는적합한키워드를제시. 또한원하는키워드를여러개선택하면그중하나라도포함되어있는사전을검색. 1. 추천키워드제시기능 - 포털사이트의자동완성과달리글자가일치하는것뿐만아니라의미상연관되어있는단어까지제시. 2. 검색기능 - 키워드창에서체크한단어를어휘사전에서검색. 3. 기능끄기 / 기능켜기 - 토픽서치를이용하고싶지않을때는 " 기능끄기 " 를선택가능. 13
EZ Book Search ( 도서검색 ) 검색창에검색어를입력하면, 검색창하단의 추천키워드창 을통해검색어와관련된도서명을보여주고, 추천키워드창 에서도서를선택하면선택한도서로검색식을구성하고, 그도서들의상세정보로이동함 이용자가검색창에검색어를입력하면검색어가포함되어있는도서명을자동으로검색합니다. 검색어가포함된도서명이없을경우에는이지메타의시소러스사전을적용하여관련된도서명을검색. 1. 추천도서제시기능 - 포털사이트의검색어자동완성과달리도서명과저자명을키워드로제시. 2. 추천도서검색기능 - 키워드창에제시된도서명중에서원하는도서를선택하여검색. 3. 여러개선택 - 2 개이상의도서명을선택하여그에대한서지정보를한꺼번에볼수있는기능. 14
EZ Indexer ( 인덱스자동생성기 ) 15
17
18
활용 사이트검색 (Site Search) 검색창에검색어를입력하면, 검색창하단의 추천키워드창 을통해실시간으로웹사이트의관련메뉴, 첨부파일, 웹페이지정보를보여주고, 원하는페이지로이동 검색어를입력하자마자실시간으로검색어와관련된정보를보여줌. 건물 1. 관련메뉴를먼저표시 2. 관련민원서식을두번째로제시 3. 관련웹문서를세번째로제시 19
도서검색 (Book Search) 도서명, 저자, 출판사등어떤임의의개념을을검색어로제시할때 Topic Map 에의해관련된도서의정보를제시하고, 해당항목의상세정보로이동하는기능을제공. 지적재산을키워드로입력하면관련도서명을추천키워드로치환하여제시함 원하는도서명을선택하면해당도서의상세정보를제시함 20
다국어검색 (Multi-language Search) 이용자가검색어를입력하면그에해당되는한국어, 영어, 일본어동의어를동시에키워드로제시하여다양한언어로표현된문서들을동시에검색가능 < 사례 1> 이용자가임의의단어를입력하면그에해당되는영어와일본어또는한국어단어를자동으로검색하여키워드로제시. 이용자는원하는키워드들을선별조합하여검색가능. < 사례 2> 검색창에검색어를입력하면, 검색창하단의 추천키워드창 을통해실시간으로영어와일본어를보여줌으로써, 대역어사전으로서강력한성능발휘 21
기술검토 아키텍처 검색서비스는 Taxonomy 관리시스템과 Keyword 추천시스템으로구성되어있으며, Taxonomy 관리시스템은기존데이터베이스를 Topic Taxonomy 로분석하여 Topic Keyword DB 를생성하므로현재사용중인기존 DB 자원의변경없이 Topic Keyword DB 생성에의해서비스실시가능 Keyword 는사용자의검색어를분석하여적합한검색어로제시된 Topic 을말함 관리자기능 이용자기능 시스템관리 Dictionary 관리 Index 관리 Taxonomy 관리 직접검색 간접검색 ( 계획 : Ontology, Agent SW) Taxonomy 관리시스템 Keyword 추천시스템 Topic/ Taxonomy (Index 와대조하여 Topic Keyword DB 생성 ) Taxonomy Topic Dictionary 엔진 (MP3/AJAX) 자체검색 Legacy 검색엔진 접근 / 검색대상지식자원 Domain 별데이터베이스 DB1 DB2 DB3 정보시스템 ERP/CRM/ KMS 기관별정보자원 DW/ OLAP SOA 접근 / 검색대상지식자원 네트워크 / 웹인프라 (LAMP/.NET/Java) 전산인프라 22
23
24
RDB vs. XML (RDF/Native Ontology) RDB 활용 Topic Maps 주요특징 DB 기술 : Normalization, Join, Highly concentrated Performance Integrity checking Partitioning, Cluster/Replication, 분산 DB, Federated DB 단점 Structured Data 중심 구현 : 성숙한기술 Oracle, SQL Server, MySQL 의견 Relation 기술 RDB 활용 RDF RDB RDF Flat file XML(RDF/ ) 기반 Topic Maps 주요특징 Semantic precision Fully-declared documents Knowledge representation & reasoning system Ontology Model relations as only binary 단점 Additional entities 필요 Verbose (for human readability) 구현 : XML DB RDB 활용 ( 구현방법은각기다름 ) 의견 RDF to XML DB DB Gateway 활용
DB 차원 MySQL, SQL Server, Oracle 에서의 XML API 각기다른접근법!! XML DB (RDF DB) 프로그래밍언어 (framework) RDF library for C++ C#/.Net RDF library for Java Jena Semantic Web Framework RDF API for Python, PHP 다양한 open source project 예 : RDF in MySQL Tags RDF/OWL 등의 tag 데이터를일반 DB schema 로자동 validate 하지않는다. MySQL 은 XML 을 string 데이터로처리 따라서 XML functions (EXTRACTVALUE or UPDATEXML) 등을이용 RDFLib = a Python library for working with RDF, a simple yet powerful language for representing information. http://www.rdflib.net/ tell MySQL to create the Rdf database http://www.w3.org/1999/02/26-modules/user/rdfsql-howto.html#createdb DMOZ RDF Parser http://sourceforge.net/projects/suckdmoz/
결론에대신하여 중기전망 핵심중하나는 Data Persistency & Data Integration 의문제! Structured (Non-native Topic Map) Data SQL Unstructured (Native Topic Map) Data TMQL
Towards web 4.0: The Meta Web 28
감사합니다. 29
보충자료 30
Topic Maps 표준 SC34/WG3 ISO/IEC JTC1/SC34/WG3 3 working groups WG1 deals with markup languages, WG2 with information presentation, WG3 with information association. ISO 8879 (SGML) 및관련표준기반의정보관리및교환표준아키텍처 : 1. Information linking and addressing 2. Time-based information management 3. Representation of knowledge structures, indexes, etc. 4. Management of behavioral components in interactive documents Standards for which WG3 is responsible include: HyTime (ISO/IEC/10744) Topic Maps (ISO/IEC 13250) ISMID (ISO/IEC 13240) HTML (ISO/IEC 15545) ISO 13250-1: Topic Maps Overview ISO 13250-2: Topic Maps Data Model (TMDM) ISO 13250-3: Topic Maps XML Syntax (XTM 2.0) ISO 13250-4: CXTM (Canonicalization) ISO 13250-5: Topic Maps Reference Model (TMRM) ISO 13250-6: CTM (Compact Notation) ISO 13250-7: GTM (Graphical Notation) ISO 18048: TMQL ISO 19756: TMCL
주요 tools TM4J a topic map processing tool-kit written in Java. http://www.tm4j.org/. The GooseWorks Topic Map Toolkit a topic map processing "engine" and API in C, with a wrapper API also available in Python. http://www.goose-works.org/ TMTab a plug-in for Protégé-2000, an ontology creation tool, which enables an ontology created with Protégé to be exported using XTM syntax. http://www.techquila.com/tmtab.html Nexist http://nexist.sourceforge.net/. SemanText developed in Python. http://www.semantext.com/. 회사 www.ontopia.net www.empolis.net www.infoloom.com www.mondeca.com
Topic Map 과 B2B Ontology 를이용한 B2B 데이터상호운용성에대해 Topic Map 은해결책을제시해줄수있다. == Business Maps 예 : xcbl FinXML FpML OASIS Universal Business Language (UBL) TC
전형적인 Back-Office Appl. Scenario Figure 9.1. Typical back-office application. Figure 9.2. Adding a client-side conversion layer.
Middleware and XML Application Servers XML-Enabled Databases Adding an XML gateway server. Application using XML-aware database and drivers.
Native XML Database Application interfacing with native XML server.
Unstructured 및 Structured 데이터 Structured data Unstructured data (Semi- ) Totally unstructured 예 transactions DB Keys, Attributes Documents, Report E-mails, Spreadsheets Medical records (Legal) contracts Bank checks 특징 Actomicity, Repeatability, Predictability Lack of. Formal/informal. Jargon, Image/video/ Audio 주요분석도구 BI/OLAP Semantics NLP Search engine Textual Analytics 목표 Precision (tradeoff) New vista 이들모두를 structured environment 에모아서분석이들모두를통합하여보다효과적인의사결정에활용 ( 효과 ) 표준 / 개방형 SW, 기검증된각종기술활용,
Create a store of unstructured data whole new possibilities for decision making!! simple search indirect search of alternate terms indirect search of related terms permutations of words 38
Textual Analytics Architecture Access 통합 vs. Foundation 통합
Textual Integration 의문제 Relevance 를가진 document 선별 Removing stop words from the unstructured environment which are extraneous to the meaning of the text
형태소분석 / 어근축약 Resolving synonyms
Resolving homographs 단어와 phrase 의처리
Allowing for multiple spellings for the same name or word Negativity exclusion, Punctuation 및대소문자 ( 영문 ) 처리 문서병합 (Document consolidation) Themes of data
Semistructured Data 의처리 2-step process Output 은 structured (or semistructured) record
Data Model 관점에서의 Metadata A good way of approaching metadata both internal and external and unstructured data environment is through the data model. A data model is merely another form of meta data The analyst selects the few things that are relevant to the unstructured data that is at hand. The data model is created for whatever the analyst has chosen. Then the data model is used to produce external categories of data.
2 가지유형의데이터모델 External and Internal Internal data model; Looking at the data that exists in and is described in the text External data model; How is the Internal Data Model Created? Creating the External Data Model Using the Generic Data Models
Semantic Web 에서의데이터모델 Tabular data Spreadsheets Table A table of restaurants Restaurant Address Cuisine Price Open Deli Llama Peachtree Rd Deli $ Mon, Tue, Wed, Thu, Fri Peking Inn Lake St Chinese $$$ Thu, Fri, Sat Thai Tanic Branch Dr Thai $$ Tue, Wed, Thu, Fri, Sat, Sun Lord of the Fries Flower Ave Fast Food $$ Tue, Wed, Thu, Fri, Sat, Sun Marquis de Salade Main St French $$$ Thu, Fri, Sat Wok This Way Second St Chinese $ Mon, Tue, Wed, Thu, Fri, Sat, Sun Luna Sea Autumn Dr Seafood $$$ Tue, Thu, Fri, Sat Pita Pan Thunder Rd Middle Eastern $$ Mon, Tue, Wed, Thu, Fri, Sat, Sun Award Weiners Dorfold Mews Fast Food $ Mon, Tue, Wed, Thu, Fri, Sat Lettuce Eat Rustic Parkway Deli $$ Mon, Tue, Wed, Thu, Fri RDB Relational Algebra
Evolving and Refactoring Schemas Table A new dataset of bars Bar Address DJ Specialty drink The Bitter End 14th Ave No Beer Peking Inn Lake St No Scorpion Bowl Hammer Time Wildcat Dr Yes Hennessey Marquis de Salade Main St Yes Martini Linking bars to the existing schemas Normalized schema that separates a venue from its purposes 복잡한 Schemas Big schema
Getting it right the first time Venue schema with completely custom properties Venue data in more flexible form Adding a concert venue without changing the schema
Semantic 관계 Parameterized Venues Self-describing data The metadata of the relational schema, describing which columns go together to describe a single entity, has become part of the data itself. (Semantic 데이터모델링 ) Flexible schemas where the relationships are described by the data itself. A well-designed application should be able to seamlessly integrate new semantic data, and semantic datasets should be able to work with a wide variety of applications.
의미의표현 Sentence diagram showing a subject-predicate-object relationship 예 : Movie Data
Building a Simple Triplestore Indexes class SimpleGraph: def init (self): self._spo = {} self._pos = {} self._osp = {} The add and remove Methods def add(self, (sub, pred, obj)): self._addtoindex(self._spo, sub, pred, obj) self._addtoindex(self._pos, pred, obj, sub) self._addtoindex(self._osp, obj, sub, pred) def _addtoindex(self, index, a, b, c): if a not in index: index[a] = {b:set([c])} else: if b not in index[a]: index[a][b] = set([c]) else: index[a][b].add(c) def remove(self, (sub, pred, obj)): triples = list(self.triples((sub, pred, obj))) for (delsub, delpred, delobj) in triples: self._removefromindex(self._spo, delsub, delpred, delobj) self._removefromindex(self._pos, delpred, delobj, delsub) self._removefromindex(self._osp, delobj, delsub, delpred)