KR101452638B1 - 유사 문자열 검색 방법 및 장치 - Google Patents

유사 문자열 검색 방법 및 장치 Download PDF

Info

Publication number
KR101452638B1
KR101452638B1 KR1020130071616A KR20130071616A KR101452638B1 KR 101452638 B1 KR101452638 B1 KR 101452638B1 KR 1020130071616 A KR1020130071616 A KR 1020130071616A KR 20130071616 A KR20130071616 A KR 20130071616A KR 101452638 B1 KR101452638 B1 KR 101452638B1
Authority
KR
South Korea
Prior art keywords
string
edit distance
lower limit
character string
server
Prior art date
Application number
KR1020130071616A
Other languages
English (en)
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 KR1020130071616A priority Critical patent/KR101452638B1/ko
Application granted granted Critical
Publication of KR101452638B1 publication Critical patent/KR101452638B1/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
    • G06F17/10Complex mathematical operations

Landscapes

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

Abstract

본 발명의 일 실시예에 따르면, 컴퓨터를 사용하여 문자열을 검색하는 방법에 있어서, 입력 문자열(σ)과 저장된 문자열(s)에 공통으로 일치하는 N개의 q-그램(여기서 N 및 q는 각각 1이상의 정수)의 목록을 추출하는 단계; 상기 입력 문자열 중 상기 N개의 q-그램을 제외한 나머지 문자열에 대한 부분 문자열 편집거리의 하한을 계산하는 단계; 및 상기 계산된 편집거리의 하한을 상기 문자열(σ) 및 문자열(s) 사이의 부분 문자열 편집거리의 하한으로 선택하는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법을 제공할 수 있다.

Description

유사 문자열 검색 방법 및 장치 {Method and apparatus for recommending contents}
본 발명은 유사 문자열 검색 방법 및 장치에 관한 것으로, 보다 상세하게는, 질의 문자열과 유사한 부분 문자열을 포함하는 텍스트 레코드들을 검색하고 이 부분 문자열의 유사한 정도에 따라 검색결과를 사용자에게 제공하는 유사 문자열 검색 방법 및 장치에 관한 것이다.
일반적으로 사용자가 검색엔진에 특정 검색어를 입력하거나 데이터베이스에 특정 질의 문자열을 입력하면 이 특정 검색어 또는 질의 문자열과 동일한 문자열을 포함하는 검색 결과 뿐만 아니라 이와 유사한 부분 문자열을 갖고 있는 검색 결과도 사용자에게 함께 제공될 수 있다. 이러한 기능은 사용자가 특정 검색어의 철자를 정확히 모르거나 검색어 자체를 정확히 몰라서 검색어를 잘못 입력하는 경우에도 사용자가 원하는 결과를 적절히 제공하기 위한 것이다.
사용자가 입력한 특정 검색어에 유사한 문자열을 갖는 검색 결과를 제공하는 알고리즘은 여러 종류가 있으며 그 중 두 문자열 사이의 편집거리(edit distance)를 사용하는 방식도 널리 사용되고 있다.
문자열의 편집거리(string edit distance)는 두 문자열 A와 B가 주어졌을 때 A의 각 문자에 삭제, 추가, 및 변경 중 하나 이상의 조작을 가해서 B라는 문자열을 만들 수 있는 모든 가능한 방법 중에서 가장 적은 수의 조작으로 B를 만들 때의 조작의 횟수를 의미한다.
예를 들어 "Jackie"라는 문자열(A)과 "Jacksonville"이라는 문자열(B)이 있다고 가정하면, 처음 4개의 문자열인 "Jack"은 동일하나 5개의 문자열 "Jacki"를 "Jacks"로 변형하려면 i를 s로 바꾸는 방법이 가장 적은 수의 조작으로 문자열을 바꾸는 방법이다. 따라서 "Jacki"와 "Jacks"간의 문자열 편집거리는 1이 된다. 또한 "Jackie"와 "Jacks"을 비교해보면 i를 s로 바꾸고 e를 삭제하는 것이 가장 적은 수의 조작으로 문자열을 변형하는 것이며, "Jackie"에서 6개의 문자(즉, s, o, n, v, l, l)를 추가하면 "Jacksonville"로 변경될 수 있으므로 "Jackie"와 "Jacksonville"의 편집거리는 6임을 알 수 있다.
이와 같이 편집거리를 이용하여 두 문자열 간의 유사도를 수치화하는 방법에 q-그램(gram)을 이용하여 편집거리의 하한(lower bound)을 계산하는 방법이 있다. q-그램이란 주어진 문자열에서 길이가 q인 모든 부분 문자열들을 말한다. 여기서 q는 1보다 큰 임의의 정수가 될 수 있다. 예를 들어 "Jackie"의 모든 4-그램은 Jack, acki, ckie 이다.
종래에 q-그램을 이용하여 문자열간의 문자열 편집거리의 하한을 계산할 수 있었지만 이 방법은 문자열 전체의 편집거리의 하한을 계산하는데 사용할 수 있었고 문자열 내의 부분 문자열의 편집거리의 하한을 계산하는데는 사용할 수 없었다. 따라서 부분 문자열 편집거리의 하한을 계산하여 소정 유사도 내의 문자열을 신속하게 검색하는 방법이 요구되고 있다.
본 발명의 일 실시예에 따르면, 질의 문자열이 주어졌을 때 데이터베이스에서 질의 문자열과 유사한 부분 문자열을 갖고 있는 텍스트 레코드들을 질의 문자열에 유사한 정도에 따라 나열하여 가장 유사한 데이터를 효율적으로 찾는 방법 및 장치를 제공할 수 있다.
본 발명의 일 실시예에 따르면 q-그램을 이용한 부분 분자열 편집거리의 하한을 구하는 방법을 통해 편집거리가 가장 작은 문자열을 신속하게 검색할 수 있는 방법 및 장치를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 컴퓨터를 사용하여 문자열을 검색하는 방법에 있어서, 입력 문자열(σ)과 저장된 문자열(s)에 공통으로 일치하는 N개의 q-그램(여기서 N 및 q는 각각 1이상의 정수)의 목록을 추출하는 단계; 상기 입력 문자열 중 상기 N개의 q-그램을 제외한 나머지 문자열에 대한 부분 문자열 편집거리의 하한을 계산하는 단계; 및 상기 계산된 편집거리의 하한을 상기 문자열(σ) 및 문자열(s) 사이의 부분 문자열 편집거리의 하한으로 선택하는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법을 제공할 수 있다.
또한 본 발명의 일 실시예에 따르면, M개의 저장된 문자열(S)에서 입력 문자열(σ)에 가장 유사한 K개(여기서 M과 K는 각각 2 이상의 정수이고 M>K를 만족한다)의 문자열을 검색하는 방법에 있어서, (가) 상기 문자열(S) 중 임의의 i번째(여기서 2≤i≤M을 만족함) 문자열(Si)에 대해, 상기의 문자열 검색 방법에 의해 상기 문자열(Si)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 계산하는 단계; (나) 상기 입력 문자열(σ)과 문자열(Si 내지 S(i-1))의 각각과의 부분 문자열 편집거리들 중 K번째로 작은 편집거리와, 상기 문자열(Si)과 문자열(σ) 사이의 편집거리 하한을 비교하는 단계; (다) 상기 문자열(Si)의 편집거리의 하한이 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Si)과 문자열(σ) 사이의 부분 문자열 편집거리를 계산하는 단계; 및 (라) 상기 계산된 문자열(Si)의 부분 문자열 편집거리가 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Si)을 상기 입력 문자열(σ)에 가장 유사한 K개의 문자열 목록에 포함시키는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법을 제공할 수 있다.
또한 본 발명의 일 실시예에 따르면, M개의 저장된 문자열(S)에서 입력 문자열(σ)에 가장 유사한 K개(여기서 M과 K는 각각 2 이상의 정수이고 M>K를 만족한다)의 문자열을 검색하는 방법에 있어서, (가) 입력 문자열(σ)에 속하는 q-그램들 중 겹치지 않도록 q-그램의 부분 집합(G')을 선택하는 단계; (나) 색인 데이터베이스(DB)로부터 상기 부분 집합(G')에 대한 색인 정보(L(G'))를 도출하는 단계; (다) 색인 정보(L(G'))에 포함된 전체 N개(여기서 M≥N>K를 만족함)의 문자열(S) 중 임의의 j번째(여기서 2≤j≤N을 만족함) 문자열(Si)에 대해, 상기의 문자열 검색 방법에 의해 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 계산하는 단계; (라) 문자열(S)의 모든 계산된 부분 문자열 편집거리들 중 K번째로 작은 편집거리와, 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 비교하는 단계; (마) 상기 문자열(Sj)의 편집거리의 하한이 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리를 계산하는 단계; 및 (바) 상기 계산된 문자열(Sj)의 부분 문자열 편집거리가 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Sj)을 상기 입력 문자열(σ)에 가장 유사한 K개의 문자열 목록에 포함시키는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법을 제공할 수 있다.
또한 본 발명의 일 실시예에 따르면 상기 문자열 검색 방법을 컴퓨터에서 실행시키기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
본 발명의 일 실시예에 따르면 질의 문자열이 주어졌을 때 데이터베이스에서 질의 문자열과 유사한 부분 문자열을 갖고 있는 텍스트 레코드들을 질의 문자열에 유사한 정도에 따라 나열하여 가장 유사한 데이터를 효율적으로 찾을 수 있는 이점이 있다.
본 발명의 일 실시예에 따르면 q-그램을 이용한 부분 분자열 편집거리의 하한을 구하는 방법을 통해 편집거리가 가장 작은 문자열을 신속하게 검색할 수 있는 이점이 있다.
도1은 전체 문자열 편집거리와 부분 문자열 편집거리를 설명하기 위한 도면,
도2는 편집거리의 하한을 계산하는 방법을 설명하기 위한 도면,
도3은 편집거리의 하한을 계산하는 본 발명의 제1 실시예에 따른 방법을 나타내는 흐름도,
도4는 편집거리의 하한을 계산하는 본 발명의 제2 실시예에 따른 방법을 설명하기 위한 도면,
도5는 상기 제2 실시예에 따라 편집거리의 하한을 계산하는 방법을 설명하기 위한 도면,
도6a 내지 도6c는 상기 제2 실시예에 따라 도5의 문자열의 편집거리의 하한을 계산하는 방법을 설명하기 위한 도면,
도7은 상기 제2 실시예에 따라 편집거리의 하한을 계산하는 방법을 나타내는 흐름도,
도8은 입력 문자열에 유사한 K개의 문자열을 선택하는 본 발명의 제1 실시예에 따른 방법을 나타내는 흐름도,
도9는 입력 문자열에 유사한 K개의 문자열을 선택하는 본 발명의 제2 실시예에 따른 방법을 나타내는 흐름도,
도10은 입력 문자열에 유사한 K개의 문자열을 선택하는 본 발명의 제5 실시예에 따른 방법을 나타내는 흐름도,
도11은 문자열의 q-그램들의 부분집합(G')을 선택하는 방법을 설명하기 위한 도면,
도12는 일 실시예에 따라 문자열의 q-그램들의 부분집합(G')을 선택하는 방법을 설명하기 위한 도면,
도13은 일 실시예에 따라 부분집합(G')을 선택하는 방법을 나타내는 흐름도, 그리고,
도14는 일 실시예에 따라 문자열을 검색하는 장치를 포함하는 예시적인 네트워크 구성을 나타내는 블록도이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 명세서에서 어떤 구성요소가 다른 구성요소 상에 있다고 언급되는 경우에 그것은 다른 구성요소 상에 직접 형성될 수 있거나 또는 그들 사이에 제 3의 구성요소가 개재될 수도 있다는 것을 의미한다. 또한, 도면들에 있어서, 구성요소들의 두께는 기술적 내용의 효과적인 설명을 위해 과장된 것이다.
본 명세서에서 제1, 제2 등의 용어가 구성요소들을 기술하기 위해서 사용된 경우, 이들 구성요소들이 이 같은 용어들에 의해서 한정되어서는 안 된다. 이들 용어들은 단지 어느 구성요소를 다른 구성요소와 구별시키기 위해서 사용되었을 뿐이다. 여기에 설명되고 예시되는 실시예들은 그것의 상보적인 실시예들도 포함한다.
본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprise)' 및/또는 '포함하는(comprising)'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하에서 도면을 참조하여 본 발명을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 또한 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
이하의 도면을 참조하여 설명하는 본 발명의 일 실시예에서, q-그램을 이용하여 부분 문자열과 질의 문자열의 편집거리의 하한을 빠르게 계산할 수 있는 방법을 개시한다. 또한 이러한 부분 문자열 편집거리의 하한을 계산하는 방법을 이용하여, 주어진 문서 데이터베이스 내에서 질의 문자열과 편집거리가 가장 작은(즉, 가장 유사한) K개의 문자열을 빠르게 찾는 방법을 개시한다.
도1은 전체 문자열 편집거리와 부분 문자열 편집거리를 설명하기 위한 도면이다.
부분 문자열 편집거리(substring edit distance)는, 두 문자열 A와 B가 주어졌을 때 문자열 A의 부분 문자열 중에서 문자열 B와 가장 유사한 부분 문자열과의 편집거리를 말한다. 일반적으로 사용되는 전체 문자열 간의 편집거리는 두 문자열을 모두 다 일치시키기 위해 수행해야 하는 조작의 횟수를 말한다. 그러나 부분 문자열 편집거리는 한 문자열을 다른 문자열의 부분 문자열에 일치시키기 위해 수행해야 하는 조작 횟수를 사용한다.
도1을 참조하면, 사용자가 검색엔진이나 데이터베이스에 입력하는 질의 문자열(σ)로 "abc"를 입력하였고 문서 DB에 저장된 각각의 문자열(s) 중 하나가 "abdefg"라고 가정하면, 입력 문자열(σ)과 저장된 문자열(s) 사이의 전체 문자열 편집거리는 4임을 알 수 있다. 그리고 이 경우 부분 문자열 편집거리는, 하나의 문자열(σ)을 다른 문자열(s)의 부분 문자열(예컨대 "abd")에 일치시키기 위해 수행해야 하는 조작 횟수이므로 이 예에서의 부분 문자열 편집거리는 1이 된다.
한편 본 명세서에서 사용되는 용어 "문자열"은 하나 이상의 문자로 이루어진 입력 단위 또는 검색 단위이며, 여기서 "문자"는 예컨대 알파벳, 숫자, 특수기호, 여백(스페이스) 등을 포함할 수 있다. 문자열은 하나 이상의 단어가 될 수 있고 하나 또는 그 이상의 문장도 될 수 있다.
문자열(σ)과 문자열(s) 사이에 공통되는 q-그램의 개수를 아는 경우, q-그램을 이용한 부분 문자열 편집거리의 하한 계산
도2는 본 발명의 일 실시예에 따라 q-그램을 이용한 편집거리의 하한을 계산하는 방법을 설명하기 위한 도면이다.
도2(a)를 참조하면, 두 개의 문자열(σ, s)이 모두 6개의 문자(즉 "abcdef")로 구성되어 있다. 도면에서 문자열 위의 숫자는 각 문자의 위치를 나타내며, 본 명세서에서는 문자열의 가장 왼쪽 문자의 위치가 1이고 오른쪽으로 갈수록 위치가 1씩 증가한다고 전제한다.
도2(b)를 참조하면, 문자열(σ)의 3번째 문자가 "c"에서 "x"로 변경되었다고 가정한다. 이 경우 3-그램을 이용한 두 문자열 간의 부분 문자열 편집거리를 계산한다고 하면, 문자 "c"가 "x"로 변경됨으로 인해, 도6(b)에서 빨간색, 파란색, 및 녹색으로 표시한 3개의 3-그램이 두 문자열(σ, s)간에 불일치하게 되었다.
또한 도면에 도시하지 않았지만 다른 예로서 예컨대 문자열(σ)의 첫번째 문자인 "a"가 다른 문자로 변경되었다고 가정하면, 이로 인해 두 문자열(σ, s)간에 불일치하게 되는 3-그램은 빨간색의 3-그램 하나밖에 없음도 알 수 있다.
그러므로 어떤 문자열을 다른 문자열로 바꾸기 위해 조작을 1회 수행할 때 두 문자열 사이에 공통된 q-그램은 최대 q개가 없어진다. 즉 조작을 1회 수행하면, 일치하던 그램의 개수 중 최대 q개가 불일치하게 되고, 이것은 불일치하는 q-그램이 q개 있는 경우 일치를 위해 적어도 1번 이상의 조작이 필요함을 의미한다.
따라서 문자열(σ)과 문자열(s)이 공통으로 갖고 있는 q-그램의 개수가 c개라고 했을 때, 문자열(σ)의 전체 q-그램(즉, (|σ|-q+1)개의 q-그램) 중에서 c개의 q-그램(즉 일치하는 q-그램들)을 제외한 나머지 q-그램(즉, 불일치하는 (|σ|-q+1-c)개의 q-그램)을 일치시키기 위해, 최소한 다음 수식1과 같은 횟수의 조작이 필요하며 이 값을 편집거리의 하한이라고 한다.
Figure 112013055578907-pat00001
여기서 |σ|는 문자열 A의 길이이고, 괄호 "
Figure 112013055578907-pat00002
"는 올림 함수(ceiling function)이다.
문자열(s)에 포함된 모든 부분 문자열과 문자열(σ)간의 편집거리 중 가장 짧은 편집거리를 부분 문자열 편집거리의 하한이라고 정의하고 ℓo(dsub(s,σ))로 표시한다. 위의 수식1로부터, 임의의 q-그램을 사용하는 경우 부분 문자열 편집거리의 하한은 다음과 같이 수식2로 표현될 수 있다.
Figure 112013055578907-pat00003
여기에서 |σ| 및 |s|는 각각 문자열(σ)과 문자열(s)의 크기, q는 사용된 그램의 숫자, ci는 문자열(s)의 i번째 위치에서 시작하고 길이가 |σ|인 부분 문자열과 문자열(σ)간에 공통적인 q-그램의 개수이다.
수식2에서, 입력 문자열(σ)의 크기가 저장된 문자열(s)의 크기 보다 큰 경우는 전체 문자열 편집거리의 하한에 관한 수식1과 동일하며, 그 이외의 경우에는 수식2의 아래 수식이 적용되어, 문자열(σ)의 크기를 갖는 모든 문자열(s)의 부분 문자열에 대해 부분 문자열 편집거리의 하한을 구한 후 그 중 최소값을 선택한다.
수식2에 따라 부분 문자열 편집거리의 하한을 구하는 예시적 방법을 도3의 흐름도로 설명하기로 한다.
도3은 편집거리의 하한을 계산하는 본 발명의 제1 실시예에 따른 방법을 나타내는 흐름도이다. 도3에서, 단계(S110)에서 질의 문자열(σ)을 입력 받으면 단계(S120)에서 이 입력된 문자열(σ) 및 이와 비교의 대상이 되는 문자열(s)의 크기를 비교한다.
입력 문자열(σ)의 크기가 더 크면, 단계(S130)로 진행하여 수식2의 위쪽 수식에 따라 전체 문자열 편집거리의 하한을 구하면 된다. 만일 입력 문자열(σ)의 크기가 작다면, 문자열(σ)의 크기를 갖는 모든 문자열(s)의 부분 문자열에 대해 단계(S140) 내지 단계(S170)를 수행하여 각각에 대한 부분 문자열 편집거리의 하한을 구하고, 이렇게 구한 부분 문자열 편집거리의 하한들 중 가장 작은 값을 문자열(σ)과 문자열(s)간의 부분 문자열 편집거리의 하한 값으로 선택한다(단계 S180).
문자열(σ)과 문자열(s) 사이에 공통되는 q-그램의 위치정보를 아는 경우, q-그램을 이용한 부분 문자열 편집거리의 하한 계산
상술한 수식2 및 도3의 흐름도에 따라 부분 문자열 편집거리의 하한을 구하는 방법은 문자열(σ)과 문자열(s)이 공통으로 가지고 있는 q-그램의 개수(c)를 알고 있을 때 적용 가능하다.
만일 문자열(σ)과 문자열(s)이 공통으로 가지고 있는 q-그램의 개수 뿐만 아니라 위치 정보도 알고 있다면 아래에서 도4 내지 도7을 참조하여 설명하는 제2 실시예의 방법을 통해 부분 문자열 편집거리의 하한을 더 신속하고 정확하게 구할 수 있다.
도4는 편집거리의 하한을 계산하는 본 발명의 제2 실시예에 따른 방법을 설명하기 위한 도면이다.
도4(a)를 참조하면, 12개의 문자로 이루어진 문자열(σ)과 15개의 문자로 이루어진 문자열(s)이 있고 이 문자열들 간의 부분 문자열 편집거리의 하한을 계산하기 위해 사용하는 q-그램에서 q=3이라고 가정한다. 또한 이 두 문자열 간에 서로 공통으로 가지고 있는 3-그램 문자열이 "abc" 하나밖에 없고 이 공통되는 3-그램 문자열이 문자열(σ)에서 3번째 위치에 있고(p1=3) 문자열(s)에서는 5번째 위치에 있다(r1=5)고 가정한다.
이 경우, 두 문자열 간에 서로 공통으로 가지고 있는 3-그램이 "abc" 하나 밖에 없다고 가정하였으므로, 도4(b)에 도시한 바와 같이 각 문자열(σ, s) 내에서 회색으로 표시한 위치, 즉 문자열(σ)에서 "abc"의 바로 앞의 문자와 문자열(s)에서 "abc" 바로 앞의 문자는 서로 불일치하고 문자열(σ)에서 "abc"의 바로 뒤의 문자와 문자열(s)에서 "abc" 바로 뒤의 문자도 서로 불일치함을 알 수 있다. 더 나아가서, 두 문자열 간에 서로 공통으로 가지고 있는 3-그램이 "abc" 하나 밖에 없으려면 도4(c)에 파란색으로 표시한 것처럼 회색 표시의 위치로부터 q번째(여기서는 q=3) 떨어진 위치마다 문자열(σ)과 문자열(s)의 문자가 서로 불일치해야 함을 알 수 있다. 즉 이 상황에서 두 문자열(σ, s)이 최대한 유사한 경우는 흰색으로 표시한 위치에서는 서로 동일한 문자가 존재하지만 회색과 파란색으로 표시한 위치에서는 서로 다른 문자가 존재하는 경우이고, 그러므로 문자열(σ)과 문자열(s) 사이의 부분 문자열 편집거리의 하한은 문자열(σ) 내에서 이 서로 다른 문자가 존재하는 문자열들의 길이에 의존하며 아래의 수식3과 같이 일반화될 수 있다.
Figure 112013055578907-pat00004
여기서 우측 식의 첫번째 항(
Figure 112013055578907-pat00005
)은 공통되는 3-그램 문자열("abc")의 좌측의 문자열에 대한 편집거리의 하한을 나타내고 두번째 항(
Figure 112013055578907-pat00006
)은 문자열("abc")의 우측의 문자열에 대한 편집거리의 하한을 나타낸다. 즉 공통되는 3-그램 문자열을 중심으로 좌측과 우측의 편집거리의 하한을 각각 구한 뒤 이를 더하면 두 문자열(σ,s)간의 부분 문자열 편집거리의 하한이 된다.
한편 상술한 도4 및 수식3은 두 문자열(σ,s) 사이에 공통되는 q-그램이 하나 있을 때 편집거리의 하한을 구하는 방법을 설명한 것이고, 이를 더 일반화하여 N개의 공통되는 q-그램이 있을 경우에도 이 원리를 적용할 수 있다. 즉 두 문자열(σ,s) 사이에 공통되는 N개의 q-그램이 있다고 하면(여기서 N 및 q는 각각 1이상의 정수), 입력 문자열(σ) 중 상기 N개의 q-그램을 제외한 나머지 문자열에 대한 부분 문자열 편집거리의 하한을 계산하고, 이 계산된 편집거리의 하한을 문자열(σ)과 문자열(s) 사이의 부분 문자열 편집거리의 하한으로 선택할 수 있다.
이와 같이 두 문자열 사이에 공통되는 q-그램이 복수개 있을 때의 편집거리의 하한을 구하는 방법을 도5 및 도7을 참조하여 설명하기로 한다.
도5는 편집거리의 하한을 계산하는 본 발명의 제2 실시예에 따른 방법을 설명하기 위한 도면으로, q=2인 경우이고 두 문자열(σ,s) 사이의 공통되는 q-그램이 3개 존재한다고 가정한다.
우선 문자열(σ)과 문자열(s)이 공통으로 가지고 있는 q-그램의 목록(Xσ 및 Ys)을 다음과 같이 알고 있다고 가정한다.
Figure 112013055578907-pat00007
여기서 Xσ는 문자열(σ)과 문자열(s)이 공통으로 갖는 q-그램들의 값(xi)과 이 값의 문자열(σ) 내에서의 위치(pi)의 집합이고, Ys는 문자열(σ)과 문자열(s)이 공통으로 갖는 q-그램들의 값(yj)과 이 값의 문자열(s) 내에서의 위치(rj)의 집합이다. 이 집합내의 q-그램들은 문자열(σ)과 문자열(s)이 공통으로 갖는 것들이므로 xi=yj 이고 |Xσ|=|Ys| 이다. 그러나 각 q-그램의 문자열(σ) 내에서의 위치(pi)와 문자열(s) 내에서의 위치(rj)는 서로 상이할 수 있다. 도5의 예에서, Xσ = 〈(A,2), (B,6), (C,10)〉 이고, Ys = 〈(A,3), (B,8), (C,14)〉 이다.
이와 같이 공통되는 q-그램의 목록(Xσ 및 Ys)을 알고 있을 때 일반적으로 두 문자열(σ,s)간의 부분 문자열 편집거리의 하한은 아래의 수식4와 같이 표현될 수 있다.
Figure 112013055578907-pat00008
여기서 m[i,j]는 문자열(σ)의 첫번째 위치에서 Xσ의 i번째 q-그램이 끝나는 위치까지의 부분 문자열과 문자열(s)의 부분 문자열중 Ys의 j번째 q-그램이 끝나는 위치까지의 모든 부분 문자열과의 편집거리 하한 중 가장 짧은 편집거리의 하한을 의미하며, 일 실시예에서 m[i,j]는 다음의 수식5를 사용해서 계산할 수 있다.
Figure 112013055578907-pat00009
상기 수식5에서 알 수 있듯이 m[i,j]을 구하기 위해서는 m[u,v]를 구해야 하므로 m[i,j]는 재귀함수이다. 따라서 이 재귀함수를 이용한 동적 프로그래밍(dynamic programming)을 사용하여 두 문자열(σ,s)간의 부분 문자열 편집거리의 하한을 구할 수 있다.
또한 여기에서
Figure 112013055578907-pat00010
는 Xσ의 u번째 q-그램이 시작하는 부분에서 i번째 q-그램이 끝나는 부분까지의 문자열(σ)의 부분 문자열과 Ys의 v번째 q-그램이 시작하는 부분에서 j번째 q-그램이 끝나는 부분까지의 문자열(s)의 부분 문자열 사이의 편집거리의 하한을 의미하고 다음 수식6과 같이 계산할 수 있다.
Figure 112013055578907-pat00011
이제 도6을 참조하여 위의 수식4 내지 수식6에 따른 편집거리 하한을 구하는 방법을 도식적으로 설명하기로 한다.
도6a 내지 도6c는 상기 제2 실시예에 따라 도5의 문자열의 편집거리의 하한을 계산하는 방법을 설명하기 위한 도면이다.
도6(a) 내지 도6(c)의 각각은 도5의 문자열(σ)을 간단히 도식화한 것이다. 즉 공통되는 q-그램(여기서 q=2)의 문자열 3개를 각각 A, B, C로 표시하고, 이들 문자열 사이의 문자들은 직선으로 나타내었다.
문자열(σ,s) 사이의 부분 문자열 편집거리의 하한을 구하는 수식4를 참조하면, 도6(a)는 i=1이고 j=1일 때 편집거리의 하한을 나타내며 다음 식과 같다.
Figure 112013055578907-pat00012
i 및 j가 모두 1이므로 도6(a)에서와 같이 공통되는 첫번째 q-그램("A")을 기준으로 좌측 문자열의 편집거리의 하한은 좌측 항(m[1,1])으로 표현되고 우측 문자열의 편집거리의 하한은 우측 항(
Figure 112013055578907-pat00013
)으로 표현되며, 두 문자열(σ,s) 사이의 부분 문자열 편집거리의 하한은 이 좌측 항과 우측 항의 합이 된다.
다음으로, 수식4에서 i와 j가 모두 2일 때, 편집거리의 하한은 도6(b)와 같이 나타낼 수 있다. 도6(b)에서 알 수 있듯이, 이 경우는 공통되는 두번째 q-그램("B")을 기준으로 좌측 문자열의 편집거리의 하한을 좌측 항(m[2,2])으로 나타내고 우측 문자열의 편집거리의 하한을 우측 항(
Figure 112013055578907-pat00014
)으로 나타낼 수 있다. 이 때 m[2,2]가 재귀함수이므로 도시된 것처럼 m[2,2]는 공통되는 첫번째 q-그램("A")을 기준으로 좌측 문자열의 편집거리의 하한(m[1,1])과 우측 문자열의 편집거리의 하한(δ1)으로 나누어 계산될 수 있고, 따라서 문자열(σ,s) 사이의 부분 문자열 편집거리의 하한은 m[1,1] + δ1 +
Figure 112013055578907-pat00015
로 계산할 수 있다.
다음으로, 수식4에서 i와 j가 모두 3일 때, 편집거리의 하한은 도6(c)와 같이 나타낼 수 있다. 이 경우는 공통되는 세번째 q-그램("C")을 기준으로 좌측 문자열의 편집거리의 하한을 좌측 항(m[3,3])으로 나타내고 우측 문자열의 편집거리의 하한을 우측 항(
Figure 112013055578907-pat00016
)으로 나타낼 수 있다. 이 때 m[3,3]가 재귀함수이므로 m[3,3]은 공통되는 두번째 q-그램("B")을 기준으로 좌측 문자열의 편집거리의 하한(m[2,2])과 우측 문자열의 편집거리의 하한(δ2)으로 나눌 수 있고, 여기서 m[2,2,]는 다시 m[1,1]과 δ1로 나뉠 수 있다. 그러므로 도6(c)에 따르면 문자열(σ,s) 사이의 부분 문자열 편집거리의 하한은 m[1,1] + δ1 + δ2 +
Figure 112013055578907-pat00017
로 계산할 수 있다.
도6의 예에서는 공통되는 q-그램이 3개 이므로 i와 j가 1부터 3까지의 값을 가지며 도6(a) 내지 도6(c)와 같이 각 경우에 따라 부분 문자열 편집거리의 하한을 각각 계산하였다. 수식4에 따르면 이와 같이 i와 j의 변경에 따라 각각 계산한 편집거리의 하한 중 최소값을 두 문자열(σ,s) 사이의 편집거리의 하한 값으로 선택하게 된다.
한편, 두 문자열(σ,s) 사이에 공통되는 q-그램이 하나도 없다면 두 문자열 간의 부분 문자열 편집거리의 하한은
Figure 112013055578907-pat00018
가 된다. 따라서 수식4를 더 일반화하면, 두 문자열(σ,s) 사이의 부분 문자열 편집거리의 하한은 다음과 같이 수식7로 표현할 수 있다.
Figure 112013055578907-pat00019
수식4 또는 수식7에 따라 두 문자열 사이의 부분 문자열 편집거리의 하한을 구하는 예시적 방법을 도7을 참조하여 설명하기로 한다.
도7은 상기 제2 실시예에 따라 편집거리의 하한을 계산하는 방법을 나타내는 흐름도이다.
우선 입력 문자열(σ)과 저장된 문자열(s) 사이에 공통으로 일치하는 q-그램의 정보를 알고 있다고 전제한다. 예를 들어 두 문자열(σ,s) 사이에 N개의 q-그램이 있다고 하면(여기서 N 및 q는 각각 1이상의 정수), 단계(S220)에서 공통된 q-그램 중 임의의 하나의 q-그램을 선택하고, 그 후 단계(S230)에서, 이 선택된 q-그램을 기준으로 입력 문자열(σ)의 좌측 문자열의 부분 문자열 편집거리의 하한 및 우측 문자열의 부분 문자열 편집거리의 하한을 각각 계산한다.
그 후 좌측 문자열에 N개 중 다른 q-그램이 존재하는지 판단하고(S240), 만일 다른 q-그램이 존재한다면 이 다른 q-그램을 기준으로 좌측 문자열과 우측 문자열에 대한 부분 문자열 편집거리를 각각 구한다(S250).
이와 같이 공통되는 임의의 q-그램을 기준으로 좌측 및 우측 문자열에 대한 부분 문자열 편집거리의 하한을 구하는 작업을, 상기 첫번째 선택된 q-그램의 좌측에 상기 N개 중의 q-그램이 존재하지 않을 때까지 반복하고, 이 반복 작업을 통해 계산된 모든 좌측 문자열의 부분 문자열 편집거리의 하한들 및 우측 문자열의 부분 문자열 편집거리의 하한들에 기초하여, 두 문자열(σ,s) 사이의 부분 문자열 편집거리의 하한을 계산한다(S260).
그런데 N개의 q-그램에서 임의의 하나의 q-그램을 선택하는 경우의 수가 N개 이므로, 각각의 경우에 대해 위의 단계를 반복하여(S270~S290) 각 경우마다 부분 문자열 편집거리의 하한을 계산하고(S260), 이렇게 계산된 모든 편집거리의 하한 중에서 최소값을 두 문자열(σ,s) 사이의 부분 문자열 편집거리의 하한으로 선택한다(S295).
문자열(σ)과 문자열(s) 사이에 공통되지 않는 q-그램의 목록을 아는 경우, q-그램을 이용한 부분 문자열 편집거리의 하한 계산
도2 내지 도7을 참조하여 상술한 편집거리 하한 계산 방법은 문자열(σ)과 문자열(s) 사이에 일치하는 q-그램의 개수나 위치정보를 알고 있을 때 사용할 수 있다.
만일 이러한 정보를 알 수 없고 대신 문자열(σ)과 문자열(s) 사이에 일치하지 않는 q-그램의 목록을 알고 있다면, 이 목록을 이용해서도 두 문자열간의 부분 문자열 편집거리의 하한을 구할 수 있다.
우선, 문자열(σ)에 속한 q-그램들 중에서 서로 겹치지 않도록 선택한 q-그램들의 부분 집합을 G'라고 한다. 이때 어떤 문자열(s)가 부분 집합(G')에 들어있는 q-그램들 중 어떠한 q-그램도 공유하고 있지 않다면 문자열(σ)과 문자열(s) 사이의 부분 문자열 편집거리의 하한이 |G'| 라고 할 수 있다.
부분 문자열 편집거리의 하한을 이용하여, 저장된 문자열들(S)에서 질의 문자열(σ)과의 편집거리가 가장 작은 K개의 문자열을 검색하는 방법 - (1)
이하에서는 상술한 부분 문자열 편집거리의 하한을 계산하는 방법을 이용하여, 주어진 데이터베이스(DB)에 저장된 복수개의 문자열들(S) 중에서 질의 문자열(σ)과 가장 유사한 K개의 데이터를 검색하는 방법을 설명하기로 한다.
도8은 입력 문자열에 유사한 K개의 문자열을 선택하는 본 발명의 제1 실시예에 따른 방법을 나타내는 흐름도이다.
이 방법에 따르면, 데이터베이스에 있는 문자열들(S)을 하나씩 모두 읽어나가면서 문자열을 Q-그램으로 분해한다. 그리고 위에서 설명한 편집거리의 하한 계산방법 중 하나를 이용하여 질의 문자열(σ)과 각 문자열(Si) 사이의 부분 문자열 편집거리의 하한을 계산하고 지금까지 저장된 K번째로 작은 부분 문자열 편집거리와 비교하여 이보다 크면 무시한다. 만약 편집거리의 하한이 이보다 작으면 실제로 부분 문자열 편집거리를 계산하여 편집거리가 작은 K개의 목록에 넣을지를 결정한다.
이제 도8을 참조하면, 단계(S310,S320)에서, 데이터베이스에 저장된 M개의 문자열들(S) 중 첫번째 문자열(S1)에 대해 질의 문자열(σ)과의 부분 문자열 편집거리의 하한을 계산한다. 이 때 부분 문자열 편집거리의 하한을 계산하는 방법은 특별히 한정되지 않는다. 그러나 바람직하게는 도2 내지 도7을 참조하여 상술한 방법 중 하나가 사용될 수 있다.
그 후 단계(S330)에서, DB에 저장된 문자열들(S) 중 지금까지 계산된 문자열의 부분 문자열 편집거리가 있으면, 이 편집거리 중 K번째로 작은 편집거리와 상기 단계(S320)에서 계산된 부분 문자열 편집거리의 하한을 비교한다.
비교 결과 만일 편집거리의 하한이 K번째로 작은 편집거리 보다 작은 경우(S340_Y), 단계(S350)로 진행하여 문자열(S1)과 문자열(σ) 사이의 부분 문자열 편집거리를 계산한다. 그 후 이 계산된 S1에 대한 편집거리가 K번째로 작은 편집거리보다 작은 경우(S360_Y), 단계(S370)로 진행하여 문자열(S1)을 입력 문자열(σ)에 가장 유사한 K개의 문자열 목록에 포함시킨다.
그 후 i를 하나씩 증가시키면서 DB의 문자열(Si)의 전부에 대해 상기 단계(S320 내지 S370)를 수행하고, 이에 따라 DB의 전체 문자열들(S) 중에서 입력 문자열(σ)에 가장 유사한 K개의 데이터를 추출하여 사용자에게 검색결과를 제공할 수 있다.
한편 대안적인 실시예에서, 만약 단계(S330)를 수행할 때 현재까지 계산된 문자열들(S)의 편집거리가 K개가 되지 않는다면, 비교하는 단계(S340, S360)를 거치지 않고 해당 문자열(Si)의 부분 문자열 편집거리를 계산하여 상기 K개의 문자열 목록에 넣을 수 있다.
부분 문자열 편집거리의 하한을 이용하여, 저장된 문자열들(S)에서 질의 문자열(σ)과의 편집거리가 가장 작은 K개의 문자열을 검색하는 방법 - (2)
도9는 입력 문자열에 유사한 K개의 문자열을 선택하는 본 발명의 제2 실시예에 따른 방법을 나타내는 흐름도이다. 이 방법은 도8의 방법과 유사하지만 문자열(σ)의 부분 집합(G')도 이용하는 점에서 상이하다. 도8과 비교할 때 도9는 단계(S420 및 S430)를 추가로 포함하고 있다.
즉 단계(S420)에서, 입력 문자열(σ)에 속하는 q-그램들 중 겹치지 않도록 q-그램의 부분 집합(G')을 만들고, 이 부분 집합(G')의 크기(|G'|)를 K번째로 작은 편집거리와 비교한다. 상술하였듯이 부분 집합(G')의 크기는 이 문자열(σ)의 부분 문자열 편집거리의 하한과 관련이 있다.
단계(S420)에서 만일 상기 K번째로 작은 편집거리가 상기 크기(|G'|) 보다 크다면 단계(S440)로 진행하여 문자열(Si)에 대해 부분 문자열 편집거리의 하한을 계산한다. K번째로 작은 편집거리가 부분 집합(G')의 크기보다 크다는 것은 해당 문자열(σ)의 추정되는 부분 문자열 편집거리의 하한이 K번째로 작은 편집거리 보다 더 작을 가능성이 있다는 뜻이고, 따라서 단계(S440)로 진행하여 편집거리의 하한을 계산한다.
대안적인 실시예에서, 단계(S420)에서 K번째로 작은 편집거리가 부분 집합(G')의 크기보다 큰 경우 단계(S470)로 바로 진행하여 문자열(Si)에 대한 부분 문자열 편집거리를 바로 계산하도록 설정할 수도 있다.
한편 단계(S420)에서 K번째로 작은 편집거리가 부분 집합(G')의 크기 보다 작다면 단계(S430)로 진행하여, 문자열(Si)이 부분 집합(G')에 속하는 q-그램과 일치하는지 q-그램을 갖는지 여부를 판단한다.
만일 일치하는 q-그램이 존재한다면(S430_Y), 이 문자열(Si)에 대한 부분 문자열 편집거리의 하한이 줄어들 가능성이 있으므로, 단계(S440)로 진행하여 실제로 편집거리의 하한을 계산해본다. 그러나 일치하는 q-그램이 존재하지 않는다면(S430_N), 문자열(Si)과 문자열(σ)간의 부분 문자열 편집거리의 하한이 K번째로 작은 편집거리 보다 큰 것이 확실하므로, 실제의 편집거리나 편집거리의 하한을 계산할 필요없이 무시할 수 있다.
따라서 부분 집합(G')을 이용한 편집거리의 하한을 이용함으로써, (i) 문자열(σ)의 부분 집합(G')의 크기가 K번째로 작은 편집거리보다 크고 또한 (ii) 이 부분 집합(G')과 문자열(Si) 사이에 공통인 q-그램이 존재하지 않는다면, 이 문자열(Si)과 문자열(σ) 사이의 부분 문자열 편집거리가 K번째로 작은 편집거리보다 작아질 가능성이 없어 단계(S440) 이하를 수행할 필요가 없으므로, 검색을 보다 신속하게 수행할 수 있다.
한편 도9에서는 단계(S420) 및 단계(S430)을 모두 포함하는 실시예를 도시하였지만, 대안적인 실시예에서는 두 단계(S420, S430) 중 어느 하나만 포함할 수도 있다.
부분 문자열 편집거리의 하한을 이용하여, 저장된 문자열들(S)에서 질의 문자열(σ)과의 편집거리가 가장 작은 K개의 문자열을 검색하는 방법 - (3)
도10은 입력 문자열에 유사한 K개의 문자열을 선택하는 본 발명의 제3 실시예에 따른 방법을 나타내는 흐름도이다. 이 방법은 도8 또는 도9의 방법과 유사하지만 데이터베이스(DB)에 저장된 문자열들(S)에 대해 q-그램 역색인(inverted q-gram index)이 마련되어 있을 때 이 역색인을 이용하는 방법(S610 내지 S690)이 추가되어 있다.
이를 위해 우선 단계(S520)에서, 입력 문자열(σ)에 속하는 q-그램들 중 겹치지 않도록 선택된 q-그램의 부분 집합(G')에 대해, DB의 문자열들(S)의 K번째로 작은 편집거리를 상기 부분 집합(G')의 크기(|G'|)와 비교한다.
K번째로 작은 편집거리가 상기 크기(|G'|) 보다 크면 단계(S530)로 진행하여 각 문자열(Si)에 대해 부분 문자열 편집거리의 하한을 계산한다. 이 이후의 단계(S540~S590)는 도8 또는 도9의 단계(S330~S380 또는 S450~S495)와 유사하다.
그러나 단계(S520)에서, 상기 K번째로 작은 편집거리가 상기 크기(|G'|) 보다 작은 경우, DB의 문자열들(S)에 대한 상기 단계(S530~590)를 더 이상 실행하지 않고, 단계(S610)로 진행하여, 색인 DB로부터 문자열(σ)의 부분 집합(G')에 대한 색인 정보 L(G')를 도출한다.
여기서 색인 정보(L(G'))는, 문자열(σ)의 부분 집합(G')에 속하는 q-그램이 DB의 모든 문자열들(S) 중 어느 문자열(Si)의 어느 위치에 존재하는지를 나타내는 정보를 적어도 포함한다. 따라서 이 색인 정보(L(G'))를 이용함으로써, DB내의 모든 문자열(S1~SM)을 다 검색할 필요 없이 문자열들(S) 중 색인 정보에 있는 문자열만을 대상으로 문자열(σ)에 가장 유사한 K개의 문자열을 검색하면 된다.
즉 색인 정보(L(G'))에 N개(N≤M을 만족함)의 문자열만이 언급되어 있다면, 이 N개의 문자열(Sj: 1≤j≤N)의 각각에 대해서만 단계(S630~S690)를 수행한다. 즉 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 계산하고(S630); 문자열(S)의 모든 계산된 부분 문자열 편집거리들 중 K번째로 작은 편집거리와 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 비교하고(S640); 문자열(Sj)의 편집거리의 하한이 K번째로 작은 편집거리 보다 작은 경우, 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리를 계산하고(S660); 이 계산된 문자열(Sj)의 부분 문자열 편집거리가 K번째로 작은 편집거리 보다 작은 경우, 이 문자열(Sj)을 입력 문자열(σ)에 가장 유사한 K개의 문자열 목록에 포함시킨다(S680). 단계(S630~S690)의 각각은 도10의 오른쪽의 각 단계(S530~S590)에 대응되고 도8 또는 도9의 단계와도 동일 내지 유사하므로 상세한 설명은 생략한다.
도8 및 도9의 문자열 검색 방법과 비교할 때 도10을 참조하여 설명한 방법은, 지금까지 K번째로 가장 작은 부분 문자열 편집거리가 부분 집합(G')의 크기(|G'|)보다 작아진 이후부터는 q-그램 역색인만 이용하면 되므로 DB에서 실제 데이터를 읽어오는 작업을 더 이상 하지 않아도 되어 검색 시간을 단축할 수 있는 장점이 있다.
입력 문자열(σ)의 q-그램의 부분 집합( G' )을 선택하는 방법
이제 도11 내지 도13을 참조하여 문자열(σ)의 부분 집합(G')을 선택하는 방법에 대해 설명하기로 한다.
우선 도11을 참조하여 부분 집합(G')을 선택하는 경우의 수를 도식적으로 살펴보기로 한다. 도11은 문자열의 q-그램들의 부분집합(G')을 선택하는 방법을 설명하기 위한 도면으로, 문자열 크기가 7인 임의의 문자열(σ)("abcdefg")을 도시하고 있다. 만일 이 문자열(σ)에서 3-그램(q=3)의 문자열을 겹치지 않고 2개 선택하여 부분 집합(G')을 만들어야 하는 경우, 도11에서 (a) 내지 (c)로 도시한 것처럼 3가지의 경우의 수가 존재한다.
도9와 도10에서 설명한 바와 같이 DB의 문자열들(S)을 가능한 한 작게 검색함으로써 검색 속도를 높일 수 있고 이를 위해서는 문자열(σ)의 부분 집합(G')과 DB의 문자열들(S)에 공통되는 q-그램의 수가 작을수록 좋다는 것을 알 수 있다. 즉 부분 집합(G')에 속한 q-그램들을 하나라도 포함하고 있는 문자열들(S)의 수가 가장 작은 q-그램의 부분 집합이 가장 좋은 부분 집합이 된다. 즉 도11을 참조하면 첫번째 선택되는 q-그램(빨간색)과 두번째 선택되는 q-그램(파란색)을 어느 하나라도 포함하는 문자열들(S)의 수가 작을수록 좋다. 이를 위해 도11의 (a) 내지 (c)의 각각의 경우마다 문자열들(S) 중 첫번째 q-그램을 포함하는 문자열과 두번째 q-그램을 포함하는 문자열의 합집합의 크기를 계산한 뒤 이 합집합의 크기가 가장 작은 값일 때의 q-그램들을 선택하면 된다.
도12는 일 실시예에 따라 문자열의 q-그램들의 부분집합(G')을 선택하는 방법을 설명하기 위한 도면이다. 도12의 예에서는 크기가 |σ|인 문자열(σ)에서 서로 겹치지 않게 q-그램을 3개 선택하여 부분 집합(G')을 만드는 경우를 가정한다.
이를 위해 우선 문자열(σ)의 i번째 위치에서 끝나는 q-그램(Q1)을 반드시 포함한다고 가정하고, 이 q-그램(Q1) 앞의 위치, 즉 문자열(σ)의 첫번째 위치에서부터 (i-q)번째 위치 사이에서 나머지 2개의 q-그램(Q2, Q3)을 선택하기로 한다.
나머지 2개의 q-그램(Q2, Q3)을 선택하기 위해, 우선 두번째 q-그램(Q2)이 첫번째 q-그램(Q1)과 인접하여 바로 앞에 위치한다고 가정한다. 즉 Q2가 끝나는 위치(j)가 (i-q)라고 가정하고, 이 경우 세번째 q-그램(Q3)을 문자열(σ)의 첫번째 위치에서부터 Q2와 바로 인접하는 위치에 이르기까지 한칸씩 순차적으로 이동시키면서 각 경우마다 문자열들(S) 중 Q1, Q2, Q3를 포함하는 문자열의 합집합을 계산한다.
그 후 두번째 q-그램(Q2)이 첫번째 q-그램(Q1)에서 한칸 더 왼쪽으로 이동했다고 가정한다(즉, j=(i-q-1)이다). 이 경우에도 마찬가지로 세번째 q-그램(Q3)을 문자열(σ)의 첫번째 위치에서부터 Q2와 바로 인접하는 위치에 이르기까지 한칸씩 순차적으로 이동시키면서 각 경우마다 문자열들(S) 중 Q1, Q2, Q3를 포함하는 문자열의 합집합을 계산한다.
이와 같이 두번째 q-그램(Q2)을 첫번째 q-그램(Q1)에서 순차적으로 멀어지도록 한칸씩 이동시키면서, 그 때마다 세번째 q-그램(Q3)을 문자열(σ)의 첫번째 위치에서부터 Q2에 인접하는 위치에 이르기까지 변경하면서 Q,1, Q2, Q3를 포함하는 문자열의 합집합을 계산하고, 이러한 작업을 두번째 q-그램(Q2)이 최대한 왼쪽으로 이동될 때까지(즉 도12에서 맨 아래의 그림에서와 같이 j=(t-1)*q가 될 때까지) 반복하여 수행한다. 따라서 상기 반복 과정을 통해, 첫번째 q-그램(Q1)이 문자열(σ)의 i번째 위치에서 끝나는 경우에 대한 모든 가능한 합집합의 크기를 계산할 수 있다.
그리고, 첫번째 q-그램(Q1)이 끝나는 위치가 문자열(σ)의 최우측 위치에서부터 t*q의 위치까지 존재할 수 있으므로, 이 모든 경우의 수에 대해 상기 설명한 방법을 다시 반복한다. 이와 같이 본 발명의 일 실시예에 따르면 동적 프로그래밍 방법을 사용하여 세 개의 q-그램(Q1, Q2, Q3)이 위치할 수 있는 모든 경우의 수에 대해 이 q-그램을 하나라도 포함하는 문자열의 합집합의 크기를 계산할 수 있고, 이 계산된 모든 합집합의 크기 중 가장 작은 값을 가질 때의 q-그램을 선택함으로써 가장 좋은 부분 집합(G')을 선택할 수 있다.
도12를 참조하여 상술한 방법은 아래와 같이 수식8로서 표현 가능하다.
Figure 112013055578907-pat00020
여기서 L(A)를 q-그램의 집합 A의 q-그램을 하나라도 포함하는 데이터의 수를 말하고 θ[i,t]는 문자열(σ)의 i번째 위치에서 끝나는 q-그램을 포함하고 크기가 t이면서 가장 효과가 좋은 부분 집합(G')을 의미한다. 수식8에서 알 수 있듯이 θ[i,t]는 자신을 다시 포함하고 있으므로 재귀함수이고, 이와 같이 θ[i,t]를 이용한 동적 프로그래밍을 통해 가장 좋은 부분 집합(G')을 선택할 수 있다.
도13은 일 실시예에 따라 부분집합(G')을 선택하는 방법을 나타내는 흐름도이며, 도12를 참조하여 상술한 방법을 흐름도로 나타낸 것이다.
우선 단계(S710)에서, 첫번째 q-그램(도12의 Q1)을 문자열(σ)의 가장 오른쪽에 놓고 이 상태에서 두번째 q-그램(Q2)을 Q1의 바로 왼쪽에서 한칸씩 왼쪽으로 이동하면서 그 때마다의 θ[i,t]를 계산한다(S720~S745).
그 후 첫번째 q-그램(Q1)을 한칸씩 왼쪽으로 이동시키면서(S750,S755) θ[i,t]의 계산을 반복하고, 이렇게 하여 계산된 모든 경우의 합집합의 크기 중 가장 작은 값을 가질 때의 q-그램을 선택함으로써 가장 좋은 부분 집합(G')을 선택할 수 있다.
도14는 일 실시예에 따라 문자열을 검색하는 장치를 포함하는 예시적인 네트워크 구성을 나타내는 블록도이다.
도14를 참조하면 일 실시예에 따른 문자열 검색 장치는 서버(30), 문서 DB(50), 및 색인 DB(60)를 포함할 수 있고, 네트워크(20)를 통해 다수의 사용자 단말기(10)와 통신하도록 연결될 수 있다.
사용자 단말기(10)는 예를 들어 예를 들어 스마트폰, 태블릿 PC, 노트북 컴퓨터 등의 휴대용 모바일 단말기 또는 데스크탑 컴퓨터와 같은 비-휴대용 단말기일 수 있고, 사용자 단말기(10)를 통해 사용자가 질의 문자열(σ)을 입력할 수 있다.
네트워크(20)는 사용자 단말기(10)와 서버(30) 사이에 데이터 송수신 경로를 제공하는 임의의 형태의 네트워크로서, LAN, WAN, 인터넷망, 및/또는 이동통신망 중 하나를 포함할 수 있다.
서버(30)는 사용자 단말기(10)로부터 질의 문자열(σ)을 수신받고 이 문자열을 문서 DB(50)에서 검색하여 검색결과를 사용자 단말기(10)에 제공하는 서비스 서버일 수 있고, 이를 위해 검색 어플리케이션(40)을 포함할 수 있다. 검색 어플리케이션(40)은 도2 내지 도13을 참조하여 설명한 문자열 검색 방법을 수행할 수 있는 검색엔진 또는 임의의 어플리케이션이 될 수 있다.
이를 위해 서버(30)는 프로세서, 메모리, 저장부, 통신부 등으로 구성될 수 있고, 검색 어플리케이션(40)이 저장부에 저장되어 있다가 프로세서의 제어 하에 메모리에 로딩되어 실행될 수 있다. 또한 서버(30)는 사용자로부터 질의 문자열을 입력받고 검색 결과를 사용자에게 제공할 수 있는 웹서버 또는 DB 서버일 수 있다.
도시된 실시예에서 서버(30)는 문서 DB(50)와 색인 DB(60)와 통신가능하게 연결된다. 대안적인 실시예에서 서버(30)가 문서 DB(50)와 색인 DB(60) 중 적어도 하나를 포함할 수도 있다. 문서 DB(50)는 다수의 문자열들(S)을 저장하는 저장수단일 수 있고, 색인 DB(60)는 도10의 실시예에서와 같이 색인 정보가 필요한 경우 이 색인 정보를 저장하는 저장수단일 수 있다.
상기와 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되지 않는다. 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 상술한 기재로부터 다양한 수정 및 변형이 가능함을 이해할 것이다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10: 사용자 단말기
20: 네트워크
30: 서버
40: 검색 어플리케이션
50: 문서 DB
60: 색인 DB

Claims (14)

  1. 문자열을 검색하는 방법에 있어서,
    서버가, 사용자로부터 입력받은 입력 문자열(σ)과 문서 데이터베이스(DB)에 저장된 문자열(s)에 공통으로 일치하는 N개의 q-그램(여기서 N 및 q는 각각 1이상의 정수)의 목록을 추출하는 단계;
    상기 서버가, 상기 입력 문자열 중 상기 N개의 q-그램을 제외한 나머지 문자열에 대한 부분 문자열 편집거리의 하한을 계산하는 단계; 및
    상기 서버가, 상기 계산된 편집거리의 하한을 상기 문자열(σ) 및 문자열(s) 사이의 부분 문자열 편집거리의 하한으로 선택하는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  2. 제 1 항에 있어서, 상기 부분 문자열의 편집거리의 하한을 계산하는 단계는,
    (a) 상기 서버가, 상기 N개 중 제1 q-그램을 기준으로 입력 문자열(σ)의 좌측 문자열의 부분 문자열 편집거리의 하한 및 우측 문자열의 부분 문자열 편집거리의 하한을 각각 계산하는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  3. 제 2 항에 있어서, 상기 (a)단계 이후에,
    (b) 상기 서버가, 상기 좌측 문자열에 상기 N개 중 상기 제1 q-그램을 제외한 제2 q-그램이 존재하는지 판단하는 단계;
    (c) 상기 서버가, 제2 q-그램이 존재하면, 상기 제2 q-그램을 기준으로 좌측 문자열의 부분 문자열 편집거리의 하한 및 우측 문자열의 부분 문자열 편집거리의 하한을 각각 계산하는 단계; 및
    (d) 상기 서버가, 상기 계산된 모든 부분 문자열 편집거리의 하한에 기초하여, 상기 입력 문자열(σ)의 부분 문자열 편집거리의 하한을 계산하는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  4. 제 2 항에 있어서, 상기 (a)단계 이후에,
    (b) 상기 서버가, 상기 좌측 문자열에 상기 N개 중 상기 제1 q-그램을 제외한 제n의(여기서 n은 2 이상의 정수) q-그램이 존재하는지 판단하는 단계;
    (c) 상기 서버가, 제n의 q-그램이 존재하면, 상기 제n의 q-그램을 기준으로 좌측 문자열의 부분 문자열 편집거리의 하한 및 우측 문자열의 부분 문자열 편집거리의 하한을 각각 계산하는 단계;
    (d) 상기 서버가, 상기 제n의 q-그램의 좌측 문자열에 상기 N개 중의 q-그램이 존재하지 않을 때까지, 상기 n값을 1씩 증가하면서 상기 (c)단계를 반복하는 단계; 및
    (e) 상기 서버가, 상기 계산된 모든 부분 문자열 편집거리의 하한에 기초하여, 상기 입력 문자열(σ)의 부분 문자열 편집거리의 하한을 계산하는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  5. 제 4 항에 있어서, 상기 제1 q-그램이 상기 N개의 q-그램 중 첫번째 q-그램인 경우부터 N번째 q-그램인 경우의 각각의 경우에 대해,
    상기 서버가, 상기 (a)단계 내지 (e)단계를 반복하는 단계; 및
    상기 서버가, 상기 각각의 경우에 대해 계산된 상기 입력 문자열(σ)의 편집거리의 하한들 중 가장 작은 값을 상기 문자열(σ)과 문자열(s) 사이의 부분 문자열 편집거리의 하한으로 선택하는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  6. 문서 데이터베이스(DB)에 저장된 M개의 문자열(S)에서, 사용자로부터 입력받은 입력 문자열(σ)에 가장 유사한 K개(여기서 M과 K는 각각 2 이상의 정수이고 M>K를 만족한다)의 문자열을 검색하는 방법에 있어서,
    (가) 서버가, 상기 문자열(S) 중 임의의 i번째(여기서 2≤i≤M을 만족함) 문자열(Si)에 대해, 제1항 내지 제5항 중 어느 한 항에 따른 방법에 의해 상기 문자열(Si)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 계산하는 단계;
    (나) 상기 서버가, 상기 입력 문자열(σ)과 문자열(Si 내지 S(i-1))의 각각과의 부분 문자열 편집거리들 중 K번째로 작은 편집거리와, 상기 문자열(Si)과 문자열(σ) 사이의 편집거리 하한을 비교하는 단계;
    (다) 상기 서버가, 상기 문자열(Si)의 편집거리의 하한이 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Si)과 문자열(σ) 사이의 부분 문자열 편집거리를 계산하는 단계; 및
    (라) 상기 서버가, 상기 계산된 문자열(Si)의 부분 문자열 편집거리가 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Si)을 상기 입력 문자열(σ)에 가장 유사한 K개의 문자열 목록에 포함시키는 단계(S370);를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  7. 제 6 항에 있어서, 상기 문자열(Si)의 부분 문자열 편집거리의 하한을 계산하는 (가)단계 이전에,
    상기 서버가, 입력 문자열(σ)에 속하는 q-그램들 중 겹치지 않도록 q-그램의 부분 집합(G')을 선택하는 단계; 및
    상기 서버가, 상기 K번째로 작은 편집거리를 상기 부분 집합(G')의 크기(|G'|)와 비교하는 단계(S420);를 더 포함하고,
    상기 K번째로 작은 편집거리가 상기 크기(|G'|) 보다 큰 경우, 상기 문자열(Si)에 대해 상기 (가) 내지 (라) 단계를 실행하는 것을 특징으로 하는 문자열 검색 방법.
  8. 제 7 항에 있어서, 상기 K번째로 작은 편집거리를 상기 부분 집합(G')의 크기(|G'|)와 비교하는 단계 이후에,
    상기 서버가, 상기 K번째로 작은 편집거리가 상기 크기(|G'|) 보다 작은 경우, 상기 문자열(Si)이 상기 부분 집합(G')에 속하는 q-그램과 일치하는지 여부를 판단하는 단계;를 더 포함하고,
    문자열(Si)이 상기 집합(G')의 어느 q-그램과도 일치하지 않으면, 상기 문자열(Si)에 대해 상기 (가) 내지 (라) 단계를 실행하지 않는 것을 특징으로 하는 문자열 검색 방법.
  9. 제 6 항에 있어서,
    상기 문자열(Si)의 부분 문자열 편집거리의 하한을 계산하는 (가)단계 이전에, 상기 서버가, 상기 K번째로 작은 편집거리를 상기 부분 집합(G')의 크기(|G'|)와 비교하는 단계;를 더 포함하고,
    상기 K번째로 작은 편집거리가 상기 크기(|G'|) 보다 작은 경우,
    상기 서버가, 색인 데이터베이스(DB)로부터 상기 부분 집합(G')에 대한 색인 정보(L(G'))를 도출하는 단계(S610); 및
    상기 서버가, 상기 색인 정보(L(G'))에 포함된 전체 N개(여기서 N>K를 만족함)의 문자열(S)에 대해, 상기 입력 문자열(σ)에 가장 유사한 K개의 문자열을 검색하는 단계;를 더 포함하는 것을 특징으로 하는 문자열 검색 방법.
  10. 제 9 항에 있어서, 상기 N개의 문자열(S)에 대해 가장 유사한 K개의 문자열을 검색하는 단계는,
    상기 서버가, 상기 문자열(S) 중 임의의 j번째(여기서 2≤j≤N을 만족함) 문자열(Sj)에 대해, 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 계산하는 단계;
    상기 서버가, 문자열(S)의 모든 계산된 부분 문자열 편집거리들 중 K번째로 작은 편집거리와, 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 비교하는 단계;
    상기 서버가, 상기 문자열(Sj)의 편집거리의 하한이 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리를 계산하는 단계; 및
    상기 서버가, 상기 계산된 문자열(Sj)의 부분 문자열 편집거리가 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Sj)을 상기 입력 문자열(σ)에 가장 유사한 K개의 문자열 목록에 포함시키는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  11. 문서 데이터베이스(DB)에 저장된 M개의 문자열(S)에서, 사용자로부터 입력받은 입력 문자열(σ)에 가장 유사한 K개(여기서 M과 K는 각각 2 이상의 정수이고 M>K를 만족한다)의 문자열을 검색하는 방법에 있어서,
    (가) 서버가, 입력 문자열(σ)에 속하는 q-그램들 중 겹치지 않도록 q-그램의 부분 집합(G')을 선택하는 단계;
    (나) 상기 서버가, 색인 데이터베이스(DB)로부터 상기 부분 집합(G')에 대한 색인 정보(L(G'))를 도출하는 단계;
    (다) 상기 서버가, 색인 정보(L(G'))에 포함된 전체 N개(여기서 M≥N>K를 만족함)의 문자열(S) 중 임의의 j번째(여기서 2≤j≤N을 만족함) 문자열(Si)에 대해, 제1항 내지 제5항 중 어느 한 항에 따른 방법에 의해 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 계산하는 단계;
    (라) 상기 서버가, 문자열(S)의 모든 계산된 부분 문자열 편집거리들 중 K번째로 작은 편집거리와, 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리의 하한을 비교하는 단계;
    (마) 상기 서버가, 상기 문자열(Sj)의 편집거리의 하한이 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Sj)과 문자열(σ) 사이의 부분 문자열 편집거리를 계산하는 단계; 및
    (바) 상기 서버가, 상기 계산된 문자열(Sj)의 부분 문자열 편집거리가 상기 K번째로 작은 편집거리 보다 작은 경우, 상기 문자열(Sj)을 상기 입력 문자열(σ)에 가장 유사한 K개의 문자열 목록에 포함시키는 단계;를 포함하는 것을 특징으로 하는 문자열 검색 방법.
  12. 제 1 항 내지 제 5 항 중 어느 한 항에 기재된 방법을 컴퓨터에서 실행시키기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
  13. 제 6 항에 기재된 방법을 컴퓨터에서 실행시키기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
  14. 제 11 항에 기재된 방법을 컴퓨터에서 실행시키기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.

KR1020130071616A 2013-06-21 2013-06-21 유사 문자열 검색 방법 및 장치 KR101452638B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130071616A KR101452638B1 (ko) 2013-06-21 2013-06-21 유사 문자열 검색 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130071616A KR101452638B1 (ko) 2013-06-21 2013-06-21 유사 문자열 검색 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101452638B1 true KR101452638B1 (ko) 2014-10-22

Family

ID=51998195

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130071616A KR101452638B1 (ko) 2013-06-21 2013-06-21 유사 문자열 검색 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101452638B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180065156A (ko) 2016-12-07 2018-06-18 전북대학교산학협력단 가변길이 그램의 역리스트 동적 생성을 이용한 유사 문자열 검색 방법 및 장치
KR20220084901A (ko) * 2020-12-14 2022-06-21 서울대학교산학협력단 동의어 규칙을 이용한 문자열 매칭 방법 및 이를 구현하는 장치 및 프로그램

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006519445A (ja) 2003-03-03 2006-08-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 文字列検索の方法および設備
JP2012128672A (ja) 2010-12-15 2012-07-05 Waseda Univ 相同性検索装置及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006519445A (ja) 2003-03-03 2006-08-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 文字列検索の方法および設備
JP2012128672A (ja) 2010-12-15 2012-07-05 Waseda Univ 相同性検索装置及びプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
고상기외 1인, "정규 언어와 문맥 자유 언어 사이의 편집거리 계산", 정보과학회 논문지 : 컴퓨팅의 실제 및 레터 제18권 제6호, 2012.06 *
김종익, "접두사 원소 선별을 이용한 효율적인 편집거리 기반 유사 문자열 검색기법, 정보과학회 논문지 : 컴퓨팅의 실제 및 레터 제18권 제9호, 2012.09 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180065156A (ko) 2016-12-07 2018-06-18 전북대학교산학협력단 가변길이 그램의 역리스트 동적 생성을 이용한 유사 문자열 검색 방법 및 장치
KR20220084901A (ko) * 2020-12-14 2022-06-21 서울대학교산학협력단 동의어 규칙을 이용한 문자열 매칭 방법 및 이를 구현하는 장치 및 프로그램
KR102496551B1 (ko) 2020-12-14 2023-02-06 서울대학교산학협력단 동의어 규칙을 이용한 문자열 매칭 방법 및 이를 구현하는 장치 및 프로그램

Similar Documents

Publication Publication Date Title
CN102768681B (zh) 一种用于搜索输入的推荐系统及方法
CN108460014A (zh) 企业实体的识别方法、装置、计算机设备及存储介质
KR101126406B1 (ko) 유사어 결정 방법 및 시스템
CN107861948B (zh) 一种标签提取方法、装置、设备和介质
CN104199954B (zh) 一种用于搜索输入的推荐系统及方法
CN107402960B (zh) 一种基于语义语气加权的倒排索引优化算法
CN112784009A (zh) 一种主题词挖掘方法、装置、电子设备及存储介质
JP2014146301A (ja) 検索装置、検索方法及びプログラム
US10387543B2 (en) Phoneme-to-grapheme mapping systems and methods
CN111602129B (zh) 针对注释和墨迹的智能搜索
CN114297143A (zh) 一种搜索文件的方法、显示文件的方法、装置及移动终端
CN114297449A (zh) 内容查找方法、装置、电子设备及计算机可读介质及产品
CN118114660A (zh) 文本检测方法、系统及计算机可读存储介质
CN104268176A (zh) 一种基于搜索关键词的推荐方法及系统
JP5980520B2 (ja) 効率的にクエリを処理する方法及び装置
US12020175B2 (en) Building training data and similarity relations for semantic space
KR101452638B1 (ko) 유사 문자열 검색 방법 및 장치
KR102015454B1 (ko) 문서 자동 편집 방법
CN104021202A (zh) 一种知识共享平台的词条处理装置和方法
US20200410007A1 (en) Search apparatus, search system, and non-transitory computer readable medium
KR101615164B1 (ko) 엔-그램 기반의 질의 처리 장치 및 그 방법
CN113553410B (zh) 长文档处理方法、处理装置、电子设备和存储介质
CN112989011B (zh) 数据查询方法、数据查询装置和电子设备
US20170270127A1 (en) Category-based full-text searching
CN114817450A (zh) 关键词识别方法、装置、设备及介质

Legal Events

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

Payment date: 20170925

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 5