KR102482391B1 - 전자 장치에서 수신된 입력 문자열에 대한 대체물들로서 후보 단어들을 제시하는 방법 - Google Patents

전자 장치에서 수신된 입력 문자열에 대한 대체물들로서 후보 단어들을 제시하는 방법 Download PDF

Info

Publication number
KR102482391B1
KR102482391B1 KR1020177021489A KR20177021489A KR102482391B1 KR 102482391 B1 KR102482391 B1 KR 102482391B1 KR 1020177021489 A KR1020177021489 A KR 1020177021489A KR 20177021489 A KR20177021489 A KR 20177021489A KR 102482391 B1 KR102482391 B1 KR 102482391B1
Authority
KR
South Korea
Prior art keywords
words
word
list
edit distance
processor
Prior art date
Application number
KR1020177021489A
Other languages
English (en)
Other versions
KR20170122727A (ko
Inventor
모한 가네샐린검
Original Assignee
와트3워즈 리미티드
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 와트3워즈 리미티드 filed Critical 와트3워즈 리미티드
Publication of KR20170122727A publication Critical patent/KR20170122727A/ko
Application granted granted Critical
Publication of KR102482391B1 publication Critical patent/KR102482391B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/232Orthographic correction, e.g. spell checking or vowelisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)

Abstract

전자 장치에서 수신된 입력 문자열에 기초하여 단어들 리스트로부터 하나 이상의 후보 단어를 제안하는 컴퓨터에서 구현되는 방법이 제공된다. 바람직하게, 단어들 리스트는 단어들의 순서화된 리스트를 포함한다. 이 방법은 입력 문자열들의 초기 서브 문자열들과 단어들 리스트의 일부 또는 모든 단어들의 셋트 내의 각 단어의 초기 서브 문자열들 사이의 편집 거리 값들을 수신하기 위해 메모리에 배열을 제공하는 제1단계를 포함한다. 방법은 상술한 편집 거리 값들을 획득하기 위해 선택된 단어를 수신된 입력 문자열과 비교하는 편집 거리 알고리즘을 적용하는 단계를 포함한다. 선택된 단어는 문자들이 없는 비어 있는 문자열을 포함할 수 있다. 방법은 단어들중 셋트의 하나 이상의 단어들에 대해, 이전에 고려된 단어의 접두사와 중첩되는 문자들 개수 K를 결정하고, 그리고 이전에 고려된 단어의 K개의 접두사 문자들에 대한 편집 거리 값들의 일부 또는 모두를 이용하여 고려되고 있는 단어를 위해 메모리 배열에서 편집 거리 값들을 보유하는 단계를 포함한다. 편집 거리 값들로부터, 단어 리스트로부터 하나 이상의 후보 단어들을 수신된 입력 문자열에 대한 대체물로서 빠르고 효율적으로 식별하는 것이 가능하다.

Description

전자 장치에서 수신된 입력 문자열에 대한 대체물들로서 후보 단어들을 제시하는 방법
본 발명은 전자 장치에서 수신된 입력 문자열에 대한 가능한 대체물들로서 후보 단어들을 제시하는 컴퓨터에서 수행되는 방법에 관한 것이다.
사용자 입력을 수신하도록 하는 전자 장치를 사용할 때 사용자가 단어 또는 다른 입력 데이터를 잘못 입력하는 경우가 많이 있다. 일부 장치는 사용자가 입력하는 텍스트에 대해 수정을 정정하거나 제안하기 위해 예측 텍스트 시스템을 사용하지만 예측 텍스트 시스템에는 많은 한계가 있다. 다른 경우들에서, 사용자가 텍스트 이외 또는 추가적으로 다른 것을 입력할 수 있고, 예측 텍스트 시스템이 완전히 관련되지 않을 수도 있다. 그러므로 사용자가 입력한 것의 대체 또는 정정을 위한 가능한 후보를 결정하는 능력을 사용자가 상호 작용하는 시스템을 제공하는 데 상당한 범위가 잔존한다.
2014 년 4 월 14 일 출원된 본 출원인의 국제 특허 출원 번호 PCT/GB2014/051152(출원인의 선행 개시 시스템)는 위치 식별자를 생성하는 방법을 개시한다. 이 방법은 위치의 지리적 좌표를 획득하고 지리적 좌표를 고유한 단어들 그룹으로 변환하는 것을 포함한다. 복수의 단어는 기억할 수 있는 위치 식별자로서 제공된다. 이와 반대로 관련된 고유한 단어들 그룹에서 위치의 지리적 좌표를 식별 할 수 있다.
그러나 사용자가 단어 기반 위치 식별자를 잘못 입력하거나 오인할 수 있는 경우, 특히 수신 후 언젠가 입력하는 경우, 문제가 발생할 수 있는데, 이는 지리적 위치의 부정확한 해답을 수신할 수 있거나 또는 해결할 수 없는 단어 기반 위치 식별자 즉, 수용 가능한 입력으로서 식별할 수 없는 단어 기반 위치 식별자의 결과로서 전혀 위치 출력을 수신하지 못한다. 해결된 지리적 위치가 어느 나라 또는, 해당되는 경우, 어느 도시에 있는지를 강조함으로써 사용자가 정확한 또는 예상된 결과인지 여부를 판단 할 수 있도록 하여 사용자에게 오류가 발생했던 것을 명확하게 하여 이 문제가 사용자 인터페이스 내에서 어느 정도 완화될 수 있다.
오류를 식별하고 한 위치에 대해 올바른 세 단어 순서에 대한 가능한 후보들을 제안하는 데에는 상당한 기술적 어려움들이 있다. 이러한 어려움들에는 한정되지 않지만 다음이 포함된다.
(i) 요구되는 응답 시간은 사용자 효과적이기 위해서 짧아야 하지만, 출원인의 선행 공개 시스템에서는 사용자가 의미한 가능한 세 가지 단어 조합이 57조 가지가 될 수 있으며, 현대의 데스크탑 개인용 컴퓨터들 상에서도, 핸드 헬드 또는 모바일 전자 장치들에서 이들을 한 번에 하나씩 검사하는 절차는 현실적으로 불가능하다.
(ii) 하나의 대안을 고려할 때, 수신된 원래의 입력 문자열 또는 그러한 문자열의 부분에 대한 근접성을 측정 할 필요가 있다. 이 절차는 일부분, 또는 전부가, 수용 가능한 입력 중 어느 것이 실제 입력에 가깝거나 가장 가까운지, 그리고 실제 입력에 대한 근접성의 측면에서 순위 또는 점수를 매기는 것을 결정하는데 있어, 많은 수의 허용 가능한 입력들을 포함하는 사전에 대한 실제 입력의 유사성을 비교하는 것을 포함한다.
(iii) 방법은 스마트 폰들 또는 태블릿 컴퓨터들 등과 같은 모바일 또는 핸드 헬드 전자 장치 상에서 동작하도록 적응되어야 하되, 메모리는 종종 제한적이며, 따라서 상기 방법은 가능한 한 적은 메모리를 이용할 필요가 있다.
본 발명의 목적은 입력된 문자열에 대한 잠재적 대체물로서 후보 단어들을 제안하기 위한 시스템과 관련된 하나 이상의 문제점들을 어느 정도 완화 또는 방지하는 것이다.
위의 목적은 주요 청구항들의 특징들의 조합으로 충족되는데, 서브 청구항들은 본 발명의 또 다른 유리한 실시예를 개시한다.
본 발명의 또 다른 목적은 출원인의 이전 공개된 시스템과 관련된 하나 이상의 문제점을 어느 정도 완화 또는 방지하는 것이다.
당업자는 본 발명의 다른 목적들이 다음의 설명으로부터 유도될 것이다. 따라서, 전술한 목적의 문구들은 모든 것을 망라하는 것이 아니며, 본 발명의 많은 목적 중 일부를 설명하기 위한 것일 뿐이다.
첫번째 주요 양태로서, 본 발명은 a) 입력 문자열들의 초기 서브 문자열들과 단어들 리스트의 일부 또는 모든 단어들의 셋트 내의 각 단어의 초기 서브 문자열들 사이의 편집 거리 값들을 수신하기 위해 메모리에 배열을 제공하는 단계; b) 상술한 편집 거리 값들을 획득하기 위해 선택된 단어를 수신된 입력 문자열과 비교하는 편집 거리 알고리즘을 적용하는 단계; 및 c) 단어들중 셋트의 하나 이상의 단어들에 대해, 이전에 고려된 단어의 접두사와 중첩되는 문자들 개수 K를 결정하고, 그리고 이전에 고려된 단어의 K개의 접두사 문자들에 대한 편집 거리 값들의 일부 또는 모두를 이용하여 고려되고 있는 단어를 위해 메모리 배열에서 편집 거리 값들을 보유하는 단계를 포함하는 전자 장치에서 수신된 입력 문자열 상에 기초한 단어들 리스트로부터 하나 이상의 후보 단어들을 제안하는 컴퓨터에서 구현되는 방법을 제공한다. 바람직하기로, 단계 b)는 비어 있는 단어 또는 문자들 " ", 즉, 문자들을 포함하지 않는 단어 또는 문자열에 적용된다. 배열은 전자 장치의 전형적인 캐시 메모리 내에 적합하도록 충분히 작기 때문에 캐시 메모리에 제공될 수 있다. 바람직하게, 단독 어레이만이 편집 거리 값들을 수신하기 위해 메모리에 제공된다. 단어에 대한 편집 거리 값들은 편집 거리 테이블의 형태로 제공될 수 있다. 고려되는 단어에 대해 메모리 배열에서 편집 거리 값들을 보유하는 단계는, 고려되고 있는 단어의 편집 거리 테이블에서 사전에 고려된 단어에 대해 편집 거리 테이블의 제1의 K+1의 행들 또는 열들로부터 이미 존재하는 편집 거리 값들을 보유하는 단계들을 포함할 수 있다. 제1의 K+1 행들 또는 열들의 편집 거리 값들은 이전에 고려되고 있는 테이블로부터 이제 고려되고 있는 단어에 대한 테이블까지 그들이 변경되지 않고 잔존하는 한 다시 계산할 필요가 없다. 이는 고려되고 있는 단어에 대한 테이블이 이전에 고려되고 있는 단어에 대한 테이블을 이용한 배열에 준비되기 때문이다. 상기 방법에서, 단계 b)는 단어들이 순서화 된 리스트에서 이격되어 있는 단어들 셋트 내의 다수의 단어들에 적용될 수 있다. 상기 방법에서, 단계 b)는 바람직하게 비어 있는 단어에 적용될 수 있다. 상기 방법에서, 단계 c)는 바람직하게 단어들 셋트 내의 각 단어에 적용된다. 그러나, 비록 특정 순서로 단어를 고려할 때 이점이 있지만, 상기 방법은 임의의 순서로 단어들의 셋트에서 단어들에 적용될 수 있음을 이해해야 한다. 일 실시예에서, 단어들은 역순으로 고려될 수 있지만, 이것이 본 방법의 구현에 필수적인 것은 아니다.
두번째 주요 양태로서, 본 발명은 기계 판독 가능한 명령들을 정하는 메모리; 본 발명의 첫번째 주요 양태에 따른 방법의 단계들을 구현하기 위해 상기 기계 판독 가능 명령어들을 실행하도록 구성된 프로세서를 포함하는 전자 장치에서 수신된 입력 문자열 상에 기초하여 단어들의 리스트로부터 하나 이상의 후보 단어들을 제안하기 위한 전자 장치를 제공한다. 전자 장치는 바람직하기로 모바일 전자 장치이나, 데스크탑 컴퓨터와 같은 개인용 컴퓨터(PC)를 포함할 수 있다.
세번째 주요 양태로서, 본 발명은 기계 판독 가능 명령어들을 저장하는 메모리 및 기계 판독 가능 명령어들을 실행하도록 구성된 프로세서를 갖는 서버; 기계 판독 가능 명령어들을 저장하는 메모리 및 기계 판독 가능 명령어들을 실행하도록 구성된 프로세서를 갖는 전자 장치; 서버 및 전자 장치는 네트워크를 통해 서로 통신하도록 구성되되; 전자 장치에서 수신된 문자열에 기초하여 서버에 전자 장치에 의해 전송된 요청에 응답하여, 서버가 본 발명의 첫번째 주요 양태에 따른 방법의 단계들을 구현하는 전자 장치에서 수신된 입력 문자열 상에 기초하여 단어들의 리스트로부터 하나 이상의 후보 단어들을 제안하기 위한 시스템을 제공한다.
네번째 주요 양태로서, 본 발명의 첫번째 주요 양태에 따른 방법의 단계들을 구현하기 위한 전자 장치의 프로세서에 의해 실행 가능한 기계 판독 가능 명령어들을 저장하는 컴퓨터 판독 가능 매체를 제공한다.
다섯번째 주요 양태로서, 본 발명은 본 발명의 제1주요 양태에 따른 방법의 단계들을 구현하기 위한 서버의 프로세서에 의해 실행 가능한 기계 판독 가능한 명령어들을 저장하는 컴퓨터 판독 가능 매체를 제공한다.
본 발명의 요약은 본 발명을 정의하는데 필수적인 모든 특징을 반드시 개시하지는 않는다; 본 발명은 개시된 특징들의 하위 조합에 상주할 수 있다.
본 발명의 전술한 및 추가적인 특징들은 단지 첨부된 도면들과 관련하여 예로서 제공되는 바람직한 실시예들에 대한 다음의 설명으로부터 명백해질 것이다.
도 1은 편집 거리 테이블의 예를 도시한 것이다.
도 2는 본 발명에 따른 시스템의 예를 나타낸 도면이다.
도 3은 도 2의 시스템에서 사용되는 사용자 장치의 예를 나타낸 도면이다.
도 4a 내지 도 4c는 본 발명의 방법을 예시하는 일련의 편집 거리 테이블을 포함한다.
다음의 설명은 단지 예시로서, 그리고 본 발명을 수행하는데 필요한 특징들의 조합에 제한없는 바람직한 실시 예에 대한 것이다.
본 명세서에서 "일 실시예" 또는 "실시예"는 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 명세서의 다양한 곳에서 "일 실시예에서"라는 문구가 반드시 동일한 실시예를 언급하는 것은 아니며, 다른 실시예와 상호 배타적인 별개의 또는 대안적인 실시예도 아니다. 또한, 일부 실시예들에 의해 표현 될 수 있고 다른 것에 의해 나타내지 않는 다양한 특징들이 설명된다. 유사하게, 몇몇 실시예들에 대한 요구 사항일 수 있지만 다른 실시예들에 대한 요구 사항은 아닌 다양한 요구 사항이 설명된다.
도면에 도시된 구성 요소는 다양한 형태의 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있음을 이해해야 한다. 바람직하게는, 이들 구성 요소는 프로세서, 메모리 및 입/출력 인터페이스들을 포함할 수 있는 하나 이상의 적절하게 프로그램된 범용 장치들 상의 하드웨어 및 소프트웨어의 조합으로 구현되는 것이 바람직하다.
본 설명은 본 발명의 원리를 설명한다. 따라서, 당업자는 본 명세서에 명시적으로 기술되거나 도시되지는 않았지만, 본 발명의 원리를 구현하고 그것의 정신 및 범위 내에 포함되는 다양한 구성을 고안할 수 있음을 이해할 것이다.
또한, 본 발명의 원리들, 양태들 및 실시예들 뿐만 아니라 그 특정예들을 기재한 모든 설명들은 그 구조적 및 기능적 균등물 모두를 포함하도록 의도된다. 또한, 이러한 균등물은 현재 알려진 균등물뿐만 아니라 미래에 개발되는 균등물, 즉 구조에 관계없이 동일한 기능을 수행하는 임의의 개발된 구성 요소를 모두 포함하는 것으로 의도된다.
청구 범위에서, 특정 기능을 수행하기 위한 수단으로서 표현된 임의의 요소는 예를 들어 a) 그 기능을 수행하는 회로 요소들의 조합 또는 b) 그 기능을 수행하기 위한 그 소프트웨어를 실행하기 위한 적절한 회로와 조합된 펌웨어, 마이크로 코드 등을 포함하는 임의의 형태의 소프트웨어를 포함하는 그 기능을 수행하는 임의의 방법을 포함하도록 의도된다. 이러한 청구항들에 의해 정의된 본 발명은 다양한 열거된 수단들에 의해 제공되는 기능들이 결합되어 청구 범위에서 요구되는 방식으로 결합된다는 사실에 있다. 따라서 이러한 기능을 제공 할 수 있는 모든 수단은 여기에 제시된 것과 동일하다고 간주된다.
수신된 입력 문자열, 예를 들면, 목표 단어에 대한 단어의 근접성에 대한 표준 측정이 '편집 거리들(edit distances)' 계열 중 임의의 부재에 의해 제공된다. 잘 알려진 예로서 둘 사이의 리벤슈타인(Levenshtein) 거리가 있는데, 이는 전자를 후자로 변환하는 데 필요한 문자 삽입들, 삭제들 및 대체들(집합적으로, 작업함)의 최소 개수를 카운트한다. 변형예로서 인접한 두 문자들의 전치 연산을 포함한다. 또 다른 변형예로서 리벤슈타인(Levenshtein) 거리에 가중치를 도입함을 포함한다; 삽입들, 삭제들, 대체들 및 (해당되는 경우) 전치에 각각 '가중치(weight)' 또는 '값(cost)'이 할당되고, 가중치가 적용된 편집 거리는 적절한 변환을 수행하는 일련의 연산의 최소 총 값으로 정의된다. 이 변형예의 서브 변형예는 대체되는 문자와 대체한 문자에 따라 대체 값을 허용한다. 예를 들어, 표준 키보드로 입력하는 사용자가 생성한 오류를 수정하려고 시도하면 키보드 근처에 있는 문자가 포함된 대체 문자에 더 저렴한 값을 할당 할 수 있다. 위의 모든 변형은 사용자 입력의 예측을 포함하여, 많은 애플리케이션에서 더 나은 유사성 측정인 편집 거리를 산출한다.
두 문자열들 사이의 편집 거리를 계산하기 위한 한 가지 일반적인 방법은 바그너-피셔(Wagner-Fischer) 알고리즘이다. 이 알고리즘은 위에서 언급한 임의의 변형을 처리하도록 적응될 수 있다. 본질적으로 바그너-피셔(Wagner-Fischer) 알고리즘은 첫번째 문자열의 모든 초기 문자열에서 두번째 문자열의 모든 초기 문자열까지의 편집 거리를 포함하는 테이블 구성으로 구성된다. 초기 문자열은 원래 문자열의 시작 부분과 완전히 일치하는 것이다-따라서 'here'가 'there'의 문자열이지만, 초기 문자열은 아니다. 대조적으로 'the'는 'there' 자체와 마찬가지로 'there'의 초기 문자열이다. 빈 문자열 " "은 모든 문자열들의 초기 문자열을 포함한다.
도 1을 참조하면, 수신된 입력 문자열과 목표 또는 의도된 입력 문자열을 포함하는 것으로 간주될 수 있는 두개의 문자열들에 대한 예시적인 편집 거리 테이블이 도시되어있다. 본 명세서에서는 잘못 입력된 입력 문자열을 참조하고 있지만, 그러한 잘못 입력된 입력 문자열이 철자, 구문 또는 문법 오류들을 포함한다고 가정하면 안 된다. 그들은 그들의 얼굴에게 정확한 입력인 것처럼 보일 수 있지만, 사용 중에, 의도된 애플리케이션이나 그들이 입력되는 과정에 대한 부정확하거나 잘못된 입력을 포함할 수 있다.
도 1에서, 이 테이블은 원본 문자열 "an act"에서 목표 문자열 "a cat"까지 가중치가 적용되지 않은 리벤슈타인(Levenshtein) 거리(전치들과 함께)의 계산을 보여준다. 도 1의 테이블은 http://scarcitycomputing.blogspot.co.uk/2013/04/damerau-levenshtein-edit-distance.html에서 액세스 할 수 있는 "James M. Jensen II의 결핍 시대의 컴퓨팅"이라는 간행물에 나와 있다. 20으로 표시된 셀은 문자열들에서 공백을 고려하여 "an"에서 "a"까지의 거리를 제공하며, 하나의 문자, 즉, 'n'을 삭제하는 것에 의해 변환이 수행될 수 있으므로 1과 같다. 30으로 표시된 셀은 "ac"에서 "a ca"까지의 거리를 제공하며, 'n'을 삭제하고 'ac'를 'ca'로 바꿔 변환을 수행할 수 있으므로 2와 같다. 40으로 표시된 셀은 "an act"에서 "a cat"까지의 거리를 제공하는데, 즉, 본 발명에서 필요한 실제 편집 거리로서, 'n'을 삭제하고 'ac'를 'ca'로 바꿔 변환이 수행될 수 있으므로 2와 같다. 따라서, 우측 하단 셀 40의 값이 편집 거리 측정치 또는 목표 문자열에 대한 입력 문자열의 근접성의 값을 포함한다.
이러한 편집 거리 테이블에서 길이가 k 인 원래 문자열의 초기 문자열을 빈 문자열 " "로 바꾸는 유일한 방법(길이 0의 목표 문자열의 초기 문자열)은 k개의 삭제를 수행하는 것이기 때문에 맨 위 행은 항상 0, 1, 2, ... 값이 순서대로 포함된다. 삭제가 값 d인, 가중치가 적용된 경우, 맨 위 행은 0, d, 2d, 3d, ...가 순서대로 포함될 것이다. 유사하게 가장 왼쪽 열에는, " " 를 길이 k인 문자열로 바꾸는 유일한 방법이 k의 삽입을 수행하는 것이기 때문에, 항상 0, 1, 2, ... 값이 순서대로 포함된다. 삽입이 값 i 인 가중치가 적용된 경우, 가장 왼쪽 열에는 0, i, 2i, 3i, ...가 순서대로 포함된다.
일반적인 가중치가 적용된 경우, d (r, c)가 길이 r의 원래 문자열의 초기 문자열로부터 길이 c의 목표 문자열의 초기 문자열까지의 편집 거리로 표시되면 다음과 같다:
d(0, c) = ci, 여기서 i는 삽입 값이다.
d(r, 0) = rd, 여기서 d는 삭제 값이다
전치가 없는 경우, 다른 모든 셀들은 다음 공식을 사용하여 계산될 수 있다.
d(r, c) = min(
d + d(r-1, c), <--- 삭제
d(r, c-1) + i, <--- 삽입
d(r- 1,c -1) + s[r-1,c-1] <--- 대체
)
여기서 s [r-1, c-1]은 r 번째 원래 문자로 c 번째 목표 문자를 대체하는 값이다. 한 문자열로부터 그 자신까지의 편집 거리가 0임을 보증하기 위해 문자가 같으면 이 값은 '0'이어야 하는데, 이는 일반적으로 요구되는 특성임을 주목하라. 이러한 'min' 안에 있는 세개의 표현식들은 각각 편집 거리를 파생시키는 데 사용할 수 있는 연산 중 하나에 해당한다. 예를 들어, 첫번째 표현 d + d(r-1, c)는 다음을 수행하여 원래 문자열을 목표 문자열로 변환하는 방법을 나타낸다:
a) 마지막 문자를 삭제 한 다음
b) 길이 r-1의 원래 문자열의 초기 문자열인 결과 문자열을 목표 문자열(길이가 c)로 바꿈
따라서 테이블의 모든 셀들 값은 위 및/또는 왼쪽의 셀들 값을 기반으로 계산된다. 바그너-피셔(Wagner-Fischer) 알고리즘은 위에서 아래로, 왼쪽에서 오른쪽의 순서로 모든 셀들에 대한 값들의 계산으로 간단히 구성된다. 테이블의 오른쪽 맨 아래 항목은 필요한 실제 편집 거리 값을 제공한다.
그러나, 본 발명은 두개의 문자열 사이의 편집 거리를 간단하게 찾는 것에 관한 것이 아니라, 수신된 입력 문자열로부터 낮은 편집 거리를 갖는 고정된 사전에서 후보 단어를 찾는 문제에 관한 것이다.
이것을 계산하는 종래의 방법은 사전 내의 모든 단어에 대한 반복을 포함한다. 각 사전 단어에 대해, 수신된 입력 문자열과 사전 단어 간의 편집 거리는, 예를 들어 바그너-피셔(Wagner-Fischer) 알고리즘을 사용하여 계산된다. 수신된 입력 문자열로부터 가장 낮은 편집 거리를 갖는 사전 단어가 후보 단어들로서 선택된다.
이러한 종래 방법의 기본 가정은 수신된 입력 문자열과 비교하여 사전의 각 단어를 차례로 고려할 필요가 있지만, 30,000 내지 80,000 단어를 갖는 사전에서, 가능한 후보 단어로서 모든 단어를 고려하면, 각각의 틀린 철자를 위해 전체 사전을 뒤지는 것은 실용적이지 않다는 것이다.
종래 방법에 대한 대안 또는 개선은 '트라이(Trie)를 이용한 빠르고 쉬운 리벤슈타인(Levenshtein) 거리'를 포함한다. 이러한 향상된 접근 방식은 두 개 이상의 단어들로 구성된 공통 접두어들이 단일 노드에 의해 명시 적으로 표현되는 트라이(trie)라고 하는 데이터 구조를 구성한다. 그런 다음 구조를 반복적으로 탐색하여 두 단어들이 공통 접두사를 공유할 때 관련 테이블 행이 정확히 한 번 계산되도록 보장하는 트라이(trie) 구조를 사용한다. 그러나 이 접근법에는 상당한 기술적 어려움이 있다. 특히, 트라이(trie)는 엄청난 양의 메모리를 소비하므로 -- 32 비트 운영 체제에서 부과되는 2GB 내지 4GB 제한에 맞지 않을 수도 있다.
이 많은 메모리의 사용은 분명히 바람직하지 않으며, 실제로, 많은 핸드 헬드 또는 모바일 전자 장치들에서 가능하지 않다. 또한 즉시 명백하지 않을 수 있는 결점이 생긴다. 최신 컴퓨터들에서는 메모리로부터 값을 가져 오는 데 걸리는 시간이 프로세서가 원시 계산들을 수행하는 데 소요되는 시간을 크게 초과한다. 이 효과는 '캐시(cache)'라고 불리는 매우 빠르게 액세스할 수 있는 매우 적은 양의 메모리를 가짐으로써 완화된다. 상기 시스템은 경험적으로(heuristically) 데이터가 프로세서에 의해 요청되기 전에 메인 메모리로부터 캐시로 관련 데이터를 프리로드(preload)하려고 시도한다. 이것이 실패 할 경우 대대적으로 느려지게 된다. 사실, 이러한 그림은 프로세서가 일반적으로 가장 작은 메모리 용량을 갖는 가장 빠른 레벨들인 2 ~ 3 레벨의 '캐시'를 갖는 다소 단순화된 것이다. 가장 작은 캐시는 일반적으로 약 32kB 크기이며, 가장 큰 캐시는 PC 상에서 약 8MB이고 태블릿 컴퓨터 등에서 약 1MB이다.
캐시 미스를 확실하게 피할 수 있는 두 가지 상황이 있다. 첫번째는 고려해야 할 모든 데이터를 캐시에 저장하는 것이다; 이용되는 캐시가 작을수록 프로그램이 더 빠를 것이다. 두번째 상황은, 비록 많은 양의 데이터에 액세스하고 있지만, 해당 데이터를 순차적으로 액세스하는 것이다; 이러한 액세스 패턴은 너무 일반적이며 예측 가능하기 때문에 일반적으로 시스템은 이를 인식하고 프로세서가 요청하기 전에 캐시에 데이터를 미리 로드하는데 매우 능숙하다.
트라이(trie) 데이터 구조의 경우, 2 ~ 4GB 제한에 맞지 않을 수도 있기 때문에 전체 캐시에 적합하지 않음을 분명히 알 수 있다. 또한, 트라이(trie) 구조는 많은 노드들로 구성되며, 메모리에서 일반적으로 서로 멀리 떨어져 배치된다. 시스템이 트라이(trie)를 가로 지르면, 순차적인 것과는 거리가 멀게 메모리 액세스 패턴에서 한 노드에서 다른 노드로 일반적으로 건너 뛴다. 그 결과 값 비싼, 즉 느린 캐시 미스가 상당수 발생한다.
위에 요약된 개선된 방법의 두번째 주요 단점은 트라이의 새 노드에 도달 할 때마다 테이블의 새로운 행을 '할당(allocates)한다'는 것이다(메모리에). 메모리 할당, 및 이와 관련되어야 하는 함축적 또는 명시적(implicit or explicit) 할당 해제는 고려중인 알고리즘의 문맥에서 느린 동작이다. 또한 메모리 할당은 일반적으로 할당된 객체가 메모리에 상주하는 위치를 보장하지 않으므로 트라이 기반 접근 방식에서는 테이블 행이 메모리에서 크게 분리될 수 있다. 이는 캐시 성능을 더욱 저하 시키는데, 즉 캐시 미스의 비율이 높아질 것이다.
세번째 단점은 트라이(trie) 데이터 구조가 구축하는 데 많은 시간을 필요로 하는데, 이는 응용 애플리케이션의 시작을 느려지게 할 것이고, 이는 많은 시스템 특히 이동 중에 사용되는 핸드 헬드 시스템이나 장치들에게 바람직하지 않다.
네번째 단점은 트라이 기반 접근법이 꼬리 - 호출 최적화(tail-call optimization)에 부합하지 않는 형태의 반복을 사용한다는 것이다. 이는 상당한 시간과 공간의 오버 헤드들(overheads)을 발생시키는 것으로 알려져 있다.
낮은 메모리 사용량을 갖는 개선된 종래 방법의 다른 수정들 중에서도, 메모리 사용량은 여전히 높으며, 대부분의 경우들에 있어서, 구축 된 데이터 구조는 전체적으로 캐시에 맞지 않다. 데이터 구조의 일부가 별도로 할당되고 따라서 메모리에서 널리 분산되므로, 메모리 액세스는 순차적이지 않다. 따라서 접근법은 많은 수의 캐시 미스를 산출 할 것이다. 테이블 행을 별도로 할당하여 발생하는 문제도 이 접근법에서 변경되지 않는다. 그리고 느린 시작과 또한 반복에 관련된 문제도 지속된다.
본 발명은 신속하고 계산적으로 효율적인 방식으로 모바일 또는 핸드 헬드 전자 장치 또는 데스크탑 PC와 같은 전자 장치 전체에 상기 방법이 구현될 수 있도록 하는 상기 문제점에 대한 새로운 해결책을 제안하였다.
도면들, 특히, 도 2 및 도 3을 다시 참조하면, 본 발명의 시스템 (1)은 다수의 사용자 장치(2) 및 중앙 서버(3)를 포함한다. 사용자 장치 (2)는 스마트 폰들, 태블릿 컴퓨터들 등(2a)과 같은 핸드 헬드 및/또는 모바일 전자 장치들 및/또는 개인용 컴퓨터들(PCs)(2b)을 포함한다. 각 사용자 장치들(2)은, 본 발명의 방법이 전자 장치(2a) 또는 PC(2b)에서 전체적으로 수행되는 경우에 필수적인 것은 아니지만, 인터넷(4)과 같은 네트워크를 통해 중앙 서버(3)와 통신 할 수 있다. 이러한 경우에, 전자 장치(2)는 네트워크에 접속될 필요가 없다. 명료성을 위해, 도 1에는 세개의 전자 장치(2a) 및 단일 PC(2b)만이 도시되어 있지만, 비록 이것이 단독 전자 처리 장치(2) 상에서 구현될 수 있는 발명의 방법으로서 필수적인 것은 아니지만, 실제로 시스템(1)은 다수의 전자 장치(2)를 포함할 수 있음을 이해할 수 있을 것이다.
도 3은 시스템(1)의 전자 장치(2a)의 예를 보다 상세하게 도시한다. 도 3에 도시 된 바와 같이, 전자 장치 (2a)는 데이터 프로세서(10), 비주얼 디스플레이(11), 사용자 명령이 장치(2a)에 입력되도록 하고 정보가 사용자에게 표현 및/또는 표시되도록 하는 사용자 인터페이스(12), 스피커(13) 및 마이크로폰(14)을 포함한다. 전자 장치(2a)의 다양한 구성 요소들은 메모리에 저장된 기계 코드를 실행하는 프로세서(10)의 제어 하에 동작한다. 메모리는 또한 캐시 메모리도 포함한다. 사용자 인터페이스(12)는 터치 스크린 디스플레이로서 비주얼 디스플레이와 통합될 수 있다. 다른 예에서, 사용자 인터페이스(12)는 비주얼 디스플레이와 별개의 전용 키패드 일 수 있다. 이들 구성 요소들을 포함하는 전자 장치들은 당업자에게 잘 알려져 있으므로, 여기서는 상세히 설명할 필요는 없다. 사용자 PC들(2b)은 유사한 기능들을 가질 것이라는 것을 이해할 것이다.
또한, 전자 장치(2a)는 위치 결정 수단(15), 맵핑 또는 네비게이션 모듈(16) 및 위치 식별 모듈(17)을 포함할 수 있다. 네비게이션 모듈(16) 및 위치 식별 모듈(17)은 위치 결정 수단(15)으로부터 위치 정보를 수신하도록 배열된다. 도시된 예에서, 위치 결정 수단(15)은 소위 GPS와 같은 전역 위치 결정 시스템(global positioning system)이다. 다른 예들에서, 상이한 위성 기반 네비게이션 시스템이 사용될 수 있다. 네비게이션 모듈(16) 및 위치 확인 모듈(17)은 전용 하드웨어를 포함할 수 있거나 전자 장치(2a)의 프로세서(10) 상에서 실행되는 소프트웨어 프로그램 또는 애플리케이션을 포함 할 수 있다. 일부 예들에서, 사용자 PC(2b)는 위치 결정 수단(15)을 포함하지 않을 수 있다. 일부 예들에서, 위치 결정 수단을 포함하지 않는 사용자 PC(2b)는 여전히 전자 장치(2a)의 위치 결정 수단과 같은 별도의 위치 결정 수단으로부터 위치 정보에 액세스할 수 있다.
위치 확인 모듈(17)은 위치 결정 수단 (15)에 의해 제공된 위치 정보를 사용하여 위치 기반 서비스를 사용자에게 제공한다.
일반적으로 말하면, 전자 장치(2a 또는 2b)는 일 실시예에서, 장치 자체의 위치에 대한 지리적 좌표 또는 맵핑 또는 네비게이션 모듈(16) 상의 사용자에 의해 선택된 위치를 결정하도록 구성된다. 이들 수치 좌표는 다음으로 출원인의 국제 특허 출원 (PCT) 번호 PCT/GB2014/051152 또는 임의의 다른 적합한 시스템과 같은 방식으로 전자 장치(2a) 또는 PC(2b) 자체 또는 서버(3)의 도움으로 단어 기반 고유 위치 식별자로 분석될 수 있다.
그러나, 여기에 개시된 방법이 단어 기반 지리적 위치 식별자로 제한되지 않지만, 허용 가능한 단어들의 사전 또는 데이터 저장소를 갖는 장치 또는 시스템 중에서 임의의 입력 문자열에 대해 사용될 수 있다. 본 발명의 문맥에서, '단어'라는 용어가 자연 언어 단어 만을 포함하는 것으로 간주되어서는 안 되지만, 예를 들면, 사전 또는 장치 또는 시스템의 데이터 저장소에서 허용 가능한 또는 미리 정의된 문자열 항목인 '단어'를 포함하거나 매칭하는 문자, 알파벳, 숫자 또는 기타 임의의 입력 문자열을 포함 할 수 있거나, 또는 사전 또는 데이터 저장소에서 임의의 이러한 단어 항목을 포함하거나 매칭하도록 의도된다.
동일한 또는 다른 실시예에서, 전자 장치(2a 또는 2b)는 그 자체로 또는 서버(3)와 통신하여 수신된 문자 입력 문자열, 바람직하게는 다중 단어 문자열을 지리적 위치 좌표 세트와 같은 결합된 양태들로 분석하도록 구성된다. 일부 비-위치 기반 실시예들에서, 수신된 문자 입력 문자열은 검색 질의 또는 예를 들면 바코드 번호 등과 같은 제품 식별자와 같은 결합된 양태로 분석된다.
보다 구체적으로, 다음의 설명으로부터 더욱 명백해지는 바와 같이, 본 발명의 방법은 전자 장치(2)에서 수신된 입력 문자열 상에 기초한 단어들 리스트로부터 하나 이상의 후보 단어들을 제안하는 컴퓨터에서 구현되는 방법을 포함한다. 방법은 다음을 포함한다: a) 입력 문자열들의 초기 서브 문자열들과 단어들 리스트의 일부 또는 모든 단어들의 셋트 내의 각 단어의 초기 서브 문자열들 사이의 편집 거리 값들을 수신하기 위해 메모리에 배열을 제공하는 단계; b) 상술한 편집 거리 값들을 획득하기 위해 선택된 단어(이는 단어들의 셋트이거나 아닐 수 있고, 그리고 비어 있는 단어(0개의 문자들)이거나 아닐 수 있음)를 수신된 입력 문자열과 비교하는 편집 거리 알고리즘을 적용하는 단계; 및 c) 단어들중 셋트의 하나 이상의 단어들에 대해, 이전에 고려된 단어의 접두사와 중첩되는 문자들 개수 K를 결정하고, 그리고 이전에 고려된 단어의 K개의 접두사 문자들에 대한 편집 거리 값들의 일부 또는 모두를 이용하여 고려되고 있는 단어를 위해 메모리 배열에서 편집 거리 값들을 보유하는 단계. 단계 b)는 비어 있는 단어 또는 문자들을 포함하지 않는 문자열 " "에 적용될 수 있어 이는 편집 거리 값들의 계산을 초기화하도록 한다. 배열은 전자 장치의 전형적인 캐시 메모리 내에 적합하도록 충분히 작기 때문에 캐시 메모리에 제공될 수 있다. 바람직하게, 단독 어레이만이 편집 거리 값들을 수신하기 위해 메모리에 제공된다. 단어에 대한 편집 거리 값들은 편집 거리 테이블의 형태로 제공될 수 있다. 고려되는 단어에 대해 메모리 배열에서 편집 거리 값들을 보유하는 단계는, 고려되고 있는 단어의 편집 거리 테이블에서 사전에 고려된 단어에 대해 편집 거리 테이블의 제1의 K+1의 행들 또는 열들로부터 이미 존재하는 편집 거리 값들을 보유하는 단계들을 포함할 수 있다. 제1의 K+1 행들 또는 열들의 편집 거리 값들은 그들이 변경되지 않고 잔존하는 한 다시 계산할 필요가 없다. 바람직하게, 단어들의 리스트는 리스트 내의 각 단어와 그것의 선행 단어 사이의 오버랩의 양을 증가시키거나 최적화하도록 배열된 단어들의 순서화된 리스트를 포함한다. 상기 방법에서, 단계 b)는 단어들이 순서화 된 리스트에서 이격되어 있는 단어들 셋트 내의 다수의 단어들에 적용될 수 있다. 상기 방법에서, 단계 b)는 단어들의 순서화 된 리스트에서 가장 일찍 발생하는 선택된 단어들 세트의 첫번째 단어에 적용될 수 있다. 이 방법에서, 단계 c)는 바람직하게 단어들 셋트 내의 각 단어에 순서대로 적용된다. 비록 장점을 제공하기는 하지만 특정 순서로 단어를 고려하는 방법의 구현은 필수적이지 않다. 단어는 임의의 순서를 포함하여 임의의 순서로 고려 될 수 있다.
다음의 설명에서, '단어' 또는 '단어 리스트'에 대한 참조가 이루어질 것이지만, 이 문맥에서 '단어'라는 용어는 전자 장치에 대한 임의의 수신된 입력 문자열을 포함할 수 있고, '단어 리스트' 는 단어들의 임의의 리스트를 포함할 수 있다. 먼저, 바람직하기로 오프-라인 단계에서, 일단 단어 리스트만이 알파벳 순서로 및/또는 번호 순서로 및/또는 일부 미리 결정된 순서 체계에 의해 정렬 또는 순서화된다. 순서화의 목적은 리스트의 각 단어와 다음 단어 사이의 오버랩되는 부분을 가능한 한 많이 향상 시키거나 증가시키는 것이다; 즉, 정렬 후 리스트의 각 단어는 긴 접두어를 바로 앞에 있는 단어로 공유하는 경향이 있다.
단어 리스트를 재순서화하는 것이 바람직하게 오프라인으로 행해지므로, 단지 한번만 행해질 필요가 있다; 본 발명의 방법을 구현하는 프로그램 중에서 임의의 예시화는 바람직하게는 정렬되지 않은 단어 리스트보다는 오히려 정렬된 단어 리스트로 분배된다. 단어 리스트가 일부 애플리케이션에 대해 아직 순서화되지 않은 경우, 원래의 정렬되지 않은 단어 리스트의 단어들 위치들이 관심을 가지거나 사용할 수 있다. 이 경우, 정렬되지 않은 리스트의 각 단어는 정렬이 수행되기 전에 그 위치를 표시하는 번호 또는 다른 식별자로 태그 될 수 있으며, 순서화된 번호들은 원래 위치의 표시들로 나열된다.
수신된 입력 문자열에 대한 단어 리스트 내의 단어의 일부 또는 전부의 셋트에 대한 편집 거리 테이블들의 형태로 바람직하게 제공되는 편집 거리 값들을 처리하기 위해, 단어들의 각 셋트에 대하여 편집 거리들을 계산하기 위해 요구되는 테이블들의 전부를 정렬하기 위한 메모리에 단독 배열이 제공된다. 본 발명의 예상치 못한 이점은 단일 배열이 캐시 메모리 내에 수용될 만큼 충분히 작다는 것이다.
단어들 셋트의 각 단어에 대해, 바그너-피셔(Wagner-Fischer) 알고리즘과 같은 편집 거리 알고리즘이 상대적 편집 테이블을 만들도록 적용된다. 이것은, 단어들의 셋트에서 첫번째 단어, 즉, 단어 리스트에서 첫번째 단어를 고려하지 않는다면, 처리되고 있는 단어 리스트로부터의 단어가 이전에 고려된 단어와 오버랩함에 의해 결정이 문자들 K의 최고 개수로 만들어지는 단계들을 바람직하게 포함한다. 예를 들면, 단어 'cheatng'을 선택하고, 그리고 단어 'cheater'를 고려했다면, K는 5일 것이다. 편집 거리 테이블들의 첫번째의 K + 1 행들이 고려 및 이전에 고려된 단어 하에서의 단어에 대해 동일한 편집 거리 알고리즘의 한 특징이다. 결과적으로, 'cheating'과 'cheater'라는 문자열은 편집 거리 테이블에서 동일한 처음의 6 행을 갖는다. 이전에 고려된 단어에 대한 편집 거리 테이블이 계산된 경우, 편집 거리 테이블의 첫번째의 K + 1 행들에는 현재 단어에 대한 편집 거리 테이블의 K + 1 행들에 대한 올바른 값이 이미 포함되어 있다. 결과적으로, 이 방법은 이전에 고려된 단어에 대한 첫번째의 K + 1 행들의 편집 거리 값을 유지함으로써 현재 단어에 대한 K + 1 행들의 계산을 건너 뛸 수 있다. 편집 거리 테이블의 배열은 위의 방법이 행들이 아닌 테이블의 열들에 적용될 수 있으며, 단지 행들로 배열되는 편집 거리 값을 지칭하는 관습일 뿐이라는 것을 이해할 것이다.
또한, 단어 리스트가 바람직하게 순서화, 즉, 알파벳 순서로 및/또는 번호 순서로 및/또는 임의의 다른 적절한 순서 체계에 의해 순서화되면, 이는 각 단어와 그 전신 사이에 큰 오버랩을 초래한다. 따라서 오버랩의 범위를 계산하는 것이 건너뛴 테이블 행들을 재-계산하는 것에 비교하여 매우 빠르고, 이러한 수정은 편집 거리 알고리즘을 적용할 경우 많은 시간을 절약할 수 있다.
본 발명의 방법은 고려되는 사전 내의 각 단어에 대해 동일한 단일 배열이 재사용되며 바람직하게 바그너-피셔(Wagner-Fischer) 프로세스에서 테이블들을 나타내기 위해 단독 미리-할당된 배열을 사용한다. 배열의 2 차원은 바람직하게 각각 a) 예상되거나 허용된 입력 문자열의 길이 및 b) 사전에서 가장 긴 단어의 길이를 각각 초과하도록 선택된다. 이러한 어레이는 대부분의 최신 컴퓨팅 시스템 및 장치에서 볼 수 있는 가장 작은 캐시보다 훨씬 작으므로 테이블 액세스로 인한 캐시 손실이 최소화된다. 정확한 구현 매개 변수에 따라, 배열의 크기는 1kB 이하가 될 수 있다. 사실, 배열이 가장 작은 캐시에 들어가기 때문에 액세스가 매우 빠르다. 또한, 상술한 바와 같이, 단일 배열을 매우 특정한 최적화와 함께 재사용하면 캐시 효과가 고려되지 않은 경우에도 네이티브 알고리즘보다 훨씬 빠른 알고리즘이 된다. 실제로, 할당 및 할당 해제의 직접적인 값 및 증가된 캐시 미스로 인한 간접적인 값 모두가 회피되는 결과로 절차 중에 메모리가 할당되거나 할당 해제되지 않는다.
단어 리스트는 바람직하게 자연적 포맷, 즉 단어들의 어레이로서 사용된다. 따라서 데이터 구조를 구축할 필요가 없으므로 속도가 느려지지 않는다. 또한, 단어 리스트는 엄격하게 순차적으로 액세스되는 것이 바람직하다; 즉, 첫번째 단어에 액세스 한 다음 두번째 단어에 액세스하는 식으로 진행된다. 단어 리스트 자체가 현명하게 할당된 경우 단어 리스트 액세스로 인한 최소 캐시 미스가 발생한다.
바그너-피셔(Wagner-Fischer) 프로세스의 테이블이 최소 공간을 사용하여 저장되고, 그리고 단어 리스트가 자연 포맷으로 액세스되기 때문에, 본 명세서에서 설명된 본 발명의 방법은 사실상 공간 오버 헤드를 갖지 않는다.
이 방법은 반복을 사용하지 않기 때문에 관련된 시간과 공간 오버헤드를 피할 수 있다.
출원인의 선출원에 개시된 바와 같은 특정 애플리케이션들에 본 발명의 방법을 적용 할 경우, 수신된 입력 문자열의 잠재적인 대체물로서 후보 단어들을 제안하기 위해 적용되는 상이한 방식들이 있을 수 있다. 하나의 그러한 방안은 수신된 입력 문자열의 소정의 편집 거리 임계치 내에서 모든 사전 단어를 찾거나 또는 편집 거리에 관하여 수신된 입력 문자열에 가장 가까운 단어들의 M 개의 번호를 찾는 것이다. 이들은 조기 종료 최적화 프로세스로 간주 될 수 있다.
후자의 경우, 우선 순위 큐와 같은 표준 데이터 구조는 각각의 단어에 대한 편집 거리들을 저장하는 것과는 대조적으로 그의 편집 거리들과 함께 M 개의 최상의 단어들만을 저장하는데 사용될 수 있고, 그리고 나서 종단에 M개의 최상의 단어들을 결정한다. 사전에 M이 알려져 있기 때문에, 우선 순위 큐를 위한 공간이 편집 거리 계산 프로세스 동안 할당을 회피하기 위해 미리 할당 될 수 있다. 바람직하게, 우선 순위 큐는 메인 루프를 단순화하기 위해 선택된 높은 편집 거리들을 갖는 '센티넬(sentinel)' 단어로 초기화된다. 이러한 센티널들은 항상 고려된 첫번째 M 단어들로 대체될 것이고, 그리고 최종 결과물에 나타나지 않을 것이다.
소정의 편집 거리 내에서 단어들을 찾는 경우, 편집 거리 테이블 계산은 편집 거리 테이블중 소정 행에서 모든 항목이 임계 값보다 크다고 결정되면 그 단어에 대해 종료되는 것이 바람직하고, 그리고 전치가 고려되면, 이전 행의 모든 항목에 전환 값을 더한 것이 임계값보다 크다. 그러나 이 상황에서는 결과가 후보 단어를 제안할 수 없지만, 나머지 계산이 진행될 수 있다.
M- 단어의 경우, M 개의 최상위 단어의 최대 편집 거리가 바람직하게는 연속적으로 추적되며, 그리고 우선 순위 큐 데이터 구조의 사용은 이를 상대적으로 용이하게 한다. 연속적으로 갱신된 값은 프로세싱을 최적화하기 위해 임계 값을 사용하는 경우와 마찬가지로 정확하게 컷오프하는데 사용되는 것이 바람직하다. 두 경우들 모두, 행들의 재-계산이 전술한 바와 같이 스킵될 때, 배열의 각 행에서 가장 작은 값이 재-계산되지 않도록 추적된다.
개별적으로 또는 조합하여 적용될 수 있는 조기 종료 최적화 프로세스들은 주요 편집 거리 계산 프로세스와 함께 시너지 효과를 창출하기 때문에 특히 효과적이다. 기본 편집 거리 프로세스는 단어의 접두사들의 계산을 건너 뛰는 것을 허용하는 반면 조기 종료 최적화는 충분한 문자들이 실행 가능한 후보가 아닌지 확인하도록 보여지자 마자 즉시 결론을 내릴 수 있도록 한다. 다른 말로, 이러한 최적화를 통해 단어들 끝의 문제들 처리를 건너뛰도록 한다. 주 편집 거리 프로세스와 조기 종료 프로세스(들)를 함께 사용하면 각 후속 단어의 중간에 있는 작은 세그먼트만 고려하여 계산이 효율적이며 빠른 프로세스를 얻을 수 있다.
예를 들어, 주 편집 거리 프로세스가 단어의 처음 40 %를 스킵할 수 있게 하고(이전의 편집 거리 테이블의 K + 1 행들을 복사하여), 조기 종료 프로세스 중 하나 또는 둘 모두가 단어의 마지막 40 %를 스킵할 수 있도록 함을 고려하자. 주 프로세스 또는 조기 종료 프로세스(들)는 처리 시간을 원래 실행 시간의 60 %로 줄인다(상당한 오버 헤드가 없다고 가정). 두 프로세스가 독립적 인 경우, 실행 시간이 원래 실행 시간의 36 %로 감소 할 것으로 예상된다. 그러나 두 프로세스가 서로 보완적이고 각 단어의 20 % 만 고려하기 때문에, 이는 실행 시간이 원래 실행 시간의 약 20 %로 단축된다.
바람직하게는, 순서화 된 단어 리스트 내의 각 단어와 다음 단어 사이의 오버랩이 미리 계산되어 저장된다. 공간상의 값은 단어 리스트 자체에 비해 작기 때문에 처리 속도가 크게 향상된다.
일부 애플리케이션들에서, 하나 이상의 '조기 종료' 최적화가 적용되는 경우, 단어가 실행 가능하지 않다고 판단하는 데 충분한 행은 많은 수의 후속 단어와 공유된다. 이 경우 이러한 단어를 하나씩 고려하지 않는 것이 바람직하다. 보다 구체적으로, 단어의 편집 거리 테이블의 첫번째 K + 1 행들이 그 단어가 수신된 입력 문자열에 대해 실행 가능한 후보가 아님을 알기에 충분한 경우, 모든 후속 단어들을 스킵할 수 있는데 이는 그들의 이전 문자와 K 이상의 문자들과 오버랩을 갖는 것이다. 이를 효율적으로 수행하기 위해, 상기 오버랩 정보는 이전 단어에 비해 더 짧은 오버랩을 갖는 리스트에서 다음 단어에 대한 각 단어 포인트를 가짐으로써 증가된다.
바람직하게 또한, 테이블의 첫번째 행과 열이 항상 동일한 값을 포함하고 있으므로, 알고리즘의 시작 부분에서 이 값으로 배열을 초기화하고 다시 쓸 수는 없다. 이는 또한 시간 임계 영역의 코드 양을 줄임으로써 직접 및 간접적으로 둘다 상당한 속도 향상을 제공하고 그리고 분기 예측을 잠재적으로 향상시킨다.
도 4a 내지 도 4c를 참조하면, 일련의 편집 거리 테이블이 도시되어있다. 단지 예시로서, 입력 문자열 ''abanden'으로 시작하여, 도 4a는 본 발명 방법의 초기 단계에 대한 편집 거리 테이블을 도시한다. 이 예에서, 입력 문자열은 테이블의 상부 행을 가로 질러 수평 방향으로 설정되고 그리고 입력 문자열이 결과 편집 거리 값을 획득하기 위해 비교되는 단어는 테이블의 좌측 아래에 수직 방향으로, 즉, 가장 좌측의 열에 배치된다. 테이블은 메모리의 단일 배열 내에 수용된다. 예를 들어, 입력 문자열이 수직 방향으로 정렬되고 비교 단어가 수평 방향으로 배열되도록 테이블이 다르게 구성 될 수 있음을 이해할 것이다. 도 4a에서, 비교 단어는 빈 단어, 즉 비-문자 또는 빈 문자열 단어를 포함한다. 또한 이 예에서 문자의 삽입, 삭제 또는 대체만 허용되며 각 동작은 값 또는 비용 1을 가지며 그리고 단어 리스트는 'abacus', 'abandon' 등으로 시작한다.
초기 단계에서, 빈 단어와 비교되는 입력 문자열 'abanden'에 대한 편집 거리 값이 계산된다. 테이블의 상부 행만 편집 거리 값들을 포함하는 도 4a와 같은 테이블에서 문자 삽입 횟수는 빈 단어에서 입력 문자열까지 이동해야 한다 (또는 반대로 삭제 횟수가 입력 문자열에서 빈 단어로 이동해야 한다). 이 예에서, 적어도 입력된 문자열의 너비만큼 넓고 비교 단어보다 깊은 점을 제외하고는 최소한 테이블의 크기에는 유의한 차이가 없다. 실제로는 두 가지 측면 모두에서 더 커질 것이다.
도 4a에서, 테이블의 '?' 항목은 읽을 필요가 없는 값을 나타낸다. 결과적으로, 테이블에서 이 값을 초기화 할 필요조차 없다. 테이블의 밑줄 친 값, 즉 이 예에서 '7'은 입력 문자열 'abanden'으로부터 빈 단어 문자열까지의 편집 거리를 포함한다.
이제 도 4b를 참조하면, 이는 단어 리스트로부터의 비교 단어 'abacus'에 대한 편집 거리 값 테이블을 포함한다. 이 방법의 단계에서, 도 4a의 테이블을 포함하는 기존 메모리 배열은 'abacus'라는 단어와 비교하여 입력 문자열 'abanden'에 대한 편집 거리 값을 얻기 위해 재사용된다. 고려된 마지막 단어(빈 단어 문자열)와 'abacus'는 0 문자만큼 겹치기 때문에 K = 0이므로 K + 1 = 1이 된다. 결과적으로, 도 4a의 테이블의 첫번째 행은 도 4b의 테이블의 첫번째 행을 계산할 필요없이 테이블 도 4b의 첫번째 행으로서 유지되지만, 도 4b의 테이블의 다음 여섯 행은 이 예시에서 계산되어야 한다. 본 발명의 방법의 일부 실시예에서, 이러한 비교 단어가 잘못된 입력 문자열에 대한 실행 가능한 후보 단어가 아니라고 판단 또는 결정을 하고 그리고 따라서 이러한 단어에 대한 추가적인 편집 거리 값들의 계산을 종료, 즉, 테이블을 완성하지 않도록, 'abacus'에 대한 테이블의 다음 여섯 행들 중 일부에 대한 편집 거리 값을 계산할 경우가 가능함이 이해될 것이다.
도 4b의 테이블에서, 완성된 테이블의 최우측 및 최하위 편집 거리 값, 즉 밑줄 친 값 '4'는 입력 문자열 'abanden'으로부터 비교 단어 'abacus'까지의 편집 거리 측정치를 포함한다. 입력 문자열 'abanden'과 비교 단어 'abacus'의 비교 결과에 대한 이 값은 메모리에 저장될 수 있으며 입력 문자열에 대한 대체 제안으로서 순위 또는 후보 단어들에 의해 선택되는 데 사용될 수 있다.
도 4c는 본 발명의 방법에서 다음 단어 비교를 위한 편집 거리 값 테이블을 포함한다. 이 예에서, 입력 문자열 'abanden'은 단어 리스트의 다음 단어 'abandon'과 비교된다. 도 4b의 테이블은 이 단계의 편집 거리 값을 얻기 위해 다시 사용된다. 'abacus', 고려된 마지막 단어 및 'abandon', 입력 문자열에 대하여 이제 고려되고 있는 단어가 세개의 문자들 'aba'에 의해 오버랩되고 있으므로 K = 3이므로 K + 1 = 4가 된다. 결과적으로, 도 4b의 테이블의 처음 4 행은 이미 도 4c의 테이블의 처음 4 행에 대하여 정확한 값들을 포함하고 그리고 따라서 도 4b의 테이블의 처음 4 행은 테이블의 처음 4 행으로 유지된다. 이때 도 4c의 테이블의 처음 4 행에 대한 값을 계산할 필요가 없다. 도 4c의 테이블의 나머지 4 개의 행은 입력 문자열 'abanden'으로부터 'abandon'까지의 편집 거리 측정치를 포함하는 테이블에서 가장 오른쪽 및 최하위 밑줄 친 항목 '1'을 갖는 테이블을 완성하도록 계산 될 필요가 있다. 도 4b의 테이블에 대해 얻어진 편집 거리 측정치와 비교된 도 4c의 테이블에서 얻어진 편집 거리 측정치 '1'은 'abandon'이라는 단어가 비교 단어 'abacus'보다는 입력 문자열 'abanden'을 대체하는 더 나은 후보 단어라는 것을 지시한다.
본 발명의 방법은 단어 리스트 내의 다음 단어에 대한 편집 거리 값을 얻기 위한 시작점으로서 작용하는 도 4c의 테이블을 계속하여, 각 단계에서 행들의 대략적인 개수에 대하여 편집 거리 값들을 계산할 필요성을 무효로 한다.
도 4a에 도시된 비교 단어로서 빈 단어 문자열을 사용하는 초기 단계는 이점을 제공하지만, 필수 단계는 아니다. 이 예시의 방법은 비교 단어 'abacus'에 대한 편집 거리 값들을 계산하여 시작할 수 있다. 그러나 도 4a의 초기 단계를 사용하면 빈 문자열에 비교되는 임의의 입력 문자열에 대한 첫번째 행이 계열 0, 1, 2, 3, 4, 5?S(여기서, S는 입력 문자열의 길이이다)을 포함함에 따라, 더욱 간단하게 단독 배열로 편집 거리 테이블을 초기화한다는 이점이 있다. 결과적으로, 이 방법을 사용하여 도 4a의 초기 테이블 또는 임의의 초기 테이블에 대한 거리 값을 실제로 계산할 필요가 없다.
다음과 같은 방법으로 테이블 당 계산 수를 줄일 수도 있다: 임의의 계산이 시작되기 전에, 배열의 가장 왼쪽 열에 값 0, 1, 2, 3, 4, ... .h-1을 입력한다. 여기서 h는 배열의 높이이다. 이 값은 모든 테이블에 대해 유효하므로, 모든 후속 계산을 통해 유지 될 수 있으므로 임의의 테이블의 가장 왼쪽 열과 관련된 임의의 계산을 수행 할 필요가 없다. 이것은 또한 시간 결정적 코드가 고려해야 하는 엣지 케이스들의 수를 줄이는 이점을 가지며, 이는 결과적으로 더 빨라질 수 있다.
본 방법은 바람직하게는 비교 단어의 순서화 된 리스트에 기초하지만, 이는 임의의 특정의 순서로 단어 리스트로부터의 단어를 고려할 필요가 없기 때문에, 본 발명의 방법의 구현에 필수적인 것은 아니다. 그러나 단어 리스트에서 단어를 순서대로 정렬하면 각 단어와 다음 단어 사이의 오버랩이 증가하여 단어 테이블이 마지막으로 고려된 단어의 테이블로부터 값을 유지할 수 있는 정도로 커진다.
본 발명의 방법은 출원인의 선행 특허 출원에 개시된 방법에 적용될 수 있어, 시스템이 수용 가능한 '단어' 40,000의 '사전'을 사용함에 따라 지리적 위치 표시자에 대한 예상된 세단어 입력 중 임의의 하나 이상의 단어의 대체 또는 수정으로서 잠재적 후보 단어를 선택하도록 한다.
본 발명은 도면 및 상기 설명에서 상세히 도시되고 설명되었지만, 예시적인 것으로 고려되어야 하며 제한적인 것으로 고려되어서는 안되며, 이는 예시적인 것으로 간주되어야 하며 제한적인 것이 아니며, 단지 예시적인 실시예가 도시되고 설명되었고 임의의 방식으로 본 발명의 범위를 제한하지 않는 것으로 이해된다. 여기에 설명된 특징들 중 임의의 것이 임의의 실시예와 함께 사용될 수 있다는 것을 알 수 있다. 예시적인 실시예들은 서로 또는 본원에 열거되지 않은 다른 실시예들에 배타적이지 않다. 따라서, 본 발명은 또한 전술한 예시적인 실시예의 하나 이상의 조합을 포함하는 실시예를 제공한다. 본원에서 개시된 바와 같은 본 발명의 수정 및 변형은 본 발명의 사상 및 범위를 벗어나지 않고 이루어질 수 있으며, 따라서 첨부 된 청구 범위에 의해 지시되는 바와 같이 그러한 제한이 부과 되어야만 한다.
하기의 청구 범위 및 본 발명의 전술한 설명에서, 명시적인 언어 또는 필요한 의미로 인해 문맥이 다른 것을 요구하는 경우를 제외하고, 단어 "포함한다" 또는 "포함하는" 또는 "포함하는"과 같은 변형은 포괄적 인 의미로 사용된다 즉 명시된 특징의 존재를 명기하지만 본 발명의 다양한 실시 예에서의 다른 특징의 존재 또는 추가를 배제하지 않는다.
선행 기술 문헌이 본 명세서에서 언급되는 경우, 그러한 참고 문헌은 그 문헌이 당해 기술 분야의 통상적인 지식의 일부를 형성한다는 인정을 구성하지 않는다는 것을 이해해야 한다.

Claims (26)

  1. 전자 장치에서 수신된 입력 문자열 상에 기초한 단어들 리스트로부터 하나 이상의 후보 단어들을 제안하는 컴퓨터에서 구현되는 방법에 있어서, 방법은:
    a) 입력 문자열들의 초기 서브 문자열들과 단어들 리스트 내의 각 단어의 초기 서브 문자열들 사이의 편집 거리 값들을 수신하기 위해 전자 장치의 메모리에 배열을 제공하는 단계;
    b) 상술한 편집 거리 값들을 연산하기 위해 단어들 리스트 내의 각 단어를 수신된 입력 문자열과 비교하는 편집 거리 알고리즘을 적용하도록 전자 장치의 프로세서를 이용하는 단계; 및
    c) 단어들 리스트의 하나 이상의 단어들에 대해, 이전에 고려된 단어의 접두사와 중첩되는 문자들 개수 K를 결정하고, 그리고 이전에 고려된 단어의 K개의 접두사 문자들에 대한 편집 거리 값들의 일부 또는 모두를 이용하여 고려되고 있는 단어를 위해 메모리 배열에서 편집 거리 값들을 보유함으로써, 프로세서를 이용하여 단계 b)를 수정하는 단계를 포함하되,
    단계 b)는 수신된 입력 문자열에 대한 미리 결정된 수의 후보 단어들이 선택되면 프로세서에 의해 종료되고;
    방법은:
    d) 수신된 입력 문자열에 대한 미리 결정된 수의 후보 단어들을 전자 장치의 위치 식별 모듈에 입력하도록 프로세서를 이용하는 단계를 더 포함하되, 위치 식별 모듈은 수신된 입력 문자열에 대한 미리 결정된 수의 후보 단어들을 수치적 위치 좌표로 해석하는 방법.
  2. 제1항에 있어서,
    배열은 캐시 메모리에 제공되는 방법.
  3. 제1항 또는 제2항에 있어서,
    프로세서는 단계 b)를 비어 있는 단어 또는 문자들을 포함하지 않는 문자열에 적용하는 방법.
  4. 제1항 또는 제2항에 있어서,
    프로세서는 단계 b)를 단어들이 리스트에서 이격되어 있는 단어들 리스트 내에서 다수의 단어들에 적용하는 방법.
  5. 제1항에 있어서,
    단어들 리스트는 단어들의 순서화된 리스트를 포함하고, 그리고 프로세서는 단계 b)를 단어들의 순서화된 리스트에서 첫번째 단어에 적용하는 방법.
  6. 제1항에 있어서,
    단어를 위한 편집 거리 값들은 편집 거리 테이블의 형태로 제공되는 방법.
  7. 제6항에 있어서,
    보유 단계는 단어들에 대해 첫번째 K+1 행들 또는 열들이 고려됨에 따라 이전에 고려된 편집 거리 테이블의 첫번째 K+1 행들 또는 열들을 보유함을 포함하는 방법.
  8. 제6항에 있어서,
    단계 c) 이후에, 방법은 편집 거리 알고리즘을 이용하여 단어들 리스트에서 각 단어에 대해 편집 거리 테이블의 추가적인 행들을 계산하는 프로세서의 단계 e)를 더 포함하는 방법.
  9. 제1항에 있어서,
    방법은 전자 장치의 메모리에 단독 배열만을 제공함을 포함하는 방법.
  10. 제1항에 있어서,
    편집 거리 알고리즘은 바그너-피셔(Wagner-Fischer) 알고리즘을 포함하는 방법.
  11. 제6항에 있어서,
    각 편집 거리 테이블의 첫번째 행 및 첫번째 열을 바그너-피셔(Wagner-Fischer) 알고리즘에 의해 결정된 표준 값들로 사전-할당하는 프로세서의 단계를 더 포함하는 방법.
  12. 제1항에 있어서,
    아직 순서화되지 않은 단어 리스트의 각 단어를 아직 순서화되지 않은 단어 리스트 내에서 원래 위치의 표시에 결합하고; 그리고
    아직 순서화되지 않은 단어 리스트에서 단어들을 아직 순서화되지 않은 단어 리스트 내에서 원래 위치들의 결합된 표시들과 함께 단어들의 순서화된 리스트로 재-정렬하는, 단어들 리스트가 아직 순서화되지 않은, 프로세서에 의해 구현되는 단계들을 더 포함하는 방법.
  13. 제12항에 있어서,
    아직 순서화되지 않은 단어 리스트의 순서를 재-배열하는 단계는 단어를 알파벳 순서로 및/또는 번호 순서로 및/또는 리스트의 각 단어와 리스트의 선행하는 단어 사이에 오버랩 정도를 증가 또는 최적화하기에 적절한 임의의 순서 체계에 의해 단어들을 배열하는 프로세서를 포함하는 방법.
  14. 제1항에 있어서,
    방법은 리스트의 단어들을 단어들의 순서화된 리스트로 순서화하는 프로세서를 포함하고 그리고 순서화된 단어 리스트로 단어 리스트의 단어들을 정렬하는 과정이 오프-라인 및/또는 오직 한번만 수행되는 방법.
  15. 제1항에 있어서,
    메모리에 제공된 배열의 2차원적인 크기가 예상되는 입력된 입력 문자열 또는 허용 입력 문자열보다 크거나 같은 크기의 첫번째 치수와 단어 리스트에서 가장 긴 문자의 길이보다 길거나 같은 크기의 두번째 치수를 갖는 방법.
  16. 제6항에 있어서,
    단어에 대해 편집 거리 테이블의 주워진 행에서 모든 항목이 임계값보다 큰 것으로 결정되면 단어에 대해 편집 거리 테이블을 계산하는 단계가 프로세서에 의해 종료되는 방법.
  17. 제1항에 있어서,
    수신된 입력 문자열에 대해 미리 결정된 개수의 후보 단어들이 바이너리 힙(binary heap) 상에서 선택적으로 구현되는 우선 순위 큐 데이터 구조를 사용하여 프로세서에 의해 선택되는 방법.
  18. 제6항에 있어서,
    단어가 수신된 입력 문자열에 대해 실행 가능한 후보가 아닌 단어에 대해 편집 테이블의 첫번째 K+1 행들로부터 결정되는 경우,
    프로세서는 K 또는 선행 단어와 함께 그 이상의 단어들의 오버랩을 갖는 단어들의 셋트에서 모든 후속하는 단어들을 스킵하는 방법.
  19. 제1항에 있어서,
    방법은 전자 장치 상에서 전적으로 구현되는 방법.
  20. 제1항에 있어서,
    방법은 서버 기반 방법인 방법.
  21. 기계 판독 가능한 명령들을 정하는 메모리;
    제1항에 따른 방법의 단계들을 구현하기 위해 상기 기계 판독 가능 명령어들을 실행하도록 구성된 프로세서를 포함하는 전자 장치에서 수신된 입력 문자열 상에 기초하여 단어들의 리스트로부터 하나 이상의 후보 단어들을 제안하기 위한 전자 장치.
  22. 기계 판독 가능 명령어들을 저장하는 메모리 및 기계 판독 가능 명령어들을 실행하도록 구성된 프로세서를 갖는 서버;
    기계 판독 가능 명령어들을 저장하는 메모리 및 기계 판독 가능 명령어들을 실행하도록 구성된 프로세서를 갖는 전자 장치;
    서버 및 전자 장치는 네트워크를 통해 서로 통신하도록 구성되되;
    전자 장치에서 수신된 문자열에 기초하여 서버에 전자 장치에 의해 전송된 요청에 응답하여, 서버가 제1항에 따른 방법의 단계들을 구현하는 전자 장치에서 수신된 입력 문자열 상에 기초하여 단어들의 리스트로부터 하나 이상의 후보 단어들을 제안하기 위한 시스템.
  23. 제1항에 따른 방법의 단계들을 구현하기 위한 전자 장치의 프로세서에 의해 실행 가능한 기계 판독 가능 명령어들을 저장하는 컴퓨터 판독 가능 매체.
  24. 제1항에 따른 방법의 단계들을 구현하기 위한 서버의 프로세서에 의해 실행 가능한 기계 판독 가능한 명령어들을 저장하는 컴퓨터 판독 가능 매체.
  25. 삭제
  26. 삭제
KR1020177021489A 2015-01-06 2016-01-02 전자 장치에서 수신된 입력 문자열에 대한 대체물들로서 후보 단어들을 제시하는 방법 KR102482391B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1500104.3A GB2535439A (en) 2015-01-06 2015-01-06 A method for suggesting candidate words as replacements for an input string received at an electronic device
GB1500104.3 2015-01-06
PCT/EP2016/050002 WO2016110455A1 (en) 2015-01-06 2016-01-02 A method for suggesting candidate words as replacements for an input string received at an electronic device

Publications (2)

Publication Number Publication Date
KR20170122727A KR20170122727A (ko) 2017-11-06
KR102482391B1 true KR102482391B1 (ko) 2022-12-29

Family

ID=55085643

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177021489A KR102482391B1 (ko) 2015-01-06 2016-01-02 전자 장치에서 수신된 입력 문자열에 대한 대체물들로서 후보 단어들을 제시하는 방법

Country Status (8)

Country Link
US (1) US11017169B2 (ko)
EP (1) EP3243142A1 (ko)
JP (1) JP6702589B2 (ko)
KR (1) KR102482391B1 (ko)
CN (1) CN107408108A (ko)
GB (1) GB2535439A (ko)
WO (1) WO2016110455A1 (ko)
ZA (1) ZA201705193B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2549240A (en) 2015-01-06 2017-10-18 What3Words Ltd A method for suggesting one or more multi-word candidates based on an input string received at an electronic device
CN106326484A (zh) 2016-08-31 2017-01-11 北京奇艺世纪科技有限公司 搜索词纠错方法及装置
US20180074970A1 (en) * 2016-09-09 2018-03-15 Sap Se Cache-Efficient Fragmentation of Data Structures
JP6690484B2 (ja) * 2016-09-15 2020-04-28 富士通株式会社 音声認識用コンピュータプログラム、音声認識装置及び音声認識方法
WO2019070412A1 (en) * 2017-10-03 2019-04-11 Precision Location Intelligence, Inc. SYSTEM FOR GENERATING AND USING GEOGRAPHIC HASH EXPRESSIONS
CN108681535B (zh) * 2018-04-11 2022-07-08 广州视源电子科技股份有限公司 候选词评估方法、装置、计算机设备和存储介质
CN108595419B (zh) * 2018-04-11 2022-05-03 广州视源电子科技股份有限公司 候选词评估方法、候选词排序方法及装置
MA43451B2 (fr) * 2018-10-01 2021-08-31 Univ Int Rabat Procédé de prédiction des codes à barres non lus par intelligence artificielle
KR20210132855A (ko) * 2020-04-28 2021-11-05 삼성전자주식회사 음성 처리 방법 및 장치
US11776529B2 (en) * 2020-04-28 2023-10-03 Samsung Electronics Co., Ltd. Method and apparatus with speech processing
CN112905026B (zh) * 2021-03-30 2024-04-16 完美世界控股集团有限公司 展示单词建议的方法、装置、存储介质及计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000057291A1 (en) * 1999-03-24 2000-09-28 Justsystem Corporation Spelling correction method using improved minimum edit distance algorithm
US20040220920A1 (en) * 2003-02-24 2004-11-04 Bax Eric Theodore Edit distance string search
US20100251105A1 (en) * 2009-03-31 2010-09-30 Lenovo (Singapore) Pte, Ltd. Method, apparatus, and system for modifying substitution costs

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7584093B2 (en) * 2005-04-25 2009-09-01 Microsoft Corporation Method and system for generating spelling suggestions
KR100835289B1 (ko) * 2006-11-20 2008-06-05 엔에이치엔(주) 키 배열 정보를 이용한 단어 추천 방법 및 그 시스템
US7630978B2 (en) * 2006-12-14 2009-12-08 Yahoo! Inc. Query rewriting with spell correction suggestions using a generated set of query features
US7957955B2 (en) * 2007-01-05 2011-06-07 Apple Inc. Method and system for providing word recommendations for text input
US8232973B2 (en) * 2008-01-09 2012-07-31 Apple Inc. Method, device, and graphical user interface providing word recommendations for text input
CA2822273C (en) * 2010-11-10 2014-09-23 Rakuten, Inc. Related-word registration device, information processing device, related-word registration method, program for related-word registration device, and recording medium
US9235654B1 (en) * 2012-02-06 2016-01-12 Google Inc. Query rewrites for generating auto-complete suggestions
US9218333B2 (en) * 2012-08-31 2015-12-22 Microsoft Technology Licensing, Llc Context sensitive auto-correction
US20150149482A1 (en) * 2013-03-14 2015-05-28 Google Inc. Using Live Information Sources To Rank Query Suggestions
GB2513196A (en) 2013-04-19 2014-10-22 What3Words Ltd A method and apparatus for identifying and communicating locations
US9230041B2 (en) * 2013-12-02 2016-01-05 Qbase, LLC Search suggestions of related entities based on co-occurrence and/or fuzzy-score matching
US10033714B2 (en) * 2015-06-16 2018-07-24 Business Objects Software, Ltd Contextual navigation facets panel

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000057291A1 (en) * 1999-03-24 2000-09-28 Justsystem Corporation Spelling correction method using improved minimum edit distance algorithm
US20040220920A1 (en) * 2003-02-24 2004-11-04 Bax Eric Theodore Edit distance string search
US20100251105A1 (en) * 2009-03-31 2010-09-30 Lenovo (Singapore) Pte, Ltd. Method, apparatus, and system for modifying substitution costs

Also Published As

Publication number Publication date
ZA201705193B (en) 2018-11-28
US11017169B2 (en) 2021-05-25
JP2018506115A (ja) 2018-03-01
GB2535439A (en) 2016-08-24
US20170364502A1 (en) 2017-12-21
KR20170122727A (ko) 2017-11-06
JP6702589B2 (ja) 2020-06-03
EP3243142A1 (en) 2017-11-15
CN107408108A (zh) 2017-11-28
WO2016110455A1 (en) 2016-07-14

Similar Documents

Publication Publication Date Title
KR102482391B1 (ko) 전자 장치에서 수신된 입력 문자열에 대한 대체물들로서 후보 단어들을 제시하는 방법
US20090043741A1 (en) Autocompletion and Automatic Input Method Correction for Partially Entered Search Query
JP2019526142A (ja) 検索語句の誤り訂正方法および装置
US20120259615A1 (en) Text prediction
US20080077397A1 (en) Dictionary creation support system, method and program
EP2932426A1 (en) Parallel local sequence alignment
CN108475266B (zh) 用来移除匹配文档的匹配修复
US10810258B1 (en) Efficient graph tree based address autocomplete and autocorrection
US9317606B1 (en) Spell correcting long queries
US10387543B2 (en) Phoneme-to-grapheme mapping systems and methods
US11468346B2 (en) Identifying sequence headings in a document
US10949465B1 (en) Efficient graph tree based address autocomplete and autocorrection
WO2012015021A1 (en) Stroke and structure input method and system
JP2018190030A (ja) 情報処理サーバ、その制御方法、及びプログラム、並びに、情報処理システム、その制御方法、及びプログラム
CN114003685A (zh) 分词位置索引构建方法及其装置、文档检索方法及其装置
US10909318B2 (en) Method for suggesting one or more multi-word candidates based on an input string received at an electronic device
KR20210065750A (ko) 검색 장치 및 방법
OA18487A (en) A method for suggesting candidate words as replacements for an input string received at an electronic device.
CN112380445A (zh) 数据查询方法、装置、设备和存储介质
US10546061B2 (en) Predicting terms by using model chunks
JP2016189154A (ja) 翻訳方法、装置、及びプログラム
CN112286579B (zh) 数据处理方法、装置、计算机可读存储介质和计算机设备
KR102668118B1 (ko) 자연어 기반의 비디오 검색을 위한 학습 장치 및 학습 방법
CN113988091A (zh) 一种用于笔译过程的数据交互方法与***
OA18355A (en) A method for suggesting one or more multiword candidates based on an input string received at an electronic device.

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right