KR101225333B1 - 구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법 - Google Patents
구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법 Download PDFInfo
- Publication number
- KR101225333B1 KR101225333B1 KR1020100112703A KR20100112703A KR101225333B1 KR 101225333 B1 KR101225333 B1 KR 101225333B1 KR 1020100112703 A KR1020100112703 A KR 1020100112703A KR 20100112703 A KR20100112703 A KR 20100112703A KR 101225333 B1 KR101225333 B1 KR 101225333B1
- Authority
- KR
- South Korea
- Prior art keywords
- tree
- pattern
- expression
- node
- matching
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Computational Biology (AREA)
- Operations Research (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Algebra (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법이 개시된다. 다양한 구조의 패턴을 직관력 있게 표현할 수 있고, 패턴-매칭의 복잡성을 크게 감소시킬 수 있는 새로운 트리 패턴 표현식(Tree Pattern Expression, TPE) 및 새로운 트리 패턴 표현식을 이용한 패턴-매칭 알고리즘을 개시한다.
Description
본 발명의 실시예들은 구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법에 관한 것이다.
다수의 구문론적으로 분석된 텍스트 코퍼스들(corpora)의 일반적 효용은 코퍼스들에서 원하는 정보를 효과적으로 추출하기 위해 점점 더 중요해지고 있다. 많은 종래기술들에서는 원하는 텍스트 부분들의 공통된 구조적 패턴을 표현하는 관계적 술어(relational predicate)의 구조적 형태로서 표현된 쿼리에 문장 각각의 파스 트리(parse tree)를 매칭함으로써, 원하는 텍스트 부분을 추출한다. 비록 이러한 종래기술들이 간단한 쿼리들의 제한된 타입에는 유용할 수 있으나, 이러한 종래기술들은 쿼리 표현(query formulation)이 때때로 원하는 텍스트 부분의 복잡한 패턴에 대해 매우 복잡해지고, 텍스트 코퍼스에서 복잡한 문장 구조의 다양성을 고려할 때 쿼리 매칭 작업의 시간-소비가 기하급수적으로 증가할 수 있기 때문에 전반적으로 매우 효율적이지는 않다.
예를 들어, 기존의 종래기술에서 사용하는 트리 패턴 표현식은 트리를 관계 술어로 분해하여 관계 집합 형태의 식으로 표현한다. 또한 이에 대한 트리 패턴 매칭 알고리즘은 관계 집합의 원소인 모든 관계 술어 각각에 대하여 매칭을 수행하고 그 결과에 대하여 조인(recursive join) 연산을 재귀적으로(recursively) 시도하는, 계산량이 매우 큰 방식을 취하고 있다. 이러한, 관계형 데이터베이스를 기반으로 하는 종래의 트리 패턴 표현식 및 트리 패턴 매칭 알고리즘은 트리 패턴 매칭을 위한 계산량이 트리 패턴의 크기에 대하여 기하급수적으로 증가하게 되어 경우에 따라서는 매칭을 수행하는데 걸리는 시간이 비현실적으로 길어지는 원천적인 문제를 가지고 있다.
자연어 기반 정보 검색, XML 기반 텍스트 정보 추출, 객체 기반 영상 인식, 바이러스 코드 탐지 시스템 등과 같이 대규모 또는 실시간 트리 패턴 매칭을 필요로 하는 다양한 소프트웨어 시스템의 수행 속도를 현저히 증대시킬 수 있어, 비현실적인 수행 시간 문제 때문에 유용성에 명확한 한계가 있었던 종래 시스템의 성능 및 확장성을 획기적으로 향상시킬 수 있는 시스템 및 방법이 제공된다.
정의 1, 정의 2 및 룰 1 내지 룰 6을 이용하여 구조적 패턴을 표현하는 트리 패턴 표현식을 생성하거나 또는 트리 패턴 표현식을 이용하여 구조적 패턴에 대한 패턴-매칭을 수행하고, 정의 1은 트리에서 트리의 디스조인트(disjoint) 서브트리(또는 프로퍼(proper) 서브트리)의 시퀀스가, 만약 시퀀스의 모든 리프(leaf)들의 시퀀스(왼쪽에서 오른쪽)가 트리의 모든 리프들의 시퀀스(왼쪽에서 오른쪽)와 동일하다면, 트리의 컷임을 정의하고, 정의 2는 룰 1 내지 룰 6 중 적어도 하나의 룰에 의해 정규 표현식들로부터 얻어질 수 있는 문자열은 트리 패턴 표현식임을 정의하고, 룰 1은 부호 <>는, 임의의 비어있지 않은(non-empty) 트리와 일치(match)하는 트리 패턴 표현식임을 규정하고, 룰 2는 만약 널(null) 문자열이 아닌 r이 정규 표현식이면, <r>은, 루트가 r에 의해 매칭되고 자식이 없는 트리와, 일치하는 트리 패턴 표현식음을 규정하고, 룰 3은 만약 r이 *로 시작하지 않는 트리 패턴 표현식이면, !r은, r에 의해 일치되지 않는 비어있지 않은 트리와, 일치하는 트리 패턴 표현식임을 규정하고, 룰 4는 만약 r이 *로 시작하지 않는 트리 패턴 표현식이면, *r은, 비어있는(empty) 트리 또는 각각이 r에 의해 일치되는 컨세큐티브(consecutive) 트리들과, 일치하는 트리 패턴 표현식임을 규정하고, 룰 5는 만약 널 문자열이 아닌 r0가 정규 표현식이고, r1, ..., rk(k≥1)가 모두 트리 패턴 표현식이면, <r0, r1, ..., rk>는, 특정 트리와 일치하되, 특정 트리는 r0가 특정 트리의 루트와 일치하고 r1, ..., rk가 특정 트리의 루트의 모든 직속 서브트리와 순서대로 일치하는, 트리 패턴 표현식임을 규정하고, 룰 6은 만약 널 문자열이 아닌 r0가 정규 표현식이고, r1, ..., rk(k≥1)가 모두 트리 패턴 표현식이면, {r0, r1, ..., rk}는, 특정 트리와 일치하되, 특정 트리는 r0가 특정 트리의 루트와 일치하고, r1, ..., rk가 T1, ..., Tl와 순서대로 일치하는 컷 CT( = T1, ..., Tl)가 존재하는, 트리 패턴 표현식임을 규정하는, 시스템 및 방법이 제공된다.
말이나 글 또는 숫자를 묶기 위하여 사용하는 부호를 이용하여 임의의 비어있지 않은 트리를 표현하는 제1 트리 패턴 표현식, 제1 트리 패턴 표현식 내에 널 문자열이 아닌 정규 표현식을 포함하여, 정규 표현식에 루트가 매칭되고 자식이 없는 트리를 표현하는 제2 트리 패턴 표현식, 이터레이티브를 표현하기 위해 사용하는 부호에 의해 시작하는지 않는 트리 패턴 표현식에 대해, 트리 패턴 표현식에 의해 일치되지 않는 비어있는 트리를 표현하는 제3 트리 패턴 표현식, 이터레이티브를 표현하기 위해 사용되는 부호에 의해 시작하지 않는 트리 패턴 표현식에 대해, 이터레이티브를 표현하기 위해 사용되는 부호를 부가하여 비어있는 트리 또는 각각이 트리 패턴 표현식에 의해 일치되는 컨세큐티브 트리들을 표현하는 제4 트리 패턴 표현식, 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 정규 표현식이 루트와 일치하고, 복수의 트리 패턴 표현식이 루트의 모든 직속 서브트리와 순서대로 일치하는 트리를 표현하는 제5 트리 패턴 표현식 및 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 정규 표현식이 루트와 일치하는 트리를 표현하고, 복수의 트리 패턴 표현식에 따른 시퀀스와 순서대로 일치하는 리프들을 포함하는 컷이 존재하는 제6 트리 패턴 표현식 중 적어도 하나의 트리 패턴 표현식을 생성하거나 또는 적어도 하나의 트리 패턴 표현식을 이용하여 구조적 패턴에 대한 패턴-매칭을 수행하는, 시스템 및 방법이 제공된다.
패턴 트리 및 타겟 트리를 입력으로 받아 패턴 트리 및 타겟 트리의 노드간 바인딩 관계를 나타내는 정보의 집합을 출력으로 제공하는 패턴-매칭 알고리즘을 이용하여 구조적 패턴간의 매칭 여부를 결정하는 매칭 여부 결정부를 포함하는 패턴-매칭 시스템이 제공된다.
일측에 따르면, 패턴-매칭 알고리즘은, 패턴 트리에 포함된 노드인 패턴 노드의 자식 노드와 타겟 트리에 포함된 노드인 타겟 노드의 자식 노드 및 논리형 변수를 입력으로 받아 패턴 노드와 타겟 노드가 서로 일치하는지 비교하고, 패턴 노드의 자식 노드와 타겟 노드의 자식 노드간에 일대 다수 노드-바인딩 관계를 생성하는 함수를 호출할 수 있다.
다른 측면에 따르면, 패턴-매칭 알고리즘은, 패턴 트리의 루트 및 루트와 매칭하는 타겟 트리의 노드를 입력으로 받아 루트와 타겟 트리의 노드들 각각을 위한 노드간 바인딩 관계를 생성하는 함수를 호출할 수 있다.
패턴 트리 및 타겟 트리를 입력으로 받아 패턴 트리 및 타겟 트리의 노드간 바인딩 관계를 나타내는 정보의 집합을 출력으로 제공하는 패턴-매칭 알고리즘을 이용하여 구조적 패턴간의 매칭 여부를 결정하는 단계를 포함하는 패턴-매칭 방법이 제공된다.
자연어 기반 정보 검색, XML 기반 텍스트 정보 추출, 객체 기반 영상 인식, 바이러스 코드 탐지 시스템 등과 같이 대규모 또는 실시간 트리 패턴 매칭을 필요로 하는 다양한 소프트웨어 시스템의 수행 속도를 현저히 증대시킬 수 있어, 비현실적인 수행 시간 문제 때문에 유용성에 명확한 한계가 있었던 종래 시스템의 성능 및 확장성을 획기적으로 향상시킬 수 있다.
도 1은 트리의 시퀀스들을 나타낸 일례이다.
도 2는 임의의 세 개의 트리를 나타낸 일례이다.
도 3은 임의의 두 개의 트리를 나타낸 일례이다.
도 4는 본 발명의 일실시예에 있어서, 패턴 트리를 나타낸 일례이다.
도 5는 본 발명의 일실시예에 있어서, 패턴 트리 P를 나타낸 일례이다.
도 6은 본 발명의 일실시예에 있어서, 타겟 트리 T를 나타낸 일례이다.
도 7은 본 발명의 일실시예에 있어서, 룰-기반 추출을 설명하기 위한 트리를 나타낸 도면이다.
도 8은 본 발명의 일실시예에 있어서, 룰-기반 추출을 설명하기 위한 다른 트리를 나타낸 도면이다.
도 9는 본 발명의 일실시예에 있어서, 모든 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 10은 본 발명의 일실시예에 있어서, 높이 3을 갖는 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 11은 본 발명의 일실시예에 있어서, 높이 4를 갖는 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 12는 본 발명의 일실시예에 있어서, 높이 4를 초과하는 높이를 갖는 테스트 쿼리들에 대해 쿼리 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 13은 본 발명의 일실시예에 있어서, 와일드카드-풀 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 2는 임의의 세 개의 트리를 나타낸 일례이다.
도 3은 임의의 두 개의 트리를 나타낸 일례이다.
도 4는 본 발명의 일실시예에 있어서, 패턴 트리를 나타낸 일례이다.
도 5는 본 발명의 일실시예에 있어서, 패턴 트리 P를 나타낸 일례이다.
도 6은 본 발명의 일실시예에 있어서, 타겟 트리 T를 나타낸 일례이다.
도 7은 본 발명의 일실시예에 있어서, 룰-기반 추출을 설명하기 위한 트리를 나타낸 도면이다.
도 8은 본 발명의 일실시예에 있어서, 룰-기반 추출을 설명하기 위한 다른 트리를 나타낸 도면이다.
도 9는 본 발명의 일실시예에 있어서, 모든 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 10은 본 발명의 일실시예에 있어서, 높이 3을 갖는 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 11은 본 발명의 일실시예에 있어서, 높이 4를 갖는 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 12는 본 발명의 일실시예에 있어서, 높이 4를 초과하는 높이를 갖는 테스트 쿼리들에 대해 쿼리 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
도 13은 본 발명의 일실시예에 있어서, 와일드카드-풀 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 다양한 구조의 패턴을 직관력 있게 표현할 수 있고, 패턴-매칭의 복잡성을 크게 감소시킬 수 있는 새로운 트리 패턴 표현식(Tree Pattern Expression, 이하, TPE)에 관한 것이다. 즉, 이하에서는 이러한 TPE와 TPE의 패턴-매칭 알고리즘을 설명한다.
우선, 이러한 TPE는 자연어 기반 검색 또는 정보 추출 시스템에서의 파스 트리(Parse Tree) 매칭 소프트웨어, XML 기반 텍스트 검색 또는 정보 추출 소프트웨어, 영상 인식 시스템에서의 영상 객체 구조 매칭 소프트웨어, 보안 소프트웨어 시스템에서의 바이러스 코드 구조 매칭 소프트웨어 등에 적용될 수 있고, 텍스트 마이닝 시스템에서 찾고자 하는 정보 템플릿을 표현하기 위해 트리 패턴 표현식을 사용하고 대상 텍스트 문장에 대한 고속 정보 추출을 위해 트리 패턴 매칭 알고리즘이나, XML 기반 텍스트 검색에서 필요한 XML 정보 템플릿을 표현하기 위해 트리 패턴 표현식을 사용하고 대상 XML 텍스트에 대한 고속 검색을 위해 트리 패턴 매칭 알고리즘, 영상 인식에서 필요한 영상 객체들의 구조를 표현하기 위해 트리 패턴 표현식을 사용하고 대상 영상에 대한 고속 인식을 위해 트리 패턴 매칭 알고리즘, 또는 보안 소프트웨어 시스템에서 탐지하고자 하는 바이러스 프로그램 템플릿을 표현하기 위해 트리 패턴 표현식을 사용하고 대상 프로그램 코드에 대한 고속 바이러스 탐지를 위해 트리 패턴 매칭 알고리즘 등에 적용될 수 있다. 즉, 본 발명의 실시예들에 따른 TPE는 다양한 소프트웨어 시스템에서 계층적 데이터 구조에 대한 패턴을 표현하고자 하는 모든 알고리즘에 적용이 가능하며, 특히 확장성이 요구되는 대규모 구조적(structured) 또는 반구조적(semi-structured) 데이터 베이스에 대한 질의 언어 및 검색 시스템에 매우 효과적으로 적용될 수 있다.
TPE는 트리에서 매칭 패턴을 위한 표현식이다. 이러한 TPE는 각각의 트리 노드 내에서 선형 패턴을 매칭하기 위한 정규 표현식(Regular Expression)을 이용할 수 있다. 또한, TPE는 트리에서의 구조적 패턴 매칭을 위한 몇 가지 유일한 구성들을 제공할 수 있다. 우선, TPE를 정의하기 전에 TPE의 패턴-매칭 효율성을 강화하기 위해 중요한 역할을 하는 트리의 컷(cut)에 관해 정의한다.
정의 1
트리 T에서 T의 디스조인트(disjoint) 서브트리(또는 프로퍼(proper) 서브트리)의 시퀀스 S는, 만약 S의 모든 리프(leaf)들의 시퀀스(왼쪽에서 오른쪽)가 T의 모든 리프들의 시퀀스(왼쪽에서 오른쪽)와 동일하다면, T의 컷 CT이다. 특히, T의 루트를 r이라 하면 그때, T의 컷은 Cr로 표현되는 r로부터의 컷이라 또한 명명될 수 있다.
(For a tree T, a sequence S of disjoint (proper) subtrees of T is a cut of T, denoted by CT , if the (left-to-right) sequence of all leaves of S is the same as the (left-to-right) sequence of all leaves of T. Especially, let the root of T be r. Then a cut of T is also called a cut from r, denoted by Cr.)
도 1은 트리의 시퀀스들을 나타낸 일례이다. 즉, 도 1은 트리(110)의 서브트리들의 시퀀스들 중 일부의 시퀀스들(120 내지 160)을 나타내고 있다. 이때, 시퀀스들(120 내지 140)은 트리(110)의 컷이다. 그러나, 시퀀스들(150 및 160)은 트리(110)의 컷이 아니다. 시퀀스(150)는 리프 i가 빠져있기 때문에 트리(110)의 시퀀스가 아니다. 또한, 시퀀스(150)는 리프 순서가 트리(110)의 리프 순서와 다르기 때문에 컷이 아니다.
정의 2
아래 TPE 룰(rule)들의 유한수(finite number)의 어플리케이션들에 의해 몇몇의 정규 표현식(Regular Expression, 이하, RE)들로부터 얻어질 수 있는 문자열(string)은 TPE다.
(A string is a TPE if it can be derived from some RE(Regular Expression)s by a finite number of applications of the following TPE rules.)
룰 1: <>는, 애니트리(anytree)라 명명되고, 임의의 비어있지 않은(non-empty) 트리와 일치(match)하는 TPE이다.
(Rule 1: <> is a TPE (called an anytree), which matches an arbitrary non-empty tree.)
룰 2: 만약 널(null) 문자열이 아닌 r이 RE이면, <r>은, 리프(leaf)라 명명되고, 루트가 r에 의해 매칭되고 자식이 없는 T와, 일치하는 TPE이다. 이때, <r>은 RE r과 혼동되지만 않는다면, 종종 r로 단축하여 이용될 수 있다.
(Rule 2: If r(≠ λ) is a RE, <r> is a TPE (called a leaf), which matches a tree T with no child, whose root is matched by r. (Note: <r>is often abbreviated to r as long as it is not confused with a RE r). Wherein, λ is null string)
룰 3: 만약 r이 *로 시작하지 않는 TPE이면, !r은 네거티브(negative)라 명명되고, r에 의해 일치되지 않는 비어있지 않은 트리와, 일치하는 TPE이다.
(Rule 3: If r is a TPE (not beginning with '*', !r is a TPE (called a negative), which matches any non-empty tree not matched by r.)
룰 4: 만약 r이 *로 시작하지 않는 TPE이면, *r은 이터레이티브(iterative)라 명명되고, 비어있는(empty) 트리 또는 각각이 r에 의해 일치되는 컨세큐티브(consecutive) 트리들과, 일치하는 TPE이다. 이때, *<>는 종종 *로 단축하여 이용될 수 있다.
(Rule 4: If r is a TPE (not beginning with '*'), *r is a TPE (called an iterative), which matches an empty tree or a sequence of (k ≥ 1) consecutive trees, each of which is matched by r. (Note: *<> is often abbreviated to *).)
룰 5: 만약 널 문자열이 아닌 r0가 RE이고, r1, ..., rk(k≥1)가 모두 TPE이면, <r0, r1, ..., rk>는 트리리스트(treelist)라 명명되고, r0가 T의 루트와 일치하고 r1, ..., rk가 T의 루트의 모든 직속 서브트리와 순서대로 일치하는 T와, 일치하는 TPE이다. 그러나, r1, ..., rk가 T의 루트의 모든 직속 서브트리와 필연적으로 일대일로 일치하지는 않는다. 만약, ri(1=i=k)가 *로 시작한다면, 일대다의 관련성이 존재할 수 있다.
(Rule 5: If r0(≠ λ) is a RE and r1, ..., rk (k ≥ 1) are all TPEs, <r0, r1, ..., rk> is a TPE (called a treelist), which matches a tree T where r0 matches the root of T, and r1, ..., rk match all immediate subtrees of the root of T in order (but not necessarily one-to-one).)
룰 6: 만약 널 문자열이 아닌 r0가 RE이고, r1, ..., rk(k≥1)가 모두 TPE이면, {r0, r1, ..., rk}는 컷리스트(cutlist)라 명명되고, r0가 T의 루트와 일치하는 T와 일치하고, r1, ..., rk가 T1, ..., Tl와 순서대로 일치하는 컷 CT( = T1, ..., Tl)가 존재하는 TPE이다. 이 경우에도 r1, ..., rk는 T1, ..., Tl와 필연적으로 일대일로 일치하지는 않는다.
(Rule 6: If r0(≠ λ) is a RE and r1, ..., rk (k ≥ 1) are all TPEs, { r0, r1, ..., rk } is a TPE (called a cutlist), which matches a tree T where r0 matches the root of T, and there exists a cut CT = T1, ..., Tl (of T) such that r1, ..., rk match T1, ..., Tl in order (but not necessarily one-to-one).)
이때, 룰 2, 룰 5 및 룰 6에서 널 문자열은 공백(empty) 문자열을 의미한다.
본 발명의 일실시예들에 따른 시스템 및 방법은 정의 1, 정의 2 및 룰 1 내지 룰 6을 이용하여 구조적 패턴을 표현하는 트리 패턴 표현식을 생성하거나 또는 트리 패턴 표현식을 이용하여 구조적 패턴에 대한 패턴-매칭을 수행할 수 있다.
도 2는 임의의 세 개의 트리를 나타낸 일례이다. 이때, 상술한 룰 4를 제공함에 따라 단순한 TPE "*"(="*<>")는 비어있는 트리 또는 많은 임의의 트리들과 일치할 수 있고, "<NP * <NN.? EGR.+> *>"는 제1 트리(210)와 일치할 수 있다. 같은 방법으로 "<VP * <(VBZ|VBP|VBD) induce[sd]><NP * <NN.? EGR.+> *>>"는 제2 트리(220)와 일치할 수 있다. 따라서, 더 복잡한 TPE인 "<S <NP * <JJ retinoic> *><VP * <(VBZ|VBP|VBD) induce[sd]><NP * <NN.? EGR.+>||{NNP * TGF.?} *>>>"는 제3 트리(230)와 일치할 수 있다. 여기서, 앞서 정의되지 않은 기호 ".+"나 ".?"는 정규 표현식의 정의에 따른다. 이러한 정규 표현식에 대해서는 이미 널리 알려져 있기 때문에 구체적인 설명은 생략한다.
룰 3 및 룰 4로부터, "!*<S>" 및 "**<S>"는 유효하지 않다. 그러나, "*!<S>는 유효하다. 즉, "!"와 "*" 둘 모두는 룰 4에 의해 유래되는 트리들의 시퀀스를 위한 표현식에 해당하지 않음을 의미할 수 있다. 룰 6은 몇몇의 디스조인트 서브트리의 서수의 출현을 표현하는데 유용하다. 도 3은 임의의 두 개의 트리를 나타낸 일례이다. 예를 들어, TPE "{NP <NN EGR.+> *<NN .+><IN in> <NP * <NNS cells>>}"는 제1 트리(310)와 일치할 수 있고, TPE "{S *.+ <NP * <JJ retinoic> *><VP * <(VBZ|VBP|VBD) induce [sd]> {NP <NN EGR.+> <NN .+><IN in> <NP * < NNS cells>>}>}"는 제2 트리(320)와 일치할 수 있다.
쉬운 조작(manipulation)을 위해, TPE는 종종 패턴 트리(pattern tree)라 명명된 특별한 트리로서 표현될 수 있다. 도 4는 본 발명의 일실시예에 있어서, 패턴 트리를 나타낸 일례이다. 도 4의 패턴 트리(400)는 TPE "<S {NP * <(NN|JJ).? retinoic> *} <VP *!<NP *> {NP * <NN.? EGR.+> *}>>"를 표현한 일례이다. 도 4에서, 진한 타원은, 점선 타원이 구조가 컷 리스트인 컷 노드를 표현하는 동안에, 종속된 구조가 트리리스트인 트리 노드를 표현할 수 있다. 게다가, 음영이 들어간 타원은 중복 타원이 구조가 이터레이티브인 이터레이티브 노드를 표현하는 동안에 구조가 네거티브인 네거티브 노드를 표현할 수 있다.
TPE의 패턴-매칭 알고리즘을 설명하기 전에, 패턴 트리에서 노드의 높이(height)를 위한 또 다른 정의를 설명한다.
정의 3
패턴 트리에서, 노드 n의 높이 hn은 n으로부터 n의 자손 리프 또는 애니트리까지의 경로상에서 네거티브 노드와 이터레이티브 노드를 제외한 나머지 노드의 최대수이다.
즉, 도 4의 패턴 트리(400)에서, 타원의 상단에 부여된 숫자들은 해당 노드의 높이를 나타낼 수 있다. 이러한 높이의 값은 패턴 트리의 후위 순회(post-order traversal)동안 쉽게 계산될 수 있고, TPE의 패턴-매칭 알고리즘이 더 빠르게 처리되도록 하기 위해 활용될 수 있다.
TPE의 패턴-매칭 알고리즘은 패턴 트리(pattern tree) P 및 P와 매칭될 타겟 트리(target tree) T를 얻고, P와 T간의 노드-바인딩 관계(node-binding relation)들의 집합을 반환한다. 더 자세하게, 패턴-매칭 알고리즘은 P의 각각의 노드인 패턴 노드와 T의 각각의 노드인 타겟 노드간의 매칭을 시도 할 수 있고, 그 결과로, P를 위해 T 또는 T의 일부와 매칭하기에 충분한 모드 노드-바인딩 관계들을 생성할 수 있다. 아래 나타난 메인 알고리즘은 두 개의 루프(loop)로 구성되어 있다. 하나의 루프는 P의 노드 시퀀스를 위한 것이고, 다른 하나의 루프는 T의 노드 시퀀스를 위한 것으로, P와 T의 모든 노드의 쌍이 P와 T간의 매칭을 위해 테스트될 수 있음을 의미할 수 있다.
메인 알고리즘은 함수 "treePatternMatch(PatternTree P, TargetTree T)"와 같이 표현될 수 있다. 즉, 패턴 트리 P와 타겟 트리 T를 입력으로 받을 수 있고, 또한, 상술한 바와 같이 만약, 반환할 수 있는 노드-바인딩 관계의 집합이 존재하는 경우, 존재하는 노드-바인딩 관계의 집합을 반환할 수 있다. 만약, 반환할 수 있는 노드-바인딩 관계의 집합이 존재하지 않는 경우, 메인 알고리즘은 공집합 Ø을 반환할 수 있다.
우선, 메인 알고리즘은 각각의 전역 변수인 B[-,-]를 "Fails"로 초기화 한다. 즉, 메인 알고리즘은 배열 B의 엘리먼트 각각을 "Fails"로 초기화할 수 있다. 여기서, B[i, j]는 패턴 노드 i가 타겟 노드 j와 일치하기 위해 필요한 노드-바인딩 관계일 수 있다.
또한, 메인 알고리즘은 각각의 전역 변수 R[-,-]을 "Nil"로 초기화할 수 있다. 즉, 메인 알고리즘은 배열 R의 엘리먼트 각각을 정의되지 않음(Undefined)을 의미하는 "Nil"로 초기화할 수 있다. 여기서, R[s1, s2]는 패턴 노드 시퀀스 s1과 타겟 노드 시퀀스 s2간의 노드-바인딩 관계일 수 있다.
또한, 메인 알고리즘에서 "p1, ..., pm"과 "t1, ..., tm"은 각각 패턴 트리 P와 타겟 트리 T의 포스트-오더의(post-ordered) 노드 시퀀스를 의미할 수 있다.
또한, 메인 알고리즘에서 함수 "match()"와 "treeBinding()"는 아래 설명될 두 개의 서브 알고리즘에 나타나 있다.
이때, 상술한 패턴-매칭 알고리즘에는 매칭 효율성을 향상시키기 위한 두 가지 메인 아이디어가 존재한다.
하나의 메인 아이디어는 명백한 관찰에 기초한 가지치기(pruning)이다.
(1) 높이 h1의 어떠한 패턴 노드도 높이 h2(h2<h1)의 타겟 노드와 매칭될 수 없다.
(2) 리프인 어떠한 패턴 노드도 리프가 아닌 어떠한 타겟 노드와 매칭될 수 없다.
두 번째 아이디어는 다이나믹 프로그래밍 스킴에 관한 것이다. 다이나믹 프로그램 스킴은 타겟 노드가 패턴 노드와 매칭을 위해 비교될 때, 타겟 노드와 패턴 노드의 후손들간의 매칭 결과가 효과적으로 이용될 수 있기 때문에, 트리 패턴-매칭을 위해 채용될 수 있다. 즉, 두 노드를 비교할 때, 두 노드들의 적절한 서브트리들은 이미 각각의 서로 다른 서브트리들에 대해 테스트되어야 할 수 있고, 따라서, 패턴-매칭 알고리즘은 포스트-오더에서 노드들을 참조한다. 각각의 노드쌍을 테스트함으로써 요구되는 노드-바인딩 관계들을 효과적으로 저장 및 검색하기 위해, 패턴-매칭 알고리즘은 상술한 바와 같이 두 개의 전역 배열 B와 R을 사용한다. 패턴 노드 i와 타겟 노드 j의 쌍을 위한 B[i, j]는 i의 자식과 j의 자손들간에 j와 일치하는 i를 위해 필요한 노드-바인딩 관계일 수 있다. 특히, R[s1, s2]는 B의 컴포넌트 각각을 얻는 동안 이미 시도된 노드쌍을 매칭하는 것을 피하기 위해 유지될 수 있다. 따라서, 패턴-매칭 알고리즘의 복잡성(complexity)이 패턴 노드의 수에 대해 선형적인 레벨로 최적화 되도록 중요한 룰이 수행될 수 있다.
도 5는 본 발명의 일실시예에 있어서, 패턴 트리 P를 나타내고 있다. 또한, 도 6은 본 발명의 일실시예에 있어서, 타겟 트리 T를 나타내고 있다. 여기서, 패턴 트리 P(500)는 TPE "<S {NP * <(NN|JJ).? retinoic> *} <VP *!<NP *> {NP * <NN.? EGR.+> *}>>"와 같이 표현될 수 있고, 타겟 트리 T(600)는 정규 표현식 "<S <NP <NP <NN activation>> <PP <IN of> <NP <DT the> <JJ retinoic> <NN acid>>>> <VP <ADVP <RB markedly>> <VBZ induces> <NP <NP <NN EGR-1> <NN gene> <NN expression>> <PP <IN in> <NP <NN embryonal> <NN carcinoma> <NNS cells>>>>>>"와 같이 표현될 수 있다. 이때, 패턴 트리 P(500)와 타겟 트리 T(600)간의 노드쌍 각각을 테스트하는 동안 생성되는 배열 B의 값은 아래와 같이 표현될 수 있다. 이때, 아래 배열 B들은 도 5에서 음영이 들어간 타원에서의 배열 B의 값을 나타낼 수 있다. 여기서, 배열 B의 컴포넌트로서 표시되는 숫자들은 도 5 및 도 6의 타원 상단에 표시된 포스트 오더에 따른 숫자들을 의미할 수 있다.
(a) B[1, -] = B[5, -] = B[8, -] = B[13, -] = B[17, -] = 1
(b) B[3, 8] = 1
(c) B[4, 9] = {<3, 8>}
(d) B[7, 12] = {<1, 7>, <4, 9>, <5, 11>}, B[7, 14]={<1, 3>, <1, 5>, <1, 7>, <4, 9>, <5, 11>}
(e) B[10, 3] = {<8, 2>}, B[10, 12] = {<8, 7>, <8, 9>, <8, 11>}, B[10, 14] = {<8, 3>, <8, 13>}, B[10, 26] = {<8, 21>, <8, 23>, <8, 25>}, B[10, 35] = {<8, 30>, <8, 32>, <8, 34>}, B[10, 37] = {<8, 26>, <8, 36>}
(f) B[11, 1] = B[11, 2] = B[11, 4] = B[11, 5] = B[11, 6] = B[11, 7] = B[11, 8] = B[11, 9] = B[11, 10] = B[11, 11] = B[11, 13] = B[11, 15] = B[11, 16] = B[11, 17] = B[11, 18] = B[11, 19] = B[11, 20] = B[11, 21] = B[11, 22] = B[11, 23] = B[11, 24] = B[11, 25] = B[11, 27] = B[11, 28] = B[11, 29] = B[11, 30] = B[11, 31] = B[11, 32] = B[11, 33] = B[11, 34] = B[11, 36] = B[11, 38] = B[11, 39] = 1
(g) B[15, 20] = 1
(h) B[16, 21] = {<15, 20>}
(i) B[19, 26] = {<16, 21>, <17, 23>, <17, 25>}, B[19, 37] = {<16, 21>, <17, 23>, <17, 25>, <17, 36>}
(j) B[20, 38] = {<11, 17>,<11, 19>,<19, 37>}
(k) B[21,39] = {<7, 14>,<20, 38>}
여기서, (a)는 요구되는 어떠한 노드-바인딩 관계 없이 모든 타겟 노드들과 매치되는 애니트리에 관한 것이다. 또한, (b) 및 (g)는 각각 노드-바인딩 관계가 요구되지 않는 리프에 관한 것이다. (c), (e), (h), (j) 및 (k)는 트리 노드에 관한 것이고, (d) 및 (i)는 컷 노드에 관한 것이다. 마지막으로, (f)는 어떤 요청되는 노드-바인딩 관계도 없이 자신의 자식에 의해 매치되지 않는 타겟 노드들과 일치하는 네거티브 노드에 관한 것이다. 위에 리스트된 (a) 내지 (k)외의 다른 컴포넌트들은 "Fails"로 설정될 수 있다.
또한, 상술한 메인 알고리즘에 따른 함수 "treePatternMatch()"는 타겟 노드와 일치하는 패턴 노드를 위해 필요한 노드-바인딩 관계를 발견하기 위해 첫 번째 서브-알고리즘에 따른 함수 "match()"를 이용한다. 더 명확하게, 최초의 두 파라미터로서 패턴 노드 i의 자식 x와 타겟 노드 j의 자식 y를 얻는 함수 "match()"가 지원될 수 있다. 그때, 함수 "match()"의 마지막 파라미터 "cut"이 "False"(예를 들어, i가 트리 노드이면), 함수 "match()"는 간단한 선형 패턴-매칭 오토마타를 통해 x의 각각의 노드와 y의 각각의 노드의 일치하는지 비교를 시도하고, i와 j간의 일치를 위해 필요한, x와 y간의 일대 다수(one-to-many) 노드-바인딩 관계를 생성한다. 예를 들어, 도 5에서 함수 "match()"는 B[20, 38]에 대해 {<11, 17>, <11, 19>, <19, 37>}을 반환한다. 여기서, {<11, 17>, <11, 19>, <19, 37>}는 노드-바인딩 관계 {<11, 17>, <11, 19>, <19, 37>}가 패턴 노드 20이 타겟 노드 38과 일치하기 위해 필요함을 나타낼 수 있다. 만약, 함수 "match()"의 마지막 파라미터 "cut"이 "True"(예를 들어, i가 컷 노드이면), 함수 "match()"는 간단한 패턴-매칭 오토마타를 통해 x의 각각의 노드와, y 그리고 y의 자손들의 각각의 노드들이 일치하는지 비교를 시도하고, x와 j(y의 부모)로부터의 컷간에 i와 j의 일치를 위해 필요한 일대 다수 노드-바인딩 관계를 생성한다. 예를 들어, 도 5에서 함수 "match()"는 B[7, 12]에 대해 {<1, 7>, <4, 9>, <5, 11>}를 반환한다. 여기서, {<1, 7>, <4, 9>, <5, 11>}는 노드-바인딩 관계 {<1, 7>, <4, 9>, <5, 11>}가 패턴 노드 7과 타겟 노드 12간의 매칭을 위해 필요함을 나타낼 수 있다.
두 번째 서브-알고리즘에 따른 함수 "treeBinding()"는 패턴 트리 P와 타겟 트리 T의 일부분이 서로 일치하는가를 위해 충분한 전체 노드-바인딩 관계를 찾기 위해 이용될 수 있다. 함수 "treeBinding()"는 P의 루트 p 및 p와 매칭하는 T의 노드 t를 두 개의 파라미터로서 얻을 수 있고, B[p, t]의 각각의 엘리먼트들을 위해 노드-바인딩 관계를 반복적으로 순회(traversing)함으로써, 종합된(aggregated) 노드-바인딩 관계를 생성할 수 있다. 예를 들어, 도 5에서 함수 "treeBinding()"은 두 개의 파라미터로서 21 및 39를 얻을 수 있고, B[21, 39], B[7, 14], B[1, 3], B[1, 5], B[1, 7], B[4, 9], B[3, 8], B[5, 11], B[20, 38], B[11, 17], B[11, 19], B[19, 37], B[16, 21], B[15, 20], B[17, 23], B[17, 25] 및 B[17, 36]를 각각 순회함으로써, 결과로서 {<21, 39>, <7, 14>, <1, 3>, <1, 5>, <1, 7>, <4, 9>, <3, 8>, <5, 11>, <20, 38>, <11, 17>, <11, 19>, <19, 37>, <16, 21>, <15, 20>, <17, 23>, <17, 25>, <17, 36>}를 생성할 수 있다.
본 발명의 일실시예에 따른 패턴-매칭 시스템은 패턴 트리 및 타겟 트리를 입력으로 받아 패턴 트리 및 타겟 트리의 노드간 바인딩 관계를 나타내는 정보의 집합을 출력으로 제공하는 패턴-매칭 알고리즘을 이용하여 구조적 패턴간의 매칭 여부를 결정하는 매칭 여부 결정부를 포함할 수 있다. 또한, 본 발명의 일실시예에 따른 패턴-매칭 방법은 패턴 트리 및 타겟 트리를 입력으로 받아 패턴 트리 및 타겟 트리의 노드간 바인딩 관계를 나타내는 정보의 집합을 출력으로 제공하는 패턴-매칭 알고리즘을 이용하여 구조적 패턴간의 매칭 여부를 결정하는 단계를 포함할 수 있다.
이때, 패턴-매칭 알고리즘은 패턴 트리에 포함된 노드인 패턴 노드의 자식 노드와 타겟 트리에 포함된 노드인 타겟 노드의 자식 노드 및 논리형 변수를 입력으로 받아 패턴 노드와 타겟 노드가 서로 일치하는지 비교하고, 패턴 노드의 자식 노드와 타겟 노드의 자식 노드간에 일대 다수 노드-바인딩 관계를 생성하는 함수를 호출할 수 있다.
또한, 패턴-매칭 알고리즘은 패턴 트리의 루트 및 루트와 매칭하는 타겟 트리의 노드를 입력으로 받아 루트와 타겟 트리의 노드들 각각을 위한 노드간 바인딩 관계를 생성하는 함수를 호출할 수 있다.
상술한 바와 같이 본 발명의 실시예에 따른 패턴-매칭 알고리즘은 함수 "treePatternMatch()", "match()" 및 "treeBinding()"의 세 개의 알고리즘으로 구성될 수 있다.
이때, 함수 "treePatternMatch()"는 내재된 두 개의 루프를 갖는 다이나믹 프로그래밍 스킴에 기반하고, 따라서, 기본적인 계산 복잡성(computational complexity)은 패턴 노드의 수 m과 타겟 노드의 수 n에 대해 선형적이다. 더 구체적으로, 함수 "treePatternMatch()"의 복잡성은 오더(order)는 두 노드의 높이의 조건에 기반한 함수 "treePatternMatch()"의 가지치기 방법(pruning method)를 통해 에 의해 감소될 수 있다. 여기서, bP는 패턴 트리의 평균 브런칭 팩터(branching factor)일 수 있고, bT는 타겟 트리의 평균 브런칭 팩터일 수 있다.
함수 "treePatternMatch()"에 의해 호출되는 첫 번째 서브-알고리즘의 함수 "match()"는 선형적으로 패턴 노드 시퀀스 x가 타겟 노드 시퀀스 y와 일치하는가를 비교하여 두 시퀀스간에 노드-바인딩 관계들의 집합을 결과를 제공할 수 있다. 따라서, 함수 "match()"의 복잡성은 컷이 "False"일 때 일 수 있고, 컷이 "True"일 때, 일 수 있다. 여기서, |x|는 x의 모든 엘리먼트의 수와 같이 x의 사이즈를 나타낼 수 있다. 또한, "descendants(x)"는 x의 모든 자손 노드를 의미할 수 있고, 함수 "parent(y)"는 y의 부모 노드를 의미할 수 있다.
두 번째 서브 알고리즘의 함수 "treeBinding()"는 재귀함수로서, 패턴 트리의 루트 p가 타겟 트리의 p와 매칭하는 노드 j와 일치하기에 충분한 노드-바인딩 관계를 생성한다. 따라서, 함수 "treeBinding()"에 의해 생성된 노드-바인딩 관계의 크기가 절대 를 넘지 않기 때문에 함수 "treeBinding()"의 복잡성은 일 수 있다.
이와 같이, 함수의 각각에 대한 복잡성 분석에 따라 이후에서는 패턴-매칭 알고리즘의 전체 복잡성을 계산할 수 있다. 우선, 패턴 트리 노드의 수를 m, 타겟 트리 노드의 수를 n, 패턴 트리의 평균 브런칭 팩터를 bP, 타겟 트리의 평균 브런칭 팩터를 bT이라 각각 가정하자.
그때, 가장 최선의 경우 즉, 패턴 트리에 컷 노드가 존재하지 않을 때의 복잡성은 이다. 이러한 복잡성은 간단한 관찰로부터 이끌어낼 수 있다. 우선, bP는 함수 "match()"의 첫 번째 파라미터로서 주어지는 패턴 노드 시퀀스의 평균 사이즈이다. 또한, bT는 함수 "match()"의 두 번째 파라미터로서 주어지는 타겟 노드 시퀀스의 평균 사이즈이다. 따라서, 이 경우, 어떠한 타겟 노드도 하나의 패턴 노드 이상과 바인딩될 수 없기 때문에, 와 같고, 따라서, 아래 수학식 1과 같이 패턴 트리에 컷 노드가 존재하지 않을 때의 복잡성은 아래 수학식 1과 같이 표현될 수 있다.
또한, 가장 최악의 경우 즉, 패턴 트리의 모든 노드가 컷 노드이고 타겟 트리가 선형 문자열 트리와 같이 높이가 편향된 트리인 경우에 복잡성은 이다. 이러한 복잡성 역시 아래 수학식 2와 같은 관찰을 통해 이끌어낼 수 있다.
또한, 더 현실적인 목표를 위해, c를 패턴 노드에서 컷 노드의 수라 가정하자. 이때, 패턴-매칭 알고리즘의 전체 복잡성은 아래 수학식 3과 같이 계산될 수 있다.
분석된 텍스트 코퍼스를 마이닝(mining)하는 것과 같은 트리 패턴-매칭의 많은 현실적인 어플리케이션들에서, bP와 bT로는 m 및 n 모두와 독립적인 몇몇의 작은 값들이 고려될 수 있고, c 역시 그리 크지 않다. 따라서, bP, bT 및 c를 위한 상수 값 고려사항이 실제로 비현실적이지 않는 한, 전체 복잡성은 이 될 수 있다. 즉, 수학식 3에서의 마지막 결과가 와 같이 표현될 수 있고, 는 상술한 전체 복합성 와 같이 표현될 수 있다. 이러한 전체 복잡성은 본 발명의 실시예들에 따른 패턴-매칭 알고리즘의 계산 복잡성이 패턴 트리의 사이즈 m, 그리고 기껏해야 타겟 트리의 사이즈 n의 이차항(quadratic)에 관해 선형임을 의미할 수 있다.
본 실시예에 따른 TPE 시스템 및 패턴-매칭 알고리즘은 사전-기반 키-용어 태거(dictionary-based key-term tagger) 및 NLP 풀 파서(Natural Language Processing full parser)와 통합될 수 있고, 이러한 통합은 텍스트 마이닝에서 유용하게 활용될 수 있다. 보다 구체적으로, 이러한 유용성을 설명하기 위해, 이하에서는 바이오-텍스트 코퍼스에서 단백질 상호작용(Protein Interaction, PI) 정보의 자동 추출을 지원하는 일례를 설명한다. TPE 시스템은 바이오-텍스트 코퍼스 내에서 미리 정의된 PI 관련 용어들의 수를 부여하고, 그때, 매우 큰 파스 트리를 구성하는 분석된 텍스트 코퍼스를 야기하는 문법 구조에 따른 코퍼스의 각각의 텍스트 문장을 분석할 수 있다. 마침내, TPE 시스템은 TPE로서 표현된 패턴 트리와 분석된 텍스트 코퍼스에서 각각의 파스 트리를 매칭함으로써, 원하는 PI 정보를 추출할 수 있다. 이하에서는, 바이오-텍스트 코퍼스를 태킹 및 파싱하는 하나의 프로세스와 코퍼스로부터 PI 정보를 추출하는 다른 하나의 프로세스에 대해 자세히 설명한다.
태깅 및 파싱(
Tagging
and
parsing
)
바이오-코퍼스의 로 텍스트(raw text)에서 PNs이나 상호작용 동사(Interaction Verbs, IVs)와 같은 PI 관련 용어를 태깅하기 위해, TPE 시스템은 사전-기반 태깅 방법(dictionary-based tagging method)을 이용할 수 있다. 여기서, PN은 단백질 이름 Protein Name) 이나 유전자 이름일 수 있고, 단일 단어이거나 복합 단어일 수 있다. 이때, 명사(noun)(또는 구(phrase))는 일반화되고, 그때, 수작업으로 구조화된 PN 사전에서 PNs와 매치될 수 있다. 또한, 동사(또는 동사 관련 단어) 각각은 스템(stem)되고, 그때, 수작업으로 구조화된 IV 사전에서 IVs와 매치될 수 있다. 특히, TPE 시스템은 이미 알려진 간단한 통계적인 방법을 이용하여 확실한 PN의 기술적 다양성(예를 들어, "TGF-α, TGF-alpha, TGF alpha, TGF-a, TGFa", "IGF-2, IGF2, IGF-Ⅱ, IGFⅡ")을 해결할 수 있다. 또한, TPE 시스템은 바이오-텍스트 내의 각각의 PN을 PN 사전에서 관련된 엔트리와 각각이 연결된 약어-동의어 리스트(anronym-synonyms list)를 이용하여 대표적인 약자로 변환할 수 있다. 이때, 사전-기반 태깅 방법을 수행하는 사전-기반 태거는 이미 알려진 스탠포드(Stanford) NLP 파서에 임베디드될 수 있고, 코퍼스에서 원래의 텍스트의 문장 각각은 두 개의 추가적인 태거(하나는 PN을 위한 '||' 그리고 다른 하나는 IV를 위한 '||||')를 갖는 리스트 형태(이하, 바이오-파스 트리)로 분석 및 표현될 수 있다.
예를 들어, "BDNF binds to all isoforms of the receptor TRKB"는 "<S <NP <NNP |BDNF|>> <VP <VBZ ||binds||> <PP <TOto> <NP <NP <DT all> <NNS isoforms>> <PP <IN of > <NP <DT the> <NN receptor> <NNP |TRKB|>>>>>>>"로 표현될 수 있다. 또한, "The stat3 is activated by the interleukin 6 family."는 <S <NP <DT the> <NNP |stat3|>> <VP <VBZ is> <VP <VBN ||activated||> <PP <IN by> <NP <DT the> <NN |interleukin6|> <NN family>>>>>>와 같이 표현될 수 있다.
이러한 예에서, 바이오-파서 트리는 구문론의 태그들과 PI-관련 용어 태그를 갖는 원 문장의 문법적인 구조로 표현될 수 있고, 따라서 몇몇의 PI 정보를 추출하기 위해 TPE 매칭 알고리즘에서 주어지는 타겟 트리로서 이용될 수 있다.
패턴 공식화 및 정보 추출(
pattern
formulation
and
information
extraction
)
TPE 시스템은 각각의 추출 룰이 "if pattern_expression then interaction_list"의 형태를 갖는 간단한 룰-기반 추출 스팀을 이용할 수 있다. 여기서, "pattern_expression"은 몇 가지 PI 정보를 포함하는 문장 구조의 일반적인 패턴을 묘사하도록 고안될 수 있다. 또한, "interaction_list"는 "pattern_expression"이 바이오-파스 트리와 일치할 때, 바이오-파스 트리로부터 추출되는 단백질 상호작용의 리스트를 명시하도록 고안될 수 있다. 특히, 트리 패턴 공식화하고, 효과적인 매칭을 위해, TPE 시스템은 "pattern_expression"으로서, 몇 가지 용어 변수들(PN 변수들을 위해 %1, %2, ...과 같이 기록되는 용어 변수들 또는 IV 변수들을 위해, #1, #2, ...과 같이 기록되는 용어 변수들)을 허락하는 TPE의 확장을 수용할 수 있다. 여기서, 각각의 용어 변수들은 타겟 바이오-파스 트리 내의 PI-관련 용어와 대응되어 바인딩될 수 있다. 이때, 가변 바인딩 정보는 패턴-매칭 알고리즘을 수행한 후 반환되는 관계를 통해 직접적으로 얻을 수 있다.
도 7은 본 발명의 일실시예에 있어서, 룰-기반 추출을 설명하기 위한 트리를 나타낸 도면이다. 도 7은 PI 정보를 포함하는 수동태 문장을 위한 일반적인 파스 트리(600)를 나타내고 있다.
우선, 도 6에서 사용될 룰 1은 파스 트리(700) 중 점선 영역(710)에 해당하는 것으로, "if <S * {NP * <NN.? %1> *} <VP <(VBZ|VBP|VBD) (is|are|was|were)> * <VP * <VBN #1> * <PP <IN (by|with|through)> {NP * <NN.? %2> <CC and> <NN.? %3>}> *> *> *> then %2 #1 %1, %3 #1 %1"와 같이 표현될 수 있고, 문장은 "MAPK8 is additionally regulated by the Ras related G proteins, AKT1 and CDC42."와 같이 표현될 수 있다. 또한, 상술한 문장의 바이오-파스 트리는 "<S <NP <NNP |MAPK8|>> <VP <VBZ is> <ADVP <RB additionally>> <VP <VBN ||regulated||> <PP <IN by> <NP <DT the> <NNP Ras> <JJ related> <JJ G> <NNS proteins> <, ,> <NNP |AKT1|> <CC and> <NNP |CDC42|>>>>>>"와 같이 나타날 수 있다.
이때, TPE 룰은 수동태 문장과 또 다른 수동태 문장 그리고 바이오-파스 트리로부터 직관적으로 공식화될 수 있다. 즉, 룰 1은 파스 트리(700)의 필수적인 부분들과 필수적인 부분들의 계층적 구조를 패턴으로서 끌어냄으로써, 쉽게 공식화될 수 있다. 룰 1의 "pattern_expression"은 |MAPK8|에 %1을, ||regulated||에 #1에 를, |AKT1|에 %2를 그리고 |CDC42|에 %3을 각각 바인딩함으로써, 문장 1의 바이오-파스 트리와 매치할 수 있다. 따라서, "interaction_list"인 룰 1의 "%2#1, %3#1"은 두 개의 상호작용인 "AKT1 regulate MAPK8" 및 "CDC42 regulate MAPK8"을 추출할 수 있다.
도 8은 본 발명의 일실시예에 있어서, 룰-기반 추출을 설명하기 위한 다른 트리를 나타낸 도면이다. 도 8은 복합 문장의 매칭의 경우를 설명하기 위한 파스 트리(800)를 나타내고 있다.
우선, 도 8에서 사용될 룰 2는 파스 트리(800) 중 점선 영역(810)에 해당하는 것으로, "if <S * <NP * <NN.? %1> *> <VP <(VBZ|VBP|VBD) #1> {NP * <(NN.?|JJ) %2> *<NN.? .+> *} *> *> then %1 #1 %2"와 같이 표현될 수 있다. 이때, 문장은 "These results demonstrate that GM-CSF promotes DCX survival while P53 regulates constitutive IL-6 production."와 같이 표현될 수 있고, 문장의 바이오-파스 트리는 "<S <NP <DT These> <NNS results>> <VP <VBP demonstrate> <SBAR <IN that> <S <NP <NNP |CSF2|>> <VP <VBZ ||promotes||> <NP <NNP |DCX|> <NN survival>> <SBAR <IN while> <S <NP <NNP |P53|>> <VP <VBZ ||regulates||> <NP <JJ constitutive> <NNP |IL6|> <NN production>>>>>>>>>>"와 같이 표현될 수 있다.
이때, 도 7에서 룰 1을 공식화한 것과 동일한 방법으로 룰 2가 상술한 바와 같이 공식화될 수 있다. 즉, 룰 2는 파스 트리(800)로부터 필수적인 구조를 끌어냄으로써, 공식화될 수 있다. 특히, 룰 2의 "pattern_expression"은 문장 2의 바이오-파스 트리와 두 번 매칭될 수 있다. 우선, 첫 번째로, |CSF2|에 %1을, ||promotes||에 #1을, 그리고 |DCX|에 %2를 각각 바인딩하고, 두 번째로, |P52|에 %1을, ||regulates||에 #1을, 그리고 |IL6|에 %2를 각각 바인딩할 수 있다. 즉, 두 번의 매칭 및 바인딩의 결과로서, "interaction_list"로서 룰 2의 "%1#1%1" 역시 두 개의 상호작용들인 "CSF2 promote DCX" 및 "P53 regulate IL6"을 추출할 수 있다. 여기서, "CSF2"는 "GM-CSF"의 약어 표현으로써, TPE 시스템의 태거에 의해 변환될 수 있다.
도 9 내지 도 13은 쿼리의 사이즈와 평균 비교 횟수(average number of comparisons)간의 관계를 나타낸 그래프이다. 이때, 그래프(900 내지 1300)에서 x-축은 쿼리의 사이즈를 y-축은 비교 횟수를 나타내고 있다. 그래프(900 내지 1300)에 나타난 선들은 종래기술에 따른 "Tregex", "Tigersearch" 및 "Tgrep2"와 본 발명의 실시예들에 따른 TPE를 이용하여 측정된 쿼리의 사이즈에 따른 평균 비교 횟수를 나타내고 있다. "Tregex", "Tigersearch" 및 "Tgrep2"에 대해서는 이미 잘 알려진 관계로 자세한 설명은 생략한다.
여기서, 그래프(900)는 모든 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이고, 그래프(1000)는 높이 3을 갖는 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다. 또한, 그래프(1100)는 높이 4를 갖는 테스트 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이고, 그래프(1200)는 높이 4를 초과하는 높이를 갖는 테스트 쿼리들에 대해 쿼리 사이즈와 비교횟수간의 관계를 나타낸 그래프이다. 뿐만 아니라, 그래프(1300)는 와일드카드-풀(wildcard-full) 쿼리들에 대해 쿼리의 사이즈와 비교횟수간의 관계를 나타낸 그래프이다. 이때, 그래프(900 내지 1300) 모두에서 TPE의 비교횟수가 쿼리의 사이즈에 선형적으로 증가함이 나타나 있다. 여기서, 와일드카드-풀 쿼리는 실험적으로 종래기술의 다른 도구들과 높은 대조를 보인 쿼리 "find sentences that include at least k (1≤ k ≤10) words"를 의미한다.
마지막으로, 본 발명의 실시예들에 따른 시스템 및 방법은 말이나 글 또는 숫자를 묶기 위하여 사용하는 부호를 이용하여 임의의 비어있지 않은 트리를 표현하는 제1 트리 패턴 표현식, 제1 트리 패턴 표현식 내에 널 문자열이 아닌 정규 표현식을 포함하여, 정규 표현식에 루트가 매칭되고 자식이 없는 트리를 표현하는 제2 트리 패턴 표현식, 이터레이티브를 표현하기 위해 사용하는 부호에 의해 시작하는지 않는 트리 패턴 표현식에 대해, 트리 패턴 표현식에 의해 일치되지 않는 비어있는 트리를 표현하는 제3 트리 패턴 표현식, 이터레이티브를 표현하기 위해 사용되는 부호에 의해 시작하지 않는 트리 패턴 표현식에 대해, 이터레이티브를 표현하기 위해 사용되는 부호를 부가하여 비어있는 트리 또는 각각이 트리 패턴 표현식에 의해 일치되는 컨세큐티브 트리들을 표현하는 제4 트리 패턴 표현식, 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 정규 표현식이 루트와 일치하고, 복수의 트리 패턴 표현식이 루트의 모든 직속 서브트리와 순서대로 일치하는 트리를 표현하는 제5 트리 패턴 표현식 및 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 정규 표현식이 루트와 일치하는 트리를 표현하고, 복수의 트리 패턴 표현식에 따른 시퀀스와 순서대로 일치하는 리프들을 포함하는 컷이 존재하는 제6 트리 패턴 표현식 중 적어도 하나의 트리 패턴 표현식을 생성하거나 또는 적어도 하나의 트리 패턴 표현식을 이용하여 구조적 패턴에 대한 패턴-매칭을 수행할 수 있다. 여기서, 제1 트리 패턴 표현식 내지 제6 트리 패턴 표현식은 상술한 룰 1 내지 룰 6을 통해 규정된 트리 패턴 표현식을 각각 의미할 수 있다. 즉, 제1 트리 패턴 표현식 내지 제6 트리 패턴 표현식에 대한 보다 구체적인 설명은 정의 1 및 정의 2 그리고 룰 1 내지 룰 6을 참조할 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, 자연어 기반 정보 검색, XML 기반 텍스트 정보 추출, 객체 기반 영상 인식, 바이러스 코드 탐지 시스템 등과 같이 대규모 또는 실시간 트리 패턴 매칭을 필요로 하는 다양한 소프트웨어 시스템의 수행 속도를 현저히 증대시킬 수 있어, 비현실적인 수행 시간 문제 때문에 유용성에 명확한 한계가 있었던 종래 시스템의 성능 및 확장성을 획기적으로 향상시킬 수 있다.
본 발명의 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
400: 패턴 트리
Claims (10)
- 하기의 룰 1 내지 룰 6을 이용하여 정규 표현식들로부터 구조적 패턴을 표현하는 트리 패턴 표현식을 생성하거나 또는 상기 트리 패턴 표현식을 이용하여 상기 구조적 패턴에 대한 패턴-매칭을 수행하는 시스템.
<룰 1>
부호 <>는, 임의의 비어있지 않은(non-empty) 트리와 일치(match)하는 트리 패턴 표현식이다.
<룰 2>
널(null) 문자열이 아닌 정규 표현식 r에 대해 <r>은, 루트가 r에 의해 매칭되고 자식이 없는 트리와, 일치하는 트리 패턴 표현식이다.
<룰 3>
r이 *로 시작하지 않는 트리 패턴 표현식인 경우, !r은, r에 의해 일치되지 않는 비어있지 않은 트리와, 일치하는 트리 패턴 표현식이다.
<룰 4>
r이 *로 시작하지 않는 트리 패턴 표현식인 경우, *r은, 비어있는(empty) 트리 또는 각각이 r에 의해 일치되는 컨세큐티브(consecutive) 트리들과, 일치하는 트리 패턴 표현식이다.
<룰 5>
널 문자열이 아닌 정규 표현식 r0에 대해, r1, ..., rk(k≥1)가 모두 트리 패턴 표현식인 경우, <r0, r1, ..., rk>는, 특정 트리와 일치하되, 상기 특정 트리는 r0가 상기 특정 트리의 루트와 일치하고 r1, ..., rk가 상기 특정 트리의 루트의 모든 직속 서브트리와 순서대로 일치하는, 트리 패턴 표현식이다.
<룰 6>
널 문자열이 아닌 정규 표현식 r0에 대해, r1, ..., rk(k≥1)가 모두 트리 패턴 표현식인 경우, {r0, r1, ..., rk}는, 특정 트리와 일치하되, 상기 특정 트리는 r0가 상기 특정 트리의 루트와 일치하고, r1, ..., rk가 T1, ..., Tl와 순서대로 일치하는 트리의 컷 CT( = T1, ..., Tl)가 존재하는, 트리 패턴 표현식이다. 여기서, 상기 트리의 컷은 하기 정의 1과 같이 정의됨.
<정의 1>
트리의 디스조인트(disjoint) 서브트리(또는 프로퍼(proper) 서브트리)의 시퀀스에서 모든 리프(leaf)들의 시퀀스(왼쪽에서 오른쪽)가 상기 트리의 모든 리프들의 시퀀스(왼쪽에서 오른쪽)와 동일한 경우, 상기 시퀀스는 상기 트리의 컷이다. - 말이나 글 또는 숫자를 묶기 위하여 사용하는 부호를 이용하여 임의의 비어있지 않은 트리를 표현하는 제1 트리 패턴 표현식;
상기 제1 트리 패턴 표현식 내에 널 문자열이 아닌 정규 표현식을 포함하여, 상기 정규 표현식에 루트가 매칭되고 자식이 없는 트리를 표현하는 제2 트리 패턴 표현식;
이터레이티브를 표현하기 위해 사용하는 부호에 의해 시작하는지 않는 트리 패턴 표현식에 대해, 상기 트리 패턴 표현식에 의해 일치되지 않는 비어있는 트리를 표현하는 제3 트리 패턴 표현식;
상기 이터레이티브를 표현하기 위해 사용되는 부호에 의해 시작하지 않는 트리 패턴 표현식에 대해, 상기 이터레이티브를 표현하기 위해 사용되는 부호를 부가하여 비어있는 트리 또는 각각이 상기 트리 패턴 표현식에 의해 일치되는 컨세큐티브 트리들을 표현하는 제4 트리 패턴 표현식;
상기 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 상기 정규 표현식이 루트와 일치하고, 상기 복수의 트리 패턴 표현식이 루트의 모든 직속 서브트리와 순서대로 일치하는 트리를 표현하는 제5 트리 패턴 표현식; 및
상기 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 상기 정규 표현식이 루트와 일치하는 트리를 표현하고, 상기 복수의 트리 패턴 표현식에 따른 시퀀스와 순서대로 일치하는 리프들을 포함하는 컷이 존재하는 제6 트리 패턴 표현식
중 적어도 하나의 트리 패턴 표현식을 생성하거나 또는 상기 적어도 하나의 트리 패턴 표현식을 이용하여 구조적 패턴에 대한 패턴-매칭을 수행하는, 시스템. - 패턴 트리 및 타겟 트리를 입력으로 받아 상기 패턴 트리 및 상기 타겟 트리의 노드간 바인딩 관계를 나타내는 정보의 집합을 출력으로 제공하는 패턴-매칭 알고리즘을 이용하여 구조적 패턴간의 매칭 여부를 결정하는 매칭 여부 결정부
를 포함하는 패턴-매칭 시스템. - 제3항에 있어서,
상기 패턴-매칭 알고리즘은, 상기 패턴 트리에 포함된 노드인 패턴 노드의 자식 노드와 상기 타겟 트리에 포함된 노드인 타겟 노드의 자식 노드 및 논리형 변수를 입력으로 받아 상기 패턴 노드와 상기 타겟 노드가 서로 일치하는지 비교하고, 상기 패턴 노드의 자식 노드와 상기 타겟 노드의 자식 노드간에 일대 다수 노드-바인딩 관계를 생성하는 함수를 호출하는, 패턴-매칭 시스템. - 제3항에 있어서,
상기 패턴-매칭 알고리즘은, 상기 패턴 트리의 루트 및 상기 루트와 매칭하는 상기 타겟 트리의 노드를 입력으로 받아 상기 루트와 상기 타겟 트리의 노드들 각각을 위한 노드간 바인딩 관계를 생성하는 함수를 호출하는, 패턴-매칭 시스템. - 하기의 룰 1 내지 룰 6을 이용하여 정규 표현식들로부터 구조적 패턴을 표현하는 트리 패턴 표현식을 생성하거나 또는 상기 트리 패턴 표현식을 이용하여 상기 구조적 패턴에 대한 패턴-매칭을 수행하는 방법.
<룰 1>
부호 <>는, 임의의 비어있지 않은(non-empty) 트리와 일치(match)하는 트리 패턴 표현식이다.
<룰 2>
널(null) 문자열이 아닌 정규 표현식 r에 대해 <r>은, 루트가 r에 의해 매칭되고 자식이 없는 트리와, 일치하는 트리 패턴 표현식이다.
<룰 3>
r이 *로 시작하지 않는 트리 패턴 표현식인 경우, !r은, r에 의해 일치되지 않는 비어있지 않은 트리와, 일치하는 트리 패턴 표현식이다.
<룰 4>
r이 *로 시작하지 않는 트리 패턴 표현식인 경우, *r은, 비어있는(empty) 트리 또는 각각이 r에 의해 일치되는 컨세큐티브(consecutive) 트리들과, 일치하는 트리 패턴 표현식이다.
<룰 5>
널 문자열이 아닌 정규 표현식 r0에 대해, r1, ..., rk(k≥1)가 모두 트리 패턴 표현식인 경우, <r0, r1, ..., rk>는, 특정 트리와 일치하되, 상기 특정 트리는 r0가 상기 특정 트리의 루트와 일치하고 r1, ..., rk가 상기 특정 트리의 루트의 모든 직속 서브트리와 순서대로 일치하는, 트리 패턴 표현식이다.
<룰 6>
널 문자열이 아닌 정규 표현식 r0에 대해, r1, ..., rk(k≥1)가 모두 트리 패턴 표현식인 경우, {r0, r1, ..., rk}는, 특정 트리와 일치하되, 상기 특정 트리는 r0가 상기 특정 트리의 루트와 일치하고, r1, ..., rk가 T1, ..., Tl와 순서대로 일치하는 트리의 컷 CT( = T1, ..., Tl)가 존재하는, 트리 패턴 표현식이다. 여기서, 상기 트리의 컷은 하기 정의 1과 같이 정의됨.
<정의 1>
트리의 디스조인트(disjoint) 서브트리(또는 프로퍼(proper) 서브트리)의 시퀀스에서 모든 리프(leaf)들의 시퀀스(왼쪽에서 오른쪽)가 상기 트리의 모든 리프들의 시퀀스(왼쪽에서 오른쪽)와 동일한 경우, 상기 시퀀스는 상기 트리의 컷이다. - 말이나 글 또는 숫자를 묶기 위하여 사용하는 부호를 이용하여 임의의 비어있지 않은 트리를 표현하는 제1 트리 패턴 표현식;
상기 제1 트리 패턴 표현식 내에 널 문자열이 아닌 정규 표현식을 포함하여, 상기 정규 표현식에 루트가 매칭되고 자식이 없는 트리를 표현하는 제2 트리 패턴 표현식;
이터레이티브를 표현하기 위해 사용하는 부호에 의해 시작하는지 않는 트리 패턴 표현식에 대해, 상기 트리 패턴 표현식에 의해 일치되지 않는 비어있는 트리를 표현하는 제3 트리 패턴 표현식;
상기 이터레이티브를 표현하기 위해 사용되는 부호에 의해 시작하지 않는 트리 패턴 표현식에 대해, 상기 이터레이티브를 표현하기 위해 사용되는 부호를 부가하여 비어있는 트리 또는 각각이 상기 트리 패턴 표현식에 의해 일치되는 컨세큐티브 트리들을 표현하는 제4 트리 패턴 표현식;
상기 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 상기 정규 표현식이 루트와 일치하고, 상기 복수의 트리 패턴 표현식이 루트의 모든 직속 서브트리와 순서대로 일치하는 트리를 표현하는 제5 트리 패턴 표현식; 및
상기 널 문자열이 아닌 정규 표현식과 복수의 트리 패턴 표현식에 대해, 상기 정규 표현식이 루트와 일치하는 트리를 표현하고, 상기 복수의 트리 패턴 표현식에 따른 시퀀스와 순서대로 일치하는 리프들을 포함하는 컷이 존재하는 제6 트리 패턴 표현식
중 적어도 하나의 트리 패턴 표현식을 생성하거나 또는 상기 적어도 하나의 트리 패턴 표현식을 이용하여 구조적 패턴에 대한 패턴-매칭을 수행하는, 방법. - 패턴 트리 및 타겟 트리를 입력으로 받아 상기 패턴 트리 및 상기 타겟 트리의 노드간 바인딩 관계를 나타내는 정보의 집합을 출력으로 제공하는 패턴-매칭 알고리즘을 이용하여 구조적 패턴간의 매칭 여부를 결정하는 단계
를 포함하는 패턴-매칭 방법. - 제8항에 있어서,
상기 패턴-매칭 알고리즘은, 상기 패턴 트리에 포함된 노드인 패턴 노드의 자식 노드와 상기 타겟 트리에 포함된 노드인 타겟 노드의 자식 노드 및 논리형 변수를 입력으로 받아 상기 패턴 노드와 상기 타겟 노드가 서로 일치하는지 비교하고, 상기 패턴 노드의 자식 노드와 상기 타겟 노드의 자식 노드간에 일대 다수 노드-바인딩 관계를 생성하는 함수를 호출하는, 패턴-매칭 방법. - 제8항에 있어서,
상기 패턴-매칭 알고리즘은, 상기 패턴 트리의 루트 및 상기 루트와 매칭하는 상기 타겟 트리의 노드를 입력으로 받아 상기 루트와 상기 타겟 트리의 노드들 각각을 위한 노드간 바인딩 관계를 생성하는 함수를 호출하는, 패턴-매칭 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100112703A KR101225333B1 (ko) | 2010-11-12 | 2010-11-12 | 구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100112703A KR101225333B1 (ko) | 2010-11-12 | 2010-11-12 | 구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120051322A KR20120051322A (ko) | 2012-05-22 |
KR101225333B1 true KR101225333B1 (ko) | 2013-01-23 |
Family
ID=46268421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100112703A KR101225333B1 (ko) | 2010-11-12 | 2010-11-12 | 구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101225333B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804487A (zh) * | 2017-12-28 | 2018-11-13 | 中国移动通信集团公司 | 一种提取目标字符的方法及装置 |
CN117038002B (zh) * | 2023-10-08 | 2024-02-13 | 之江实验室 | 一种药物评价研究中生成观察变量的方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040084856A (ko) * | 2003-03-25 | 2004-10-06 | 마이크로소프트 코포레이션 | 자연 언어 생성 시스템에 있어서의 문장 실현에서서열화를 위한 구성 요소 구조의 언어학적으로 통지된통계적 모델들 |
-
2010
- 2010-11-12 KR KR1020100112703A patent/KR101225333B1/ko not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040084856A (ko) * | 2003-03-25 | 2004-10-06 | 마이크로소프트 코포레이션 | 자연 언어 생성 시스템에 있어서의 문장 실현에서서열화를 위한 구성 요소 구조의 언어학적으로 통지된통계적 모델들 |
Non-Patent Citations (3)
Title |
---|
'대량의 한국어 구문 트리 태깅 코퍼스 구축을 위한 구문 트리 태깅 워크벤치의 설계 및 구현', 1997년도 제9회 한글 및 한국어 정보처리 학술대회 (1997.10) * |
'문법 주석 코퍼스 검색을 위한 TPE와 기존 검색 도구의 성능 비교', 한국정보과학회 2009 가을학술발표논문집 제36권제2호(2009.11) * |
'트리뱅크를 사용한 TAG 문번 자동 구축', 한국정보과학회 2004년도 가을 학술발표논문집 제31권 제2호 (2004.10) * |
Also Published As
Publication number | Publication date |
---|---|
KR20120051322A (ko) | 2012-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989519B2 (en) | Applied artificial intelligence technology for using natural language processing and concept expression templates to train a natural language generation system | |
US8793208B2 (en) | Identifying common data objects representing solutions to a problem in different disciplines | |
US9311601B2 (en) | Techniques for knowledge discovery by constructing knowledge correlations using concepts or terms | |
Papakonstantinou et al. | Incremental validation of XML documents | |
US20110302168A1 (en) | Graphical models for representing text documents for computer analysis | |
US20020147711A1 (en) | Apparatus, method, and program for retrieving structured documents | |
CN105706092B (zh) | 四值模拟的方法和系统 | |
US9311058B2 (en) | Jabba language | |
CN109522225A (zh) | 一种自动化测试断言方法及装置、测试平台及存储介质 | |
CN115576984A (zh) | 中文自然语言生成sql语句及跨数据库查询方法 | |
Peterfreund | Grammars for document spanners | |
CN114625748A (zh) | Sql查询语句的生成方法、装置、电子设备及可读存储介质 | |
Tekli et al. | Approximate XML structure validation based on document–grammar tree similarity | |
Wang | A cross-domain natural language interface to databases using adversarial text method | |
Lin et al. | Measuring tree similarity for natural language processing based information retrieval | |
KR101225333B1 (ko) | 구문론적으로 분석된 텍스트 코퍼스로부터 정보를 추출하는 트리 패턴 표현식을 이용한 시스템 및 방법 | |
Ghodke et al. | Fangorn: A system for querying very large treebanks | |
CN106933844B (zh) | 面向大规模rdf数据的可达性查询索引的构建方法 | |
Alpuente et al. | A visual technique for web pages comparison | |
CN110717014A (zh) | 一种本体知识库动态构建方法 | |
CN113886422A (zh) | 一种数据提取方法、装置、设备及存储介质 | |
Choi | TPEMatcher: A tool for searching in parsed text corpora | |
JP5374456B2 (ja) | 文書検索装置の動作方法およびこれをコンピュータに実行させるためのコンピュータプログラム | |
Banerjee et al. | Natural language querying and visualization system | |
CN112749186B (zh) | 数据处理方法、装置、电子设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151214 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161227 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |