KR940003700B1 - 검색방법 및 그 장치 - Google Patents

검색방법 및 그 장치 Download PDF

Info

Publication number
KR940003700B1
KR940003700B1 KR1019870001080A KR870001080A KR940003700B1 KR 940003700 B1 KR940003700 B1 KR 940003700B1 KR 1019870001080 A KR1019870001080 A KR 1019870001080A KR 870001080 A KR870001080 A KR 870001080A KR 940003700 B1 KR940003700 B1 KR 940003700B1
Authority
KR
South Korea
Prior art keywords
character
comparison
text
pattern
character pattern
Prior art date
Application number
KR1019870001080A
Other languages
English (en)
Other versions
KR870008259A (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
Priority claimed from JP61028808A external-priority patent/JPH0752447B2/ja
Priority claimed from JP61052439A external-priority patent/JPS62210538A/ja
Application filed by 가부시기가이샤 히다찌세이사꾸쇼, 미쓰다 가쓰시게 filed Critical 가부시기가이샤 히다찌세이사꾸쇼
Publication of KR870008259A publication Critical patent/KR870008259A/ko
Application granted granted Critical
Publication of KR940003700B1 publication Critical patent/KR940003700B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access

Landscapes

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

Abstract

내용 없음.

Description

검색방법 및 그 장치
제1도는 본 발명의 실시예인 텍스트서어치장치의 블럭구성도.
제2도는 본 발명을 실현하는 텍스트서어치방식의 흐름도.
제3도 제4도 및 제5도는 본 발명의 방식이 설명도.
제6도 및 제7도는 본 발명에서 사용하는 테이블의 예를 도시한 도면.
제8도는 텍스트의 예를 도시한 도면.
제9도는 본 발명의 동작예의 설명도.
제10도는 본 발명을 실현하는 기호열서어치장치의 블럭구성도.
제11도는 본 발명을 실현하는 기호열서어치방식의 흐름도.
제12도 및 제13도는 본 발명의 방법의 설명도.
제14도는 본 발명에 있어서의 서어치 상태의 설명도.
제15도는 본 발명의 상태천이도.
제16도 및 제18도는 상태천이테이블을 도시한 도면.
제17도 및 제19도는 본 발명의 스킵테이블을 도시한 도면.
제20도는 본 발명의 텍스트테이블을 도시한 도면.
제21도는 본 발명의 동작예의 설명도.
본 발명은 텍스트 또는 기호열의 서어치, 더 나아가서는 음성이나 화상등을 포함하여 검색의 단위를 결정해서 검색하는 검색방법 및 그 장치등의 검색방식의 일반에 관한것으로, 특히 고속인 기호열, 서어치 처리에 적합한 검색방법 및 그 장치에 관한 것이다.
이하, 본 발명의 대표적인 적용분야인 텍스트서어치방식의 종래기술에 대해서 설명한다.
사무화자동화에 따라서 문서정보의 데이터베이스화가 급속하게 진전되고 있으며, 그 데이터베이스의 규모도 대규모화하는 경향이 있다. 따라서, 문서정보의 데이터베이스 처리의 고속화는 중요한 과제이다. 중요한 처리의 하나는 텍스트라고 불리우는 문자열의 데이타중에서 패턴이라고 불리우는 특정한 문자열을 검색하는 텍스트서어치 처리이다. 따라서, 이 텍스트서어치처리를 고속으로 실행하는 것이 매우 요망되고 있다.
종래에는 여러 종류의 텍스트서어치의 방식 및 장치가 제안되어 있다. 예를 들면, [Hollaar, L.A. : Hardware Systems For Text Information Retrieval, ACM SIGIR 6th conf., 1983]에는 패턴을 1문자씩 어레이형상으로 레지스터에 저장해두고, 그곳에 텍스트를 선두부터 1문자씩 입력해가서 패턴을 검출하는 셀러어레이(cellulararrays) 법이나 유한오토마톤법을 이용해서 텍스트를 선두부터 1문자씩 입력하면서 상태천이테이블을 참조해서 패턴을 검출하는 유한오토마톤법등이 알려져 있다. 그러나, 이들 종래의 방법은 텍스트를 선두부터 1문자씩 입력해가는 방법이기 때문에 텍스트길이를 n문자라고 하면, n문자전부를 입력하지 않으면 안되어 그것이 넥크(neck)로 되어 그 이상의 고속화는 원리적으로 불가능하였다.
한편, 텍스트서어치의 소프트웨어적인 방법으로써, KMP법(Kunuth, D.E.외 : Fast Pattern Matching in Strings, SIAM J. Comput., vol.6, p.323-350, 1977)이나 BM법(Boyer, R.S.외 : A Fast String Searching Algorithm, CA CM, vol.20, p762-772, 1977)이 알려져있지만, 이들 방식은 텍스트와 패턴을 1문자씩 페치해 와서 비교하고, 그 결과에 따라서 여러가지처리를 하는 것으로, 소프트적으로도 고속이 아니고, 또 하드화에도 적합하지 않은 방식이었다.
상기에서 설명한 바와 같이 종래기술은 패턴을 검출하는데 텍스트길이 n문자전부를 1문자씩의 순서로 입력하지않으면 안된다는 알고리듬상의 문제점이 있었다.
본 발명의 목적은 입력하는 텍스트의 문자 또는 기호열의 수를 대폭적으로 줄이는 것에 의해 고속으로 패턴을 검출할 수 있는 검색방법 및 그 장치를 제공하는 것이다.
이를 위하여 본 발명은 기호열중에 적어도 하나의 소정의 패턴(소위, 키워드)가 포함되어 있는 것을 검출하기 위하여 현재의 기호열서어치의 상태와 입력한 적어도 하나의 기호의 정보에서 다음에 입력해야 할 기호열의 어드레스와 다음의 상태를 용이하게 산출할수 있는 정보를 저장하는 테이블을 준비하고, 기호열을 입력하면, 현재의 상태와 입력한 기호열의 정보에서 상기 테이블에 엑세스하고 그곳에 저장되어 있는 데이타에서 다음의 상태및 다음에 입력해야할 기호열의 어드레스를 얻고, 다음에 그 어드레스의 기호열을 입력하는 것을 특징으로 한다.
[제1의 실시예]
이하, 본 발명의 주요한 적용분야인 텍스트서어치방식에 대한 제1의 실시예를 상세하게 설명한다. 본 발명에 있어서의 텍스트서어치방식에서 m을 패턴길이, n을 텍스트길이로 한다. 또, P(j)(1≤j≤m)를 패턴의 j번째의 문자, P(j : k)를 패턴의 j번째에서 k번째까지의 문자열, T(i)(1≤i≤n)를 텍스트의 i번째 문자 T(i)(1≤i≤n)를 텍스트의 i번째의 문자(i : k)를 텍스트의 i번째에서 k번재까지의 문자열로 한다. 또, 텍스트서어치를 실행할때, 텍스트는 논리적으로 제8도에 도시한 바와 같이 텍스트테이블(300)의 형태로 RAM(Random Access Memory)에 저장되어 있는 것으로 한다.
처음에, 텍스트의 서어치상태(i, ℓ)을 정의한다. 여기서, i는 다음에 입력해야할 텍스트 1문자의 어드레스, ℓ은 패턴과 패턴의 뒤쪽에서 ℓ문자 일치하고 있는 상태를 표시한다. 이것을 설명한 것이 제3도이다.
다음에, 서어치상태의 천이에 대해서 제4도 및 제5도를 사용해서 설명한다. 서어치상태가(i, ℓ)일 때, 어드레스가 i인 텍스트 1문자 T(i)가 패턴의 m-ℓ번째의 문자P(m-ℓ)과 같은 경우는 i=i-1, ℓ=ℓ+1로 한다(제4도). 같지않은 경우는 패턴의 m-ℓ째보다 앞에서부터 텍스트의 i번째에서 i+ℓ번째까지의 문자열T(i : i+ℓ)과 완전하게 일치하는 문자열의 패턴에 출현할때까지 패턴을 이동하는 것을 고려한다. 즉, 그 일치하는 패턴내의 문자열을 P(H-ℓ : H)로 하면, 패턴을 m-H만큼 이동하여 상태ℓ을 0으로 하면 좋으므로, i=i+m+ℓ-H, ℓ=0으로 한다.
상기에서 기술한 H는 다음의 식으로 구해진다.
H(ℓ, z)=max{x1(ℓ+1≤x≤m-1 and P(x-ℓ)=z and P(x-ℓ+1 : x)
=P(m-ℓ+1 : m) or (1≤x≤ℓ-1 and P(1 : x)=P(m-x+1 : m)) or x=0}(1≤ℓ≤m-1)
이 H(ℓ, z)는 패턴에서만 결정되는 함수이다. 일례로서, 패턴이 “AABCAAABCAA”인 경우를 고려하면, H(1, C)는 패턴의 뒤부터 보아가서 최초로 문자열 “CA”가 발견되는 패턴내의 위치(문자열의 최후의 위치)“10”이다. 이 예의 경우의 H(ℓ, z)의 테이블을 제6도에 도시한다.
다음에,이 방식의 구체적인 흐름도의 일례를 제2도에 도시한다. 먼저, 텍스트의 어드레스 i에 패턴길이 m, 상태 ℓ에 0을 실행한다(101). 다음에, i가 텍스트길이 n이하인가 어떤가를 판정하고, i가 n보다 클때에는 텍스트서어치를 종료하고, 그렇지 않은 경우에는 계속 한다(102).
다음에, i를 복소수로하여 텍스트테이블에 엑세스하고, 텍스트의 i번째의 문자T(i)를 입력하여 이것을 Z에 대입한다. 그리고, 현재의 상태 ℓ과 입력한 문자Z의 조(ℓ, z)를 어드레스하여 테이블S(ℓ, z)를 참조해서 y에 대입한다(103). 여기서, 테이블 S(ℓ, z)는,
Figure kpo00001
이다. 즉, 다음에 입력하여야할 텍스트의 어드레스와 앞에서 입력한 텍스트의 어드레스의 차의 정보이다. 이것을 스킵폭이라 하고, 이 케이블S(ℓ, z)를 스킵테이블이라고 하기로 한다. 특히, 현재 대상으로 하고 있는 텍스트의 1문자 Z=T(i)가 P(m-ℓ)과 같을 때에 “-1”로 하는 것에 주의하기 바란다. 일예로써, 패턴이 “AABCAAABCAA”인 경우의 스킵테이블 S(ℓ, z)를 제7도에 도시한다. 그리고, 다음에, Y=S(ℓ, z)가 “-1”인가 어떤가를 조사한다(104). “-1”인 경우는 현재 대상으로 하고 있는 텍스트 1문자와 패턴 1문자가 동일한 것을 표시하고 있으므로, 현재의 상태 ℓ이 “m-1”인가를 판단하고, 아닌 경우에는 상태 ℓ을 카운트업 한다(106, 107). 현재의 상태ℓ이 “m-1”인 경우에는 텍스트중에 패턴이 포함되어 있는 것을 알았기 때문에, 예를 들면 패턴발견정보 OUT를 “1”로 한다. 그리고 상태ℓ을 “0”으로 리세트하고, 또한 스킵폭 y에 정수 I=2m-F-1을 대입한다(108). 여기서
F=max{x1(1≤x≤m and
P(1 : x)=P(m-x+1 : m)) or x=0}
이다. 최후로, 스킵폭 y=S(ℓ, z)에는 다음에 입력해야할 텍스트의 어드레스와 전에 입력한 텍스트의 어드레스의 차가 들어가 있으므로, 다음에 입력해야할 텍스트의 어드레스 i에 i+y를 대입하고 스텝(102)로 되돌아 간다(109).
다음에, 이 방식의 동작예를 제9도를 사용해서 설명한다. 예로써, 텍스트를 “AABCAAABABAABCBAABBAAABAA”로 하고(제8도), 패턴을 “AABCAAABCAA”로 한다. 이 패턴의 경우와 스킵테이블 S(ℓ, z)는 제7도와 같다. 처음에, i=m=11, ℓ=0을 설정한다. 1사이클째에서는 텍스트T(11)=A를 입력하여 Z에 대입한다. 그리고, 스킵폭 S(ℓ, z)=S(O, A)=-1을 페치하여 y에 대입한다. 이렇게 하면, y=-1이기 때문에 상태 ℓ이 카운트업되어 ℓ=1로 되어 다음의 텍스트의 어드레스 i는 i+y=10으로 된다. 2사이클째에서는 10번째의 텍스트T(10)=B를 입력하여 Z에 대입한다. 그리고, 스킵폭 y=S(1, B)=11을 페치한다. 이렇게 하면, y≠-1이기 때문에 상태ℓ은 ℓ=0으로 되고, 또 i-i+y=21로 된다. 3사이클째, 4사이클째도 마찬가지로 동작하며, 5사이클째에서 텍스트어드레스 i가 30으로 되어 n=25를 초과하여 텍스트서어치의 처리가 종료된다. 이와같은 본 방식을 이용하면, 이 예의 경우에 25문자의 텍스트에 대한 텍스트서어치처리를 5사이클로 종료시킬 수가 있다. 따라서, 텍스트 25문자전체를 입력하지 않으면 안되는 유한오토마톤법이나 셀러어레이법과 비교해서 고속인 처리가 가능하게 된다.
다음에 상기 방식을 실현하는 회로의 예를 제1도에 도시한다. 제1도에서, (1)은 텍스트테이블300T(i)를 저장하고 있는 RAM, (2)는 스킵테이블200S(ℓ, z)를 저장하고 있는 RAM, (6)은 (1)에 엑세스하기 위한 텍스트어드레스 레지스터, (11)은 (2)에 엑세스하기 위한 스킵 테이블어드레스레지스터, (10)과 (12)는 각각 (1)과 (2)에 대응하는 메모리레지스터이며, 논리적으로는 (6)이 텍스트어드레스 i, (11)이 스킵테이블어드레스(ℓ, z), (10)이 텍스트 Z=T(i), (12)가 스킵폭 y=S(ℓ, z)에 대응한다. 그리고, (4)는 제2도의 본 방식의 흐름도에 있어서의 (110)의 부분을 실현하는 논리회로, (5)는 (109)의 부분을 실현하는 가산회로, (3)은 (102)의 부분을 실현하는 판정회로이다. 이 동작예는 상술한 본 방식의 동작예와 마찬가지이다.
이상의 실시예에서는 1문자단위로 테이블을 조작하는 경우를 설명하였지만, 필요에 따라서 여러개의 문자단위로 조작하는 것도 당업자가 용이하게 할 수 있는 것이다. 또, 본 발명은 스킵테이블(200)의 내용의 종류, 수등을 적절하게 변경하는 것에 의해 여러개의 패턴을 검출하는 것도 가능하다.
그리고, 본 발명은 상술한 바와 같이 소프트적인 수단, 하드적인 수단인 모든 수단에서도 실시하여 그 효과를 발휘할 수가 있다.
또, 상기 실시예에는 텍스트기호열의 경우를 중심으로 해서 설명하였지만, 상술한 바와 같이 본 발명은 음성패턴, 화상도형등도 검색의 단위를 상기 기호와 마찬가지로 측정할 수 있는 것에는 모두 적용이 가능하다.
본 발명의 제1의 실시예에 의하면, 패턴길이가 m기호, 기호열의 길이가 n기호일때는 최소의 경우에 n/m의 길이의 기호열을 입력하는 것만으로 처리를 종료할 수가 있으므로, n기호전부를 입력할 필요가 있는 종래의 방식에 비해서 대폭적인 처리성능의 향상을 실현할 수가 있다. 또, 하드화도 셀러어레이법등의 종래 방식에 비해서 크게 적은 물량으로 실현할 수가 있다.
[제2의 실시예]
다음에, 본 발명의 1실시예를 상세하게 설명한다.
최초에 본 발명에 있어서의 다수의 패턴에 대한 기호열서어치의 알고리듬에 대해서 설명한다. 여기서,
n=텍스트길이
K=패턴수
MK=패턴k의 패턴길이(1≤k≤K)
T(i) : 텍스트의 i번째 기호(1≤i≤n)로 한다.
또, 전제로써 텍스트는 랜덤하게 엑세스할 수 있는 메모리중에 저장되어 있는 것으로 한다.
본 알고리듬의 기본적인 사고방법을 다음에 기술한다. 예로써
패턴1 : “COW”
패턴2 : “BULL”
패턴3 : “CATTLE”인 경우를 고려한다. 여기서, 텍스트가
텍스트 : “HORES”
인 때는 처음에 텍스트의 3기호번째 T(3)=“R”을 입력하는 것만으로 이 기호 “R”이 어떤 패턴에도 1기호번째에서 3기호번째사이에 존재하지 않으므로, 텍스트의 3기호번째이전에는 어떤 패턴도 존재하지 않는 것을 알 수 있다. 따라서, 텍스트의 4기호번째이후에 패턴이 존재할 가능성만을 고려하면 좋게 된다(제12도 참조). 이것은 텍스트의 1기호번째 “H”나 2기호번째 “0”를 입력하는 헛수고를 생략할 수가 있으므로, 텍스트의 입력해야 할 기호수를 삭감할 수가 있다. 이때, 다음에 입력해야 할 텍스트의 기호는 6기호번째로 한다. 만약, 3기호번째 T(3)=“B”일때는 텍스트의 3기호번째에서 패턴 2의 “BULL”과 일치할 가능성이 있는 것을 고려해서 서어치를 진행하면 좋다. 또, 3기호번째 T(3)=“W”일때는 텍스트의 1기호번째에서 3기호번째까지가 “COW”일 가능성이 있으므로, 다음에 하나전의 텍스트의 2기호번째 T(2)를 입력해서 조사해가면 좋다(제13도 참조). 이상이 본 알고리듬의 기본적인 사고방법이다. 이것을 고속으로 실현하기 위한 방법을 다음에 기술한다.
먼저, 상태에 대해서 설명한다. 본 예의 경우, 텍스트의 서어치상태 ℓ을 제14도와 같이 정의한다. 즉, 상태“01”은 3기호번째가 “W”인 상태, 상태 “02”는 2기호번째가 “0”인 상태, 이하 마찬가지이다. 그리고 상태 “FF”, “FE”, “FD”는 각각 패턴1, 패턴2, 패턴3이 검출된 상태라고 한다. 이와같이 패턴이 검출되었을때의 상태의 번호에 특별한 번호를 부여하는 것에 의해 패턴의 검출결과를 판단할 수 있게 된다. 예를 들면, 본 예의 경우 “FD”이상으로 되었다면, 패턴이 발견되었다고 한다. 또, 상태“00”은 아직 아무것도 일치하지 않은 상태라고 한다. 상태“00”일때는 패턴의 3기호번째(일반적으로 1≤
Figure kpo00002
≤k(mk)기호번째)와 대응하는 텍스트의 기호Z를 입력한다. 그것이 “W”일때는 상태“01”, “L”일때는 상태“03”, “T”일때는 상태 “06”으로 상태가 천이한다. 그 이외인 경우는 상태“00”인 상태 그대로한다. 또, 상태“01”일때는 패턴의 2기호번째와 대응하는 텍스트의 기호Z를 입력하고, 그것이 “0”일때는 상태“02”로, 그것이외일때는 상태 “00”으로 한다. 이때의 상태 천이도를 제15도에 도시한다. 이 상태천이는 현재의 상태ℓ과 입력된 텍스트의 기호Z에서 결정된다. 이 상태천이테이블L(ℓ, z)를 제16도에 도시한다.
현재의 상태ℓ과 입력한 텍스트의 1기호 Z를 알고 있을때, 다음에 텍스트의 몇번째의 기호를 입력해야 할 것인가에 대해서의 정보는 사전에 테이블로써 작성해 둔다. 이것을 스킵테이블이라고 부른다. 본 예의 경우의 스킵테이블S(ℓ, z)의 예를 제17도에 도시한다. 이 스킵테이블에는 현재의 상태ℓ과 입력한 테스트의 1기호 Z가 부여되었을때의 다음에 입력해야할 텍스트의 어드레스와 앞서 입력한 텍스트의 어드레스의 차의 정보를 저장해 놓는다. 이것을 스킵폭이라고 부른다. 예를 들면, 상태“00”일때, 텍스트의 3번째의 기호T(3)=“R”이 입력되면, 현재의 텍스트의 어드레스“3”과 테이블에 라이트되어 있는 스킵폭S(OO, R)=“3”을 더한 “6”이 다음에 입력해야할 텍스트의 어드레스로 된다. 또, 상태 “OO”에서 텍스트의 3번째의 기호T(3)=“W”가 입력되었으면, 스킵폭 S(OO,W)=“-1”에서 다음에 입력해야할 텍스트의 어드레스는 “2”로 된다. 이상 설명한 상태천이테이블 L(ℓ, z)와 스킵테이블S(ℓ, z)를 이용하는 것에 의해 상술한 기호열서어치의 알고리듬을 고속으로 실행할 수가 있다.
이 방법의 구체적인 흐름도를 제11도에 도시한다. 먼저, 초기상태 ℓ=OO, 초기텍스트어드레스=1≤
Figure kpo00003
≤K(mk)를 설정한다(스텝 50101). 다음에 i≤n인가 아닌가에서 기호열서어치를 종료하는가 어떤가를 판단한다(스텝 50102). i≤n이 아닌 경우는 종료한다(스텝 50103). i≤n인 경우는 텍스트의 i번째의 기호 Z=T(i)를 입력하고, 현재의 상태ℓ과 입력기호 Z에서 다음의 상태ℓ=L(ℓ, z), 스킵폭y=S(ℓ, z)를 페치한다(스텝 50104). 다음의 상태ℓ이 “FD”이상인가 어떤가에서 패턴의 어느것인가가 검출되었는가 어떤가를 판단하고(스텝 50105), “FD”이상인 경우, 검출한 패턴의 번호는 -ℓ이며, 그것을 OUT로 출력한다(스텝 50106). 그리고, 다음에 입력해야할 텍스트의 어드레스 i를 i=i+y에 의해서 계산하고(스텝 50107), (스텝 50102)로 되돌아간다.
다음에 이 방법을 실현하는 회로의 구성예를 제10도에 도시한다. 제10도에서, (501)은 텍스트테이블T(i)를 저장하는 RAM, (502)는 상태천이테이블L(ℓ, z)를 저장하는 RAM, (503)은 스킵테이블S(ℓ, z)를 저장하는 RAM, (5020)은 (501)에 엑세스하기 위한 텍스트어드레스레지스터, (5021)은 (502)와 (503)에 엑세스하기 위한 테이블어드레스레지스터, (5031), (5302) 및 (5033)은 각각 (501), (502) 및 (503)에 대응하는 메모리레지스터이다. 논리적으로는 (5020)이 텍스트어드레스i, (5031)이 텍스트Z=T(i), (5021)이 테이블어드레스(ℓ, z), (5032)는 다음의 상태ℓ=L(ℓ, z), (5033)이 스킵폭 y=S(ℓ, z)에 대응하는 레지스터이다. 또, (5010)은 제11도의 본 방식의 흐름도에 있어서의 (50110)의 부분을 실현하는 판정회로, (5011)은 (50111)의 부분을 실현하는 판정회로, (5012)는 (50107)의 부분을 실현하는 가산회로이다. 또, (5050)은 검출패턴을 출력하는 출력선이다.
이하, 본 회로의 동작예에 대해서 제21도를 사용해서 설명한다. 예로써 패턴이
패턴1 : “COW”
패턴2 : “BULL”
패턴3 :“CATTLE”이고 텍스트가
텍스트 ; “HORES, CAT, COW, SHEEP, HEN, DOG, MONKEY”인 경우를 고려한다. 이때 텍스트테이블T(i)는 제20도와 같이 되고, 이것이 (501)의 RAM에 저장되어 있다. 또, 상태천이 테이블L(ℓ, z)는 제18도에 도시한 바와 같이 되고, 스킵테이블S(ℓ, z)는 제19도에 도시한 바와 같이 되며, 각각(502)와 (503)의 RAM에 저장한다. 다음에, (5042)에 ℓ=“00”, (5020)에 i=ℓ≤
Figure kpo00004
≤K(mk)=“03”을 설정한다. 1사이클째에서는 텍스트테이블에서 텍스트 T(03)=“D9”(R)을 텍스트레지스터(5031)에 페치한다. 다음에, “00D9”를 어드레스로써 (502)와 (503)의 RAM에 엑세스한다. 그리고, 상태 ℓ=L(ℓ, z)=“00”, 스킵폭y=S(ℓ, z)=“03”을 각각 상태레지스터(5032)와 스킵폭레지스터(5033)에 페치한다. 논리회로(5011)에서 상태레지스터(5032)의 내용을 조사하고, 그것이 “FD”이상이 아니므로 패턴을 검출하고 있지 않은 것을 알 수 있다. 가산회로(5012)에서는 스킵폭레지스터(5033)의 내용“03”과 텍스트어드레스레지스터(5040)의 내용 “03”을 더해서 텍스트어드레스레지스터(5020)에 “06”을 출력한다. 2사이클째도 마찬가지로 실행된다. 3사이클째에서는 T(09)=“E3”(T)이므로, “00E3”을 테이블어드레스로써 (502)와 (503)의 RAM에 엑세스하고, 상태ℓ은 “06”으로 스킵폭y는 “FF”로 된다. 따라서, 다음의 텍스트어드레스i는 “08”로 되고, 4사이클째로 옮겨간다. 이 처리를 계속해가는 것에 의해 9사이클째에서 상태ℓ이 “FF”로 되므로, OUT=“01”로 되고, 패턴 1의 “COW”가 검출된 것을 알 수 있다. 또, 이 처리를 계속해 가서 16사이클째에서 기호열서어치처리가 종료한다. 이와같이 이예의 경우, 34개의 기호열로 이루어지는 텍스트의 서어치처리가 종래방식에서는 34사이클의 처리기간이 걸렸던 것에 대해서 16사이클로 끝낼 수가 있다.
본 실시예에 의하면, 다수의 패턴중 최단의 패턴길이를 m으로 하고, 텍스트의 길이를 n으로 하면, 최소인 경우인 경우에 n/m사이클에서 기호열을 서어치 할수가 있어 n사이클을 필요로하는 종래방식에 비해서 m배고속으로 된다. 또한, 패턴이 검출되었을때의 상태번호에 특별한 번호를 부여하는 것에 의해 패턴의 검출결과를 용이하게 판단할 수 있게 되었다. 또한, 셀러어레이법을 이용한 장치에 비해서 대폭적으로 적은 물량으로 하드화할수가 있다.
이상, 본 발명을 상기 실시예에서 따라 구체적으로 설명하였지만, 본 발명은 상기 실시예에 한정되는 것은 아니고, 본 발명의 요지를 이탈하지 않는 범위에서 여러 가지 변경가능한 것은 물론이다.

Claims (4)

  1. 디지털컴퓨터에서 실행되고, n문자열을 포함하는 텍스트에서 m문자열을 포함하는 바라는 문자패턴(여기서, n>m)을 검색하는 검색방법에 있어서, (a)상기 바라는 문자패턴내의 j번째 (여기서, 1≤j≤m) 문자위치의 문자와 상기 텍스트내의 i번째(여기서, 1≤i≤m) 문자위치의 문자를 비교하는 스텝, (b)상기 비교결과가 일치하는가 일치하지않는가를 결정하는 스텝, (c)상기 스텝(b)에서 상기 비교결과가 일치하지 않는다고 결정되면, 상기 바라는 문자패턴내의 상기 j번째 문자위치의 문자와 가장 최근의 바로 앞의 비교가 이루어진 텍스트내의 상기 문자위치후의 텍스트(m+1-1)(여기서, 1은 가장 최근의 비교가 불일치로 된후에 일치로 된 상기 가장최근의 바로앞의 비교를 포함하는 비교번호) 문자위치내의 문자위치의 문자를 비교하고, 스텝(b)에서 상기 처리를 반복하는 스텝, (d)스텝 (b)에서 상기 비교가 일치로 되었다는 것을 결정하고, 상기 바라는 문자패턴내의 m번째 문자에 대해서 비교가 아직 일치 되지 않았으면, 상기 바라는 문자패턴내의 다음의 문자위치의 문자와 상기 텍스트내의 다음의 문자위치의 문자를 비교한후, 스텝(b)에서 상기 처리를 반복하는 스텝및 (e)스텝(b)에서 상기 비교가 일치되었다는 것을 결정하고, 임의의 비교가 상기 바라는 문자패턴내의 m번째 문자에 대해서 일치되었으면, 가장최근의 바로전의 비교가 이루어진 바라는 문자패턴내의 문자위치의 바로앞의 다음의 바라는 문자패턴내의 문자위치의 문자와 상기 가장 최근의 바로전의 비교가 이루어진 텍스트내의 문자위치의 바로앞의 다음의 텍스트내의 문자위치의 문자를 비교한후, 상기 바라는 문자패턴이 상기 텍스트에서 검색될때까지 스텝 (b)에서 상기 처리를 반복하는 스텝을 포함하는 검색방법.
  2. 디지탈컴퓨터에서 실행되고, 다수의 문자패턴을 포함하는 문자패턴테이블에서 문자열위치내의 다수의 문자로 이루어진 바라는 문자패턴을 검색하고, 상기 다수의 문자패턴내의 각각의 문자패턴이 문자열위치내의 다수의 문자로 이루어지고, 문자의 비교상태의 지시를 포함하는 상태천이테이블과 스킵되어야할 다수의 문자열및 이러한 스킵의 방향의 지시를 포함하는 스킵테이블을 이용하는 검색방법에 있어서, (a)현재의 비교 상태를 초기비교상태로써 판별하는 스텝, (b)상기 바라는 문자패턴내의 선택된 현재의 문자위치의 문자를 상기 문자패턴테이블내의 대응하는 문자위치의 문자와 비교하는 스텝, (c)상기 비교가 일치 또는 불일치되었는가를 결정하는 스텝, (d)스텝 (c)에서 상기 비교가 불일치로 되었다는 것이 결정되면, 새로운 현재비교상태를 결정하도록 상기 현재비교상태에서의 불일치에 대응하는 상태천이테이블의 위치를 엑세스하고, 스킵되어야할 다수의 문자열및 이러한 스킵의 방향을 결정하도록 상기 새로운 현재비교상태에 대응하는 스킵테이블의 위치를 엑세스하고, 상기 문자 패턴테이블의 현재의 문자위치에서 상기 결정된 다수의 문자열을 상기 결정된 방향으로 스킵하고, 상기 바라는 문자패턴내의 상기 선택된 현재의 문자위치의 문자를 상기문자패턴테이블내에 위치된 새로운 문자위치의 문자와 비교하고, 스텝(c)에서 상기 처리를 반복하는 스텝 및 (e)스텝(c)에서 상기 비교가 일치로 되었다는 것이 결정되면, 새로운 현재비교상태를 결정하도록 상기 현재 비교상태에서의 불일치에 대응하는 상태천이테이블의 위치를 엑세스하고, 스킵되어야할 다수의 문자열 및 이러한 스킵의 방향을 결정하도록 상기 새로운 현재비교 상태에 대응하는 스킵테이블의 위치를 엑세스하고, 상기 바라는 문자패턴및 문자패턴테이블의 현재의 문자위치에서 상기 결정된 다수의 문자열을 상기 결정된 방향으로 스킵하고, 그렇게 위치된 새로운 현재의 문자위치의 문자를 비교하고, 상기 바라는 문자패턴이 상기 문자패턴테이블내에 위치되었다는 것을 상기 새로운 비교상태가 나타날때까지 스텝(c)에서 상기 처리를 반복하는 스텝을 포함하는 검색방법.
  3. 문자열내위치내의 n문자를 포함하는 텍스트에서 문자열 위치내의 m문자를 포함하는 바라는 문자패턴(여기서, n>m)을 검색하는 검색장치에 있어서, 상기 텍스트를 저장하는 수단, 상기 텍스트에 부여된 문자를 비교하는 비교수단, 상기 바라는 문자패턴의 j번째(여기서, 1≤j≤m)문자를 상기 비교수단에 부여하는 수단, 상기 텍스트내의 i번째(여기서, 1≤i≤n)문자를 상기 비교수단에 부여하는 수단.
    부여된 문자사이의 불일치를 결정하는 상기 비교수단에 따라서 가장 최근의 바로앞의 비교가 이루어진 텍스트내의 상기 문자위치후의 텍스트(m+ℓ-1)(여기서, 1은 상기 가장 최근의 비교가 불일치로 된후에 일치로 된 상기 가장최근의 바로앞의 비교를 포함하는 비교번호)문자위치내의 문자를 상기 바라는 문자패턴의 j번째문자와 비교하기 위해 상기 비교수단에 부여하는 수단.
    부여된 문자사이의 일치를 결정하는 상기 비교수단에 따라서, 상기 비교수단에 의한 비교가 상기 바라는 문자패턴내의 m번째문자의 일치로 아직 되지않았을때 상기 바라는 문자패턴내의 다음의 문자위치의 문자와 상기 텍스트내의 다음의 위치의 문자를 비교하는 수단.
    인가된 문자사이의 일치를 결정하는 상기 비교수단에 따라서, 상기 비교수단에 의한 임의의 사전의 비교가 상기 바라는 문자패턴내의 m번째문자의 일치로 되었을때 가장최근의 바로앞의 비교가 이루어진 상기 바라는 문자패턴내의 문자위치의 앞의 다음의 상기 바라는 문자패턴의 문자위치의 문자와 상기 가장최근의 바로앞의 비교가 그들사이의 비교를 위해 이루어진 상기 텍스트내의 문자위치의 바로앞의 다음의 텍스트내의 문자위치의 문자를 상기 비교수단에 부여하는 수단 및 상기 바라는 문자패턴이 상기 텍스트에서 검색되었다는 것을 표시하는 수단을 포함하는 검색장치.
  4. 문자열위치내의 다수의 문자로 이루어진 바라는 문자 패턴을 다수의 문자패턴을 포함하는 문자패턴테이블에서 검색하고, 상기 다수의 문자패턴의 각각의 문자패턴이 문자열위치내의 다수의 문자로 이루어지는 검색장치에 있어서, 상기 바라는 문자패턴을 수령하는 입력수단, 상기 문자패턴 테이블을 저장하는 수단, 문자비교상태의 지시를 포함하는 상태천이테이블을 저장하는 수단, 스킵되어야할 문자패턴내의 다수의 문자열과 이러한 스킵의 방향의 지시를 포함하는 스킵테이블을 저장하는 수단. 비교가 일치 또는 불일치로 되었는가를 지시하는 지시수단, 상기 바라는 문자패턴내의 선택된 현재의 문자위치의 문자와 상기 문자패턴테이블내의 대응하는 문자위치의 문자를 비교하고, 이 비교결과를 상기 지시수단에 부여하는 수단, 불일치의 지시에 따라서, 새로운 현재비교상태를 결정하도록 상기 현재비교상태에서의 불일치에 대응하는 상태천이테이블의 위치를 엑세스하고, 스킵되어야 할 다수의 문자열 및 이러한 스킵의 방향을 결정하도록 상기 새로운 현재비교상태에 대응하는 스킵테이블의 위치를 엑세스하고, 상기 바라는 문자패턴내의 선택된 현재의 문자위치의 문자와 상기 결정된 다수의 문자열을 상기 문자패턴테이블내의 현재의 문자위치에서 새로운 현재의 문자위치로 상기 결정된 방향으로 스킵하는 것에 의해 발견된 문자패턴테이블내의 위치의 문자를 비교하고, 이 비교결과를 상기 지시수단에 부여하는 수단과 일치의 지시에 따라서, 새로운 현재비교상태를 결정하도록 상기 현재비교상태에서의 일치에 대응하는 상태천이테이블의 위치를 엑세스하고, 스킵되어야 할 다수의 문자열 및 이러한 스킵의 방향을 결정하도록 상기 새로운 비교상태에 대응하는 상기 스킵테이블의 위치를 엑세스하고, 상기 결정된 다수의 문자열을 상기 현재문자위치에서 상기 바라는 문자패턴 및 상기 문자패턴테이블내의 새로운 현재 문자위치로 상기 결정된 방향으로 스킵하는 것에 의해 발견된 상기 문자패턴 테이블과 상기 바라는 문자패턴내의 위치의 문자를 비교하고, 상기 바라는 문자패턴이 상기 문자패턴테이블내에 위치되었는가를 새로운 비교상태가 지시하는가 어떤가를 결정하고, 만약 그렇지 않으면 이러한 비교결과를 상기 지시수단에 부여하는 수단을 포함하는 검색장치.
KR1019870001080A 1986-02-14 1987-02-10 검색방법 및 그 장치 KR940003700B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP28808 1986-02-14
JP61028808A JPH0752447B2 (ja) 1986-02-14 1986-02-14 検索方法及び装置
JP61-28808 1986-02-14
JP52439 1986-03-12
JP61052439A JPS62210538A (ja) 1986-03-12 1986-03-12 記号列サ−チ方法および装置
JP61-52439 1986-03-12

Publications (2)

Publication Number Publication Date
KR870008259A KR870008259A (ko) 1987-09-25
KR940003700B1 true KR940003700B1 (ko) 1994-04-27

Family

ID=26366960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019870001080A KR940003700B1 (ko) 1986-02-14 1987-02-10 검색방법 및 그 장치

Country Status (5)

Country Link
US (1) US4916655A (ko)
EP (1) EP0250705B1 (ko)
KR (1) KR940003700B1 (ko)
CN (1) CN1016835B (ko)
DE (1) DE3750277T2 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2737173B2 (ja) * 1988-10-25 1998-04-08 日本電気株式会社 記号列照合装置とその制御方法
US5276873A (en) * 1988-12-22 1994-01-04 Hughes Aircraft Company Apparatus and method for generating capture commands for data acquisition
US6978277B2 (en) * 1989-10-26 2005-12-20 Encyclopaedia Britannica, Inc. Multimedia search system
US5241671C1 (en) * 1989-10-26 2002-07-02 Encyclopaedia Britannica Educa Multimedia search system using a plurality of entry path means which indicate interrelatedness of information
CA2006230C (en) * 1989-12-20 1993-10-26 Timothy James Littlewood Method and apparatus for validating character strings
US5228133A (en) * 1990-10-01 1993-07-13 Carl Oppedahl Method to perform text search in application programs in computer by selecting a character and scanning the text string to/from the selected character offset position
JP2668456B2 (ja) * 1991-01-22 1997-10-27 三菱電機株式会社 ビット検索回路及びそれを備えたデータ処理装置
US5423032A (en) * 1991-10-31 1995-06-06 International Business Machines Corporation Method for extracting multi-word technical terms from text
US5511159A (en) * 1992-03-18 1996-04-23 At&T Corp. Method of identifying parameterized matches in a string
WO1994029790A1 (en) * 1993-06-14 1994-12-22 Apple Computer, Inc. Method and apparatus for finding a termination character within a variable length character string or a processor
JPH07114577A (ja) * 1993-07-16 1995-05-02 Internatl Business Mach Corp <Ibm> データ検索装置、データ圧縮装置及び方法
JPH09198398A (ja) * 1996-01-16 1997-07-31 Fujitsu Ltd パターン検索装置
US5774739A (en) * 1996-09-20 1998-06-30 Bay Networks, Inc. Using a lockup processor to search a table of keys whose entries contain instruction pointer values of code to execute if key is found
JP4079387B2 (ja) * 1997-11-12 2008-04-23 アルパイン株式会社 名称入力方法
JP3275816B2 (ja) * 1998-01-14 2002-04-22 日本電気株式会社 記号列検索方法及び記号列検索装置並びに記号列検索プログラムを記録した記録媒体
US7688727B1 (en) 2000-04-17 2010-03-30 Juniper Networks, Inc. Filtering and route lookup in a switching device
US6798777B1 (en) 2000-04-17 2004-09-28 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7215637B1 (en) 2000-04-17 2007-05-08 Juniper Networks, Inc. Systems and methods for processing packets
DE10048478C2 (de) * 2000-09-29 2003-05-28 Siemens Ag Verfahren zum Zugriff auf eine Speichereinheit bei der Suche nach Teilzeichenfolgen
US8037102B2 (en) 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US7801923B2 (en) 2004-10-29 2010-09-21 Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust Method and/or system for tagging trees
US7627591B2 (en) 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7630995B2 (en) 2004-11-30 2009-12-08 Skyler Technology, Inc. Method and/or system for transmitting and/or receiving data
US7636727B2 (en) 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US8615530B1 (en) 2005-01-31 2013-12-24 Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust Method and/or system for tree transformation
US7681177B2 (en) * 2005-02-28 2010-03-16 Skyler Technology, Inc. Method and/or system for transforming between trees and strings
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
US8688633B2 (en) * 2010-09-06 2014-04-01 Panasonic Corporation Content search device, content search method, program
US8645404B2 (en) * 2011-10-21 2014-02-04 International Business Machines Corporation Memory pattern searching via displaced-read memory addressing
CN106649364B (zh) * 2015-10-30 2020-03-27 北京国双科技有限公司 一种表格目标列定位方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218760A (en) * 1976-09-13 1980-08-19 Lexicon Electronic dictionary with plug-in module intelligence
US4241402A (en) * 1978-10-12 1980-12-23 Operating Systems, Inc. Finite state automaton with multiple state types
JPS6239467Y2 (ko) * 1978-11-20 1987-10-08
US4464718A (en) * 1982-07-30 1984-08-07 International Business Machines Corporation Associative file processing method and apparatus

Also Published As

Publication number Publication date
EP0250705A2 (en) 1988-01-07
CN87100829A (zh) 1987-09-09
US4916655A (en) 1990-04-10
EP0250705B1 (en) 1994-07-27
EP0250705A3 (en) 1992-01-15
DE3750277D1 (de) 1994-09-01
KR870008259A (ko) 1987-09-25
DE3750277T2 (de) 1994-11-17
CN1016835B (zh) 1992-05-27

Similar Documents

Publication Publication Date Title
KR940003700B1 (ko) 검색방법 및 그 장치
US6000008A (en) Method and apparatus for matching data items of variable length in a content addressable memory
KR101648235B1 (ko) 정합-데이터 보고 모듈을 갖는 패턴 인식 프로세서
US5619718A (en) Associative memory processing method for natural language parsing and pattern recognition
US4341929A (en) Memory accessing system
US5754847A (en) Word/number and number/word mapping
US4748439A (en) Memory apparatus and method for retrieving sequences of symbols including variable elements
US7062499B2 (en) Enhanced multiway radix tree and related methods
US5553284A (en) Method for indexing and searching handwritten documents in a database
EP0775963A2 (en) Indexing a database by finite-state transducer
US5551026A (en) Stored mapping data with information for skipping branches while keeping count of suffix endings
KR102613523B1 (ko) 메모리 내 효율적인 다단계 검색
JPH0820951B2 (ja) プロセッサの動作速度を速める方法
US4979101A (en) Apparatus for retrieving character strings
EP0232376B1 (en) Circulating context addressable memory
US5261090A (en) Search arrangement adapted for data range detection
EP0649106B1 (en) Compactly stored word groups
EP0170443A2 (en) Method for searching an association matrix
KR0141906B1 (ko) 데이타의 고속 탐색을 위한 하드웨어 구동장치
EP0635796B1 (en) Compactly encoded stored string set and its use
JPH0752447B2 (ja) 検索方法及び装置
JP2835065B2 (ja) 文字列検索方法
JPH03118661A (ja) 単語検索装置
JP3018579B2 (ja) 名前検索処理装置
JP3387582B2 (ja) 文字処理装置

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20020416

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee