KR102158317B1 - 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘 - Google Patents

2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘 Download PDF

Info

Publication number
KR102158317B1
KR102158317B1 KR1020180163814A KR20180163814A KR102158317B1 KR 102158317 B1 KR102158317 B1 KR 102158317B1 KR 1020180163814 A KR1020180163814 A KR 1020180163814A KR 20180163814 A KR20180163814 A KR 20180163814A KR 102158317 B1 KR102158317 B1 KR 102158317B1
Authority
KR
South Korea
Prior art keywords
gram
pattern
fingerprint
text
grams
Prior art date
Application number
KR1020180163814A
Other languages
English (en)
Other versions
KR20200075295A (ko
Inventor
심정섭
유광모
김영호
Original Assignee
인하대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인하대학교 산학협력단 filed Critical 인하대학교 산학협력단
Priority to KR1020180163814A priority Critical patent/KR102158317B1/ko
Publication of KR20200075295A publication Critical patent/KR20200075295A/ko
Application granted granted Critical
Publication of KR102158317B1 publication Critical patent/KR102158317B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

일 실시예에 따른 핑거프린트를 이용한 순위패턴매칭 방법은, 패턴(P)에 대한 위치테이블, 이동테이블 및 복수 개의 q-그램에 대한 핑거프린트를 계산하는 전처리 단계; 및 상기 패턴(P)에 대한 위치테이블, 상기 이동테이블 및 상기 복수 개의 q-그램에 대한 핑거프린트를 계산한 값을 이용하여 상기 패턴(P)과 순위동형인 텍스트(T)의 부분문자열을 탐색하는 계산 단계를 포함할 수 있다.

Description

2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘{AN ORDER-PRESERVING PATTERN MATCHING ALGORITHM USING FINGERPRINT OF SECONDARY Q-GRAMS}
아래의 설명은 복수 개의 q-그램에 대한 핑거프린트를 이용하여 수행시간을 개선한 순위패턴매칭 알고리즘에 관한 것이다.
두 문자열의 길이가 같고, 각 문자열에서 문자들의 상대적인 순위가 모든 위치에서 일치하면 순위동형이라 한다. 예를 들면, T=(15, 33, 26, 41, 7, 6, 51)와 P=(33, 21, 7)가 주어졌을 때,
Figure 112018127052134-pat00001
P는 순위동형이다. 순위패턴매칭문제(order-preserving pattern matching problem)는 대소비교가 가능한 알파벳
Figure 112018127052134-pat00002
로 구성된 텍스트 T와 패턴 P가 주어졌을 때, P와 순위동형인 T의 모든 부분문자열을 찾는 문제이다. 이때, 순위패턴매칭문제는 두 음악의 유사멜로디 검출이나 주가분석 등에 활용될 수 있다.
최근 순위패턴매칭문제를 해결하기 위한 연구들이 활발하게 진행되고 있다. 길이가 각각 n, m인 텍스트 T와 패턴 P가 주어졌을 때, 순위패턴매칭문제를 KMP알고리즘을 기반으로
Figure 112018127052134-pat00003
시간에 해결하는 알고리즘이 제시되었다. 다른 연구에서는 P와 순위동형인 T의 부분문자열의 개수를 occ라 할 때, 순위접미사트리(order-preserving suffix trees)를
Figure 112018127052134-pat00004
시간에 생성하는 알고리즘을 제시하고, 이를 이용하여 순위패턴매칭문제를
Figure 112018127052134-pat00005
시간에 해결하는 알고리즘을 제시하였다. 또 다른 연구에서는 q개의 연속된 문자인 q-그램(q-gram)에 대한 핑거프린트(fingerprint)와 Horspool 알고리즘의 오문자규칙(bad-character heuristic)을 이용하여, 정수 알파벳일 때
Figure 112018127052134-pat00006
시간, 일반 알파벳일 때
Figure 112018127052134-pat00007
시간에 순위패턴매칭문제를 해결하는 알고리즘을 제시하였고, KMP 알고리즘을 함께 이용하여 정수 알파벳일 때
Figure 112018127052134-pat00008
시간, 일반 알파벳일 때
Figure 112018127052134-pat00009
시간에 순위패턴매칭문제를 해결하는 알고리즘이 제시되었다.
참고: 등록특허공보 제10-1662957호(2016.10.05.)호
복수 개의 q-그램에 대한 핑거프린트들을 이용한 순위패턴매칭 알고리즘을 제공할 수 있다.
전처리부 및 계산부를 포함하는 순위패턴매칭 장치에서 수행되는 핑거프린트를 이용한 순위패턴매칭 방법은, 상기 전처리부에서, 패턴(P)에 대한 위치테이블, 이동테이블 및 복수 개의 q-그램에 대한 핑거프린트를 계산하는 전처리 단계; 및 상기 계산부에서, 상기 패턴(P)에 대한 위치테이블, 상기 이동테이블 및 상기 복수 개의 q-그램에 대한 핑거프린트를 계산한 값을 이용하여 상기 패턴(P)과 순위동형인 텍스트(T)의 부분문자열을 탐색하는 계산 단계를 포함할 수 있다.
상기 복수 개의 q-그램은, 상기 패턴(P)와 텍스트(T)가 주어졌을 때, 상기 패턴(P)의 가장 오른쪽 q-그램을 1차 q-그램, 상기 1차 q-그램을 기준으로 상기 1차 q-그램의 이전에 위치한 q- 그램을 2차 q-그램이라고 하고, 상기 1차 q-그램 및 상기 2차 q-그램을 포함할 수 있다.
상기 계산 단계는,
Figure 112018127052134-pat00010
과 비교를 시작하는 텍스트(T)의 위치를 i라고 할 때, 각
Figure 112018127052134-pat00011
에 대해 1차 q-그램의 핑거프린트인
Figure 112018127052134-pat00012
Figure 112018127052134-pat00013
가 일치하는지 판단하는 단계를 포함할 수 있다.
상기 계산 단계는, 상기 각
Figure 112018127052134-pat00014
에 대해 1차 q-그램의 핑거프린트인
Figure 112018127052134-pat00015
Figure 112018127052134-pat00016
가 일치할 경우, 2차 q-그램의 핑거프린트인
Figure 112018127052134-pat00017
Figure 112018127052134-pat00018
가 일치하는지 확인하는 단계를 포함할 수 있다.
상기 계산 단계는, 상기 2차 q-그램의 핑거프린트인
Figure 112018127052134-pat00019
Figure 112018127052134-pat00020
가 일치할 경우, 패턴(P)와
Figure 112018127052134-pat00021
의 순위동형 여부를 위치테이블을 이용하여 확인하고,
Figure 112018127052134-pat00022
을 단계를 포함할 수 있다.
상기 계산 단계는, 순위동형 여부에 관계없이 텍스트의 위치(i)를
Figure 112018127052134-pat00023
만큼 증가시기는 단계를 포함할 수 있다.
순위패턴매칭 장치는, 패턴(P)에 대한 위치테이블, 이동테이블 및 복수 개의 q-그램에 대한 핑거프린트를 계산하는 전처리부; 및 상기 패턴(P)에 대한 위치테이블, 상기 이동테이블 및 상기 복수 개의 q-그램에 대한 핑거프린트를 계산한 값을 이용하여 상기 패턴(P)과 순위동형인 텍스트(T)의 부분문자열을 탐색하는 계산부를 포함할 수 있다.
2개의 q-그램을 이용하여 순위동형을 검증하는 횟수를 감소시켜 수행속도를 개선할 수 있다.
도 1은 일 실시예에 따른 2개의 q-그램에 대한 핑거프린트들을 이용한 순위패턴매칭 알고리즘을 나타낸 예이다.
도 2는 일 실시예에 따른 순위패턴매칭 장치의 구성을 설명하기 위한 블록도이다.
도 3은 일 실시예에 따른 순위패턴매칭 장치에서 수행되는 순위패턴매칭 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 있어서, 텍스트 T와 q-그램 핑거프린트의 분포율을 나타낸 그래프이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
알파벳
Figure 112018127052134-pat00024
는 상수시간에 비교 가능한 정수문자 집합이다.
Figure 112018127052134-pat00025
로 구성된 길이가 m인 문자열들의 집합을
Figure 112018127052134-pat00026
로 표기한다. 문자열
Figure 112018127052134-pat00027
의 길이를
Figure 112018127052134-pat00028
,
Figure 112018127052134-pat00029
i번째
Figure 112018127052134-pat00030
문자를
Figure 112018127052134-pat00031
로 표시한다. 문자열
Figure 112018127052134-pat00032
i번째부터 j번째까지의 부분문자열
Figure 112018127052134-pat00033
Figure 112018127052134-pat00034
로 표기한다.
Figure 112018127052134-pat00035
에서 i=0이면, 이를
Figure 112018127052134-pat00036
의 접두사(prefix)라고 하고,
Figure 112018127052134-pat00037
이면
Figure 112018127052134-pat00038
의 접미사(suffix)라 한다. 두 문자열
Figure 112018127052134-pat00039
,
Figure 112018127052134-pat00040
에 대해
Figure 112018127052134-pat00041
이고
Figure 112018127052134-pat00042
이면
Figure 112018127052134-pat00043
,
Figure 112018127052134-pat00044
는 순위동형이라 하고
Figure 112018127052134-pat00045
로 표기한다.
문자열의 순위관계를 표현하는 방법으로 접두사표현(prefix representation)과 최근접이웃표현(nearest neighbor representation)이 있다. 문자열
Figure 112018127052134-pat00046
의 접두사표현은 접두사테이블(prefix table)
Figure 112018127052134-pat00047
를 이용하여 정의된다.
Figure 112018127052134-pat00048
다시 말해서,
Figure 112018127052134-pat00049
는 문자열
Figure 112018127052134-pat00050
에서
Figure 112018127052134-pat00051
보다 작은 문자들의 수이다. 문자열
Figure 112018127052134-pat00052
,
Figure 112018127052134-pat00053
Figure 112018127052134-pat00054
에 대한
Figure 112018127052134-pat00055
가 주어졌을 때,
Figure 112018127052134-pat00056
이면,
Figure 112018127052134-pat00057
이다.
문자열
Figure 112018127052134-pat00058
에 대한 최근접이웃표현은 위치테이블(location table)
Figure 112018127052134-pat00059
,
Figure 112018127052134-pat00060
을 이용하여 정의된다.
Figure 112018127052134-pat00061
Figure 112018127052134-pat00062
다시 말해서,
Figure 112018127052134-pat00063
Figure 112018127052134-pat00064
에서
Figure 112018127052134-pat00065
보다 작은 값 중 가장 큰 값의 위치
Figure 112018127052134-pat00066
이고,
Figure 112018127052134-pat00067
Figure 112018127052134-pat00068
에서
Figure 112018127052134-pat00069
보다 큰 값 중 가장 작은 값의 위치 j이다. 만약 그러한 j가 복수 개 존재한다면, 가장 큰 위치를 저장한다. 만약, 그러한 위치 j가 존재하지 않으면, -1을 저장한다. 문자열
Figure 112018127052134-pat00070
,
Figure 112018127052134-pat00071
Figure 112018127052134-pat00072
Figure 112018127052134-pat00073
,
Figure 112018127052134-pat00074
가 주어졌을 때,
Figure 112018127052134-pat00075
이면,
Figure 112018127052134-pat00076
이다.
표 1은 문자열 P=(11, 83, 32, 40, 9, 56)일 때, P에 대한 접두사테이블
Figure 112018127052134-pat00077
와 위치테이블
Figure 112018127052134-pat00078
,
Figure 112018127052134-pat00079
를 보여준다. 접두사테이블은 순위통계트리, 위치테이블은 정렬알고리즘을 이용하여 각각
Figure 112018127052134-pat00080
시간에 계산할 수 있다.
표 1: P=(11, 83, 32, 40, 9, 56)에 대한 접두사테이블과 위치테이블
Figure 112018127052134-pat00081
순위패턴매칭문제에서 입력은 텍스트
Figure 112018127052134-pat00082
, 패턴
Figure 112018127052134-pat00083
이고, 출력은
Figure 112018127052134-pat00084
인 모든 위치 i 이다. 편의상 PT는 서로 다른 정수로 구성된다고 가정한다.
도 1은 일 실시예에 따른 2개의 q-그램에 대한 핑거프린트들을 이용한 순위패턴매칭 알고리즘을 나타낸 예이다.
실시예에서는 복수 개의 q-그램, 예를 들면, 2개의 q-그램을 이용하여 순위동형을 검증하는 횟수를 감소시켜 수행속도를 개선하는 방법을 설명하기로 한다. 예를 들면, q 개의 연속된 문자인 q-그램
Figure 112018127052134-pat00085
에 대한 핑거프린트
Figure 112018127052134-pat00086
가 다음과 같이 정의될 수 있다.
Figure 112018127052134-pat00087
이때,
Figure 112018127052134-pat00088
는 계승수체계(factorial number system)를 사용하므로 0~q!-1 중 하나의 정수로 변환될 수 있다. 예를 들면, q=3일 때, q-그램
Figure 112018127052134-pat00089
=(11, 83, 32)라면,
Figure 112018127052134-pat00090
=(0, 1, 1)이며,
Figure 112018127052134-pat00091
에 대한 핑거프린트
Figure 112018127052134-pat00092
=(0X0!)+(1X1!)+(1X2!)=3이다.
Figure 112018127052134-pat00093
일 때,
Figure 112018127052134-pat00094
의 일치여부를 확인한 뒤 일치하였을 경우에 위치테이블을 이용하여 순위동형 여부를 확인한다. 이때,
Figure 112018127052134-pat00095
는 패턴 P의 가장 오른쪽 q-그램 핑거프린트를 의미할 수 있다.
도 2는 일 실시예에 따른 순위패턴매칭 장치의 구성을 설명하기 위한 블록도이고, 도 3은 일 실시예에 따른 순위패턴매칭 장치에서 수행되는 순위패턴매칭 방법을 설명하기 위한 흐름도이다.
실시예에서 제시하는 알고리즘은 전처리 단계(310)와 계산 단계(320)로 구성될 수 있다. 이러한 알고리즘은 전처리부(210)와 계산부(220)를 포함하는 순위패턴매칭 장치(200)에 의해 수행될 수 있다.
Figure 112018127052134-pat00096
P의 1차 q-그램,
Figure 112018127052134-pat00097
P의 2차 q-그램이라고 하자. 다시 말해서, 2차 q-그램은 1차 q-그램의 바로 앞에 위치한 q-그램이 된다.
전처리 단계(310)에서 전처리부(210)는 패턴 P에 대한 위치테이블과 이동테이블, 2개의 q-그램에 대한 핑거프린트를 계산할 수 있다. 이때, 예를 들면, 이동테이블 D는 모든 가능한 q-그램
Figure 112018127052134-pat00098
에 대해 최대이동거리 m-q+1로 초기화한 뒤, 다음의 수식을 이용하여 계산될 수 있다. 이동테이블 D는 모든 가능한 q-그램에 대한 정보를 저장할 수 있다.
Figure 112018127052134-pat00099
계산 단계(320)에서 계산부(220)는 패턴 P에 대한 위치테이블과 이동테이블, 2개의 q-그램에 대한 핑거프린트를 계산한 각각의 값을 이용하여 패턴 P와 순위동형인 텍스트 T의 모든 부분문자열을 탐색할 수 있다. 구체적으로,
Figure 112018127052134-pat00100
과 비교를 시작하는 텍스트 T의 위치를 i라고 할 때, 각
Figure 112018127052134-pat00101
에 대해 1차 q-그램의 핑거프린트인
Figure 112018127052134-pat00102
Figure 112018127052134-pat00103
가 일치하면 2차 q-그램의 핑거프린트인
Figure 112018127052134-pat00104
Figure 112018127052134-pat00105
가 일치하는지 확인한다. 만약, 2차q-그램의 핑거프린트도 일치하면, 패턴 P
Figure 112018127052134-pat00106
의 순위동형 여부를 위치테이블을 이용하여 확인하여
Figure 112018127052134-pat00107
이면, 위치 i-m+1을 출력할 수 있다. 이후, 순위동형 여부에 관계없이 i
Figure 112018127052134-pat00108
만큼 증가시키고 위 과정을 반복할 수 있다.
도 1을 참고하면, 예를 들면, T=(15, 33, 26, 41, 18, 6, 51, 99, 36, 2)와 P=(33, 21, 7, 35, 70)이 주어졌을 때, 단계 7은 다음과 같이 수행될 수 있다. 텍스트 T와 패턴 P의 1차 q-그램의 핑거프린트가 5로 일치하므로 2차 q-그램의 핑거프린트를 계산하고 비교한다. 이 두 값도 4로 일치하므로 두 문자열이 순위동형인지 확인한다. 순위동형을 확인한 결과,
Figure 112018127052134-pat00109
이므로 3을 출력하고 이동테이블 D[5]=3을 이용하여 비교위치i를 10으로 증가시킨다. 이때, i>n-1이므로 탐색을 종료한다.
실시예에서 제안된 알고리즘의 전처리 단계에서 패턴 P에 대한 위치테이블, 이동테이블은 각각
Figure 112018127052134-pat00110
,
Figure 112018127052134-pat00111
시간에 계산할 수 있다. 계산 단계에서 q-그램들의 핑거프린트 계산과, P
Figure 112018127052134-pat00112
의 순위동형 확인은 각각 총
Figure 112018127052134-pat00113
시간,
Figure 112018127052134-pat00114
시간에 수행할 수 있다. 이에 따라, 실시예에서 제안된 알고리즘의 총 수행시간은
Figure 112018127052134-pat00115
시간이 된다.
도 4는 일 실시예에 있어서, 텍스트 Tq-그램 핑거프린트의 분포율을 나타낸 그래프이다.
실시예에서 제안된 알고리즘에 대한 실험이 수행될 수 있다. 실험 환경으로 OS는 Windows 10(64 비트), CPU 및 RAM은 Intel Core i7-6700(3.4GHz), 32GB RAM, 개발 툴 및 언어는 Visual studio 2015, c++이 구성될 수 있다. 텍스트 T와 패턴 P는 C++ boost library를 이용하여
Figure 112018127052134-pat00116
에 대해 무작위로 생성한 정수형 문자열(n=5,000,000)과 1985년 2월 16일부터 2010년 12월 31일까지의 다우존스산업평균지수의 일별 종가(n=34,685)로 생성한 다우존스지수 데이터를 이용하였다. m은 5, 10, 15에 대해, q는 3부터 7까지 변경하며 실험이 진행될 수 있다.
수행시간은 무작위로 생성된 정수형 문자열에 대해 1000번 실험한 수행시간의 합으로, 다우존스지수 데이터에 대해 10000번 실험한 수행시간의 합이 측정될 수 있다. 무작위로 생성한 문자열의 경우 패턴 또한 무작위로 생성될 수 있으며, 다우존스지수 데이터에서 패턴은 T의 위치에서 무작위로 추출될 수 있다. 편의상 종래의 연속된 문자인 q-그램(q-gram)에 대한 핑거프린트(fingerprint)와 Horspool 알고리즘의 오문자규칙(bad-character heuristic)을 이용하여 순위패턴매칭문제를 해결하는 알고리즘을 OPQ, 실시예에서 제안된 알고리즘을 OPSQ로 기재하여 설명하기로 한다.
제1 실험으로서, 입력 데이터에 대한 수행시간을 비교하는 실험이 수행될 수 있다. 표 2는 입력 데이터에 따른 OPQ와 OPSQ의 수행시간을 나타낸 것이다. 각 실험에서 수행시간이 가장 빠른 알고리즘을 진하게 표시하였다.
표 2: m=4, 10, 15, 3≤q≤7에 대한 OPQ와 OPSQ의 수행시간
Figure 112018127052134-pat00117
ran은 무작위로 생성된 입력 데이터, dow는 다우존스지수 입력 데이터를 의미한다. ran의 경우, m=10, q=3일 때, OPSQ 가 OPQ보다 약 12% 빠르게 수행되었다. m, q의 크기와 상관없이 모든 경우에서 OPSQ 가 OPQ보다 평균 약 9% 빠른 수행시간을 보여준다.
Figure 112018127052134-pat00118
= 4, 10인 경우에도 유사한 결과를 보인다.
dow의 경우, m=10, q=3일 때, OPSQ 가 OPQ보다 최대 약 10% 빠르게 수행되었다. 그런데, q≥4일 때에는 ran의 경우와 달리, OPSQ의 수행시간은 OPQ에 비해 크게 개선되지 않고 평균적으로 1% 정도 빠르게 수행되었다. 특히, m=15, q=6일 때, OPSQ는 OPQ보다 오히려 느린 수행시간을 보인다. 이러한 결과에 대해서 다음 실험을 통하여 분석할 수 있다.
제2 실험은 알고리즘의 성능에 영향을 미치는 요소는 분석한 것이다. 제1 실험의 결과, 실시예에서 제안된 알고리즘은 dow의 경우, q≥4일 때 기존의 알고리즘보다 수행시간이 크게 개선되지 않았다. 이는 다우존스지수의 특성상 q-그램 핑거프린트가 균일하게 나타나지 않기 때문이라 유추될 수 있다. 이러한 경우, 알고리즘의 성능을 향상시키기 위하여 제1 실험에서 사용된 텍스트 T의 모든 q-그램 핑거프린트의 분포를 확인하고 그 결과를 이용하여 패턴을 추출한 실험이 진행될 수 있다.
도 4는 제1 실험에서 사용한 randow에서 길이가 각각 3, 4이고, 시작 위치가
Figure 112018127052134-pat00119
q-그램 핑거프린트
Figure 112018127052134-pat00120
의 분포를 나타낸 것이다. 핑거프린트 함수에 의하면, q가 커질수록 가능한 핑거프린트의 범위는 증가한다. ran에 대해서는 모든 핑거프린트가 거의 동일하게 분포되지만, dow는 그렇지 않으며, 특히 핑거프린트가 q!-1인 경우 자주 발생되었다. 과거부터 지속적으로 주가가 상승해온 dow의 특성에 의한 것으로 판단된다. 이러한 이유로 제1 실험의 dow에서 패턴을 랜덤으로 추출하였지만 2차 q-그램 핑거프린트가 q!-1인 경우가 상대적으로 많았고, 이로 인하여 순위동형 검증 횟수를 줄인 효과가 감소하여 ran에 비해 수행시간이 크게 줄지 않았다.
표 3은 제1 실험에서 사용된 dow를 패턴 P에서 생성할 때, P의 1, 2차 q-그램 핑거프린트가 q!-1이 되지 않도록 추출하여 실험한 OPQ와 OPSQ의 수행시간이다. 실험결과, 모든 경우에서 제1 실험의 OPSQ보다 제2 실험의 OPSQ가 더 빠르게 수행되었다. q=3일 때, OPSQ가 OPQ보다 평균 18% 정도 빠르게 수행되었고, q≥4일 때도 평균적으로 11% 정도 빠르게 수행되었다. 특히, m=15, q=3일 때는 OPSQ가 OPQ보다 약 23% 빠르게 수행되었다.
표 3: T에서 드물게 나타나는 부분문자열을 P로 설정했을 때의 OPQ와 OPSQ의 수행시간
Figure 112018127052134-pat00121
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (7)

  1. 전처리부 및 계산부를 포함하는 순위패턴매칭 장치에서 수행되는 핑거프린트를 이용한 순위패턴매칭 방법에 있어서,
    상기 전처리부에서, 패턴(P)에 대한 위치테이블, 이동테이블 및 복수 개의 q-그램에 대한 핑거프린트를 계산하는 전처리 단계; 및
    상기 계산부에서, 상기 패턴(P)에 대한 위치테이블, 상기 이동테이블 및 상기 복수 개의 q-그램에 대한 핑거프린트를 계산한 값을 이용하여 상기 패턴(P)과 순위동형인 텍스트(T)의 부분문자열을 탐색하는 계산 단계
    를 포함하고,
    상기 복수 개의 q-그램은,
    길이가 m인 문자열로 구성된 패턴(P)와 길이가 n인 문자열로 구성된 텍스트(T)가 주어졌을 때, 상기 패턴(P)의 가장 오른쪽 q-그램을 1차 q-그램, 상기 1차 q-그램을 기준으로 상기 1차 q-그램의 이전에 위치한 q- 그램을 2차 q-그램이라고 하고, 상기 1차 q-그램 및 상기 2차 q-그램을 포함하고,
    상기 계산 단계는,
    Figure 112020045632297-pat00140
    과 비교를 시작하는 텍스트(T)의 위치를 i라고 할 때, 각
    Figure 112020045632297-pat00141
    에 대해 패턴의 1차 q-그램 핑거프린트와 텍스트의 1차 q-그램 핑거프린트가 일치하는지 판단하고, 상기 패턴의 1차 q-그램 핑거프린트와 텍스트의 1차 q-그램 핑거프린트가 일치할 경우, 상기 패턴의 2차 q-그램 핑거프린트와 상기 텍스트의 2차 q-그램 핑거프린트가 일치하는지 확인하고, 상기 패턴의 2차 q-그램 핑거프린트와 상기 텍스트의 2차 q-그램 핑거프린트가 일치할 경우, 패턴(P)와 상기 텍스트의 순위동형 여부를 위치테이블을 이용하여 확인하여 위치 i-m+1을 출력하는 단계
    를 포함하는 순위패턴매칭 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 계산 단계는,
    순위동형 여부에 관계없이 텍스트의 위치(i)를 이동테이블에서 텍스트의 1차 q-그램 핑거프린트의 거리 만큼 증가시기는 단계
    를 포함하는 순위패턴매칭 방법.
  7. 순위패턴매칭 장치에 있어서,
    패턴(P)에 대한 위치테이블, 이동테이블 및 복수 개의 q-그램에 대한 핑거프린트를 계산하는 전처리부; 및
    상기 패턴(P)에 대한 위치테이블, 상기 이동테이블 및 상기 복수 개의 q-그램에 대한 핑거프린트를 계산한 값을 이용하여 상기 패턴(P)과 순위동형인 텍스트(T)의 부분문자열을 탐색하는 계산부
    를 포함하고,
    상기 복수 개의 q-그램은,
    길이가 m인 문자열로 구성된 패턴(P)와 길이가 n인 문자열로 구성된 텍스트(T)가 주어졌을 때, 상기 패턴(P)의 가장 오른쪽 q-그램을 1차 q-그램, 상기 1차 q-그램을 기준으로 상기 1차 q-그램의 이전에 위치한 q- 그램을 2차 q-그램이라고 하고, 상기 1차 q-그램 및 상기 2차 q-그램을 포함하고,
    상기 계산부는,
    Figure 112020045632297-pat00142
    과 비교를 시작하는 텍스트(T)의 위치를 i라고 할 때, 각
    Figure 112020045632297-pat00143
    에 대해 패턴의 1차 q-그램 핑거프린트와 텍스트의 1차 q-그램 핑거프린트가 일치하는지 판단하고, 상기 패턴의 1차 q-그램 핑거프린트와 텍스트의 1차 q-그램 핑거프린트가 일치할 경우, 상기 패턴의 2차 q-그램 핑거프린트와 상기 텍스트의 2차 q-그램 핑거프린트가 일치하는지 확인하고, 상기 패턴의 2차 q-그램 핑거프린트와 상기 텍스트의 2차 q-그램 핑거프린트가 일치할 경우, 패턴(P)와 상기 텍스트의 순위동형 여부를 위치테이블을 이용하여 확인하여 위치 i-m+1을 출력하는
    순위패턴매칭 장치.
KR1020180163814A 2018-12-18 2018-12-18 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘 KR102158317B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180163814A KR102158317B1 (ko) 2018-12-18 2018-12-18 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180163814A KR102158317B1 (ko) 2018-12-18 2018-12-18 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘

Publications (2)

Publication Number Publication Date
KR20200075295A KR20200075295A (ko) 2020-06-26
KR102158317B1 true KR102158317B1 (ko) 2020-09-21

Family

ID=71136959

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180163814A KR102158317B1 (ko) 2018-12-18 2018-12-18 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘

Country Status (1)

Country Link
KR (1) KR102158317B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063306A (ja) 2012-09-20 2014-04-10 Casio Comput Co Ltd 検索装置、検索方法及びプログラム
KR101662957B1 (ko) * 2015-07-30 2016-10-05 인하대학교 산학협력단 해싱기반의 순위다중패턴매칭 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696124A (ja) * 1992-09-11 1994-04-08 Sumitomo Metal Ind Ltd 情報検索装置
KR101830783B1 (ko) * 2010-04-01 2018-02-21 삼성전자주식회사 핵산 서열을 검색하는 방법, 장치 및 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063306A (ja) 2012-09-20 2014-04-10 Casio Comput Co Ltd 検索装置、検索方法及びプログラム
KR101662957B1 (ko) * 2015-07-30 2016-10-05 인하대학교 산학협력단 해싱기반의 순위다중패턴매칭 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
유광모 등, "2개의 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭알고리즘", 정보과학회논문지, 한국정보과학회, Vol.45, no.11, pp.1111-1116 1부.*

Also Published As

Publication number Publication date
KR20200075295A (ko) 2020-06-26

Similar Documents

Publication Publication Date Title
WO2019223103A1 (zh) 文本相似度的获取方法、装置、终端设备及介质
CN109241274B (zh) 文本聚类方法及装置
CN107844705B (zh) 基于二进制代码特征的第三方组件漏洞检测方法
WO2015101097A1 (zh) 特征提取的方法及装置
WO2018200294A1 (en) Parser for schema-free data exchange format
CN108132929A (zh) 一种海量非结构化文本的相似性计算方法
US7818278B2 (en) Large scale item representation matching
ES2865149T3 (es) Sistema y método para correlación de ficheros funcional rápida y escalable
KR20140102274A (ko) 상태 기계 격자에서의 불리언 로직
Huang et al. JSContana: Malicious JavaScript detection using adaptable context analysis and key feature extraction
US20140358965A1 (en) Method of searching character string, character string searching device, and recording medium
CN110347782A (zh) 文章查重方法、装置和电子设备
Louza et al. External memory generalized suffix and LCP arrays construction
US20180225382A1 (en) System and method for automatic creation of ontological databases and semantic searching
WO2022105497A1 (zh) 文本筛选方法、装置、设备及存储介质
CN110532388B (zh) 文本聚类的方法、设备和存储介质
CN104685493A (zh) 用于监视文本信息的字典创建装置、用于监视文本信息的字典创建方法和用于监视文本信息的字典创建程序
Fredriksson et al. Average-optimal string matching
Pungila et al. A new high-performance approach to approximate pattern-matching for plagiarism detection in blockchain-based non-fungible tokens (NFTs)
CN112926647B (zh) 模型训练方法、域名检测方法及装置
Ulmer et al. Massively parallel acceleration of a document-similarity classifier to detect web attacks
WO2019136799A1 (zh) 数据离散化方法、装置、计算机设备及存储介质
KR102158317B1 (ko) 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘
CN104008334B (zh) 一种文件的聚类方法和设备
CN107844702A (zh) 基于云防护环境下网站木马后门检测方法及装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant