KR102436373B1 - 전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법 - Google Patents

전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법 Download PDF

Info

Publication number
KR102436373B1
KR102436373B1 KR1020177021594A KR20177021594A KR102436373B1 KR 102436373 B1 KR102436373 B1 KR 102436373B1 KR 1020177021594 A KR1020177021594 A KR 1020177021594A KR 20177021594 A KR20177021594 A KR 20177021594A KR 102436373 B1 KR102436373 B1 KR 102436373B1
Authority
KR
South Korea
Prior art keywords
words
word
candidate
electronic device
score
Prior art date
Application number
KR1020177021594A
Other languages
English (en)
Other versions
KR20170124536A (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 KR20170124536A publication Critical patent/KR20170124536A/ko
Application granted granted Critical
Publication of KR102436373B1 publication Critical patent/KR102436373B1/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
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs
    • 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/237Lexical tools
    • G06F40/242Dictionaries

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)
  • User Interface Of Digital Computer (AREA)

Abstract

전자 디바이스에서 수신된 문자의 입력 스트링에 기반하여 하나 이상의 다수 단어 후보를 제안하기 위한 컴퓨터 구현 방법, 디바이스 및 시스템이 제공된다. 방법은 a) 수신된 입력 스트링의 다수의 n개 선택된 부분의 각각에 대해 q개의 단어의 고정된 사전으로부터 m개의 후보 단어를 선택하고, 여기서, n, m 및 q는 각각 양의 정수를 포함하고, n은 이 이상이며, m은 q에 비해 작고; 및 b) 후보 단어의 결과적인 mn개으로부터 단어의 후보 조합의 서브셋 p를 선택하는 것을 포함하되, 여기서 p는 양의 정수이고 p는 mn 에 비해 작다. 일부 실시예에서, 다수 단어 후보는 개별적인 고유한 지리적 위치로 분석될 수 있고, 다수 단어 후보의 서브셋 또는 그들의 분석된 지리적 위치는 사용자 선택을 위해 전자 디바이스에서 표시될 수 있다. 수신된 입력 스트링의 다수의 n개의 선택된 부분은 n=x인 수신된 단어 입력 스트링을 포함하는 x개 단어를 포함한다.

Description

전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법
본 발명은 전자 디바이스에서 수신된 입력 스트링에 기반한, 특히 전자 디바이스에서 수신된 다수 단어 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법을 구현하는 컴퓨터와 연관된다.
위도 및 경도 좌표계 또는 그리드 참조(grid references)와 같이, 위치를 식별하기 위한 기하학적 수치 좌표계의 사용은 잘 알려져 있고, 위성 기반 위치 시스템은 이러한 수치 좌표계를 사용하여 위치를 식별한다. 위치를 식별하기 위한 수치 좌표계들을 사용할 때 실제적인 문제는 숫자들의 결과적인 스트링이 매우 사용자 비친화적이라는 것이다. 일부 케이스에서 위치들은 가능하면 건물번호와 함께 우편 번호 또는 거리명과 같은 다른 수단을 사용하여 식별되지만, 이러한 접근들은 그들이 상대적으로 부정확할 수 있고 일반적으로 건물들에 대해서만 지정되는 문제로부터 어려움을 겪고 있다. 특히, 우편번호는 일반적으로 우편이 배송되거나 픽업될 주소로 기대되는 장소에 대해서만 지정된다. 그 결과, 이러한 접근들은 때로 고밀도의 적절한 코드, 이름 및 숫자들이 지정된 도심 영역에서만 단지 유용하다.
2014년 4월 14일에 출원된 출원인의 국제(PCT) 특허 출원 번호 PCT/GB2014/051152(출원인의 앞선 개시된 시스템)은 위치 식별자를 제조하는 방법을 개시한다. 방법은 위치의 기하학적 좌표들을 획득하고 단어들의 고유한 그룹으로 기하학적 좌표들을 변환하는 것을 포함한다. 다수의 단어들은 기억될 수 있는 위치 식별자로서 제공된다. 반대 방식으로, 위치의 기하학적 좌표들을 그 연관된 단어들의 고유한 그룹으로부터 식별하는 것이 가능하다.
출원인의 이전 개시된 시스템에서, 모바일 전자 디바이스 사용자, 예를 들어, 스마튼폰 사용자는 그들의 현재 위치 또는 그들의 스마트폰에서 선택된 위치의 식벽을 위한 요청을 할 수 있다. 응답에서, 스마트폰은 현재 위치 좌표들을 획득한다. 좌표들은 일반적으로 예를 들어, “52.123456, -0.654321”와 같은 여섯 소수자리에 대한 위도와 경도 좌표들로서 제공된다. 포지션 좌표들은 'GPS'로서 일반적으로 언급되는 시스템과 같은 대부분 위성 기반 네비게이션 시스템으로부터 이런 정도의 정확도를 쉽게 이용가능하다. 위치의 획득된 위도 및 경도 좌표들은 비록 필수적이지는 않지만 문자 스트링 내에 마디 분리된 예를 들어 “tablet.microphone.excited"와 같은 고유의 세 단어 시퀀스를 포함하는 위치 식별자로 분석된다. 이러한 변환은 출원인의 이전 개시에서 개시된 것처럼 적절한 가역적 알고리즘을 사용하여 수행된다.
사용자는 그/그녀의 연락처(contacts)로 단어 시퀀스 위치를 공유하는 것을 포함하는 많은 방법에서 단어 시퀀스 위치를 사용할 수 있다. 프로세스가 완전히 가역적이기 때문에, 사용자의 연락처는 송신자의 선택된 위치에 관련된 위치 좌표들을 수신하기 위해 단어 기반 위치 식별자를 분석하고 그들의 스마트폰(또는 다른 적절한 디바이스들) 상에 지도 보기 상에 이것을 디스플레이하기 위해 그들 소유의 소형 디바이스들을 사용할 수 있다.
그러나, 사용자가 단어 기반 위치 식별자를 잘못 입력하거나 및/또는 잘못 기억하는 문제가 발생할 수 있고, 특히 이것이 수신 이후의 어느 때에 입력된다면, 지리학적 위치의 부정확한 분석을 수신하거나 예를 들어, 허용가능한 입력으로서 인식되지 않는 단어 기반 위치 식별자와 같은 분석불가능한 단어 기반 위치 식별자 입력의 결과로서 위치 출력을 전혀 수신하지 못하는 것을 유발할 수 있다. 이 문제는 예를 들어, 분석된 지리학적 위치가 있거나 근처에 있는 국가 또는 도시를 강조하는 것에 의해 사용자 인터페이스 내에 일정 정도로 완화될 수 있어서 사용자는 그것이 정확한지 또는 그에 의해 기대된 출력이 사용자에게 에러가 발생된 것을 분명하게 만드는지 여부를 판단할 수 있다.
에러를 식별하고 위치에 대한 정확한 세 단어 시퀀스를 복원하는데 다음의 상당한 기술적 어려움이 있다. 이러한 어려움들은 다음을 포함하나, 그에 제한되지 않는다:
(i) 요구되는 응답 시간은 사용자 효용에 비해 짧아야 하지만, 출원인의 이전의 개시된 시스템에서, 사용자가 의미할 수 있는 약 57조개의 가능한 세 단어 조합들이 있고, 현대의 데스크탑 개인용 컴퓨터라고 하더라도, 한번에 이러한 것들을 스캔하는 절차는 실현불가능하며, 더욱이 소형 또는 모바일 전자 디바이스는 말할 것도 없다.
(ii) 단일한 대안을 고려할 때, 수신된 최초 입력 문자 스트링 또는 그러한 스트링의 일부에 대해 그 근사(closeness)의 측정을 구성할 필요가 있다. 이 절차는 예를 들어, 사용자가 의도한 각 위치에 대해 한번씩 많은 횟수로 요청될 것이고, 그것은 다시 연산적으로 효율적일 것을 필요로 한다.
(iii) 그 방법은 메모리가 자주 제한되는 스마트폰 또는 태블릿 컴퓨터 등과 같은 모바일 또는 소형 전자 디바이스들 상에서 구동될 것으로 적용되는 것을 필요로하며, 따라서 그 방법은 가능한한 적은 메모리를 사용하는 것을 필요로 한다.
본 발명의 목적은 입력된 문자 스트링에 대해 잠재적 대체로서 후보 단어들 또는 단어들의 후보 조합들을 선택하거나 제안하기 위해 시스템과 연관된 하나 이상의 문제들을 일정 정도로 완화하거나 제거하기 위한 것이다.
상기 목적은 주요 청구항들의 구성의 조합에 의해 충족되고; 서브 청구항들은 본 발명의 유리한 실시예들을 더 개시한다.
본 발명의 다른 목적은 출원인의 이전에 개시된 시스템과 관련된 하나 이상의 문제들을 완화하거나 제거하기 위한 것이다.
본 발명의 다른 목적은 알려진 지리적 위치 분석 시스템과 관련된 하나 이상의 문제들을 완화하거나 제거하기 위한 것이다.
본 발명의 다른 목적은 처리될 필요가 있는 위치의 수를 경험적으로(heuristically) 줄이는 방법 또는 방법들을 제공하기 위한 것이고, 이러한 위치는 사용자가 기대하는 결과를 구성할 수 있다.
본 기술분야에서 통상의 지식을 가진 사람은 후술하는 설명으로부터 본 발명의 다른 목적들을 도출할 수 있을 것이다. 따라서, 목적의 앞서 말한 언급들은 완전한 것이 아니며, 본 발명의 많은 목적들 중 일부를 단지 보여주기 위해 제공한다.
첫 번째 주요 양태에서, 본 발명은 전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하기 위해 컴퓨터로 구현된 방법을 제공하며, 방법은 a) 수신된 입력 스트링의 다수의 n개 선택된 부분들의 각각에 대해 q 단어들의 고정된 사전으로부터 m개의 후보 단어들을 선택하되, m, n, q는 양의 정수를 포함하고, n은 2 이상이며, m은 q에 비해 작고, b) 그 결과에 따른 mn개의 후보 단어들로부터 단어들의 후보 조합들의 서브셋 p를 선택하되, p는 양의 정수이고 p는 mn에 비해 작은 단계들을 포함한다. 수신된 입력 스트링의 다수의 n개의 선택된 부분들은 n=x인 수신된 단어 입력 스트링을 포함하는 x개의 단어들을 포함하는 것이 바람직하다.
두 번째 주요 양태에서, 본 발명은 수신된 입력 스트링이 기반한 하나 이상의 다수 단어 후모들을 제안하는 모바일 전자 디바이스를 제공하고, 디바이스는 기계 판독가능한 지시를 저장하는 메모리; 본 발명의 첫 번째 주요 양태에 따른 방법의 단계들을 구현하는 기계 판독가능한 지시들을 실행하도록 구성된 프로세서를 포함한다.
세 번째 주요 양태에서, 본 발명은 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 시스템을 제공하고, 시스템은 기계 판독가능한 지시를 저장하는 메모리와 기계 판독가능한 지시를 수행하도록 구성된 프로세서를 갖는 서버; 기계 판독가능한 지시를 저장하는 메모리와 기계 판독가능한 지시를 실행하도록 구성된 프로세서를 갖는 모바일 전자 디바이스를 포함하고; 서버와 모바일 전자 디바이스는 네트워크 상에서 서로 통신하도록 구성되고, 디바이스에서 수신된 스트링에 기반하여 모바일 전자 디바이스에 의해 서버로 송신된 요청에 응답하여, 서버는 본 발명의 첫 번째 주요 양태에 따른 방법의 단계들을 구현한다.
네 번째 주요 양태에서, 본 발명은 본 발명의 첫 번째 주요 양태에 따른 방법의 단계들을 구현하기 위해 모바일 전자 디바이스의 프로세서에 의해 실행될 수 있는 기계 판독가능한 지시를 저장하는 컴퓨터 판독가능한 매개를 제공한다.
다섯 번째 주요 양태에서, 본 발명은 본 발명의 첫 번째 주요 양태에 따른 방법의 단계들을 구현하기 위해 서버의 프로세서에 의해 실행될 수 있는 기계 판독가능한 지시를 저장하는 컴퓨터 판독가능한 매개를 제공한다.
본 발명의 요약은 본 발명을 정의하기 위해 필수적인 모든 구성들을 반드시 개시하지 않으며; 본 발명은 개시된 구성의 서브-조합에 있을 수 있다.
본 발명은 전자 디바이스에서 수신된 입력 스트링에 기반한, 특히 전자 디바이스에서 수신된 다수 단어 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법을 구현하는 컴퓨터와 연관된다.
본 발명의 앞서 설명하고 추가적인 구성들은 수반하는 도면들과 연관되어 단지 예시의 방법에 의해 제공되는 바람직한 실시예들의 후술하는 설명으로부터 명백할 것이고:
도 1은 본 발명에 따른 시스템의 예시의 다이어그램이다; 및
도 2는 도 1의 시스템에서 사용된 사용자 디바이스의 예시의 다이어그램이다.
후술하는 설명은 단지 예시의 방법에 의한 그리고 본 발명을 실행하기 위해 필요한 구성들의 조합에 대해 제한없는 바람직한 실시예들이다.
"일 실시예" 또는 "실시예"에 대한 본 설명에서의 참조는 실시예와 연관되어 설명된 특정 구성, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되는 것을 의미한다. 상세한 설명에서 다양한 곳에서 "일 실시예에서" 문구의 등장은 동일한 실시예에 대해 필수적으로 모두 참조하거나, 다른 실시예들의 개별적인 또는 대안적인 실시예들이 상호 배타적이라는 것은 아니다. 게다가, 다양한 구성들이 일부 실시예들에 의해서 금지될 수 있으나 다른 것들에 의해서는 아닐 수 있도록 설명된다. 유사하게, 다양한 요구들은 일부 실시예들에 대한 요구일 수 있으나 다른 실시예들에 대해서는 아닐 수 있도록 설명된다.
도면에 도시된 구성들은 하드웨어, 소프트웨어 또는 그 조합의 다양한 형태로 구현될 수 있음이 이해되어야 할 것이다. 바람직하게, 이러한 구성들은 프로세서, 메모리 및 입력/출력 인터페이스를 포함할 수 있는 하나 이상의 적절하게 프로그램된 범용 디바이스 상의 하드웨어 및 소프트웨어의 조합으로 구현된다.
본 설명은 본 발명의 원리들을 나타낸다. 본 기술분야에서 통상의 지식을 가진 사람은 비록 여기에서 명확하게 설명되거나 도시되지 않았더라도 본 발명의 원리를 구현하고 그 사상 및 범위 내에 포함된 다양한 배열들을 고안할 수 있을 것이다.
게다가, 여기서 그 특정 예시 뿐만 아니라 본 발명의 원리, 양태 및 실시예들을 언급하는 모든 서술들은 그 구조적 및 기능적 등가물들을 모두 포함하도록 의도된다. 또한, 이러한 등가물들은 현재 알려진 등가물 뿐만 아니라 장래에 개발된 등가물, 예들 들어 구조와 무관하게 동일한 기능을 수행하도록 개발된 어떠한 구성들도 모두 포함하도록 의도된다.
여기의 청구항들에서, 특정 기능을 수행하기 위한 수단으로서 표현된 어떠한 구성은 예를 들어, a) 그 기능을 수행하는 회로 구성들의 조합 또는 b) 그 기능을 수행하기 위해 소프트웨어를 실행하기 위한 적절한 회로와 조합된 펌웨어, 마이크로코드 등을 포함하는 어떠한 형태의 소프트웨어를 포함하는 기능을 수행하는 어떠한 방법도 포함하도록 의도된다. 이러한 청구항에 의해 정의된 것처럼 본 발명은 다양한 언급된 수단들에 의해 제공되는 기능들이 청구항이 요구하는 방식에서 조합되고 함께 제공된다는 사실에 있다.
도면을 참조하면, 본 발명의 시스템(1)은 다수의 사용자 디바이스(2) 및 중앙 서버(3)을 포함한다. 사용자 디바이스(2)는 스마트폰, 태블릿 컴퓨터 등(2a) 및/또는 퍼스널 컴퓨터(2b)와 같은 소형 및/또는 모바일 전자 디바이스를 포함한다. 각 사용자 디바이스(2)는 비록 본 발명의 방법이 전자 디바이스(2a) 또는 PC(2b)에서 전적으로 수행되는 것이 필수적이지는 않지만, 인터넷(4)과 같은 네트워크를 통해 중앙 서버(3)와 통신을 할 수 있다. 이러한 케이스에서 전자 디바이스는 네트워크에 연결될 필요가 없다. 비록, 명확성을 위해, 단지 세 개의 전자 다바이스(2a) 및 단일 PC(2b)가 도 1에 도시되어 있지만, 비록 본 발명의 방법이 단일 전자 처리 디바이스(2) 상에서 구현될 수 있는 것이 또한 필수적이지는 않지만, 실제 시스템(1)은 많은 수의 전자 디바이스(2)를 포함할 수 있음이 이해될 것이다.
도 2는 시스템(1)의 전자 디바이스(2a)의 예시를 보다 자세하게 나타낸다. 도 2에 도시된 것처럼, 전자 디바이스(2a)는 데이터 프로세서(10), 시각 디스플레이(11), 사용자 지시가 디바이스(2a)에 입력되도록 허용하고 정보가 사용자에게 제공되거나 및/또는 디스플레이되도록 허용하는 유저 인터페이스(12), 스피커(13) 및 마이크로폰(14)을 포함한다. 전자 디바이스(2a)의 다양한 구성들은 메모리에 저장된 기계 코드를 구동하도록 프로세서(10)의 제어하에서 동작한다. 사용자 인터페이스(12)는 터치 스크린 디스플레이로서 시각 디스플레이와 일체화될 수 있다. 다른 예시에서 사용자 인터페이스(12)는 시각 디스플레이로부터 분리된 전용 키패드(dedicated keypad)일 수 있다. 이러한 구성을 포함하는 전자 디바이스는 통상의 지식을 가진 사람에게 잘 알려져 있고, 따라서 여기서 자세하게 설명될 필요가 없다. 사용자 PC(2b)는 유사한 기능을 가질 것임이 이해될 것이다.
또한, 전자 디바이스(2a)는 위치 결정 수단(15), 매핑 또는 네비게이션 모듈(16), 및 위치 식별 모듈(11)을 포함한다. 네비게이션 모듈(16) 및 위치 식별 모듈(17)은 위치 결정 수단(15)으로부터 포지션 정보를 수신하도록 배열된다. 도시된 예시에서 위치 결정 수단(15)은 소위 GPS와 같은 글로벌 포지셔닝 시스템이다. 다른 예시에서 다른 위성 기반 네비게이션 시스템이 사용될 수 있다. 네비게이션 모듈(16) 및 위치 식별 모듈(17)은 전용 하드웨어를 포함할 수 있고 또는 전자 디바이스(2a)의 프로세서 상에서 구동되는 소프트웨어 프로그램 또는 어플리케이션을 포함할 수 있다. 일부 예시에서, 사용자 PC(2b)는 위치 결정 수단(15)를 포함하지 않을 수 있다. 일부 예시에서, 위치 결정 수단을 포함하지 않는 사용자 PC(2b)는 전자 디바이스(2a)에서 위치 결정 수단과 같은 개별적 위치 결정 수단으로부터 위치 정보에 대한 접근을 여전히 가질 수 있다.
위치 식별 모듈(17)은 사용자에 위치 기반 서비스를 제공하기 위해 위치 결정 수단(15)에 의해 제공되는 포지션 정보를 사용한다.
명확성을 위해, 위치 결정 수단(15)을 포함하는 전자 디바이스(2a)를 구비한 시스템(1)의 동작이 논의될 것이다.
일반적으로 말하면, 전자 디바이스(2a) 또는 PC(2b)는 디바이스 그 자체의 위치 또는 매핑 또는 네비게이션 모듈(16)에 의해 선택된 위치를 위해 지리적 좌표를 결정하기 위해 일 실시예에서 구성된다. 이러한 수치 좌표는 출원인의 국제(PCT) 특허 출원 번호 PCT/GB2014/051152 또는 다른 적절한 이러한 시스템에서 개시된 것과 같은 방식으로 전자 디바이스(2a) 또는 PC(2b) 그 자체 상에서 또는 서버(3)의 도움을 통해 단어 기반 고유 위치 식별자로 분석(resolved)된다.
여기서 개시된 방법은 그러나 단어 기반 지리적 위치 식별자에 제한되지 않고, 허용되는 단어들의 사전 또는 데이터 스토어를 갖는 디바이스 또는 시스템에서 어떠한 입력 문자 스트링에 관해 채용될 수 있다. 본 발명의 맥락에서, 용어 '단어'는 단지 자연 언어 단어만을 포함하는 것으로 이해되지 않고, 예를 들어, 디바이스 또는 시스템의 사전 또는 데이터 스토어에서 허용될 수 있거나 미리 정의된 문자 스트링 입력과 같이 '단어'를 포함하거나 매치하거나, 또는 사전 또는 데이터 스토어에서 어떠한 이런 단어 입력을 포함하거나 매치하도록 의도된 문자, 알파벳, 숫자 또는 기타의 어떠한 입력된 스트링을 포함할 수 있다.
동일하거나 다은 실시예에서, 그 자체 또는 서버(3)와 통신하는 전자 디바이스(2a) 또는 PC(2b)는 바람직하게 다수 단어 문자 스트링인 수신된 문자 입력 스트링을 이러한 지리학적 위치 좌표의 세트와 같은 관련된 양태로 분석하도록 구성된다. 일부 비-위치 기반 실시예에서, 수신된 문자 입력 스트링은 예를 들어, 바코드 번호 등과 같은 서치 쿼리(search query) 또는 제품 식별자와 같은 관련된 양태로 분석된다.
후술하는 설명에서, 참조는 다수 단어 입력 스트링을 포함하는 입력 스트링에 대해 이루어질 것이지만, 본 발명은 단지 다수 단어 입력 스트링을 처리하는데에 제한되지 않고, 어떠한 입력 스트링도 처리하도록 구성될 수 있음이 이해될 것이다.
전자 디바이스(2a) 및/또는 PC(2b)는 다수 단어 입력 스트링을 수신하기 위해 자체로 또는 서버(3)와 통신하도록 구성되고, 수신된 n 단어 입력 스트링에서 각 단어 n(여기서 n=x)에 대해, a) q 단어들의 사전으로부터 m 후보 단어들을 선택하되, 여기서 n, m, q는 양의 정수를 포함하고, n은 2이상이며, m은 q 미만이고, m과 n은 바람직하게 q에 비해 작은 하나 또는 여러 개의 자릿수를 갖는다. 예를 들어, q 단어들의 사전을 갖는 실시예에서, q는 가령 40,000이고, n은 2 또는 3처럼 작을 수 있고, m은 100 보다 크지 않고 바람직하게 30처럼 작다. 바람직하게 q 단어의 사전은 예를 들어, 사전이 주기적으로 사이즈에서 변경될 수 있더라도 허용가능한 단어의 고정된 리스트를 포함하고, 그 내용 및/또는 사이즈는 동적으로 변경하지 않는다. 사전에서 단어의 리스트는 바람직하게 알파벳 및/또는 번호순과 같은 정의된 순서로 배열된다.
방법은 b) 후보 단어들의 결과적인 mn 조합으로부터 단어의 후보 조합을 선택하는 것을 포함하되, 서브셋 p가 양의 정수이고 p가 mn 보다 작다. P는 선택적으로 q에 비해 작다. q가 40,000인예시에서, n이 가령 3이고, m은 100이고, p는 바람직하게 약 1000이다. 이 예시에서, 40,000 단어의 64조의 가능한 세 단어 조합이 있고, 방법은 추가적인 고려를 위해 첫째로 1003예를 들어, 1백만으로 선택된 세 단어 후보의 수를 줄이며, 이것은 그리고 나서 사용자에게 제시를 위해 가령 10처럼 적은 궁극적인 리스트로 추가적인 처리를 위해 1000 후보 조합으로 더 줄어든다.
본 발명의 방법에서, 단계는 a) 수신된 n 단어 입력 스트링에서 각 단어 n을 위해 q 단어의 고정된 사전으로부터 m 후보 단어를 최고 점수 또는 랭킹에 기반하여 선택하도록 하기 위해, 수신된 n 입력 스트링에서 각 단어 n을 위해 고정된 사전에서 단어 q의 일부 또는 전체에 대해 각 점수 또는 랭킹을 결정하거나 할당하는 것을 포함할 수 있다. 수신된 n 단어 입력 스트링에서 각 단어를 위해 고정된 사전에서 단어 q의 일부 또는 전체에 대한 점수 또는 랭킹은 수신된 n 단어 입력 스트링에서 각 단어에 대한 문자 스트링과 고정된 사전에서 단어 q의 일부 또는 전체에 대한 문자 스트링 사이의 비교에 기반한 문자 기반 거리 점수를 포함할 수 있다. 문자 기반 거리 점수는 편집(edit) 거리 점수를 포함할 수 있으나, 바람직하게 동작으로서 이항(transpositions)을 갖는 가중된 레벤슈타인 편집 거리 점수(a weighted Levenshtein edit distance score)와 같은 가중된 편집 거리 점수를 포함한다.
방법은 따라서 각 단어가 허용 가능한 단어의 사전 또는 데이터 스토어에 조립되는 때 입력 데이터가 허용 가능하거나 미리 정의된 문자 스트링(단어)의 그룹과 매치하도록 의도되는 때 잘못 형성된 입력 데이터의 수정을 포함하는 것으로서 일반적으로 여겨질 수 있다.
본 발명의 기술에 동기를 부여하는 기술적 문제는 사용자가 입력하는 것으로 의도한 것을 판단하는데 사용될 수 있는 많은 수의 팩터들을 식별하는 것이 가능하다는 것이지만, 만약 앞서 언급한 예시에서 64조의 가능한 세 단어 조합이 잘못 형성된 입력 스트링을 대체하거나 대체하기로 선택되기 위해 의도된 입력으로서 단어의 하나 또는 후보 조합을 식별하기 위해 연속적으로 처리된다면, 가령 PC 상에서 처리 구동은 우주가 시작된 이후 시간에 비해 구동에 더 길게 소요될 것이다.
실제로, 일반적인 레벨에서, 본 발명의 발명은 그들의 근사적인 속도의 관점에서 잠재적으로 의도된 다수 단어 조합의 점수 또는 랭킹을 개선하는데 사용될 수 있는 방법들의 연속을 이용하는 것을 포함한다. 그리고 나서, 이러한 방법들의 첫 번째, 가장 빠른 방법이 모든 가능성에 대해 적용된다. 그리고 나서 선택된 것은 이 단계에서 최고로 나타나고 다른 것들을 폐기해서 추가적인 고려를 위해 가능한 후보들을 대략적으로 '키질(winnowing)'하는 가령 백만개의 가능성이다. 이에 따라, 두 번째로, 가능한 더 느린 방법이 조정에 적용되고, 따라서 백만 가능성의 점수 또는 랭킹의 양을 향상시키고, 선택된 이것으로부터, 이 단계에서 최대로 나타나는 가령, 1000개의 가능성은 다른 것들을 폐기한다. 방법은 그리고나서 세 번째, 조절을 위해 가능한 가장 느린 방법을 적용하는 것을 포함할 수 있고, 따라서 이러한 1000개의 가능성들의 점수의 양을 개선할 수 있고, 이것은 이 단계에서 최고로 보여지는 작은 수의 후보를 제공하기 위해 1000개의 후보의 미리 결정된 작은 수, 가령 10개의 선택 또는 하나 이상의 기준을 충족하는 감소된 수의 후보의 상기 1000개의 후보로부터 선택을 이끌 수 있고 다른 방법들을 폐기한다. 이러한 방법은 수조개의 가능한 조합의 처리에 대한 필요를 제거하고, 사실상, 단계적 선택 프로세스는 빠르고 연산적으로 효율적으로 잘못 입력된 입력 데이터를 위해 가능한 후보로서 디바이스 또는 시스템의 사용자에 대해 그들의 고유한 양태들을 분석하거나 하나 이상 제시될 수 있는 매우 작은 수의 단어의 후보 조합에 도달한다.
이 기법의 기능에 대한 키는, 첫 번째 방법이, 비록 그것이 부정확한 것으로 고려될 수 있더라도, 최종적인 작은 수, 예를 들어 10개의 최고의 후보 조합이 첫 번째 방법 하나에 의해 연산되는 때 가령 백만개의 가능성의 상위의 외부에 상당히 놓여지지 않도록 충분히 정확하다는 것이다. 두 번째 방법은, 비록 그것이 부정확한 것으로 고려될 수 있더라도, 첫 번째 및 두 번째 방법에 의해 함께 연산되는 때 10개의 최고의 가능성들의 하나는 가령 상위 1000개의 가능성들의 외부에 상당히 있지 않도록 충분하게 정확하다. 기타 등등.
비록 앞의 예시가 연달아 세 개의 방법을 적용하는 것을 언급하였으나, 입력의 속성 및 전자 디바이스(2a), PC(2b) 및/또는 서버(3)에서 연산적인 효율성을 위해 요구되는 키질(winnowing)의 정도에 종속하여 두개의 방법만큼 적을 수 있고, 세개의 방법보다 많을 수도 있음이 이해될 것이다.
사전 크기 q=40,000, 단어 그룹핑 크기 n=3 및 세 단어 그룹핑에서 단어 또는 슬롯당 선택된 후보가 m=100을 포함할 때, 위에서 언급한 예시를 적용시, 40,000개의 단어 사전에서 세 단어의 모든 64조개의 가능한 그룹핑들을 명확하고 개별적으로 적용할 수 있는 연산적으로 효율적인 방법이 존재하지 않을 것이다. 그러나, 예를 들어, 가능성에서 포함된 세 단어의 각각에 대해 이득(goodness) 또는 '점수'의 수치를 분명하고 명시적으로 또는 내포적으로 계산하고 대한 수치 또는 랭킹, 바람직하게 더 좋은 것으로 고려된 낮은 점수, 그리고 나서 상기 측정을 조합하고, 바람직하게 추가함에 의해 모든 64조개의 가능성들에 대한 점수 또는 랭킹과 같이, 이득의 일부 측정을 효율적으로 연산하는 것이 가능하다. 세 단어 그룹의 각 '슬롯' 내에 들어갈 수 있는 단지 40,000개의 가능한 단어가 있기 때문에, 이것은 최대 3 x 40000개의 연산을 포함한다. 그리고 나서, 이후에서 더 상세하게 설명될 것처럼, 최고의 예를 들어, 최저 점수를 갖는 64조개의 가능성들의 서브셋을 고르는 유사한 내포적인 절차를 사용하는 것이 가능하다.
세 단어의 64조개의 가능한 조합의 서브셋을 고르는 방법은 다음의 단계들을 포함할 수 있다:
I. 전자 디바이스(2a) 또는 PC에서 수신된 세 단어 입력의 각 단어에 대해 사전에서 가령 30개 이상의 자판 입력적으로(typographically), 음성학적으로(phonetically), 또는 근접-음성학적으로(approximate-phonetically) 가장 유사한 단어를 획득한다. 이것은 특정 점수에 따라 사전에서 단어를 효과적으로 랭킹하는 것에 의해 이루어질 수 있고, 바람직하게 상기 사전 단어와 수신된 입력 단어의 사이, 또는 상기 사전 단어와 입력 단어의 음성학 또는 근접-음성학(approximate-phonetic)의 사이의 가중된 레벨슈타인 편집 거리(weighted Levenshtein edit distance)이다. '효과적으로'의 용어는 모든 단어에 대해 정확하게 점수를 계산하는 것을 항상 필요로하지 않기 때문에 여기서 사용되었다. 어떤 경우든, 방법은 수신된 입력 문자 스트링에서 각 단어 n에 대해 후보 단어 m으로서 식별되기 위한 최적의 점수를 갖는 30개 이상의 단어를 가능하게 한다. 바람직하게, 방법은 인접한 문자들의 변형을 고려하여 가중된 레벤슈타인 편집 거리의 표준 편차를 사용한다. 편집 거리에서 가중은 바람직하게 기술적 및 실증적 기준에 따라 신중하게 선택된다.
예시: 잘못 입력된 수신된 입력 단어 'meo'에 대해, 'meo.ammoun', 'naild'의 수신된 잘못 입력된 입력 단어 그룹을 획득하고, 사용자가 'meo'의 대신 입력하려고 의도했던 것에 대한 후보로서 사전에서 자판 입력적으로, 음성학적으로 또는 근접-음성학적으로 가장 유사한 단어는 그들의 가중된 레벤슈타인 편집 거리에 결과하여 도시된 다른 것들 사이에서 후술하는 가능성들을 야기한다.
[memo:1, veto:2, mono:2, redo:2, mojo:2, ...] (실제 유사도 점수인 1, 2, ...).
'ammoun', 'naild'에 대해 가능한 후보 단어 m은 다음을 포함한다:
[amount:2, mammoth:3, hammock:3, lemon:3, famous:3, ...]
[nails:1, nailed:1, nail:1, railed:2, snail:2, ...]
II. 세 단어 입력 그룹을 위한 후보 단어의 세개의 리스트는 의도된 입력 스트링이 무엇이었는지에 대해 일부 또는 모든 가능한 세 단어 제안 또는 후보를 획득하기 위해 조합된다. 각 단어에 대해 30 내지 300개의 가능성의 사이의 어딘가에 있기 때문에, 이것은 의도된 입력 스트링을 위해 30 x 30 x 30 내지 300 x 300 x 300개의 가능한 후보 단어 조합을 산출한다. 이러한 제안은 바람직하게 그리고 나서 점수 또는 랭킹이 할당되고, 각 제안의 점수 또는 랭킹은 바람직하게 각 조합 내에서 세 단어를 위해 이미 결정된 점수 또는 랭킹을 추가함에 의해 획득된다. 예를 들어, memo.amount.nails은 4 (1+2+1 = 4)의 점수를 갖고, veto.amount.nails은 역시 4 (2+2+1 = 4)의 점수 등을 갖는다.
예를 들어, 단어의 후보 조합과 같은 모든 또는 일부 가능성의 조합된 리스트는 바람직하게 점수 또는 랭킹에 의해 정렬되고, 만약 이것이 이루어지면 본 예시의 방법에서 가장 높은 점수 또는 랭킹을 갖는 최악의 제안들은 바람직하게 폐기되어 따라서 대략적으로 하나 또는 여러 자릿수에 의한 추가적 고려를 위해 단어의 후보 조합의 수를 줄인다. 모든 단어의 점수를 연산하는 것이 필수적이지 않을 수 있음이 이해될 것이다. 가시적인 후보가 아닌 것으로서 그들을 포함하는 그들 또는 단어의 어떤 조합을 만들 수 있는 상대적으로 높은 점수 또는 랭킹을 갖는 것으로 미리 보여질 수 있는 단어들을 점수화하거나 랭크하는 것이 필수적이지 않다.
단계 II에 앞서, 선택적 단계 IA는 단어리스트에서 각 원단어로 컴팩트 패션(compact fashion)에 바람직하게 저장된 변형 단어의 사전 연산된 리스트를 사용하여 각 후보 단어의 형태적으로 관련된 변형을 추가하는 것일 수 있다. 따라서, 예를 들어, 'memo'에 대해 변형 'memos'가 추가될 수 있고, 'amount'에 대해 'amounts', 'amounted' 및 'amounting'가 추가될 수 있다. 이러한 종류의 대체는 바람직하게 점수 불이익(score penalty)을 초래할 수 있다. 만약, 예를 들어, 불이익이 5라면, 'memo'로서 1의 점수를 갖고, 'memos'는 6의 점수를 가질 수 있다.
단계 II에 앞서 추가 선택적 단계 IB로서 역시, 그들의 잘못 타이핑된 하나 이상으로서 단어의 순서를 잘못 기억할 수 있기 때문에 재정리된 변형(예를 들어, 'amount.memo.nails')이 추가될 수 있다. 이것들은 역시 위에서처럼 주어진 적절한 점수 불이익이다.
단계 II에서 크기의 하나 이상의 자릿수에 의해 추가적 고려를 위해 단어의 후보 조합의 대략적으로 줄어든 수를 갖기 때문에, 선택적 단계 IA 및/또는 IB를 구비하던지 또는 구비하지 않던지, 하나 이상의 추가적인 키질 단계들이 추가적으로 고려되기 위해 후보의 수를 더 줄이기 위해 적용될 수 있다.
지리적 위치에 대한 입력으로서 다수 단어 그룹을 이용하는 디바이스 또는 시스템의 케이스에서, 추가적인 키질 단계 또는 단계들은 다음의 하나 이상을 포함할 수 있다:
III. 출원인의 앞서 개시된 특허 출원에 개시된 것과 같은 메인 알고리즘 또는 다른 적절한 위치 변환 알고리즘을 이용하여 각 다수 단어(세 단어) 후보의 위치를 연산하고, 그리고 나서 현재 또는 과거에 알려진 전자 디바이스의 위치 또는 사용자에 의해 선택된 위치와 같은 알려진 위치에 대해 상기 위치로부터의 거리를 결정하고 연산하는 것. 각 세 단어 후보 조합에 대해, 불이익 점수가 알려진 위치 또는 사용자에 의해 선택된 위치에 대한 거리의 기능을 단순 증가시킬 수 있도록 거리에 대해 비례적으로 추가된다; 및/또는
IV. 특정 케이스만에 대해, 각 세 3단어 제안과 도로 또는 건물 또는 일부 다른 선택된 지도 구성과 같은 가장 가까운 지도 구성의 사이의 거리를 찾는다. 그리고 나서 각 후보 단어 그룹 조합의 점수는 거리가 증가함에 따라 증가되는 불이익을 추가함에 의해 조정되고, 불이익 점수는 또한 거리의 단순 증가하는 기능일 수 있다.
단계 III 및 IV는 단계 I 및 II 고(그리고 가능하면 또한 IA 및/또는 IB 단계)의 이후에 적용될 수 있고, 또는 단계 III 및 IV는 조합에서 적용될 수 있다. 어떠한 이벤트에서도, 일단 어떠한 불이익 점수가 추가되면, 감소된 수의 후보 그룹 조합 및/또는 그들의 분석된 위치는 재배치될 수 있고, 상기 재배치된 형태로 전자 디바이스(2a) 또는 PC(2b) 상에서 표시되는 이러한 것들의 일부 또는 모두는 표시되거나 첫 번째로 디스플레이되거나 또는 가장 두드러지게 가장 낮은 점수를 갖는 후보로 형성한다. 바람직하게 후보가 표시되어, 사용자가 선택을 하고 선택의 결과를 불러오도록(invoke) 한다.
비록 다른 점수화 매커니즘도 사용될 수 있지만, 후보 단어의 점수화는 바람직하게 편집 거리 점수에 기반한다. 편접 거리 점수화의 경우 예를 들어 http://en.wikipedia.org/wiki/Edit_distance를 보면, 두 단어 스트링의 사이의 편집 거리를 연산하는 표준 방법이 있다. 알려진 방법의 기술적 문제는 완전하게 정확하게 하기 위해, 그것이 잠재적으로 수천의 단어를 포함하는 사전에서 각 단어에 대항하여 입력 단어 스트링의 비교를 필요로한다는 것이다. 통상의 방법은 각 비교에 대해 적절한 편집 거리를 획득하기 위해 차례로 각 사전 단어에 대향하여 잘못 형성된 입력 단어를 비교하는 것을 포함한다. 이것은 우리의 예시에서, 편집 거리 절차의 40,000개의 개별적인 실시를 포함할 수 있기 때문에, 본 발명의 목적에 대해 연산적으로 비효율적이다. 처리 속도를 높이는 다른 가능한 대체 방법들은 본 발명의 목적에 대해 너무 늦게 남아 있고, 또한 메모리의 바람직하지 않게 큰 양을 사용한다.
어떠한 주어진 입력 단어 스트링 단어 또는 입력 시트링의 일부에 대해 '가장 가까운 단어'를 연산하기 위한 이 문제의 해결은 메모리의 매우 작은 양을 사용하고, 적어도 "A Method for Suggesting Candidate Words as Possible Replacements for an Input String Received at an Electronic Device"라고 명칭되고 2015년 1월 6일에 출원된 출원인의 함께 출원한 특허 출원 번호 GB1500104.3에 설명된 것처럼 알려진 방법의 어느 것에 비해 처리에서 더 빠른 최소한의 자릿수이다.
바람직하게, 고려되는 마지막의 (가령) 80개의 단어의 각각에 대해, 표준 방식에서 구현된 최소 최근 사용(least recently used, LRU) 캐쉬를 사용하여, 프로세스는 편집 거리 절차(예를 들어, "단어 리스트에서 가장 유사한 30개의 단어")의 결과를 저장(caches)한다. 따라서, 만약 시스템이 세 단어 입력 스트링 조합을 위한 제안을 연산할 것이 요청되고, 하나 이상의 그러한 입력 단어가 캐쉬에 있다면, 어떠한 이런 단어의 결과는 거의 무시할만한 시간에 리턴될 것이다. 사용자가 입력 스트링을 타이핑함에 따라 결과가 업데이트되어 하나의 요청(query)와 다음번과의 사이에서 중첩되는 두 단어 입력이 일반적으로 있을 수 있다면, 사용자는 단지 마지막 단어를 편집한다면 이것은 특정 사용에 속한다. 예시의 방법에 의해, 만약 요청이 다음과 같다면:
A. meo.ammoun.n
B. meo.ammoun.na
C. meo.ammoun.nai
D. meo.ammoun.nail
E. meo.ammoun.naild
'meo' 및 'ammoun'에 대한 편집 거리 결과는 요청 B-E에서 재연산될 필요가 없다.
다음 단계에서, 표준 절차는 입력 스트링의 세 단어의 각각에 대해 가능한 대체의 세 개의 리스트를 획득하고 세 단어 입력 스트링의 전체에 대해 세 단어의 모든 가능한 제안/후보 조합을 획득하기 위해 그들을 조합할 수 있다. 만약, 이전의 예시에서와 같이, 세 개의 슬롯의 각각에 대해 100개의 가능성처럼 많다면, 우리는 입력의 전체에 대해 100 x 100 x 100 가능성을 가질 수 있다. 불행하게, 이러한 많은 가능성을 구성하는 것은 명백하게 바람직하지 않은 양의 메모리를 사용하는 것 뿐만 아니라 바람직하지 않게 느린 것으로 판명된다. 모든 백만개의 세 단어 가능성을 구성한 이후, 일부는 리스트를 종래와 같이 정렬하고, 다음 단계로 통과하기 위한 가령 1000개의 아이템을 취할 수 있으나, 역시 이것은 실제에서 바람직하지 않게 느린 것으로 판명된다.
여기서 선호되는 접근은, 비록 속도를 최적화하는 조합의 다른 방법들이 사용될 수 있지만, 가령 이진 힙(binary heap) 상에서 구현되는 우선 순위 큐 데이터 구조를 사용한 변형된 최적의 첫 번째 서치를 포함하는 내포된 절차에 의해 명시적인 조합 및 정렬 절차를 대체하는 것이다.
가능한 최적화는 16 최대 비트 내에서 거리 점수를 갖는 단일 64 비트 정수로서 부호화(encoded)될 수 있는 [점수, 첫 번째 단어 수치 식별자, 두 번째 단어 수치 식별자, 세 번째 단어 수치 식별자]와 같은 형태에서 우선권 큐에서 아이템을 삽입하는 것이다. 이러한 정수들은 점수에 의해 정렬되기 때문에, 그들은 우선 순위 큐로 직접 삽입될 수 있고, 이것은 레코드를 포함하는 큐를 갖는 것에 비해 훨씬 빠르다.
앞의 방법은 입력의 속성을 활용함에 의해 표준 최적-첫 번째 서치 상에서 개선할 수 있고, 즉 [memo:1, veto:2, mono:2, redo:2, mojo:2, ...]와 같은 리스트에서 점수가 단조 증가하고, 한번 이상 큐에 동일한 세 단어 아이템을 삽입하기 위한 시도가 없음을 보장한다. 이것은 '보여진(seen)' 노드의 세트를 계속 파악할 필요를 제거하고, 차례로 알고리즘을 상당히 속도 증가시킨다.
사용자가 단어의 음성학적 유사성 및 일반적인 오자(misspellings)의 근접한 키를 누름에 의해 키를 잘못 자판 입력하기 보다 쉽기 때문에, 키보드 상에서 관련 키 상에서 키들의 사이의 거리를 감안하는 편집 거리의 바람직한 변형이 있음을 언급할 필요가 있다. 또한, 출원인의 이전 특허 출원에서 언급된 것처럼, 지리적 위치 분석 방법과 관련한 실시예에서, 단어의 리턴되는 후보 조합 또는 육지 상에서 알려진 위치를 포함하는 그들의 분석된 위치만에 대한 선호가 있다. 예를 들어, 지리적 위치에 대한 허용가능한 단어의 사전에서, 단어 25001-40000(1로부터 번호가 매겨짐)는 바다 위치만을 위해 사용될 수 있다. 세 단어들이 아래에서 언급되는 것처럼 그들이 육지 위치를 위해 사용된 1-25000 범위에서 단어에 대해 연관될 수 있기 때문에 변형 프로세서에서 사용될 수 있지만, 선택적 변형 프로세스가 제거된다면 이러한 단어 25001-40000를 위한 점수를 연산할 필요가 없다.
선택적 변형 프로세스에서, 단어가 일부 합법적인 세 단어 조합에서 발생되지 않는다면, 가능한 후보의 세트에 대한 변형 단어를 추가하는 것은 의미가 없다. 관계의 '변형이 있다'('is a variant of' )는 것은 재귀적이고, 즉 'amounted'가 'amount'의 변형인 경우에만 'amount'가 'amounted'의 변형이고, 그것은 사전에서 40000개의 단어에 대해 가능한 변형 종료를 연산할 필요가 있다는 것이 된다. 무엇이 변형인가의 개념은 주관적인 성분을 갖고, 이러한 이유에 대해 최선의 결과는 프로그램 실행 동안 변형을 연산하는데 반대로서 40000개의 단어의 각각에 대해 변형의 리스트를 사전 연산하고 응용의 일부로서 그것을 분배함에 의해 획득될 수 있다. 이것은 또한 종료 데이터의 품질이 메인 응용 프로그램에 대해 어떠한 변경도 요구하지 않고 개선될 수 있다.
이러한 선택적 사전-연산 방법은 두 개의 추가적인 장점을 갖는다. 첫 번째로, 프로그램 실행 동안 변형을 연산하는 것은 프로그램을 속도를 늦출 수 있다. 두 번째로, 프로그램으로 상당한 추가 코드의 삽입을 포함할 수 있고, 이러한 종류의 코드의 양은 추가적인 언어가 시스템에 부가됨에 따라 증가할 필요가 있다.
종료 오프라인을 연산함에 포함되는 도전이 있고, 40000개의 단어의 각각에 대해 변형 단어를 리스팅하는 것은 상당한 공간을 차지한다. 상기 공간은 각 단어 리스트(언어당 하나)에 대해 요구되며, 전체 공간 사용은 바람직하지 않을 수 있다. 이러한 도전에 대한 어떠한 해결은 그것이 주어진 단어의 변형의 세트의 결정을 신속하게 허용해야 하는 추가적인 문제에 직면하고 이것은 따라서 'zip'과 같은 압축 스킴(schemes)을 하지 못하게 한다.
이러한 도전에 대한 하나의 해결은 다음의 관찰에 기초한다.
- 단어리스트는 종합적인 경향이 있다; 즉, 그들은 일반적인 화자의 어휘에서 거의 모든 단어를 포함한다. 그 결과, 단어 리스트에서 그들 자신인 변형을 단지 연산하는 것에 의해 수행에서 무시할만한 손실이 있다.
- 관계의 '변형이 있다'는 것은 동등한 관계이고, 예를 들어, 재귀적이고, 대칭적이고 연결(transitive)된다. 그 결과, 단어 리스트를 유사한 단어의 등가 클래스들로 구획하는 것이 가능하다. 단어 리스트는 고정된 순서에서 분배된다. 그 결과, 단어 리스트에서 그 위치를 제공하는 정수와 같이 수치 식별자에 의해 각 단어를 표시하는 것이 가능하다. 즉, 첫 번째 단어에 대한 '1', 두 번째에 대한 '2' 등. 해결책은 다음을 포함한다. 연관된 단어들의 각 클래스에 대해, 가상의 예시는 다음과 같다
단어 30 : "index", 단어 792: "indexed" 및 단어 34967: "indexing"
우리는 일부 임의의 예를 들어, 알파벳 순서에서 단어를 위치시킨다. 그리고나서, 순서화된 리스트에서 각 단어의 수에 대해, 마지막을 제외하고, 우리는 리스트 상에서 다음 단어의 수에 연관시켰고; 마지막 단어에 대해, 우리는 첫 번째 단어의 수를 연관시켰다. 따라서, 예를 들어, 우리는 다음을 갖는다.
30 -> 792
792 -> 34967
34967 -> 30
일단 우리가 관련된 단어의 모든 클래스에 대해 이러한 절차를 적용하면, 우리는 다른 이러한 수로 1 내지 40,000에서 각 수를 연관시켰다. 이러한 정보는 40,000의 어레이에서 매우 컴팩트하게 저장될 수 있다. 모든 입력은 2 바이트를 차지하기 때문에, 전체 어레이는 당지 최대 80 킬로바이트를 차지할 것이고, 가령, 단어 리스트 그 자체와 비교하여 무시할만한 공간이다.
알고리즘에서 이전 단계는 단어가 아닌, 이러한 단어와 연관된 수를 리턴한다. 단어와 연관된 수가 일단 주어지면, 후속하는 절차를 사용하여 (많은 수의) 연관된 단어를 매우 빠르게 공간 오버헤드 없이 찾는 것은 어렵지 않다. 그 수로부터 그와 관련된 수로 이동한다. 이렇나 절차를 시작하는 수로 돌아올 때까지 반복한다. 예를 들어, 'indexing'으로 시작하면, 다음과 같이 진행될 것이다: 34967 -> 30 -> 792 -> 34967. 이러한 절차 동안 조우하는 모든 수는 고려에서 원단어에 대해 연관된 단어(index, indexed) 를 표시한다. 이러한 단어는 그들이 리스트레서 이미 있지 않은 한, 가능성의 리스트에 추가된다.
관련된 단어를 추가한 이후, 25001-40000 범위에서 단어(예를 들어, 위의 'indexing')는 위의 상세한 이유에 대해 폐기될 수 있다.
이전의 선택적 단계와 병합될 수 있는 재배열된 변형과 관련한 다른 선택적인 단계는 최선의 최초의 서치 절차에서 사용된 내포적인 그래프를 변경하는 것을 포함한다. 이러한 변경은 주어진 n 단어의 모든 (n!-1) 중대한 재배열(nontrivial reorderings)이 동일한 점수를 가질 것이라는 사실을 이용하는 것에 의해 매우 빠르게 이루어질 수 있다. n=3인 경우, 중대한 재배열의 수는 5일 수 있다.
지리적 위치 방법에 특수한 추가적인 선택적 거리 측정 단계에서, 단어 후보의 1000개의 선택된 조합의 각각의 위치를 연산하는 단계는 바람직하게 단어 자체에 반대되는 단어의 수치 식별자(수가 할당된 사전 단어 리스트)를 갖는 출원인의 이전 특허 출원에 개시된 알고리즘을 작용함에 의해, 최초 알고리즘의 다섯 단계의 이러한 하나를 줄이는 것으로서, 속도가 증가될 수 있다. 그리고 나서, 사용자로부터 1000개의 가능성의 각각의 거리가 바람직하게 표준 구형 거리 해버사인 공식(haversine formula)(대안적인 방법에 대해 연산에 대해 더 정확하고 더 빠른)을 사용하여 연산된다. 이것에 후속하여, 후보의 점수는 사용자에 의해 거리의 적절한 기능을 추가함에 의해 변경된다. 바람직하게 이것은 다음의 형태를 갖는다.
상수 * log (1 + 사용자에 대한 거리), 여기서, 사용자에 대한 거리는 바람직하게 미터로 측정됨.
이러한 관점에서, 1000개의 가능성의 리스트를 정렬하는데 전형적일 수 있고, 10개의 최선의 옵션을 취하고, 다음 단계로 이것들을 통과시킨다. 실제로, 이것은 충분하게 빠른 것으로 발견되었다. 이 케이스는 아니지만(예를 들어, '1000'이 장래에 더 큰 수에 의해 대체된다면), 어떠한 주어진 단계에서 단지 10개의 최선의 제안을 계속 파악하기 위해 우선 순위 큐를 사용하는 것이 가능하고, 1000개의 아이템의 최종적 정렬을 위한 필요를 회피한다.
도로와 같은 가장 가까운 지도 구성에 대해 거리의 연산을 포함하는 다른 선택적인 거리 측정에서, 이러한 단계의 구성은 정확하게 '1000'이 가령 '10'에 의해 대체된 위에서 언급된 이전 단계의 그것이다.
여기서 개시된 방법에서, 대부분의 케이스에서, n(=x) 입력 단어의 각각에 대해 m 후보 단어를 식별하기 위해 처리되기 위한 단어의 선택을 위해 입력 스트링의 단어가 기초를 형성하는 것이 구상되고 있다. 그러나 절차가 사용자가 예를 들어, 'meo.amm.un.naild', 예를 들어, 세 개의 대신 네 단어인 잘못된 수의 유사-단어(quasi-words)를 입력하였을 때 케이스를 다루기 위해 변경될 수 있다. 너무 많은 입력 단어가 있다면, 다른 단어들은 함께 '융합'('fused')될 수 있고, 그리고 나서 여기서 기재된 절차가 적용된다. 예를 들어, 방법은 to 'meo+amm.un.naild', 'meo.amm+un.naild', 'meo.amm.un+naild'에 대해 적용될 수 있고, '+'는 단어 분리 문자(word separator)라기보다는 '더미' 문자이다. 만약 너무 적은 입력 단어가 있다면, 하나 이상의 입력 단어는 다른 위치로 분리될 수 있고, 방법은 각 가능성에 대해 적용되고 다시 최선의 결과를 취한다.
본 발명은 도면 및 앞의 상세한 설명에서 상세하게 도시되고 설명되었지만, 그것은 도시적인 것인 것으로 고려되어야 하고 문자에서 제한적인 것이 아니며, 단지 예시적인 실시예들이 도시되고 설명된 것이고, 어떠한 방식으로든 본 발명의 범위를 제한하지 않는다. 여기서 설명된 구성들의 어느 것도 어떠한 실시예에 사용될 수 있음이 이해될 것이다. 도시적인 실시예들은 사로에 대해 또는 여기서 언급되지 않은 다른 실시예들에 대해 배타적이지 않다. 따라서, 본 발명은 앞서 설명된 도시적인 실시예들의 하나 이상의 조합을 포함하는 실시예들을 제공할 수 있다. 여기서 설정된 것처럼 본 발명의 변경과 변형들은 그 사상과 범위로부터 벗어남이 없이 이루어질 수 있고, 따라서, 단지 이러한 한정들은 첨부하는 청구항들에 의해 지시된 것으로 이해되어야 한다.
후속하는 청구항들과 본 발명의 선행하는 설명에서, 문맥이 언어를 표현하거나 필요한 결과를 표현함에 의해 다르게 요구되는 것을 제외하고, 본 발명의 다양한 실시예들에서 추가적인 구성의 존재 또는 추가를 불가능하게 하기 위한 것이 아니라 언급된 구성의 존재를 특정하기 위해, 단어 "포함한다" 또는 "포함하다" 또는 "포함하는"과 같은 변형은 포함된 의미로 사용된다.
어떠한 선행 기술 공개가 여기서 언급되었다면, 이러한 참조는 공개가 기술분야에서 일반적인 지식의 일부를 형성하는 허용을 구성하지 않는 것임이 이해되어야 한다.

Claims (17)

  1. 하나 이상의 다수 단어 후보를 제안하기 위한 컴퓨터에서 구현되는 방법에 있어서, 상기 방법은
    a) 전자 디바이스의 프로세서에서 다수의 입력 스트링을 수신하고;
    b) 수신된 입력 스트링의 다수의 n개의 선택된 각각에 대해, q개의 단어의 고정된 사전으로부터 m개의 후보를 선택하되, 여기서 m, n, q는 양의 정수를 포함하고, 여기서 n은 2 이상이고, m은 q에 비해 작고;
    c) 후보 단어의 결과적인 mn 개 조합으로부터 단어의 후보 조합의 서브셋 p를 선택하되, 여기서 p는 양의 정수이고, p는 mn보다 작고, 후보 단어의 결과적인 mn 개 조합의 각 후보 단어의 조합은 n개 단어를 포함하고;
    d) 상기 전자 디바이스에서 n개 단어의 후보 조합의 선택을 위해 n개 단어의 후보 조합들의 서브셋 p로부터 n개 단어의 후보 조합의 리스트를 제출하는 단계들을 포함하는 방법.
  2. 제 1 항에 있어서,
    수신된 입력 스트링의 다수의 n개의 선택된 부분은 n=x인 수신된 단어 입력 스트링을 포함하는 x개의 단어를 포함하는 방법.
  3. 제 1 항에 있어서,
    단계 a)는 수신된 입력 스트링의 n개의 선택된 부분의 각각에 대해 q개의 단어의 고정된 사전으로부터 최고의 점수 또는 랭킹에 근거하여 m개의 후보 단어를 선택하도록 수신된 입력 스트링의 n개의 선택된 부분의 각각에 대해 고정된 사전에서 단어 q의 일부 또는 모두에 대해 개별적인 점수 또는 랭킹을 결정하거나 할당하는 것을 포함하는 방법.
  4. 제 3 항에 있어서,
    수신된 입력 스트링의 n개의 선택된 부분의 각각에 대해 고정된 사전에서 일부 또는 모든 단어에 대한 점수 또는 랭킹은 수신된 입력 스트링의 n개의 선택된 부분의 각각에 대한 문자 스트링과 고정된 사전에서 단어 q의 일부 또는 전체에 대한 문자 스트링의 사이의 비교에 기반한 문자 기반 거리 점수를 포함하는 방법.
  5. 제 4 항에 있어서,
    문자 기반 거리 점수는 편집 거리 점수, 가중된 편집 거리 점수, 레벤슈타인 편집 거리 점수(Levenshtein edit distance score), 가중된 레벤슈타인 편집 거리 점수, 이동을 고려한 편집 거리 점수, 이동을 고려한 가중된 편집 거리 점수, 이동을 고려한 레벤슈타인 편집 거리 점수, 이동을 고려한 가중된 레벤슈타인 편집 거리 점수를 포함하는 방법.
  6. 제 1 항에 있어서,
    단계 b)는 단어의 후보 조합의 서브셋 p를 최고의 점수 또는 랭킹에 기반하여 선택하도록 단어의 후보 조합의 일부 또는 전체에 대해 개별적인 점수 또는 랭킹을 결정하거나 할당하는 것을 포함하는 방법.
  7. 제 6 항에 있어서,
    단계 b)는 이진 힙(binary heap) 상에서 선택적으로 구현되는 우선 순위 큐 데이터 구조를 사용함에 의해 단어의 후보 조합의 서브셋 p를 선택하는 것을 포함하는 방법.
  8. 제 1 항에 있어서,
    고정된 사전은 단어의 배열된 리스트를 포함하는 방법.
  9. 제 1 항에 있어서,
    단어의 후보 조합은 각각 고유한 양태로 분석될 수 있고, 방법은 단어의 후보 조합의 일부 또는 전체를 그들의 고유한 양태로 분석하고 전자 디바이스에서 표시를 위해 고유하게 분석된 양태의 서브셋을 선택하는 단계들을 더 포함하는 방법.
  10. 제 9 항에 있어서,
    단어의 후보 조합에 대한 분석된 양태는 고유한 지리적 위치를 포함하는 방법.
  11. 제 10 항에 있어서,
    각 분석된 지리적 위치에 대한 랭킹 또는 점수는 전자 디바이스의 현재 또는 마지막에 알려진 위치에 대한 각 분석된 지리적 위치의 거리 및/또는 가장 인접한 미리 결정된 지도 기반 구성에 대한 각 분석된 지리적 위치의 거리의 결정을 포함하는 방법.
  12. 제 1 항에 있어서,
    방법은 전자 디바이스 상에서 완전하게 구현되는 방법.
  13. 제 1 항에 있어서,
    방법은 서버 기반 방법인 방법.
  14. 수신된 입력 스트링에 기반하여 하나 이상의 다수 단어 후보를 제안하기 위한 모바일 전자 디바이스에 있어서, 디바이스는
    기계 판독가능한 지시를 저장하는 메모리;
    제 1항에 따른 방법의 단계들을 구현하기 위해 상기 기계 판독가능한 지시를 실행하도록 구성된 프로세서를 포함하는 디바이스.
  15. 수신된 입력 스트링에 기반하여 하나 이상의 다수 단어 후보를 제안하기 위한 시스템에 있어서, 시스템은
    기계 판독가능한 지시를 저장하는 메모리와 상기 기계 판독가능한 지시를 실행하도록 구성된 프로세서를 갖는 서버;
    기계 판독가능한 지시를 저장하는 메모리와 상기 기계 판독가능한 지시를 실행하도록 구성된 프로세서를 갖는 모바일 디바이스;
    상기 서버와 모바일 디바이스는 네트워크 상에서 서로에 대해 통신되도록 구성되고;
    디바이스에서 수신된 스트링에 기반하여 모바일 전자 디바이스에 의해 서버로 전송된 요청에 응답하여, 서버가 제 1 항에 따른 방법의 단계들을 구현하는 시스템.
  16. 제 1 항에 따른 방법의 단계들을 구현하기 위한 모바일 전자 디바이스의 프로세서에 의해 실행될 수 있는 기계 판독가능한 지시를 저장하는 컴퓨터 판독가능한 매체.
  17. 제 1 항에 따른 방법의 단계들을 구현하기 위한 서버의 프로세서에 의해 실행될 수 있는 기계 판독가능한 지시를 저장하는 컴퓨터 판독가능한 매체.
KR1020177021594A 2015-01-06 2016-01-02 전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법 KR102436373B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1500105.0 2015-01-06
GB1500105.0A GB2549240A (en) 2015-01-06 2015-01-06 A method for suggesting one or more multi-word candidates based on an input string received at an electronic device
PCT/EP2016/050001 WO2016110454A1 (en) 2015-01-06 2016-01-02 A method for suggesting one or more multi-word candidates based on an input string received at an electronic device

Publications (2)

Publication Number Publication Date
KR20170124536A KR20170124536A (ko) 2017-11-10
KR102436373B1 true KR102436373B1 (ko) 2022-08-25

Family

ID=55077503

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177021594A KR102436373B1 (ko) 2015-01-06 2016-01-02 전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법

Country Status (8)

Country Link
US (1) US10909318B2 (ko)
EP (1) EP3243141A1 (ko)
JP (1) JP6834109B2 (ko)
KR (1) KR102436373B1 (ko)
CN (1) CN107408109B (ko)
GB (1) GB2549240A (ko)
WO (1) WO2016110454A1 (ko)
ZA (1) ZA201705192B (ko)

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092567B2 (en) * 2002-11-04 2006-08-15 Matsushita Electric Industrial Co., Ltd. Post-processing system and method for correcting machine recognized text
US7382358B2 (en) * 2003-01-16 2008-06-03 Forword Input, Inc. System and method for continuous stroke word-based text input
US7584093B2 (en) * 2005-04-25 2009-09-01 Microsoft Corporation Method and system for generating spelling suggestions
US9606634B2 (en) * 2005-05-18 2017-03-28 Nokia Technologies Oy Device incorporating improved text input mechanism
US8036878B2 (en) * 2005-05-18 2011-10-11 Never Wall Treuhand GmbH Device incorporating improved text input mechanism
US7769804B2 (en) * 2006-01-17 2010-08-03 Microsoft Corporation Server side search with multi-word word wheeling and wildcard expansion
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
US8170869B2 (en) * 2007-06-28 2012-05-01 Panasonic Corporation Method to detect and assist user intentions with real time visual feedback based on interaction language constraints and pattern recognition of sensory features
US8190628B1 (en) * 2007-11-30 2012-05-29 Google Inc. Phrase generation
US7953692B2 (en) 2007-12-07 2011-05-31 Microsoft Corporation Predicting candidates using information sources
US8232973B2 (en) * 2008-01-09 2012-07-31 Apple Inc. Method, device, and graphical user interface providing word recommendations for text input
US8458171B2 (en) * 2009-01-30 2013-06-04 Google Inc. Identifying query aspects
US8838453B2 (en) * 2010-08-31 2014-09-16 Red Hat, Inc. Interactive input method
US20120072013A1 (en) * 2010-09-16 2012-03-22 Kabushiki Kaisha Toshiba Character recognition apparatus, sorting apparatus, sorting control apparatus, and character recognition method
KR101368594B1 (ko) * 2010-11-10 2014-02-27 라쿠텐 인코포레이티드 관련어 등록 장치, 정보 처리 장치, 관련어 등록 방법 및 기록 매체
US8290772B1 (en) 2011-10-03 2012-10-16 Google Inc. Interactive text editing
US9235654B1 (en) * 2012-02-06 2016-01-12 Google Inc. Query rewrites for generating auto-complete suggestions
US9483461B2 (en) * 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US10296581B2 (en) * 2012-06-06 2019-05-21 Apple Inc. Multi-word autocorrection
US20150149482A1 (en) * 2013-03-14 2015-05-28 Google Inc. Using Live Information Sources To Rank Query Suggestions
US20140282203A1 (en) * 2013-03-15 2014-09-18 Research In Motion Limited System and method for predictive text input
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
US9298276B1 (en) * 2013-12-31 2016-03-29 Google Inc. Word prediction for numbers and symbols
US9582493B2 (en) * 2014-11-10 2017-02-28 Oracle International Corporation Lemma mapping to universal ontologies in computer natural language processing
GB2535439A (en) 2015-01-06 2016-08-24 What3Words Ltd A method for suggesting candidate words as replacements for an input string received at an electronic device
US10380144B2 (en) * 2015-06-16 2019-08-13 Business Objects Software, Ltd. Business intelligence (BI) query and answering using full text search and keyword semantics

Also Published As

Publication number Publication date
US10909318B2 (en) 2021-02-02
JP2018506114A (ja) 2018-03-01
JP6834109B2 (ja) 2021-02-24
CN107408109B (zh) 2021-02-02
ZA201705192B (en) 2018-11-28
WO2016110454A1 (en) 2016-07-14
GB2549240A (en) 2017-10-18
KR20170124536A (ko) 2017-11-10
CN107408109A (zh) 2017-11-28
US20180024987A1 (en) 2018-01-25
EP3243141A1 (en) 2017-11-15

Similar Documents

Publication Publication Date Title
JP5462361B2 (ja) マップサーチのためのクエリパーシング
US8914275B2 (en) Text prediction
JP5604507B2 (ja) データベース内のオブジェクトを探索する方法
EP3153978B1 (en) Address search method and device
US9235654B1 (en) Query rewrites for generating auto-complete suggestions
US11017169B2 (en) Method for suggesting candidate words as replacements for an input string received at an electronic device
US20120323839A1 (en) Entity recognition using probabilities for out-of-collection data
KR20090028705A (ko) 가변 압축을 가지는 적응형 인덱스
CN110147421B (zh) 一种目标实体链接方法、装置、设备及存储介质
CN103514236A (zh) 检索应用中基于拼音的检索条件纠错提示处理方法
CN103164408A (zh) 基于垂直搜索引擎的信息存储、查询方法及其装置
KR101379128B1 (ko) 사전 생성 장치, 사전 생성 방법 및 사전 생성 프로그램을 기억하는 컴퓨터 판독 가능 기록 매체
US20150356173A1 (en) Search device
KR102436373B1 (ko) 전자 디바이스에서 수신된 입력 스트링에 기반한 하나 이상의 다수 단어 후보들을 제안하는 방법
US11281736B1 (en) Search query mapping disambiguation based on user behavior
CN115796176A (zh) 分词处理方法、计算机设备、存储介质和计算机程序产品
CN111611471A (zh) 一种搜索方法、装置及电子设备
WO2022019275A1 (ja) 文書検索装置、文書検索システム、文書検索プログラム、および文書検索方法
JP6571053B2 (ja) 施設検索装置、施設検索方法、コンピュータプログラム及びコンピュータプログラムを記録した記録媒体
KR102227741B1 (ko) 타이틀 매칭 점수를 기반으로 한 장소 검색 방법 및 시스템
CN112182283A (zh) 歌曲搜索方法、装置、网络设备及存储介质
OA18355A (en) A method for suggesting one or more multiword candidates based on an input string received at an electronic device.
EP3800562A1 (en) Methods, apparatus, and computer program products for fuzzy term searching
JP6577925B2 (ja) 施設検索装置、施設検索方法、コンピュータプログラム及びコンピュータプログラムを記録した記録媒体
KR20230069046A (ko) 소프트웨어 가속 게놈 판독 매핑

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
GRNT Written decision to grant