KR102306899B1 - 텍스트 입력 시스템 및 방법 - Google Patents

텍스트 입력 시스템 및 방법 Download PDF

Info

Publication number
KR102306899B1
KR102306899B1 KR1020157022618A KR20157022618A KR102306899B1 KR 102306899 B1 KR102306899 B1 KR 102306899B1 KR 1020157022618 A KR1020157022618 A KR 1020157022618A KR 20157022618 A KR20157022618 A KR 20157022618A KR 102306899 B1 KR102306899 B1 KR 102306899B1
Authority
KR
South Korea
Prior art keywords
string
input pattern
candidate
input
computer
Prior art date
Application number
KR1020157022618A
Other languages
English (en)
Other versions
KR20150109447A (ko
Inventor
샤이라자 굼마디다라
프리마 도나 쿠리안
산딥 예루보루
수미트 고스와니
수닐 모타파르티
Original Assignee
키포인트 테크놀로지스 인디아 프라이비트 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 키포인트 테크놀로지스 인디아 프라이비트 리미티드 filed Critical 키포인트 테크놀로지스 인디아 프라이비트 리미티드
Publication of KR20150109447A publication Critical patent/KR20150109447A/ko
Application granted granted Critical
Publication of KR102306899B1 publication Critical patent/KR102306899B1/ko

Links

Images

Classifications

    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • 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
    • 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
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • 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)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Input From Keyboards Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명은 텍스트를 전자 장치(10) 내로 입력하기 위한 컴퓨터-실행 방법에 관한 것이다. 복수의 키(40)들을 가지는 가상 키보드(30)는 디스플레이 스크린(20) 상에 나타내고 하나 이상의 문자들이 각각의 키와 연관된다. 입력 패턴은 사용자에 의해 생성되고 입력 패턴에 또는 입력 패턴 근처에 위치된 키(40)들이 식별된다. 가상 키보드(30) 내의 키(40)들은 미리 정의된 그룹(50A, 50B, 50C)에 할당되어, 각각의 그룹이 복수의 상기 키(40)들을 포함한다. 입력 패턴은 상기 하나 이상의 식별된 키(40)들 각각이 배열되는 미리 정의된 그룹들에 따라 인코딩된다. 후보 단어 또는 단어들은 인코딩된 입력 패턴을 기초로 하여 전자 장치(10) 내로 입력되도록 식별된다. 본 발명은 또한 입력 및 후보 스트링 길이들; 및/또는 상한/하한 입력 길이 임계값들; 및/또는 유효/무효 스트링 조합들의 식별 사이의 상관관계를 기초로 하여 후보 단어들을 식별하기 위한 컴퓨터로 실행되는 방법들에 관한 것이다. 본 발명은 또한 컴퓨터 장치(10)와 같은 대응 시스템에 관한 것이다.

Description

텍스트 입력 시스템 및 방법 {TEXT INPUT SYSTEM AND METHOD}
본 발명은 컴퓨터로 실행되는 방법, 컴퓨팅 장치, 컴퓨터 명령어 세트, 및 컴퓨터-판독가능한 매체에 관한 것이다.
터치 감응식 스크린(touch sensitive screen)에 가상 키보드를 사용하여 알파벳 텍스트를 입력하는 방법 및 시스템을 제공하는 것이 US 7,098,096 호로부터 알려져 있다. 상기 방법 및 시스템은 터치 감응식 스크린과의 연속적인 접촉을 검출한다. 그에 의해 사용자는 연속적인 입력 패턴을 추적하여 하나 이상의 후보 단어들이 선택을 위해 식별된다. 그러나, 입력 패턴은 적합한 후보 단어들을 생성하기 위해서 단어의 첫 글자로부터 마지막 글자까지 추적되어야 한다.
이러한 배경에 대처하고자 본 발명이 개발되었다. 적어도 특정 실시예들에서, 본 발명은 종래 기술 시스템들의 문제점들 및 단점들의 적어도 일부를 극복하거나 개선할 수 있다.
본 발명의 양태들은 컴퓨터로 실행되는 방법, 컴퓨팅 장치, 컴퓨터 명령어 세트, 및 컴퓨터-판독가능한 매체에 관한 것이다.
본 발명의 추가의 양태에 따라서, 텍스트를 전자 장치에 입력하기 위한 컴퓨터로 실행되는 방법이 제공되며, 상기 방법은,
하나 이상의 문자들과 각각 연관되어 있는 복수의 키들을 포함하는 가상 키보드를 디스플레이 스크린에 나타내는 단계, 및
사용자에 의해 생성된 입력 패턴을 검출하고 상기 입력 패턴에 위치되거나 입력 패턴 임계값에 위치된 상기 키들 중의 하나 이상의 키를 식별하는 단계를 포함하며,
가상 키보드 내의 키들은 복수의 상기 키들을 각각 포함하는 미리 정의된 그룹들에 할당되며, 상기 방법은
상기 하나 이상의 식별 키들의 각각이 배열되는 미리 정의된 그룹들에 따라서 입력 패턴을 인코딩하는 단계, 및
인코딩 입력 패턴에 기초하여 전자 장치 내에 입력될 하나 이상의 후보 단어들을 식별하는 단계를 포함한다.
상기 방법은 사용자에 의한 선택을 위한 후보 단어들에 대한 식별을 용이하게 하도록 입력 패턴을 인코딩하는 단계를 포함한다.
하나 이상의 문자들이 각각의 상기 키들과 연관될 수 있다. 상기 방법은 상기 입력 패턴에 또는 입력 패턴 근처에 각각의 키 위치와 연관된 문자들로 구성되는 문자 스트링(character string)을 생성하는 단계를 포함할 수 있다. 상기 문자 스트링 내의 문자들은 입력 패턴이 상기 하나 이상의 키들을 추적하는 순서를 일치시키도록 순차적으로 배열된다.
하나 이상의 후보 단어들이 데이터베이스로부터 선택될 수 있다. 데이터베이스는 예를 들어, 하나 이상의 사전들을 포함할 수 있다. 데이터베이스는 휘발성 또는 비휘발성 메모리와 같은 저장 장치에 저장될 수 있다. 후보 단어들은 데이터베이스에 저장된 하나 이상의 단어들 세트들로부터 식별될 수 있다. 데이터베이스 내의 각각의 세트 내에 저장된 단어들은 미리 정의된 스트링 조합을 포함하거나 그 조합으로 구성될 수 있다. 따라서, 그 단어들은 미리 정의된 스트링 조합들에 기초하여 그룹들로 목록화될 수 있다. 상기 방법은 입력 패턴의 적어도 일부분에 대응하는 스트링 조합에 기초하여 상기 하나 이상의 세트들을 식별하는 단계를 포함할 수 있다. 상기 하나 이상의 세트들 내의 단어들은 예를 들어, 빈도 및/또는 내용 데이터(content data)에 기초하여 사전-랭킹된다.
입력 패턴의 일부는 입력 패턴의 초기 부분일 수 있다. 따라서, 스트링 조합은 후보 단어의 시초에 문자 스트링과 대응할 수 있다. 스트링 조합은 바이그램(bigram) 또는 트라이그램(trigram)을 포함하거나 이들로 이루어 질 수 있다. 바이그램 또는 트라이그램은 입력 패턴의 시작 지점 및 하나 이상의 후속 코너 지점들을 참조하여 식별될 수 있다. 바이그램 또는 트라이그램 리스트는 오프라인으로 또는 오프라인에 기초한 그리고 학습된 사용자 입력 데이터에 기초한 실행시간에서 분류될 수 있다.
상기 방법은 입력 패턴의 길이를 결정하는 단계를 포함할 수 있다. 입력 패턴의 길이는 입력 패턴으로부터 측정될 수 있거나 예를 들어, 입력 패턴으로부터 유도되는 문자 스트링에 기초하여 계산될 수 있다. 임계값 입력 패턴 길이는 측정된 입력 패턴 길이에 기초하여 계산될 수 있다. 단어들의 최종 리스트는 하한 임계값 입력 패턴 길이보다 더 작은 입력 패턴 길이 및/또는 상한 임계값 입력 패턴 길이보다 더 큰 입력 패턴 길이를 갖는 단어들을 제거함으로써 선택될 수 있다. 입력 패턴 길이는 상한 길이 임계값 및/또는 하한 길이 임계값에 의해 정의될 수 있다.
미리-정해진 키들의 그룹들은 각각 가상 키보드 내의 영역 또는 클러스터에 대응할 수 있다. 예를 들어, 미리-정해진 그룹들은 가상 키보드 내의 상기 키들의 열(row)에 대응할 수 있다.
고유 식별자가 상기 미리-정해진 그룹들 각각에 연관될 수 있다. 고유 식별자는 예를 들어, 정수 또는 문자를 포함할 수 있다. 입력 패턴은 하나 이상의 식별된 키들 각각이 배열되는 미리-정해진 그룹들과 연관된 고유 식별자들에 기초하여 인코딩될 수 있다.
데이터베이스는 복수의 단어들을 포함하며 입력 시퀀스 코드는 각각의 단어에 대해 저장될 수 있다. 입력 시퀀스 코드는 단어의 각각의 글자가 배열되는 미리-정해진 그룹들에 대해 정의된 고유 식별자로부터 유도될 수 있다. 입력 시퀀스 코드를 저장한다기보다는, 입력 시퀀스 코드는 각각의 단어에 대해 계산될 수 있다. 입력 시퀀스 코드는 예를 들어, 적어도 실질적으로 실시간으로 계산될 수 있다.
상기 방법은 또한, 입력 패턴의 길이를 측정하는 단계 및 상기 측정된 길이에 기초하여 상한 길이 임계값 및/또는 하한 길이 임계값을 결정하는 단계를 포함할 수 있다. 상기 방법은 상한 길이 임계값 및/또는 하한 길이 임계값에 기초하여 상기 하나 이상의 후보 단어들을 선택하는 단계를 후속하여 포함할 수 있다. 상기 방법은 예를 들어, 상한 길이 임계값보다 크고/크거나 하한 길이 임계값보다 작은 입력 길이를 갖는 임의의 단어(들)를 제거하는 단계를 포함할 수 있다. 대안으로, 상기 방법은 상한 길이 임계값과 하한 길이 임계값 사이에 있는 입력 길이를 갖는 임의의 단어(들)를 선택하는 단계를 포함할 수 있다.
본 발명의 또 다른 양태에 따라서, 텍스트를 전자 장치에 입력하기 위한 컴퓨터로 실행되는 방법이 제공되며, 상기 방법은
디스플레이 스크린 상에 복수의 키들을 포함하는 가상 키보드를 나타내는 단계 ― 상기 키들은 미리-정해진 그룹들로 배열되고, 각각의 키에 하나 이상의 문자들이 연관됨 ―;
사용자에 의해 생성되는 입력 패턴을 검출하고 상기 연속적인 입력 패턴 상에 또는 그 근처에 위치되는 하나 이상의 상기 키들을 식별하는 단계;
상기 입력 패턴의 길이를 결정하고 상기 측정된 길이에 기초하여 상한 길이 임계값 및/또는 하한 길이 임계값을 계산하는 단계; 및
상기 상한 길이 임계값 및/또는 하한 길이 임계값에 기초하여 전자 장치 내에 입력될 하나 이상의 후보 단어들을 식별하는 단계를 포함한다. 후보 스트링에 대해서, 상기 방법은 상한 및/또는 하한 경로 길이 임계값들을 내에 속하는 스트링의 일부를 식별하는 단계 및 그 후 적절한(또는 최선의) 일치를 제공하는 스트링의 일부를 식별하는 단계를 포함할 수 있다. 상기 방법은 예를 들어, 상한 길이 임계값보다 크고/크거나 하한 길이 임계값보다 작은 입력 길이를 갖는 임의의 단어(들)를 제거하는 단계를 포함할 수 있다.
입력 패턴은 예를 들어, 사용자에 의해 터치스크린 상에 이루어지는 초기 접촉에 대응하는 시작 지점, 및 예를 들어 사용자에 의해 터치스크린 상에 이루어지는 최종 접촉에 대응하는 끝 지점을 포함한다. 본 발명에 설명된 상기 방법은 상기 입력 패턴 상에 또는 그 근처에 위치되는 각각의 키와 연관된 문자들로 각각 이루어지는 하나 이상의 문자 스트링들을 형성하는 단계를 포함할 수 있다. 복수의 문자 스트링들은 각각의 입력 패턴에 대해 형성될 수 있으며, 그 문자 스트링들은 문자 스트링의 상이한 조합들에 대응한다. 상기 방법은 시작 지점 및 시작 지점 내의 또는 그 주위의 어떤 지점 및/또는 끝 지점 및 끝 지점 내의 또는 그 주위의 어떤 지점을 포함하는 문자 스트링의 모든 가능한 조합들을 식별하는 단계를 포함할 수 있다. 문자 스트링은 전자 장치에의 입력을 위한 하나 이상의 후보 단어들을 식별하도록 필터링될 수 있다. 문자 스트링의 필터링은 문자 스트링 내의 다른 문자들과 유효한 조합들을 형성하지 않는 문자 스트링로부터 문자들을 제거하는 것을 포함할 수 있다.
본 발명의 또 다른 양태에 따라서, 텍스트를 전자 장치에 입력하기 위한 컴퓨터로 실행되는 방법이 제공되며, 상기 방법은
복수의 키들을 포함하는 가상 키보드를 디스플레이 스크린 상에 나타내는 단계 ― 각각의 키에 하나 이상의 문자들이 연관됨 ―;
사용자에 의해 생성되는 입력 패턴을 검출하고 상기 입력 패턴 상에 또는 그 근처에 위치되는 각각의 키들과 연관되어 있는 문자들로 구성되는 하나 이상의 문자 스트링들을 형성하는 단계; 및
전자 장치에 입력하기 위한 하나 이상의 후보 단어들을 식별하도록 하나 이상의 문자 스트링들을 필터링하는 단계;를 포함하며,
문자 스트링들을 필터링하는 단계는 각각의 문자 스트링 내에 유효 및/또는 무효 스트링 조합들을 식별하는 단계를 포함한다. 문자 스트링들을 필터링하는 단계는 유효 조합들을 형성하지 않는 문자 스트링로부터 문자들을 제거하는 단계를 포함할 수 있다. 필터링은 예를 들어, 임의의 무효 문자 조합들을 제거하는 단계를 포함할 수 있다. (통상적으로 스트링들의 조합을 포함하는)필터링된 문자 스트링의 비교가 그 후에 후보 단어들을 식별하기 위해 사전에 대해 이루어질 수 있다. 유효 조합들 및/또는 무효 조합들은 룰(rule) 세트에 따라서 미리-정해질 수 있거나 결정될 수 있다. 따라서, 유효 및/또는 무효 조합들은 잠정적으로 오프라인으로 생성될 수 있다.
유효 및/또는 무효 스트링 조합들은 후보 단어(들) 내의 어느 곳에서나 식별될 수 있다. 대안으로, 문자 스트링의 필터링은 후보 단어(들)의 첫머리에서 유효 및/또는 무효 스트링 조합들을 식별하는 단계를 포함할 수 있다.
문자 스트링은 문자 스트링 내의 각각의 후속 문자와 조합하여 문자 스트링 내의 특정 문자가 유효 조합을 형성하는지에 대해 체크하는 단계를 포함할 수 있다. 문자 스트링의 필터링은 문자 스트링의 첫번째 문자에 대해(즉, 입력 패턴의 시작 지점에 대응하여) 시작될 수 있다. 필터링은 문자 스트링 내에 남아 있는 각각의 후속 문자에 대해 반복될 수 있다.
문자들의 조합은 바이그램 또는 트라이그램을 포함하거나 이들로 구성될 수 있다.
문자 스트링은 저장된 후보 스트링과 비교될 수 있다. 비교는 문자 스트링과 저장된 후보 스트링 사이의 스트링 거리를 결정하는 단계를 포함할 수 있다. 스트링 거리는 입력 패턴 내에서 식별되는 코너 지점들에 기초할 수 있다. 예를 들어, 후보 스트링의 코너 지점들은 정의 또는 모델화될 수 있다(코너 지점들은 라인들이 배열(layout) 상의 스트링의 문자들을 연결하도록 그려지는 경우에 각도 및/또는 방향에서 변화가 있게 될 지점들이다). 후보 스트링의 시작 문자(들) 및/또는 끝 문자(들)는 모델화된 입력 패턴의 코너 지점들로서 해석될 수 있다. 그 후에 입력 패턴의 하나 이상의 코너 지점들과 후보 스트링의 하나 이상의 코너 지점들이 일치하도록 비교가 수행될 수 있다. 비교는 예를 들어, 다이나믹 타임 워핑(dynamic time warping; DTW)을 사용하여 수행될 수 있다. DTW 알고리즘의 시퀀스들은 예를 들어, 후보 스트링을 위한 코너 지점들의 제1 세트 및 입력 패턴을 위한 코너 지점들의 제2 세트를 포함할 수 있다.
상기 방법은 상기 입력 패턴 내의 하나 이상의 코너 지점들을 식별하는 단계를 포함할 수 있다. 코너 지점들은 입력 패턴의 방향으로의 지점 변경(즉, 입력 패턴의 정점); 및/또는 입력 패턴의 곡률에서의 국부 변경(통상적으로 국부적 최대 곡률)을 포함할 수 있다. 끼인 각도(included angle) 및/또는 곡률은 상기 하나 이상의 코너 지점들에서 측정될 수 있다. 각각의 코너 지점에서 측정된 끼인 각도 및/또는 곡률에 기초하여 가중치(weighting)가 적용될 수 있다. 예를 들어, 더 작은 코너 지점 각도에 대해서는 더 큰 가중치가 할당될 수 있다. 입력 패턴의 시작 지점 및/또는 끝 지점은 입력 패턴의 코너 지점으로서 해석될 수 있다.
상기 방법은 상기 입력 패턴과 후보 단어의 모델화된 입력 패턴 사이의 상관관계를 결정하기 위해서 패턴 매칭 알고리즘을 적용하는 단계를 포함할 수 있다. 입력 패턴은 데이터베이스 내에 저장된 하나 이상의 후보 단어들에 대해 모델화될 수 있다. 모델화된 입력 패턴은 예를 들어, 사용자들의 입력 히스토리에 기초하여 동적으로 생성되고/되거나 수정될 수 있다. 모델은 예를 들어, 주어진 후보 단어에 대해 추적된 입력 패턴 내에 존재할 수 있는 하나 이상의 코너 지점들의 위치 및/또는 끼인 각도를 식별할 수 있다. 패턴 매칭 알고리즘은 사용자에 의해 추적된 입력 패턴과 후보 단어와 연관된 모델화된(가상) 입력 패턴 사이의 상관관계를 결정할 수 있다. 패턴 매칭 알고리즘은 사용자에 의해 추적된 입력 패턴의 일부와 후보 단어에 대한 모델화된 입력 패턴 사이의 상관관계를 결정할 수 있다. 패턴 매칭 알고리즘은 사용자에 의해 추적된 입력 패턴과 후보 단어의 초두(prefix)와 연관된 모델화된 입력 패턴 사이의 상관관계를 결정할 수 있다.
본 발명의 추가 양태에 따라서, 텍스트를 전자 장치에 입력하기 위한 컴퓨터로 실행되는 방법이 제공되며, 상기 방법은
복수의 키들을 포함하는 가상 키보드를 디스플레이 스크린 상에 나타내는 단계 ― 상기 키들은 미리-정해진 그룹들로 배열되고, 각각의 키에 하나 이상의 문자들이 연관됨 ―;
사용자에 의해 생성되는 입력 패턴을 검출하고 상기 연속적인 입력 패턴 상에 또는 그 근처에 배열되는 상기 키들 중 하나 이상의 키를 식별하는 단계;
상기 입력 패턴과 후보 단어에 대한 모델화된 입력 패턴 사이의 상관관계를 결정하도록 패턴 매칭 알고리즘을 적용하는 단계; 및
상기 상관관계에 기초하여 전자 장치 내에 입력될 상기 후보 단어들 중의 하나 이상의 단어를 식별하는 단계를 포함한다. 모델화된 입력 패턴은 데이터베이스 내에 저장된 하나 이상의 후보 단어들에 대해 생성된 입력 패턴의 가상 모델이다. 모델화된 입력 패턴은 키보드 내의 대응 키들의 알려진 위치들을 참조하여 후보 단어 내의 문자들의 시퀀스로부터 생성될 수 있다. 패턴 매칭 알고리즘은 사용자에 의해 추적된 입력 패턴과 후보 단어와 연관된 모델화된 입력 패턴 사이의 상관관계를 결정할 수 있다. 모델화된 입력 패턴은 예를 들어, 사용자들의 입력 히스토리에 기초하여 동적으로 생성되고/되거나 수정될 수 있다. 모델화된 입력 패턴은 입력 패턴이 추적되는 가상 키보드와 동일한 키보드 정보(예를 들어, 치수들 및 배열)에 기초하여 생성될 수 있다.
모델화된 입력 패턴은 예를 들어, 주어진 후보 단어에 대해 추적된 입력 패턴 내에 존재할 수 있는 하나 이상의 코너 지점들의 위치 및/또는 끼인 각도를 식별할 수 있다. 상기 방법은 상기 입력 패턴의 코너 지점들의 제1 세트를 식별하는 단계, 및 상기 모델화된 입력 패턴의 코너 지점들의 제2 세트를 식별하는 단계를 포함할 수 있다. 패턴 매칭 알고리즘은 코너 지점들의 제1 세트와 제2 세트 사이의 상관관계를 결정할 수 있다. (측정되거나 모델화된)끼인 각도에 기초하여 상기 제1 세트 및/또는 제2 세트의 각각의 코너 지점에 가중치가 적용될 수 있다.
패턴 매칭 알고리즘은 (예를 들어, 시작 지점 및 끝 지점에 대해 결정된)완성 입력 패턴과 후보 단어에 대한 모델화된 완성 입력 패턴 사이의 상관관계를 결정할 수 있다. 패턴 매칭 알고리즘은 사용자에 의해 추적된 입력 패턴의 일부와 후보 단어에 대한 모델화된 입력 패턴의 일부 사이의 상관관계를 결정할 수 있다. 예를 들면, 패턴 매칭 알고리즘은 후보 단어의 일부를 형성하는 문자들의 시퀀스들(예를 들어, 바이그램, 트라이그램 또는 n자명들) 사이의 상관관계를 결정할 수 있다. 패턴 매칭 알고리즘은 사용자에 의해 추적된 입력 패턴과 후보 단어의 초두와 연관된 모델화된 입력 패턴 사이의 상관관계를 결정할 수 있다.
패턴 매칭 알고리즘은 다이나믹 타임 워핑 알고리즘일 수 있다.
후보 단어는 사전 내에 저장될 수 있다. 상기 방법은 후보 단어를 선택하는 단계 및 이어서 선택된 후보 단어의 입력 패턴을 모델화하는 단계를 포함할 수 있다. 후보 단어는 예를 들어, 본 발명에 설명된 다른 기술들을 사용하여 선택될 수 있다.
본 발명의 또 다른 양태에 따라서, 텍스트를 전자 장치에 입력하기 위한 컴퓨터로 실행되는 방법이 제공되며, 상기 방법은
복수의 키들을 포함하는 가상 키보드를 디스플레이 스크린 상에 나타내는 단계 ― 상기 키들의 각각에 하나 이상의 문자들이 연관됨 ―;
사용자에 의해 생성된 입력 패턴을 검출하는 단계; 및
상기 입력 패턴 내의 하나 이상의 코너 지점들을 식별하는 단계를 포함하며;
끼인 각도 및/또는 곡률이 상기 코너 지점에서 측정되며 측정된 끼인 각도 및/또는 곡률에 기초하여 가중치가 적용된다.
본 발명의 또 다른 양태에 따라서, 텍스트를 전자 장치에 입력하기 위한 컴퓨터로 실행되는 방법이 제공되며, 상기 방법은
후보 단어를 입력하기 위해 가상 키보드 상에 추적될 입력 패턴을 모델화하는 단계를 포함하며;
상기 모델화된 입력 패턴은 가상 키보드와 관련하여 하나 이상의 코너 지점들의 위치를 포함한다. 모델화된 입력 패턴은 또한, 상기 하나 이상의 코너 패턴들 각각에서 끼인 각도를 결정할 수 있다. 상기 방법은 또한, 모델화된 끼인 각도에 기초하여 각각의 코너 지점에 가중치를 적용하는 단계를 포함할 수 있다. 상기 방법은 사전 내의 하나 이상의 후보 단어들에 대한 가상 입력 패턴을 모델화하는데 이용될 수 있다. 모델화된 입력 패턴은 상관관계를 측정하기 위해서 예를 들어, 패턴 매칭 알고리즘을 사용하여 추적된 입력 패턴과 비교될 수 있다.
본 발명에서 설명된 방법들은 사용자에 의한 선택을 위해 상기 후보 단어들의 하나 이상의 단어를 출력하는 단계를 포함할 수 있다. 하나 이상의 후보 단어들은 예를 들어, 스크린 또는 디스플레이 상에 나타낼 수 있다. 후보 단어들은 전체 단어들 또는 단어 완성어들 일 수 있다. 후보 단어는 사용자가 후보 단어를 선택함이 없이 인라인으로(즉, 사용자에 의해 입력될 텍스트에 직접적으로) 삽입될 수 있다. 대안으로, 또는 부가적으로, 여러 후보 단어들이 사용자에 의한 선택을 위해 진열될 수 있다. 상기 방법은 전체 단어들을 인라인으로 직접적으로 삽입하는 단계, 및/또는 사용자에 의한 선택을 위한 리스트에 하나 이상의 단어 완성어들을 나타내는 단계를 포함할 수 있다. 전체 단어는 전자 장치 내에 입력되는 텍스트에 자동으로 삽입될 수 있다. 단어 완성어들의 리스트는 나타내어질 수 있으며 상기 단어 완성어들 중의 하나는 일단 그 단어가 예를 들면 리스트 내의 바람직한 단어 완성어를 탭핑(tapping)함으로써 사용자에 의해 선택되면 텍스트에 삽입된다.
본 발명의 추가 양태에 따라서, 본 발명에서 설명된 바와 같은 방법(들)을 실시하기 위한 명령어들을 실행하도록 구성되는 컴퓨팅 기기(또는 장치)가 제공된다. 컴퓨팅 기기는 하나 이상의 전자 프로세서들을 포함할 수 있다. 하나 이상의 전자 프로세서들은 사용중, 본 발명에서 설명된 방법(들)을 실시하기 위한 컴퓨터 명령어들을 수행하도록 구성될 수 있다.
본 발명의 또 다른 양태에 따라서, 컴퓨팅 기기에 의해 실행시 컴퓨팅 기기가 본 발명에서 설명된 방법을 수행하게 하는 컴퓨터 명령어들 세트가 제공된다. 컴퓨터 명령어들은 컴퓨터-판독가능한 매체에 공급될 수 있거나 인터넷과 같은 네트워크 전반으로 전달될 수 있다.
명칭 'n' 및 'k'는 하나 일 수 있는 또는 하나 보다 많을 수 있는 전체 숫자들을 나타내기 위해서 본 발명에서 사용된다. 'n' 및 'k'의 값들은 미리-정해질 수 있거나 동적으로 특정화될 수 있다. 본 발명에서 사용된 용어 "초두"는 단어 앞에 놓이는 접두사로 한정되지 않는다. 오히려, 용어 "초두"는 단어의 맨 앞에 배치되는 초기 문자 조합, 예를 들어 바이그램 또는 트라이그램을 지칭하기 위해서 본 발명에 사용되었다.
본 출원의 범주 내에서, 이전의 문단들에, 특허청구범위 및/또는 다음의 상세한 설명과 도면들에, 그리고 특히 이들의 개별적인 특징들에 명시된 다양한 양태들, 실시예들, 예들 및 대체예들이 독립적으로 또는 임의의 조합으로 취해질 수 있다는 것이 명백하게 예상된다. 하나의 실시예와 관련하여 설명된 특징들은 그러한 특징들이 모순되지 않는 한, 모든 실시예들에 적용될 수 있다.
이후, 본 발명의 실시예가 첨부 도면을 참조하여 단지 예로서 설명될 것이다.
도 1은 본 발명의 실시예에 따라 작동하도록 구성된 휴대 전화를 도시하며,
도 2는 도 1에 도시된 휴대 전화를 형성하는 구성요소들의 개략도를 도시하며,
도 3은 본 발명의 실시예에 따른 방법의 절차 단계들을 약술하는 제1 흐름도를 도시하며,
도 4는 추적된 입력 패턴을 처리하기 위한 절차 단계들을 약술하는 제2 흐름도를 도시하며,
도 5는 후보 단어 선택의 제1 국면을 위한 절차 단계들을 약술하는 제3 흐름도를 도시하며,
도 6은 후보 단어 선택의 제2 국면을 위한 절차 단계들을 약술하는 제4 흐름도를 도시하며,
도 7은 후보 단어 선택의 제3 국면을 위한 절차 단계들을 약술하는 제5 흐름도를 도시한다.
본 발명은 사용자에 의해 추적되는 연속적인 입력 패턴에 기초하여 전자 기기에 텍스트를 입력하기 위한 시스템 및 방법에 관한 것이다. 예로서, 본 발명은 사용자가 연속적인 입력 패턴을 추적할 수 있게 하는 터치스크린을 갖춘 전자 기기에서 실시될 수 있다. 전자 기기는 예를 들어, 휴대 전화 또는 태블릿 컴퓨터를 포함할 수 있다.
본 발명의 실시예에 따라 연속적인 텍스트 입력 시스템을 갖춘 휴대 전화(10)가 도 1에 예시된다. 본 실시예에서, 휴대 전화(10)는 시스템 정보를 나타내고 사용자 입력들들을 수신하기 위한 터치스크린 디스플레이(20)를 포함한다. 터치스크린 디스플레이(20)는 디스플레이(20)에 대한 하나 이상의 접촉 지점들의 X, Y 좌표들을 모니터링하도록 구성된다. 연속적인 추적 패턴은 사용자가 터치스크린 디스플레이(20)와의 접촉을 유지하는 동안(즉, 핑거 다운 이벤트(finger down event)의 검출로부터 핑거 리프트 오프 이벤트의 검출까지) X, Y 좌표들을 수집함으로써 결정될 수 있다. 터치스크린 디스플레이(20)는 또한, 접촉 면적에 기초하여 접촉 압력을 추정할 수 있다.
터치스크린 디스플레이(20)는 스크린 상의 하나 보다 많은 접촉 지점이 언제든 검출될 수 있게 하기 위해서 멀티-터치 감지법을 제공할 수 있다. 터치스크린 디스플레이(20)는 예를 들어, 용량성 터치스크린을 포함할 수 있다. 가상 키보드(30)는 가상 키(40)들로 이루어지는 터치스크린 디스플레이(20) 상에 나타내어 진다. 가상 키(40)들은 각각 제1 문자 스트링에 맵핑되는 1차 라벨을 가지며 선택적으로 또한 제2 문자 스트링에 맵핑되는 2차 라벨을 가진다. 가상 키(40)들이 3열(50A,50B,50C)들로 구성되는 QWERTY-타입 배열으로 배열된다. 사용자는 키(40)의 위치에 대응하는 X, Y 좌표에 터치스크린 디스플레이(20)에 대한 접촉 지점을 형성함으로써 개별적인 키(40)들을 선택할 수 있다. 대안으로, 사용자는 상기 가상 키(40)들의 시퀀스를 선택하기 위한 제스처를 형성하도록 (본 발명에서 터치스크린 디스플레이(20) 전반에 걸친 '글라이딩(gliding)'으로서 지칭되는) 터치스크린 디스플레이(20) 상의 연속적인 입력 패턴을 추적할 수 있다. 본 발명에 따른 시스템 및 방법은 주로 글자 입력 기술에 관한 것이며, 그에 의해서 연속적인 입력 패턴이 사용자에 의해 추적된다. 텍스트 입력 시스템은 예를 들어, 단문 메시지 서비스(SMS) 텍스트 메시지, 이메일 또는 문서의 일부 또는 전체를 구성하기 위해서 휴대 전화(10)에서 작동하는 다양한 어플리케이션들에 텍스트를 입력하는데 사용될 수 있다.
휴대 전화(10)의 개략적인 블록도(100)가 도 2에 도시된다. 휴대 전화(10)는 본 발명의 실시예에 따라서 연속적인 텍스트 입력을 실시하는데 적합한 코어 엔진(120)을 작동시키는 중앙 처리 유닛(110)을 포함한다. 중앙 처리 유닛(110)은 온-보드 메모리(130) 및 터치스크린 디스플레이(20)와 연관된 입력/출력 인터페이스(140)에 커플링된다. 휴대 전화(10)는 또한, 셀룰러 네트워크에 대한 무선 통신을 위한 무선 회로(150) 및 신호 프로세싱 회로(160)를 포함한다. 음성 신호들의 각각의 입력 및 출력을 위해 마이크로폰(170) 및 스피커(180)이 제공된다. 와이파이(등록상표) 네트워크 등에 대한 통신을 설정하기 위해서 지역 무선 송수신기(190)가 또한 제공될 수 있다.
본 실시예의 양태에 따른 코어 엔진(120)은 사용자에 의해 추적되는 연속적인 입력 패턴에 응답하여 터치스크린 디스플레이(20)에 하나 이상의 단어들의 입력을 용이하게 하도록 구성된다. 코어 엔진(120)은 중앙 처리 유닛(110)(예를 들어, 읽기 전용 메모리)에 매설될 수 있거나 중앙 처리 유닛(110)의 작동을 제어하기 위해서 컴퓨터 명령어들 세트를 제공하는 소프트웨어 어플리케이션으로 작동할 수 있다. 코어 엔진(120)은 사용자에 의한 선택을 위한 후보 단어들을 제안하도록 구성된다. 후보 단어들은 온-보드 메모리(130)에 저장된 데이터베이스에 배치된다.
코어 엔진(120)은 '전체 단어'(즉, 완성 단어) 및/또는 '단어 완성어'(즉, 입력 단어의 나머지가 사용자에 의해 입력되는 하나 이상의 문자들에 기초하여 완성되는)의 형태로 연속적인 텍스트 입력 제안들을 대조하기 위한 어플리케이션 프로그래밍 인터페이스(API)를 제공한다. 전체 단어 및 단어 완성어 제안들은 온-보드 메모리(130)에 저장된 데이터베이스 내에 배치되는 후보 단어들로부터 모두 선택된다. 코어 엔진(120)은 (이용가능하다면) 최고(top most) 전체 단어 제안들을 텍스트 입력 필드에 인라인으로 삽입한다. 단어 완성어들은 사용자에 의한 선택을 위해 제안 바 내에 나타내어 진다.
사용자는 터치스크린 디스플레이(120) 상의 입력 패턴을 추적하며 X, Y 좌표들의 시퀀스는 코어 엔진(120)으로 출력된다. 코어 엔진(120)은 상기 전체 단어 및/또는 단어 완성어 제안들을 출력하도록 X, Y 좌표들을 분석한다. 코어 엔진(120)은 중간에(즉, 입력 패턴이 추적되는 동안에) 제안(들)을 출력한다. 코어 엔진(120)으로부터의 출력은 예를 들어, 다음의 매개변수 (a) 시간에 기초한 주기적인 간격들, (b) 매 n차 문자가 입력된 이후, (c) 일부 길이(x)의 매 경로 거리 간격에 도달된 이후에, 및 (d) 사용자가 임의의 문자에 멈추었을 때인 매개변수들 중의 하나 이상의 매개변수에 기초할 수 있다.
연속 플래그(continuation flag)는 X, Y 좌표들의 현 리스트가 이전 요청에서 송신된 X, Y 좌표들의 연속인지를 결정하기 위하여 출력될 수 있다. 디폴트 설정은 연속 플래그를 '거짓(false)'으로서 설정하여야 한다. 이는 손가락을 들어올리기 바로 전에 코어 엔진(120)이 제안을 요청하는 상황에 유용하다. 예를 들면, 사용자가 문자들 "abcde"로 구성된 입력 패턴을 추적하고(trace) 터치스크린 디스플레이(20)를 접촉하여 종료하지 않는 경우, "abcde"의 좌표들은 거짓으로 설정된 연속 플래그 및 제안들에 대한 요청과 함께 코어 엔진(120)으로 전송된다. 이어서 사용자가 입력 패턴을 계속해서 추적하고 총 입력 스트링이 'abcdefgh'인 경우, 요청들이 제안될 때 단지 새롭게 추적된 스트링들 좌표들(즉, "fgh")은 "참(true)"으로 설정된 연속 플래그와 함께 코어 엔진(120)으로 전송된다. 코어 엔진(120)은 X, Y 좌표들 및 최종 요청으로부터 임의의 다른 관련 정보를 캐시에 저장하고 연속 플래그가 성능을 개선하기 위한 다음 제안 요청에 대해 '참'일 때 이를 사용한다.
API는 전체 단어(Full Word) 제안들; 및/또는 완성어들 둘다를 출력하기 위한 문의 수신을 지원한다. 전체 단어들 및 완성어들 둘다가 요청될 때 전체 단어 퍼센티지가 적용된다. 디폴트 설정은 하나(1)의 전체 단어 제안을 제공하지만 API는 전체 단어 제안들로서 총 제안들의 퍼센티지의 제공을 지원한다. 예를 들면 요청된 제안들의 개수가 20이고 요청된 전체 단어 퍼센티지가 25%이면, 최대 5개의 전체 단어 제안들이 주어질 것이다.
본 실시예에 따른 코어 엔진(120)의 고급 작동을 예시하는 제1 흐름도(200)가 도 3에 도시된다. 사용자는 터치스크린 디스플레이(20) 상에 연속적인 입력 패턴을 추적하고 X, Y 좌표들은 코어 엔진(120)으로 출력된다(단계 210). 코어 엔진(120)은 제안 리스트에 부가되는 전체 단어 및 완성어 제안들을 생성하기 위한 3개의 국면(phase) 접근법을 이용한다. 3개의 국면들은 여기서 국면 1(단계 220), 국면 2(단계 230) 및 국면 3(단계 240)으로서 설명된다. 3개의 국면들은 순차적으로 수행될 수 있고 3개의 국면들이 완료되면 어떠한 중복어(duplicate) 제안들도 제안 리스트로부터 제거된다(단계 250). 남아 있는 제안들은 터치스크린 디스플레이(20) 상의 디스플레이를 위해 출력되어 사용자에 의해 선택된다(단계 260).
사용자에 의해 추적되는 입력 패턴의 프로세싱을 예시하는 제2 흐름도(300)가 도 4에 예시된다. X, Y 좌표들은 터치스크린 디스플레이(20)로부터 코어 엔진(120)으로 공급되고 입력 패턴과 일치하거나 입력 패턴 근처의 키(40)들의 완전한 시퀀스(sequence)가 식별된다. 키(40)들에 대응하는 문자들은 이어서 조합되어 연속 문자 스트링을 형성한다(단계 310). 결과적인 문자 스트링은 입력 패턴을 따라 또는 입력 패턴에 근접하게 배치되는 일련의 문자들로 형성된다. 코어 엔진(120)은 또한 입력 패턴의 경로 길이를 계산하고 계산된 경로 길이를 기초로 하여 상부 및 하부 경로 길이 임계값들(여기서 설명됨)을 결정한다(단계 320). 입력 패턴 내의 코너 지점들은 다시 각각의 코너 지점과 관련된 문자들을 식별하기 위해 사용되는 대응 키(40)를 따라 식별된다(단계 330). 코어 엔진(120)은 이어서 유효 초두의 모든 가능한 조합들의 리스트(VALID_PREFIXES_LIST)를 컴파일한다(단계 340). 입력 패턴의 초기 부분과 비슷한 바이그램(bigram)들이 이어서 선택된다(단계 350). 선택된 바이그램들은 전형적으로 후보 단어(word)의 첫 번째 및 두 번째 글자(letter)들에 대응한다. 열 인코팅 기술(row encoding technique)(여기서 설명됨)이 또한 입력 패턴에 적용된다(단계 360).
입력 패턴의 프로세싱 및 3개의 국면 접근법이 여기서 더 상세하게 설명된다. 그러나, 각각의 국면에서 실행된 프로세싱 기술들이 먼저 설명될 것이다.
사전-랭킹(PRE-RANKING)
데이터베이스에 저장된 단어들은 사전-랭킹되고 상이한 국면들의 제안 생성시 사용하기 위해 상이한 시퀀스로 정해진 리스트에 유지된다. 각각의 국면에서, 상기 접근법은 후보들의 사전-랭킹된 리스트로 시작하는 단계 및 유효 초두 일치, 경로 길이 임계값들 및 스트링 거리 임계값들을 기초로 하여 후보들을 필터링하는 단계로 이루어진다. 이와 같이 사전-랭킹된 리스트들은 예를 들면 시스템이 처음으로 사용될 때 오프라인 또는 온라인으로 생성될 수 있고 재사용을 위해 영구적인 저장부 내에 저장될 수 있다.
일부 또는 모두의 이러한 리스트들은 또한 사용을 기초로 하여 동적으로 업데이트될 수 있다. 예를 들면, 사용자가 단어를 입력할 때, 대응하는 1회 빈도 카운트(uni-frequency count)가 업데이트된다. 이러한 단어가 나타나는 사전-랭킹된 리스트들은 또한 이에 따라 업데이트될 것이다. 사전-랭킹된 리스트들의 업데이팅은 1회 빈도 카운트의 모든 업데이트시 주기적으로 또는 시스템들이 가동되지 않을 때 수행될 수 있다. 공간 효율적인 데이터 구조들이 저장 요건들을 감소시키기 위해 사용될 수 있다. 더욱이, 이러한 리스트들 각각에 저장된 요소들의 개수는 저장 요건들에 따라 조정될 수 있다.
사전-랭킹된 리스트들은 또한 내용, 즉 상기 시간까지 사용자에 의해 입력된 단어들을 기초로 하여 조정될 수 있다.
아래의 사전-랭킹된 리스트들이 유지되고 본 실시예에서 입력들은 빈도를 기초로 하여 내림 차순으로 사전-랭킹된다.
1. 사전 내의 상위(top) n회 빈도의 단어들.
2. 이들의 빈도를 기초로 하여 사전-랭킹된 사전 내의 모든 유효 바이그램들.
3. 각각의 바이그램에 대해, 상위 k회 빈도의 단어들 (또는) 이들의 빈도를 기초로 하여 사전-랭킹된 상기 바이그램에 대응하는 모든 단어들.
4. 사전 내의 초두들에 대해(모든 또는 선택된 초두들에 대해) 최고 빈도의(top most frequent) 단어들
5. 각각의 열 인코딩 기반 그룹에 대해, 단어들은 빈도를 기초로 하여 순위가 정해지고/정해지거나 랭킹될 것이다.
다른 측정 기준들이 빈도 대신 사용될 수 있거나 빈도와 조합하여 사용될 수 있는 것이 인정될 것이다. 예를 들면 내용 데이터는 나란히 발생하는 특별한 스트링 조합들의 가능성을 나타내기 위해 사용될 수 있다.
내용 기반 제안(CONTEXT BASED SUGGESTIONS)
내용 기반 제안들 및 연속 텍스트 입력들은 (단어들이 존재하는 경우) 문장 내의 이전의 그리고 이전-이전의 단어들을 기초로 할 수 있다. 각각의 단어에 대한 내용 기반 제안들을 생성하기 위해 아래 리스트들이 유지된다:
1. 다음 단어 리스트(Next words list) - 단어들(인덱스들) 및 현 단어에 대한 다음 단어로서 얼마나 많은 회수들로 나타나는가에 대한 카운트의 리스트. 상기 리스트는 카운트들을 기초로 하여 순위가 정해진다.
2. 다음 -다음 단어 리스트(Next-Next words list) - 단어들(인덱스들) 및 현 단어에 대한 다음-다음 단어로서 얼마나 많은 회수들로 나타나는가에 대한 카운트의 리스트. 상기 리스트는 카운트들을 기초로 하여 순위가 정해진다.
예를 들면, 사용자가 "This is a"를 타이핑하는 경우
단어 "This"에 대해 - "is"는 다음 단어들 리스트에 부가되며, "a"는 다음-다음 단어들 리스트에 부가된다.
단어 "is" 에 대해 - "a" 는 다음-다음 단어들 리스트에 부가된다.
저장 공간을 절감하도록, 적어도 최근에 업데이트된 기록들은 리스트로부터 제거될 수 있다. 또한, 각각의 단어에 대해 저장된 기록들의 번호는 이의 1회 빈도에 의존할 것이다(더 많은 빈도의 단어들에 대해 더 많은 기록들). 대안적으로, 단어 바이그램들 및 단어 트라이그램(trigram)들 리스트들이 저장될 수 있고 예를 들면 이들의 카운트들을 기반으로 순위가 정해진다.
이전의 예를 고려하면, 사용자가 "This is a"를 타이핑하는 경우
단어 "This"에 대해 - "is"는 바이그램들 리스트에 부가되며, "is a"는 트라이그램 리스트에 부가된다.
단어 "is" 에 대해 - "a" 는 바이그램들 리스트에 부가된다.
키보드 배열 정보(KEYBOARD LAYOUT INFORMATION)
코어 엔진(120)은 단어 제안들을 제공하도록 가상 키보드(30)의 배열에 관한 저장된 정보에 접근한다. 배열 정보는 총 디스플레이 폭, 총 디스플레이 높이, 각각의 키의 정보, 각각의 열에 대한 정보 등을 포함한다. 각각의 키에 대해, 다음 배열 정보, 열 번호; 열 내의 색인 위치; 키 폭; 키의 상부 좌측 코너의 키 높이의 x- 및 y-좌표; 키의 좌측에 대한 갭, 키가 어떤 에지, 라벨 등에 있는지 여부가 제공된다. 키들은 각각 고유 식별자 KEY_ID로 식별된다. 각각의 열에 대해, 다음 배열 정보, 수직 갭; 열이 임의의 에지들(상부 또는 저부)에 있는지 여부; 키들 사이의 수평 갭, 등이 제공된다.
예를 들면, 키 'a'에 대한 키 정보는:
열 번호 - 1
열 내의 색인 위치 - 1
키 폭 - 48
키 높이 - 81
키의 상부 좌측 코너의 x- 및 y- 좌표 - (24, 81)
키의 좌측에 대한 갭 - 24,
좌측 에지에서
라벨: 'a'를 포함한다.
첫 번째 열에 대한 열 정보는:
수직 갭 - 0
수평 갭 - 0
에지-상부 에지를 포함한다.
아래 작동들이 지원된다:
1. 지점 좌표들을 기초로 하는 대응하는 키 및 문자(들)를 식별(사용자가 터치스크린 디스플레이(20)를 터치 한 지점의 X, Y 좌표들).
2. 대응 키 식별.
3. 두 개의 키가 주어진 경우, 키들 사이의 DISTANCE(K1, K2) 검색. 키들 사이의 거리들은 키(K1 및 K2)들의 중심들을 연결함으로써 형성된 라인 세그먼트의 길이일 수 있다.
4. 두 개의 문자들이 주어진 경우, 대응하는 키들 사이의 DISTANCE(char 1 , char2) 검색하시오.
열 기반 인코딩(ROW BASED ENCODING)
코어 엔진(120)은 단어에 대한 입력 패턴을 추적하기 위해 거쳐 지나갈 것이 요구되는 열의 시퀀스를 기초로 하여 입력 패턴을 분석할 수 있다. 키들의 열들에는 각각 고유 식별자 코드가 할당되며 이 코드는 입력 패턴이 항상 상기 열 내의 키 위로 추적할 때마다 등록된다. 예를 들면, 본 실시예에 따른 QWERTY 키보드에서, 키들의 상부 열에는 식별자 코드 '1'이 할당되고; 키들의 중간 열에는 식별자 코드 '2'가 할당되고; 키들의 저부 열에는 식별자 코드 '3'이 할당된다. 이러한 기술은 식별자 코드를 숫자 문자들, 구두점들 등과 같은 다른 문자 그룹들에 할당하기 위해 확대될 수 있다.
특별한 입력 패턴에 대해 등록된 식별자 코드들의 시퀀스는 후보 단어들에 대한 식별자 코드들에 비해 인코딩된 패턴의 형태로 저장될 수 있다. 대안적으로, 저장 공간을 보존하도록, 특별한 입력 패턴에 대한 식별자 코드들은 상기의 특별한 입력 패턴에 대해 누적하는 식별자 코드를 제공하도록 예를 들면 개별 식별자 코드들을 합산함으로써 조합될 수 있다.
예를 들면: QWERTY 배열을 참조하여:
단어 "about" 을 추적하기 위하여 입력 패턴이 열(2, 3, 1)들을 거쳐 지나간다.
단어 "please" 를 추적하기 위하여, 입력 패턴이 열(1, 2, 1, 2, 1)들을 거쳐 지나간다.
1. 단어 "bet" 를 추적하기 위하여 입력 패턴이 열(3, 2, 1)들을 거쳐 지나간다.
열 번호들의 시퀀스는 번호를 형성하도록 각각의 단어에 연결된다.
"about"-231
"please" - 12121
"bet" - 321
이러한 기술의 변화 예들은:
1. 시퀀스가 123 또는 321이면, 열 2에 대한 코드가 생략될 수 있고, 입력 패턴이 열 1로부터 열 3으로 이동하도록 또는 그 반대로 이동하도록 열 2를 통하여 추적되는 것이 내재되기 때문에 13 또는 31로서 인코딩될 수 있다. 예를 들면:
"about" - 231
"please" - 12121
"bet" - 31
2. 각각의 열 번호는 2비트들(열 1 -01, 열 2 -10, 열 3 -11)들을 사용하여 표현될 수 있다. 이 같은 표현의 연결은 번호를 형성한다.
"about" - 231 -> 10 11 01 -> 101101 -> 45
"please" - 12121-> 01 10 01 10 01 -> 01 10011001 -> 409
"bet" - 321 -> 11 10 01 -> 111001 -> 57
이러한 인코딩 기술은 사전에 저장된 후보 단어들 및 각각의 단어에 대해 저장된 결과적인 인코딩 패턴에 대해 수행된다. 사전 내의 단어들은 이러한 인코딩 패턴을 기초로 하여 그룹화된다. 예를 들면, 'please' 및 'plight'와 같은 인코딩 패턴 12121을 갖는 단어들 모두는 사전 내의 동일한 그룹 내에 배치된다. 각각의 그룹 내에서, 단어들은 이들의 사용 빈도를 기초로 하여 순위가 정해질 것이다.
오프라인 데이터 준비(OFFLINE DATA PREPARATION)
여기서 개설된 바와 같이, 단어들은 코어 엔진(120)에 의해 접근 가능한 사전 내에 저장된다. 사전 데이터의 준비는 아래와 같이 수행될 수 있다:
1. 단어들이 사전이 단어들 및 초두들이 신속한 검색을 용이하게 하는 데이터 구조 내에 저장된다. 예를 들면, 트리 데이터(초두 트리) 구조가 사용될 수 있다. 사전 내의 단어들에는 각각 고유 색인이 할당된다.
2. 사전 내의 각각의 가능한 초두에 대해 최고 n회 빈도의 단어 색인들이 저장된다(PREFIX_TREE_WITH_ORDERED_LISTS). 이는 아래 중 어느 하나 일 수 있다:
(1) 모든 가능한 초두에 대한 상위 n회 빈도 단어들; 또는
(2) 공간 최적화가 요구되는 경우:
a. 트리 데이터 구조가 사용되면, 상위 n회 빈도 단어 색인들이 상기 초두에 대응하는 트리 내의 노드와 관련된 데이터로서 저장된다.
b. 최고 n회 빈도 단어들은 단지 선택된 초두들을 위해 저장될 수 있다. 상기 횟수 'n'은 또한 초두를 기초로 하여 변화될 수 있다. 예를 들면, 더 많은 단어들이 더 통상적으로 사용된 초두들에 대해 저장될 수 있다.
예를 들면, 초두들은 아래의 개요들 중 하나 이상으로 필터링될 수 있다:
i. 상기 초두들을 구비한 단어들 모두가 (소정의 임계값(DELTA_FREQUENCY_THRESHOLD) 내에서)거의 동일한 빈도들을 갖는 경우.
ii. 상기 초두를 구비한 단어들 모두의 최대 빈도는 MIN_FREQUENCY_THRESHOLD 미만이다.
iii. 상기 초두를 구비한 단어들 모두의 평균 빈도는 AVERAGE_FREQUENCY_ THRESHOLD 미만이다.
임계값 매개변수들은 공간 요건들을 기초로 하여 조정될 수 있다.
(3) 길이 2의 초두들(바이그램들)에 대해, 상기 초두를 갖는 단어들 모두의 리스트가 빈도 카운트를 기초로 하여 저장되고 순위가 정해지고 (또는) 대안적으로 단지 상위 n회 빈도 단어들은 공간 요건들을 기초로 하여 각각의 바이그램에 대해 저장된다.
끼인 각도 및 코너 지점 식별(INCLUDED ANGLE AND CORNER POINT IDENTIFICATION)
본 실시예에서, 코너 지점들은: 입력 패턴의 방향에서의 지점 변화; 입력 패턴의 곡률에서의 국부적인 변화; 입력 패턴의 시작 지점; 및 입력 패턴의 단부 지점 중 하나 이상을 포함한다. 가중치는 예를 들면 방향의 지점 변화시 끼인 각도; 또는 측정된 곡률을 기초로 하여 각각의 코너 지점에 적용될 수 있다. 추적된 입력 패턴 및 또한 모델화된 입력 패턴에서 코너 지점들의 식별은 아래의 기술들 중 하나 이상을 적용함으로써 결정될 수 있다.
곡률(CURVATURE)
지점에서의 곡률은 아크 길이의 함수로서 기울기의 변화 속도로서 정의된다.
대안적으로, 곡선의 (부호를 지닌) 곡률은 또한 이의 호 길이에 의해 매개변수화된 탄젠트 벡터의 방향의 변화 속도로서 정의될 수 있다. 곡률의 절대 값은 곡선이 얼마나 날카롭게 벤딩되는가에 대한 측정치이다. 거의 직선들인 완만하게 벤딩되는 곡선들은 작은 절대 곡률을 가질 것이다.
디지털 곡선에 대한 지점에서의 곡률(CURVATURE AT A POINT FOR DIGITAL CURVE)
디지털 곡선은 지점(p1, p2, ..pn)들의 시퀀스로서 정의될 수 있으며, 여기서 pi+1은 pi의 이웃 지점이다. 곡률의 상기 정의는 디지털 곡선에 대해 유지되지 않는데, 이는 정확한 수학적 정의가 디지털 곡선에 대해 이용가능하지 않기 때문이다. 디지털 곡선들에 대해, 이웃하는 지점들로부터 추출될 수 있는 정보의 사용에 의해 지점에서 곡률을 추정하는 수 개의 기술들이 존재한다.
디지털 곡선의 코너 지점들(CORNER POINTS OF DIGITAL CURVE)
디지털 곡선상의 각각의 지점 및/또는 중간 지점들에서의 곡률은 추정되고 국부적 최대 곡률을 구비한 상기 지점들은 코너 지점들로서 고려된다. 이러한 곡선 상의 첫 번째 및 마지막 지점들은 또한 코너 지점들로서 포함된다.
추적된 입력 패턴(TRACED INPUT PATTERN)
추적된 입력 패턴의 경우, 입력 패턴은 디지털 곡선으로서 취급되고 코너 지점들이 식별된다. 가중치는(지점 변화의 경우) 식별된 코너 지점을 연결하여 그려진 라인들 사이의 끼인 각도를 기초로 하여; 또는 각각의 모서리 지점에서 추정된 곡률을 기초로 하여 각각의 코너 지점에 적용될 수 있다. 예를 들면, 더 작은 끼인 각도는 더 높은 중량에 주어질 수 있고 그 반대도 가능할 수 있다. 추적된 입력 패턴의 시작 지점 및/또는 마지막 지점에 대응하는 지점들은 코너 지점들로서 해석될 수 있다.
모델화된 입력 패턴(MODELLED INPUT PATTERN)
모델화된 입력 패턴의 경우, 일련의 라인 세그먼트들이 배열 상에서 연속적으로 후보 단어 내의 문자들에 대응하는 키들을 연결하여 그려질 때, 코너 지점들은 각도 및/또는 방향에서의 변화가 있는 지점들로서 정의될 수 있다. 후보 스트링의 시작 문자(들) 및/또는 끝 문자(들)에 대응하는 지점들은 코너 지점들로서 해석될 수 있다. 끼인 각도는 각각의 코너 지점에서 계산될 수 있다. 가중치는 계산된 끼인 각도를 기초로 하여 적용될 수 있다. 예를 들면, 더 높은 가중치는 더 작은 코너 지점 각도에 할당될 수 있다.
입력 패턴 제안 생성(INPUT PATTERN SUGGESTIONS GENERATION)
코어 엔진(120)은 사용자가 입력 패턴으로 추적하는 지점들의 좌표들(x 좌표 및 y 좌표)을 포착한다.
지점들의 리스트로부터, 키들 및 사용자가 추적한 문자들의 완전한 시퀀스는 물리적 배열 정보를 사용하여 식별된다. 이들은 각각 INPUT_KEYS 및 INPUT_STRING으로 불릴 것이다.
완전한 경로 길이(INPUT_PATH_LENGTH)는 INPUT_STRING에 대해 계산된다. 예를 들면, 추적된 입력 패턴은 문자 스트링 "abcde"을 출력하고, 대응하는 키들은 Kl, K2, K3, K4이다. 경로 길이(INPUT_PATH_LENGTH) = DISTANCE(Kl, K2) + DISTANCE(K2, K3) + DISTANCE(K3, K4).
키들 사이의 거리(DISTANCE(Kl, K2))는 키(kl 및 k2)들의 중심들을 연결하는 라인 세그먼트의 길이를 나타낸다. 문자들 사이의 거리(DISTANCE(c1 , c2))는 문자(c1 및 c2)들에 대응하는 키들의 중심들을 연결하는 라인 세그먼트의 길이이다. 입력 패턴에 대응하는 경로의 길이(PATH_LENGTH)(스트링)는 하나의 스트링에 대해 계산될 수 있고 스트링 내의 각각의 문자에 대응하는 연속 키들 사이의 거리들 모두의 합이다. 예를 들면, 단어 "awe"의 경우:
PATH_LENGTH("awe") = DISTANCE("a","w") + DISTANCE("w","e")
하부 및 상부 경로 길이 임계값들은 PATH_LEN_LOWER_THRESHOLD_PARAM, PATH_LEN_UPPER_THRESHOLD_ PARAM 및 INPUT_PATH_LENGTH를 기초로 하여 계산된다.
예를 들면:
만약
PATH_LEN_LOWER_THRESHOLD_PARAM = 0.2(20%)
PATH_LEN_UPPER_THRESHOLD_PARAM = 0.3(30%)
이면,
PATH_LEN_LOWER_THRESHOLD = INPUT_PATH_LENGTH - (0.2*INPUT_PATH_LENGTH)
PATH_LEN_UPPER_THRESHOLD = INPUT_PATH_LENGTH + (0.3*INPUT_PATH_LENGTH)
코어 엔진(120)에 의해 포착된 지점들의 리스트로부터, 입력 패턴 내의 코너 지점이 식별된다. 코너 지점들의 검출를 위한 다양한 접근 방법들이 알려져 있다(예를 들면, "조정 벤딩 값을 사용하는 지배적 지점 검출(Dominant point detection using adaptive bending value)", 원-옌 우(Wen-Yen Wu), 이미지 비젼 컴퓨팅(Image Vision Computing) 21(6): 517-525 (2003년)).
코너 지점들은 형성된 각도/곡률을 기반으로 가중치(weight)들이 주어진다. 코너 지점에 형성된 각도가 클수록(또는 곡률이 작을 수록), 상기 코너 지점의 가중치가 낮아진다.(예를 들면: 첫 번째 및 두 번째 코너 지점들은 각각 40°및 170°의 끼인 각도들을 가지는 것으로 검출되는 경우, 첫 번째 코너 지점은 더 높은 가중치를 가질 것이다.) 미리 정의된 각도 임계값(ANGULAR_THRESHOLD) 미만의 가중치를 갖는 코너 지점들은 약한 코너 지점들로서 표시되고 다른 코너 지점들은 강한 코너 지점들로서 표시된다. 이러한 정보는 바이그램/트라이그램 필터링을 수행하기 위해 및/또는 스트링 거리들을 계산할 때 사용될 수 있다.
코너 지점들로부터, 물리적 배열 정보를 사용하여 각각의 코너 지점에 대응하는 키 및 문자들이 식별된다. 구체적으로:
INPUT_CORNERS_STRING: INPUT_STRING으로부터 마지막 문자에 의해 후속되는 코너 지점들의 문자들의 시퀀스에 의해 후속되는 INPUT_STRING으로부터의 첫 번째 문자; 및
INPUT_CORNERS_KEYS: CORNERS_STRING의 문자들에 대응하는 키들의 시퀀스.
스트링들(키들)의 가능한 조합들은 사전 내의 유효 초두들인 INPUT_STRING (또는 INPUT_KEYS)으로부터 생성된다.
INPUT_STRING의 첫 번째 및 마지막 문자들은 상기 문자 내 및 상기 문자 주위의 임의의 문자 또는 추적된 실제 문자가 되도록 변화될 수 있다. 예를 들면: 입력 패턴이 문자 스트링 "asdfghjkl"을 생성하는 경우, 가능한 조합들은 "asl","adl","asdl","asdfl"을 포함한다. 더 긴 스트링들에 대해, 모든 가능한 조합들을 생성하는 것이 시간 소모적인 작업이지만 상기 초두가 사전 내에 존재하지 않는 경우 조합들을 초기에 자체적으로 잘라냄으로써 실행 가능하게 된다.
한 세트의 유효한 문자 조합들은 사전 내에 또는 다른 데이터베이스에 저장된다. 문자 스트링 내의 유효한/유효하지 않은 조합들을 식별하기 위해 체크가 수행된다. 본 실시예에서, 사전 내에 저장된 문자 조합들은 바이그램들이지만, 트라이그램들 또는 n자명들이 또한 사용될 수 있다. 예를 들면, 문자 스트링 "asdfghjkl"의 경우, 생성된 제1 조합은 "as"이다. 단지 "as"가 유효한 초두인 경우에만, "asd", "asdf" 등과 같이 생성된 동일한 조합으로 시작하는 다른 조합들이 사전 내에 있다. 그렇지 않으면, 제1 조합이 생략된다. 모든 유효한 조합들의 생성 후, PATH_LEN_LOWER_THRESHOLD 미만의 경로 길이를 가지는 조합들이 생략된다. 이러한 단계의 마지막에, 한 쌍의 유효한 초두들/단어들(VALID_PREFIXES_LIST)의 세트가 존재한다.
추적된 입력 패턴의 초기 부분에 근접한 바이그램들이 선택된다. 본 경우에, 첫번째 두 개의 문자들의 단어들에 대응하는 바이그램들이 식별된다. 예를 들면, 사전에서 식별된 단어들이 "apple", "around", "brilliant", "crunch"이면, 사전 내의 바이그램들은 "ap", "ar", "br", "cr"이다. 유효한 바이그램들의 리스트는 사전에 저장된다. 바이그램들은 예를 들면 이들의 빈도를 기초로 하여 (내림 차순으로) 순위가 정해질 수 있다. 리스트는 또한 사용을 기초로 하여 동적으로 업데이트될 수 있다, 즉 사용자가 단어를 입력할 때마다 각각의 바이그램의 출현의 카운트(count)들을 유지하고 바이그램을 업데이트한다. (형성된 각도를 기초로 한 가중치에 의해 결정된 바와 같이) (확실한) 제1 코너 지점까지 추적된 입력 패턴의 부분이 취해지며 경로가 이러한 경로에 근접한 상기 바이그램들이 선택된다. 예를 들면, "asdbhjio"가 추적된 입력 패턴에 대응하는 문자 스트링이고, 'b'가 확실한 제1 코너 지점이면, 유효한 바이그램들은 "ab", "as", "ad", "ax", "sb"일 수 있다. 이러한 단계의 마지막에, 우리는 바이그램들의 리스트(BIGRAMS_LIST)를 얻고 대응하는 범위의 색인들은 BIGRAMS_RANGES라 불린다.
입력 패턴의 열 기반 인코딩은 여기서 설명된 기술을 사용하여 계산된다. 예를 들면, 입력 패턴이 열들 3, 2, 1, 2를 거쳐 지나간 경우, 열 인코딩은 3212가 될 것이다.
스트링 거리 계산(STRING DISTANCE CALCULATIONS)
스트링 거리(STRING_DISTANCE)는 패턴 매칭 알고리즘에 의해 계산된다. 스트링 거리(STRING_DISTANCE)는 입력 패턴에 의해 추적된 경로와 후보를 위한 모델화된 경로 사이의 상관관계의 표시를 제공한다. 본 실시예에서, 저(low) 스트링 거리(STRING_DISTANCE)는 적절한(good) 상관관계의 표시이고 고(high) 스트링 거리(STRING_DISTANCE)는 적절하지 않은(poor) 상관관계의 표시이다.
입력 패턴에 대응하는 문자 스트링과 (단어들의 사전으로부터의) 후보 스트링 사이의 스트링 거리(STRING_DISTANCE)는 코너 지점들 INPUT_CORNER_KEYS를 기반으로 연산되고 CAND_CORNERS_KEYS는 입력 및 후보 스트링 각각을 위한 코너 키들의 시퀀스이다. 이러한 코너 키들 시퀀스들 상의 스트링 거리(STRING_DISTANCE)를 계산하기 위해, 임의의 시퀀스 매칭 또는 패턴 매칭 알고리즘들이 사용될 수 있다. 다이나믹 타임 워핑(DTW)은 하나의 이 같은 시퀀스 매칭 알고리즘이다(예를 들면: http ://en.wikipedia.org/wiki/Dynamic_time_warping 참조).
DTW는 동적 프로그래밍 기술을 기반으로 하고 (길이가 변화될 수 있는) 두 개의 시퀀스들 사이에서 유사성을 찾기 위해 사용될 수 있다. 시퀀스 매칭 알고리즘을 적용하기 위해, 시퀀스의 두 개의 요소들(현 사용 케이스에서의 키들) 사이의 거리를 계산하기 위한 함수가 정의된다. DTW는 일반적으로 두 개의 시퀀스들 사이의 유사성을 측정하기 위해 사용되는 패턴 매칭 기술이다. DTW 알고리즘의 시퀀스들은 예를 들면 후보 스트링을 위한 제1 세트의 코너 지점들 및 입력 패턴을 위한 제2 세트의 코너 지점들일 수 있다. 적절한 DTW 알고리즘은 아래와 같다:
Figure 112015080873770-pct00001
STRING_DISTANCE(스트링 1 , 스트링 2)는 두 개의 스트링들(스트링1 및 스트링2) 사이의 상관관계(유사성)를 찾기 위한 측정치이다. 임의의 패턴 매칭 알고리즘은 이러한 상관관계를 찾기 위해 사용될 수 있다. 본 실시예에서, DTW 알고리즘은 스트링 1 및 스트링 2의 코너 지점들을 기초로하여 구현되었다.
본 경우에서, 입력 패턴의 코너 지점들 및 후보 스트링의 코너 지점들은 일치될 두 개의 시퀀스들이다. 제1 곡선은 사용자에 의해 추적된 입력 패턴에 대응하고; 제2 곡선은 후보 단어에 대응하는 키들이 가상 키보드 상에 연결될 때 형성되는 일련의 라인 세그먼트들에 대응한다. 여기서 설명된 비교 기술은 제1 곡선 및 제2 곡선 사이의 유사성을 결정하기 위한 시도를 한다. 그러나, 각각의 지점에서의 비교 대신, 제1 곡선 및 제2 곡선의 비교는 코너들에서 수행되는데, 이는 코너들이 곡선의 형태를 정의하기 때문이다. 예를 들면, 단어 "fail"을 추적하기를 원하는 경우, 사용자에 의해 입력 패턴으로 추적된 코너 지점들은 'f', 'a', 'i', 'l'일 것이다. 이러한 코너 지점들이 후보 단어 "fail"(또한 코너 지점들 'f','a', 'i', 'l'을 가짐)과 비교할 때, 코너 지점들의 양 리스트들 사이에 적절한 상관관계가 있다. 따라서, 단어 "fail"은 적절한 후보로서 식별된다. 다른 후보 단어가 또한 고려될 수 있으며, 예를 들면, "gail"은 코너 지점들 'g', 'a','i', 'l'을 갖는다. 제1 코너 지점 'g'는 'f'와 근접하고, 나머지 코너 지점들은 정확히 일치한다. 이에 따라, "gail"은 또한 적절한 후보가 될 것이다. 코너 지점 리스트들 사이의 실제 일치는 DTW 알고리즘을 사용하여 수행된다.
비용 함수(cost function)는 두 개의 문자들 사이에서 계산된다. 이러한 비용 함수 CHAR_COST(c1, c2)는 DTW 알고리즘 내에서 내부적으로 사용된다. 상기 알고리즘에서, 비용은 일반적으로 시퀀스에서 두 개의 요소들 사이의 거리로서 정의된다. 두 개의 키들 사이의 비용 함수 계산(CHAR_COST)은 키들의 근접성을 기반으로 하여 할당된다. 상이한 유형들의 근접성 오류들은 상이한 비용들이 할당될 수 있다. 비용들은 아래 매개변수들 중 하나 이상을 기반으로 하여 할당될 것이다: HORIZONTAL_PROXIMITY_COST(수평 방향 근접성 오류에 대한 비용); VERTICAL_PROXIMITY_COST(수직 방향 근접성 오류에 대한 비용); DIAGONAL_PROXIMITY_COST(대각선 방향 근접성 오류에 대한 비용); 및 NO_PROXIMITY_COST(비 근접성 오류에 대한 비용). 키들이 동일하지 않으면, 비용은 0이 될 것이다. 예를 들면, 상이한 유형들의 오류의 비용은 아래와 같이 설정될 수 있다:
HORIZONTAL_PROXIMITY_COST - 10
VERTICAL_PROXIMITY_COST - 20
DIAGONAL_PROXIMITY_COST - 40
NO_PROXIMITY_COST - 60
QWERTY 배열에 대해,
CHAR_COST('a', 's') - 수평 방향 근접성 - 비용 = 10
CHAR_COST('d', 'x') - 수직 방향 근접성 - 비용 = 20
STRING_DISTANCE를 계산하는 동안 또한 고려될 수 있는 다른 인자들은 (예를 들면, 형성된 각도를 기반으로) 코너 지점의 세기를 나타내는 것을 포함한다. 코너 지점이 확실하지 않은(weak) 코너 지점인 경우, 높은 가능성의 오류가 있기 때문에 이와 관련된 비용은 감소될 수 있다. 코너 지점에 대한 일치(match)가 식별되지 않는 경우, 사용자에 의해 추적된 입력 패턴 상의 실제 스트링이 식별될 수 있으며, 일치되는 경우, 비용이 감소될 수 있다. 예를 들면, 입력 패턴 스트링이 "asdfbjkl"인 경우, 입력 코너 스트링들은 "abl" 이며 후보 코너 스트링들은 "adbl"이다. 후보 코너 스트링으로부터 문자 'd'에 대해 일치되지 않는다. 이러한 경우, 실제 입력 패턴 스트링의 문자 'a' 및 'b'들 사이에 있는 'd'를 찾는다. 그 후, 문자 'd'가 찾아지고 비용이 감소될 수 있다. 성능을 개선하도록, 체크는 거의 코너 지점들이 근접할 때만 이러한 방식으로 수행될 수 있다.
유사하게, 근접성이 없지만 코너 지점들이 (일부 경계 또는 임계값 내에서) 서로 근접하는 경우 코너 지점들에 대해 비용이 감소될 수 있다. 사용자들이 일반적으로 거기서 실수하는 경향이 있을 때 근접성 비용은 추적된 입력 패턴에서 첫번째 및 마지막 문자들에 대해 감소될 수 있다. 근접성 비용은 사용자가 일반적으로 실수하는 경향이 있는 문자들에 대해 감소될 수 있다. 예를 들면: 사용자들이 'n'을 의도할 때 사용자들은 종종 'm'을 통해 입력 패턴을 추적하거나(또는 각도를 형성하거나) 그 반대로 'm'을 의도할 때 종종 'n'을 통해 입력 패턴을 추적한다.
성능을 개선하기 위하여, 스트링들 및 대응하는 거리의 캐시가 유지될 수 있어서, 거리 값이 직접 검색될 수 있다. DTW와 같은 동적 프로그래밍 해법들이 사용되면, (a) 충분히 큰 버퍼가 중간 결과들을 저장하기 위해 사용될 표에 미리-할당될 수 있고 이에 따라 모든 string_distance 계산에 대한 할당 메모리에 대한 시간을 절감할 수 있고; 및/또는 (b) 중간 결과들은 다음 string_distance 계산들을 위해 재사용될 수 있다.
STRING_DISTANCE("devel", "develops")의 예를 고려하자. STRING_DISTANCE ("devel", "deve")가 요구되는 경우, 이는 이미 이용가능하게 되는 바와 같이 표로부터 직접 얻어질 수 있다. 다음으로, STRING_DISTANCE("devel", "developed")를 계산하기 위하여, STRING_DISTANCE("devel", "develop")까지의 표의 내용들이 사용될 수 있고 이어서 단지 나머지만을 계산한다.
임계값 계산(THRESHOLD CALCULATIONS)
위에서 약술된 바와 같이, 경로 길이 임계값들은 INPUT_PATH_LENGTH를 기초로 하여 계산된다. 구체적으로는, INPUT_PATH_LENGTH는 각각의 상한 및 하한 임계값들을 결정하기 위하여 하한 및 상한 임계값 매개변수들 PATH_LEN_LOWER_THRESHOLD_PARAM, PATH_LEN_UPPER_THRESHOLD_PARAM와 곱해진다.
STRING_DISTANCE에 대한 임계값은 각각의 국면에 대한 고정값으로서 정의될 수 있다. 예를 들면, 제1 국면(국면 1)에서 분석 동안 STRING_DISTANCE_THRESHOLD는 영(0)으로 설정될 수 있고; 제2 국면(국면 2) 동안 STRING_DISTANCE_THRESHOLD가 이(2)로 설정될 수 있고; 제3 국면(국면 3) 동안 STRING_DISTANCE_THRESHOLD가 사(4)로 설정될 수 있다. 이러한 임계값들은 예를 들면 상이한 사용자들로부터 수집된 샘플 데이터, 실험 데이터 및 어떤 매개변수들이 최적 결과를 제공하는지를 결정하기 위한 분석를 기초로 하여, 오프라인으로 정의될 수 있다. 대안으로, 상기 값들은 예를 들면 실행 시간 사용을 기초로 하여 동적으로 조정될 수 있다.
경로 길이 임계값들, 스트링 거리 임계값 매개변수들, 스트링 거리 계산에서 사용된 비용 값들에 대한 초기 값들은 상이한 사용자들로부터 수집된 샘플 데이터를 기초로 할 것이다. 사용자들에게 상이한 소스들로부터 수집된 언어 또는 정보에서 단어들/구들/문장들이 공통으로 사용될 수 있는 단어들/구들/문장들의 세트가 제공될 것이다. 이러한 입력에 대해 사용자에 의해 생성된 입력 패턴의 좌표들이 기록될 것이다. 이러한 데이터는 임계값 매개변수들 및 비용값들에 대한 최적 값들을 찾기 위해 사용될 것이다.
시스템이 설치된 후, 사용자의 스타일은 학습될 것이고 임계값 및 비용값은 개별 사용자의 사용량 통계를 기초로 하여 동적으로 업데이트될 것이다.
사용자가 단어를 추적하고 제안을 선택할 때마다, 사용자가 하는 실수(즉, 사용자가 더 많은 수평방향 근접성 오류를 범하는 경향이 있음)의 유형(5)들이 분석되고 실제 추적된 입력 패턴 길이와 단어의 경로 길이 사이의 차이가 선택된다. 또한, 사용자에 의해 공통으로 이루어진 실수들의 소정의 특정 유형들이 또한 포착될 수 있다. 예를 들면, 사용자가 실제로 'n'을 통하여 추적하기를 원할 때, 사용자는 주로 실수로 글자 'm'을 통하여 추적한다. 모든 이러한 정보를 기초로 하여, 임계값들 및 비용 값들은 상기 사용자에 대해 동적으로 조정될 것이다.
지금부터 코어 엔진(120)의 국면화된 작동이 더 상세하게 설명될 것이다.
국면 1(Phase 1)
지금부터 도 5에 도시된 제3 흐름도(400)를 참조하여, 국면 1 접근법의 적용에 의한 제안들의 생성이 설명될 것이다.
초기 후보 리스트(INITIAL_CANDIDATES_LIST)는 사전 내의 상위 n개의 1회 빈도 단어들에 의해 후속되는 내용 기반 제안을 기초로 하여 준비된다(단계 410). 내용 기반 제안들은 사용자에 의해 타이핑된 이전의 그리고 이전-이전의 단어들을 기초로 한 연속 텍스트 입력들이다. 상위 n개의 1회 빈도 단어들 리스트는 단어들의 1회 빈도 카운트들을 기초로 하여 초기에 발생된 고정 리스트일 수 있거나; 이는 사용을 기초로 하여 동적으로 업데이트될 수 있다. 예를 들면, 상위 n개의 단어들 및 카운트들의 초기 리스트는 "all"(200),"ail"(150),"bat"(145)이다. 사용자가 "bat" 10회, "ail" 3회, "all" 50회를 입력한 경우, 단어들의 카운트들 및 리스트가 이에 따라 입력될 것이다. 업데이트된 리스트는 "all"(200), "bat"(155), "ail"(153)일 것이다. 카운트들은 사용자가 단어를 입력하는 때마다 업데이트될 것이다. 대안적으로, 초기 후보 리스트는 사전-랭킹되는 바이그램 리스트 BIGRAMS_LIST의 바이그램에 대응하는 후보들일 수 있다.
INITIAL_CANDIDATES_LIST로부터, VALID_PREFIXES_LIST에서 임의의 스트링들과 일치하거나; VALID_PREFIXES_LIST의 임의의 스트링들과 일치하는 초두를 가지는 후보 단어들이 선택된다(단계 420). 예를 들면, 문자 스트링 "asdfghjkl"의 경우, VALID_PREFLXES_LIST는 "all", "afl", "asl"를 포함하고; INITIAL_CANDIDATES_LIST는 "the", "all", "fail", "allow", "hit", "following", "asleep"을 포함한다. 디스플레이를 위해 선택된 후보 단어들은 "all", "allow", "asleep"이다.
프로세싱 루프(단계 430)가 이어서 INITIAL_CANDIDATES_LIST에서 이미 식별된 후보 단어들 각각을 분석하기 위해 수행된다. 분석은 시작부로부터 단지 VALID_PREFIXES_LIST에 저장된 임의의 초두와 유효한 초두 일치까지 문자 스트링을 분석하는 것을 포함한다(단계 440). 후보 스트링의 코너 지점들은 CAND_CORNERS_KEYS로서 계산된다. CAND_CORNERS_STRING은 CAND_CORNERS_STRING 내의 키에 대응하는 문자의 시퀀스이다. 예를 들면, 후보 단어 "allow"에 대해, (VALID_PREFIXES_LIST인) "all" 까지의 문자 스트링이 고려되고 코너 지점들은 상기 지점까지 계산된다. 스트링 거리 STRING_ DISTANCE(나중에 상세됨)는 후보 스트링과 입력 스트링 사이에서 계산된다(단계 450). STRING_DISTANCE와 STRING_DISTANCE_THRESHOLD_PHASE_1 사이에서 비교가 이루어진다(단계 460). STRING_DISTANCE가 STRING_DISTANCE_THRESHOLD_PHASE_1보다 크면, 상기 후보가 제거된다. 그렇지 않으면, 상기 단어는 완성어 버킷(COMPLETIONS_LIST) (단계 470); 또는 전체 단어 버킷(FULL_WORDS_LIST) (단계 480) 중 어느 하나에 부가된다. 후보 스트링의 초두만이 VALID_PREFIXES_LIST 내의 임의의 단어들과 일치하는 경우, 단어가 완성어이다. 예를 들면, 입력 문자 스트링 "asdfghjkl"의 경우, VALID_PREFIXES_LIST는 "all", "afl", "asl"을 포함하고 최종 후보 리스트는 "all", "allow", "asleep"를 포함한다. 전체 단어 후보 출력은 "all"이고 완성어 단어 후보들은 "allow" 및 "asleep"이다. 후보는 고려된 것으로 표시되고(단계 490) 다음 후보가 고려된다.
국면 2(Phase 2)
도 6에 도시된 제4 흐름도(500)를 참조하여, 지금부터 국면 2 접근법의 적용에 의한 제안들의 발생이 설명될 것이다.
열 인코딩 그룹은 추적된 입력 패턴의 열 인코딩을 기반으로 식별된다(단계 510). 초기 후보 단어들은 열 인코딩을 기초로 하여 식별된 그룹 내에 포함되는 단어가 될 것이다. 예를 들면, 추적된 입력 패턴의 열 인코딩이 2312이면, 초기 후보 리스트는 그룹(2312) 내의 요소들의 리스트일 것이다. 후보 단어들은 BIGRAMS_LIST를 기초로 하여 필터링된다. BIGRAMS_LIST로부터 바이그램들 중 어느 하나와 일치하는 첫번째 두 개(2)의 문자들들을 가지는 후보들만이 선택된다(단계 520).
식별된 후보들 각각에 대해(단계 530) 하한 경로 길이 임계값 PATH_LEN_LOWER_THRESHOLD와 상한 경로 길이 임계값 PATH_LEN_UPPER_ THRESHOLD 사이에 있는 경로 길이를 가지는 스트링의 부분이 식별된다(단계 540). 임의의 이 같은 부분이 존재하는 경우를 결정하기 위해 체크가 수행된다(단계 550). 이 같은 부분이 없는 경우, 후보 단어가 생략된다. 스트링의 상기 부분의 시작 및 종료 색인들은 각각 C1 및 C2로서 정의된다(단계 560).
예를 들면, 하한 및 상한 경로 길이 임계값들이 29 및 39인 개요를 고려하자. 단어가 "developed"인 경우, 각각의 서브스트링(substring)까지의 경로 길이는 아래와 같다:
De - 20
Dev - 25
Deve - 27
Devel - 30
Develo - 32
Develop - 35
Develope - 41
Developed - 50
이때 경로 길이 임계값(29 내지 39) 내의 스트링의 부분은 "lop"이다.
스트링은 C2 색인까지만 고려된다. 후보 스트링의 코너 지점들이 계산된다(CAND_CORNERS_ KEYS)(단계 570).
CAND_CORNERS_STRING은 CAND_CORNERS_STRING 내의 키들에 대응하는 문자의 시퀀스이다.
후보 스트링과 입력 스트링 사이의 상관관계를 결정하기 위하여 비교가 수행된다. 본 실시예에서, 스트링 거리(STRING_DISTANCE)는 후보 스트링과 입력 스트링 사이의 차이로서 계산된다(단계 580). 결과적인 거리 STRING_DISTANCE는 범위(C1 내지 C2) 내의 문자들의 거리 값의 최상 값으로서 고려된다. 더 작은 스트링 거리(STRING_DISTANCE)는 후보 스트링과 입력 스트링 사이의 더 근접한 상관관계를 대표한다. 상기 예에서, 후보 스트링은 "develop" 까지 고려된다. 스트링 거리는 입력 스트링과 "develop" 사이에서 계산된다. 상기 예에서:
"C 1 - C2" - "lop"까지의 스트링
STRING_DISTANCE(입력 스트링, "devel") = 30
STRING JDISTANCE(입력 스트링, "develo") = 20
STRING_DISTANCE(입력 스트링, "develop") = 25
범위 C1 내지 C2에서의 문자들 모두의 최상의 거리는 "develo"이어서, 스트링 "develo" 및 거리 20이 고려될 것이다.
이어서 STRING_DISTANCE와 STRING_DISTANCE_THRESHOLD_PHASE_2 사이에서 비교가 이루어진다(단계 590). STRING_DISTANCE가 STRING_DISTANCE_THRESHOLD_PHASE_2(매개변수)보다 크면, 상기 후보가 삭제된다. 그렇지 않으면, 상기 단어는 완성어 버킷(COMPLETIONS_LIST)(단계 600) 또는 전체 단어 버킷(FULL_WORDS_LIST)(단계 610) 중 어느 하나에 부가된다. 최상의 거리가 전체 단어에 대해 얻어진 경우 단어가 전체 단어이고 그렇지 않으면 완성어이다.
상기 예에 대해, STRING_DISTANCE_THRESHOLD_PHASE_2 = 22를 가정하자.
단어 "developed"가 선택되고 완성어 리스트에 부가된다. 후보는 고려된 것으로 표시되고(단계 620) 다음 후보가 고려된다.
대안적으로, 초기 후보 리스트는 사전-랭킹되는 바이그램 리스트 BIGRAMS_LIST의 바이그램들에 대응하는 후보들일 수 있다. 후보의 열 기반 인코딩은 온라인으로 계산될 수 있고 추적된 입력 패턴의 열 기반 인코딩 및 이에 따라 선택된 후보 단어와 비교될 수 있다. 예를 들면, 추적된 입력 패턴의 열 기반 인코딩은 2312이고, 후보 단어 "scored"에 대해 열 기반 인코딩은 2312일 것이다. 후보 단어가 입력 패턴 인코딩과 일치할 때, 이러한 단어가 선택될 것이다. 후보 단어 "scoring"에 대해, 열 기반 인코딩은 231232일 것이다. 후보의 전체 인코딩 "231232"의 초두 "2312"는 입력 패턴들 인코딩과 일치하고 이에 따라 단어는 가능한 완성어로서 선택될 것이다.
국면 3(Phase 3)
도 7에 도시된 제5 흐름도(700)를 참조하여, 지금부터 국면 2 접근법의 적용에 의한 제안들의 발생이 설명될 것이다.
초기 후보들 리스트는 데이터베이스(단계 710)에 저장된 리스트 BIGRAMS_LIST 내의 바이그램에 대응하는 후보들이다. 각각의 바이그램에 대한 후보들의 리스트는 PREFIX_TREE_WITH_ORDERED_LISTS로부터 얻어진다.
상기 분석은 각각의 후보에 대해 수행된다(단계 720). 스트링의 경로 길이가 PATH_LEN_LOWER_THRESHOLD와 PATH_LEN_UPPER_THRESHOLD 사이에 있는 스트링의 부분이 식별된다(단계 730). 이 같은 부분이 존재하는 지를 결정하기 위해 체크가 수행된다(단계 740). 이 같은 부분이 없는 경우, 상기 후보 단어가 생략된다. 스트링의 상기 부분의 시작 및 종료 색인은 C1 및 C2로서 정의된다(단계 750).
상기 예를 고려하면, 단어 "developed"에 대해 (29-39)의 경로 길이 임계값에 대해, 각각의 서브스트링에 대한 경로 길이들은 아래와 같다:
De - 20
Dev - 25
Deve - 27
Devel - 30
Develo - 32
Develop - 35
Develope - 41
Developed - 50
이때 임계값 내의 스트링의 부분은 "lop"이다.
스트링은 C2 색인까지만 고려된다. 후보 스트링의 코너 지점들이 계산된다(CAND_CORNERS_KEYS)(단계 760).
CAND_CORNERS_STRING은 CAND_CORNERS_STRING 내의 키들에 대응하는 문자들의 시퀀스이다.
후보 스트링과 입력 스트링 사이의 STRING_DISTANCE가 계산된다(단계 770). STRING_DISTANCE는 범위(C1 내지 C2) 내의 문자들의 거리 값의 최상 값이 되도록 고려된다.
상기 예에서, 후보 스트링은 "develop" 까지 고려된다. 스트링 거리는 입력 스트링과 "develop" 사이에서 계산된다. 예를 들면:
"C1 - C2" - "lop" 까지의 스트링
String_Distance(입력 스트링, "devel") = 30
String_Distance(입력 스트링, "develo") = 20
String_Distance(입력 스트링, "develop") = 25
범위 C1 내지 C2에서의 문자들 모두의 최상의 거리는 "develo"이어서, 스트링 "develo" 및 거리 20이 고려될 것이다.
STRING_DISTANCE와 STRING_DISTANCE_THRESHOLD_PHASE_3을 비교하도록 체크가 수행된다(단계 780). STRING_DISTANCE가 STRING_DISTANCE_THRESHOLD_PHASE_3(매개변수)보다 크면, 상기 후보 단어가 생략된다. 그렇지 않으면, 상기 단어는 스템 버킷(STEMS_LIST) 또는 전체 단어 버킷(FULL_WORDS_LIST) 중 어느 하나에 부가된다(단계 790). 최상의 거리가 전체 단어에 대해 얻어진 경우 단어가 전체 단어이고(단계 800) 그렇지 않으면 스템(초두)이다(단계 810). 상기 예에 대해, STRING_DISTANCE_THRESHOLD_PHASE_3 = 22인 경우, 스트링 "develo" 가 선택되어 스템 리스트에 부가될 것이다. 후보는 고려된 것으로 표시되고(단계 820) 다음 후보가 고려된다.
한 세트의 유효한 문자 조합들(예를 들면, 바이그램들 또는 트라이그램들)이 정의되고 사전-랭킹된 세트의 단어들은 각각의 유효한 문자 조합과 관련된다. 본 실시예에서, 유효한 문자 조합들은 후보 단어들의 초두들을 형성한다. 상기 초두를 구비한 후보들의 사전-랭킹된 리스트가 이용가능한 경우 STEMS_LIST 내의 각각의 후보에 대해 단어들의 리스트는 완성어 버킷(COMPLETIONS_LIST)에 부가된다(단계 830). 사전-랭킹된 리스트가 이용가능하지 않으면, 상기 초두를 구비한 단어들의 리스트는 알파벳 순서로 또는 사전으로부터 검색된 순서로 부가된다.
STEMS_LIST 내의 각각의 후보에 대해 선택된 단어들의 개수가 변화할 수 있다. 예를 들면, STEMS_LIST가 "dev" 및 "derv"를 포함하는 경우, 초두 "dev" 및 "derv"로 시작하는 단어들은 완성어 리스트 내로 부가된다. COMPLETIONS_LIST는 후보: "development", "developing" 및 "dervish"를 포함한다. 중복어들은, 존재하는 경우 FULL_WORDS_LIST 및 COMPLETIONS_LIST로부터 제거된다.
출력(OUTPUT)
전체 단어 제안들은 FULL_WORDS_LIST로부터의 제안들일 것이고 완성어들은 COMPLETIONS_LIST로부터의 제안들일 것이다. 상이한 제안 유형들은 완전 제안들 및 완성어들에 할당되어 이들을 차별화할 것이고 이 리스트는 플랫폼으로 출력될 것이다.
예(EXAMPLE)
본 발명의 일 실시예에 따른 코어 엔진(120)을 활용하는 휴대 전화 내로 텍스트의 입력의 일 예가 지금부터 설명될 것이다.
사용자는 텍스트 "This is"를 입력하고 다음 단어에 대응하는 입력 패턴을 추적한다. 터치스크린 디스플레이(20)는 사용자에 의해 추적된 지점들의 X, Y 좌표들을 포착하여 이들을 코어 엔진(120)으로 전송한다.
코어 엔진(120)은 사용자에 의해 추적된 입력 패턴을 결정하도록 좌표들의 리스트를 분석한다. 코어 엔진(120)은 입력 패턴에 대응하는 실제 문자 스트링을 연산한다. 예를 들면, 사용자가 다음 글자들 "asdfghuil"에 대응하는 키 위로 지나가거나 이 키들에 근접한 입력 패턴을 추적한다. 대응 키들, 코너 키들 및 코너 스트링, 경로 임계값들이 계산된다. 시퀀스 "ail"은 글자 'i'에 대응하는 키에서 각도를 이루는 입력 패턴으로서 코너 스트링이다.
코어 엔진(120)은 입력 스트링의 유효한 초두들(VALID_PREFIXES_LIST)을 생성한다. 모든 가능한 초두들은 "al", "asl", "adl","afl", "agl", "ahl", "aul", "asdl", "asfl", "asgl", "ashl", "asul", "asil".....일 것이다. 이들 중에서 코어 엔진(120)은 사전에서 그리고 경로 길이 임계값들 내에서 유효한 초두들을 선택한다. 예를 들면, "adl"로 시작하는 단어들이 없으며 이에 따라 코어 엔진은 상기 초두를 건너뛴다. 유효한 초두들의 세트가 "al", "asl", "ail", "agl", "adul" 및 "ail"이라고 가정하자.
유효한 바이그램의 리스트는 특별한 입력 스트링에 대해 발생한다(BIGRAMS_LIST). 초기 부분("ai") 에 근접한 바이그램들은 "al", "as", "ad", "af ", "ag", "ah", "au", "ai", "al", "ax", "ax", "si" 및 "ah"이다. 이들은 예를 들면 사용의 빈도; 및/또는 내용을 기반으로 사전-랭킹된다.
입력 패턴은 열들 2, 1 및 2를 거쳐 지나가며 따라서 열 인코딩은 212이다.
국면 1 제안(Phase 1 Suggestions):
1. (이전의 두 개의 단어들-"This is"를 기반으로 하는) 내용 기반 제안들이 아래와 같다고 가정하자.
1. Good
2. Terrifying
3. All
4. Bad
5. ailment
사전에서 최고의 1회 빈도 단어들이 아래와 같다고 가정하자:
1. The
2. To
3. Of
4. A
5. I
초기 후보 리스트는 최고의 1회 빈도 단어들: "Good", "Terrifying", "All", "Bad", "The", "To", "Of, "A", "I"에 의해 후속되는 내용 기반 제안들이다.
2. VALID_PREFIXES_LIST에서 초두들 중 어느 하나와 동일한 초두를 가지지 않는 후보들이 필터링된다. 필터링된 리스트는 "all" 및 "ailment"로 이루어진다.
3. 입력 스트링과 후보 스트링들 각각 사이의 String_Distance를 계산하자.
아래와 같이 가정하자.
단어: all, string_Distance(all) = 20
단어: ailment, 스트링을 "ail"로 고려하자, string_Distance(ail) = 0
4. 스트링 거리가 임계값 위인 후보들을 필터링하자. 스트링 거리 임계값이 0이라고 하자. 남아 있는 단어들은 "ailment"일 것이고 이는 완성어로서 식별된다.
5. 국면 1 제안들:
전체 단어들 - <없음>
완성어들 - "ailment"
국면 2 제안(Phase 2 Suggestions)::
1. 초기 후보 리스트는 입력 스트링(212)에 대응하는 열 기반 인코딩 그룹 내의 단어들의 리스트이다. 단어들은 사전-랭킹된다.
단어들의 리스트를 아래와 같이 가정하자:
"Fill", "fail", "dull", "full", "ill", "sold", "silk", "hill", "hail", "kill", "ariel", "ail", "ails", "loud", "sill", "aids", "assess".
2. 바이그램 리스트를 기반으로 단어를 필터링하자. 남아 있는 단어들은 "silk", "ail", "ails", "sill", "aids", "assess"이다.
3. 경로 길이 임계값들을 기반으로 후보들을 필터링하자. 남아 있는 단어들은 "silk", "ail", "ails", "sill"이다.
4. 이러한 단어들 각각에 대해 최상의 스트링 거리를 계산하자.
아래와 같이 가정하자,
STRING_DISTANCE("silk") = 20
STRING_DISTANCE("ail") = 0
STRING_DISTANCE("ails") = 0 (경로 길이 일치를 기초로 하여 "ail" 까지 고려된 스트링)
STRING_DISTANCE("sill") = 10
5. 스트링 거리 임계값이 10이라고 가정하자. 선택된 후보들은 "ail", "ails" "sill"일 것이다.
6. 국면 2 제안:
전체 단어들 - "ail", "sill"
완성어들 - "ails"
국면 3 제안(Phase 3 Suggestions):
초기 후보 리스트는 BI_GRAMS 리스트에서 바이그램들의 각각에 대한 후보들의 리스트이다. 바이그램들은 빈도를 기초로 하여 사전-랭킹되고 각각의 바이그램에 대응하는 후보들은 PREFIX_TREE_WITH_ORDERED_LISTS로부터 얻어진다. 후보들 중 일부를 아래와 같이 가정하자:
Al - al, all, all-rounder, allowing
As - as, asleep, astonish
Ad - adults, adjoining
Af - after, affluent
Si - sir, sing, singing
Ai - ail, ailing, ailments
경로 길이 임계값들을 기반으로 후보들을 필터링하자. 남아 있는 후보들을 아래와 같이 가정하자:
Al - al, all, all-rounder, allowing
As - asleep, astonish
Ad - adults, adjoining
Af - affluent
Ai - ail, ailing, ailments
스트링 거리 임계값들을 기반으로 후보들을 필터링하자. 유효한 단어들이 "as", "al", "all" 및 "ail"이고; 및 유효 스템들이 "all", "asl" 및 "ail"이라고 가정하자.
스템 각각에 대해, PREFIX_TREE_WITH_ORDERED_LISTS로부터 최고 제안들을 선택하자. 이들이 "all" - allowing; "asl" - asleep; 및 "ail" - ailing임을 가정하자.
국면 3 제안들은 아래와 같다:
전체 단어들: "al", "all", "ail"
완성어들: "allowing", "asleep", "ailing"
중복어 입력들이 제거되고 사용자에 의한 선택을 위한 최종 리스트들 출력은 아래와 같다:
전체 단어들 - "ail", "sill", "al", "all"
완성어들 - "ailment", "ails", "allowing", "asleep", "ailing"
끝 지점 분석(END POINT ANALYSIS)
입력 패턴의 첫번째 및 마지막 문자들은 디폴트로 코너 지점들로서 정의될 수 있다. 상기 예를 취하면, 사용자가 문자 조합 "ail"를 입력할 것을 의도하는 경우, 이들은 문자 스트링 "asdfghuil"을 생성하는 입력 패턴을 추적할 것이다. 결과적인 입력 패턴의 코너 지점들은 'a', 'i' 및 "l'일 것이다. 입력 패턴의 시작 및 끝 지점들에 대응하는 문자들은 디폴트로 첫번째 및 마지막 코너 지점들로서 고려된다. 시작 및 끝 지점들 사이에서, 입력 패턴은 문자 'i'에 대응하는 키에서 각도를 형성하고 이는 중간 코너 지점으로서 식별된다.
이에 대해, 데이터베이스 내의 각각의 단어가 입력 패턴과 비교된다. 후보 단어가 "ailment"인 경우, 단어 'ailment'와 입력 패턴 사이의 상관관계를 결정하는 것이 필요하다. 가능한 단어 완성어들의 식별에 대해, (입력 패턴이 완성 단어에 대응하지 않을 때) 후보 단어의 마지막 문자는 입력 패턴의 마지막 문자와 일치할 수 없다. 본 예에서, 입력 패턴의 마지막 문자 'ㅣ'에 대한 일치는 후보 단어 "ailment" 사이 어디든지 이다. 이를 수행하는 하나의 방법은 일치가 달성될 깨까지 후보 단어의 각각의 문자와 입력 패턴의 마지막 문자를 일치시키는 것이다, 즉 'l'(입력 패턴의 마지막 문자)를 'a', 'i', 'l'과 비교하는 것이다. 이러한 일치는 제3 위치에서 발생하며, 따라서, 비교는 제3 문자(즉, "ail")까지 이루어진다.
각각의 문자의 비교은 시간 소모적이다. 따라서, 경로 길이 임계값들이 실행된다. 모든 문자들과의 비교 대신, 경로 길이 임계값 내에 있는 스트링의 부분이 식별된다. 예를 들면, 입력 패턴 경로 길이는 7이고 임계값들이 -1/+2로 정의되어 6의 하한 임계값 및 9의 상한 임계값을 제공한다.
1. 후보 단어 "ailment"에 대해
아래와 같이 가정하시오,
path_length('a'->'i') = 5, (경로 길이가 하한 임계값보다 작다)
path_length('a'->'i'->'l') = 7, (경로 길이가 임계값들 사이이다)
path_length('a'->'i'->'l'->'m') = 8, (경로 길이는 임계값들 사이이다)
path_length('a'->'i'->'l'->'m'->'e') = 12. (경로 길이는 상한 임계값보다 크다)
단지 스트링 "lm"의 부분이 고려되고 단지 상기 문자들에 대해서만 끝 문자가 일치된다. 문자 "l"은 제3 문자와의 일치로서 식별된다. STRING_DISTANCE(입력 패턴, 전체 단어 "ailment") = STRING_DISTANCE(IP, "ail") ("ail" - 단어 "ailment"의 초기 부분)
2. 다른 단어가 "agolmler"인 것을 가정하자.
path_length('a'->'g') = 3, (경로 길이는 하한 임계값 미만이다)
path_length('a'->'g'->'o') = 6, (경로 길이는 임계값들 사이이다)
path_length('a'->'g'->O'->'l') = 7, (경로 길이는 임계값들 사이이다)
path_length('a'->'g'->'o'->'l'->'m') = 8, (경로 길이는 임계값들 사이이다)
path_length('a'->'g'->'o'->'l'->'m'->'l') = 9, (경로 길이는 임계값들 사이 이다)
path_length('a'->'g'->'o'->'l'->'m'->'e') = 12. (경로 길이는 상한 임계값보다 크다)
경로 길이 임계값들 내의 스트링의 부분은 "olml"로서 식별되고 문자 일치는 두 개의 장소들(제4 및 제6 문자들)에 발생한다. 이러한 개요에서, STRING_DISTANCE는 제4 및 제6 문자들 둘다까지 고려된다.
구체적으로:
(1) STRING_DISTANCE(IP, "aol") (제4 위치 까지)
(2) STRING_DISTANCE(IP, "aolml") (제6 위치 까지)
STRING_DISTANCE(IP, 전체 단어 "agolmler") = (1) 및 (2) 중 최소치
3. 후보 단어가 "awe"라고 가정하자,
dist('a'->'w') = 1, dist('a'->'w'->'e') = 2
경로 길이 임계값들(6 내지 9) 내에 있는 스트링의 부분이 없으며 따라서 이러한 단어가 생략된다.
본 발명의 사상 및 범주로부터 벗어나지 않으면서 본원에서 설명된 시스템 및 방법에 대해 다양한 변화들 및 수정들이 이루어질 수 있음이 인정될 것이다. 본 발명은 터치스크린을 참조하여 설명되지만, 다른 입력 기술이 이용될 수 있음을 인정할 것이다. 예를 들면, 본 발명은 (예를 들면 키보드, 컴퓨터 마우스, 조이스틱, 또는 입력 패턴을 추적하기 위한 뇌파 제어 시스템에 의해 제어된) 투영 키보드, 온-스크린 커서와 함께 실시될 수 있다. 더욱이, 본 발명을 실행하기 위한 프로세싱은 국부적 프로세싱 요건들을 감소시키기 이해 원격으로, 예를 들면 (인터넷 또는 셀룰러 통신 네트워크와 같은) 통신 네트워크 상에서 실행될 수 있다.
본 발명은 사전 내에서 유효 문자 조합들(또는 초두들)로서 정의되는 입력 패턴에 의해 추적되는 스트링 조합들을 식별하는 것으로서 설명되었다. 대안적인 접근 방법은 단어들 중 어느 하나 내의 임의의 스트링 조합(또는 초두)이 입력 패턴의 서브-시퀀스서인 경우를 결정하도록 사전 내의 각각의 단어를 체크하는 것이다. 스트링 조합을 포함하는 임의의 단어들은 이어서 입력을 위한 후보 단어로서 식별된다.

Claims (31)

  1. 전자 장치에 텍스트를 입력하기 위한 컴퓨터로 실행되는 방법으로서,
    복수의 미리 정의된 비중첩(non-overlapping) 그룹들에 배열된 복수의 키(key)들을 포함하는 가상 키보드를 디스플레이 스크린에 나타내는 단계 ― 각각의 미리 정의된 비중첩 그룹은 복수의 고유 식별자 코드들 중 연관된 하나의 고유 식별자 코드에 할당되고, 하나 이상의 문자들이 상기 키들의 각각과 연관되어 있음 ―;
    상기 가상 키보드의 상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 디스플레이 스크린 상에서 사용자에 의해 생성된 입력 패턴을 검출하는 단계;
    상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 입력 패턴에 대응하는 상기 복수의 고유 식별자 코드들의 시퀀스를 생성함으로써 상기 입력 패턴을 인코딩하는 단계; 및
    인코딩된 상기 입력 패턴에 기초하여 상기 전자 장치 내에 입력될 하나 이상의 후보 단어들을 식별하는 단계를 포함하고, 그리고
    상기 하나 이상의 후보 단어들의 후보에 대해:
    상한 경로 길이 임계값과 하한 경로 길이 임계값 내에 있는 연관된 경로 길이들을 가지는 상기 후보의 복수의 부분들을 식별하는 단계 ― 복수의 부분들은 시퀀스를 형성하고, 상기 시퀀스 내의 각각의 다음 부분은 상기 시퀀스 내의 이전 부분과 동일한 문자들의 세트 및 상기 후보의 부가적인 문자를 가짐 ―;
    복수의 스트링 거리들을 결정하는 단계 ― 각각의 스트링 거리는 상기 복수의 부분들 중 각각의 부분과 상기 입력 패턴 사이에 있음 ―;
    상기 복수의 부분들 중에서, 상기 복수의 스트링 거리들 중에서 최상의(best) 스트링 거리를 갖는 부분을 식별하는 단계; 및
    상기 최상의 스트링 거리 및 스트링 거리 임계값 사이의 비교에 기초하여 상기 전자 장치에 의한 출력을 위한 리스트에 상기 후보를 부가하는 단계를 포함하는,
    컴퓨터로 실행되는 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 후보 단어들은 데이터베이스 내에 저장된 단어들의 하나 이상의 세트로부터 식별되며, 각각의 세트 내의 단어들은 미리 정의된 스트링 조합을 포함하는,
    컴퓨터로 실행되는 방법.
  3. 제2항에 있어서,
    상기 입력 패턴의 적어도 일부분에 대응하는 스트링 조합에 기초하여 상기 하나 이상의 세트들을 식별하는 단계를 포함하는,
    컴퓨터로 실행되는 방법.
  4. 제3항에 있어서,
    상기 입력 패턴의 상기 일부분은 상기 입력 패턴의 초기 부분이며 상기 스트링 조합은 상기 후보의 첫머리의 문자 스트링에 대응하는,
    컴퓨터로 실행되는 방법.
  5. 제4항에 있어서,
    상기 스트링 조합은 바이그램(bigram) 또는 트라이그램(trigram)을 포함하거나 바이그램 또는 트라이그램으로 구성되는,
    컴퓨터로 실행되는 방법.
  6. 삭제
  7. 삭제
  8. 제1항에 있어서,
    상기 미리 정의된 비중첩 그룹들은 각각 상기 가상 키보드 내의 상기 키들의 열(row)에 대응하는,
    컴퓨터로 실행되는 방법.
  9. 삭제
  10. 삭제
  11. 제1항에 있어서,
    상기 하나 이상의 후보 단어들의 각각의 후보에 대한 입력 시퀀스 코드가 저장되어 있고,
    상기 입력 시퀀스 코드는, 단어의 각각의 글자가 배열된 상기 복수의 미리 정의된 비중첩 그룹들에 할당된 상기 복수의 고유 식별자 코드 중 적어도 하나의 고유 식별자 코드로부터 유도되는,
    컴퓨터로 실행되는 방법.
  12. 제1항에 있어서,
    단어의 각각의 글자가 배열된 미리 정의된 비중첩 그룹의 고유 식별자에 기초하여 각각의 후보 단어에 대한 입력 시퀀스 코드가 계산되는,
    컴퓨터로 실행되는 방법.
  13. 제1항에 있어서,
    상기 입력 패턴의 길이를 결정하고, 결정된 상기 길이에 기초하여 상기 상한 경로 길이 임계값 및 상기 하한 경로 길이 임계값을 계산하는 단계를 포함하고,
    상기 하나 이상의 후보 단어들을 식별하는 단계는 상기 상한 경로 길이 임계값 및/또는 상기 하한 경로 길이 임계값에 기초하는,
    컴퓨터로 실행되는 방법.
  14. 삭제
  15. 삭제
  16. 전자 장치에 텍스트를 입력하기 위한 컴퓨터로 실행되는 방법으로서,
    복수의 미리 정의된 비중첩 그룹들에 배열된 복수의 키들을 포함하는 가상 키보드를 디스플레이 스크린에 나타내는 단계 ― 각각의 미리 정의된 비중첩 그룹은 복수의 고유 식별자 코드들 중 연관된 하나의 고유 식별자 코드에 할당되고, 하나 이상의 문자들이 상기 키들의 각각과 연관되어 있음 ―;
    상기 가상 키보드의 상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 디스플레이 스크린 상에서 사용자에 의해 생성된 입력 패턴을 검출하는 단계;
    상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 입력 패턴에 대응하는 상기 복수의 고유 식별자 코드들의 시퀀스에 기초하여 후보들의 초기 리스트를 생성함으로써 상기 입력 패턴을 인코딩하는 단계;
    상기 입력 패턴 상에 또는 상기 입력 패턴 근처에 위치된 각각의 키와 연관된 문자들로 구성되는 하나 이상의 문자 스트링들을 형성하는 단계; 및
    상기 전자 장치에 입력하기 위한 하나 이상의 후보 단어들을 식별하기 위해 상기 하나 이상의 문자 스트링들을 필터링하는 단계 ― 상기 문자 스트링을 필터링하는 단계는 각각의 문자 스트링 내의 유효 및/또는 무효 스트링 조합들을 식별하는 단계를 포함함 ―; 및
    후보들의 필터링된 리스트를 생성하는 단계를 포함하고,
    상기 후보들의 필터링된 리스트는,
    문자들의 상기 유효 스트링 조합들에 상기 후보들의 초기 리스트를 매칭시키는 것; 및
    상기 초기 리스트 내의 후보에 대해:
    상한 경로 길이 임계값과 하한 경로 길이 임계값 내에 있는 연관된 경로 길이들을 가지는 상기 후보의 복수의 부분들을 식별하는 것 ― 복수의 부분들은 시퀀스를 형성하고, 상기 시퀀스 내의 각각의 다음 부분은 상기 시퀀스 내의 이전 부분과 동일한 문자들의 세트 및 상기 후보의 부가적인 문자를 가짐 ―;
    복수의 스트링 거리들을 결정하는 것 ― 각각의 스트링 거리는 상기 복수의 부분들 중 각각의 부분과 상기 입력 패턴 사이에 있음 ―;
    상기 복수의 부분들에서, 상기 복수의 스트링 거리들 중에서 최상의 스트링 거리를 갖는 부분을 식별하는 것; 및
    상기 최상의 스트링 거리 및 스트링 거리 임계값 사이의 비교에 기초하여 상기 필터링된 리스트에 상기 후보를 부가하는 것에 의해 생성되는,
    컴퓨터로 실행되는 방법.
  17. 삭제
  18. 제16항에 있어서,
    상기 문자 스트링을 필터링하는 단계는, 상기 문자 스트링 내의 특정 문자가 상기 문자 스트링 내의 각각의 후속 문자와 조합하여 유효 스트링 조합을 형성하는지를 결정하는 단계를 포함하는,
    컴퓨터로 실행되는 방법.
  19. 제18항에 있어서,
    상기 문자 스트링을 필터링하는 단계는, 상기 입력 패턴의 시작 지점에 대응하는 상기 문자 스트링의 첫번째 문자를 가지고 유효 스트링 조합에 대해 체크하는 것에 의해 필터링을 시작(initiate)하는 단계를 포함하는,
    컴퓨터로 실행되는 방법.
  20. 제19항에 있어서,
    상기 문자 스트링을 필터링하는 단계는, 문자들의 하나 이상의 유효 스트링 조합들에 대해 상기 문자 스트링 내의 각각의 후속 문자와 조합하여 상기 문자 스트링 내의 각각의 문자를 체크하는 단계를 더 포함하는,
    컴퓨터로 실행되는 방법.
  21. 제16항에 있어서,
    상기 유효 및/또는 무효 스트링 조합들은 바이그램 또는 트라이그램을 포함하거나 바이그램 또는 트라이그램으로 구성되는,
    컴퓨터로 실행되는 방법.
  22. 제16항에 있어서,
    상기 입력 패턴과 후보 단어에 대한 모델화된 입력 패턴 사이의 상관관계를 결정하도록 패턴 매칭 알고리즘을 적용하는 단계를 포함하는,
    컴퓨터로 실행되는 방법.
  23. 전자 장치에 텍스트를 입력하기 위한 컴퓨터로 실행되는 방법으로서,
    복수의 미리 정의된 비중첩 그룹들에 배열된 복수의 키들을 포함하는 가상 키보드를 디스플레이 스크린에 나타내는 단계 ― 각각의 미리 정의된 비중첩 그룹은 복수의 고유 식별자 코드들 중 연관된 하나의 고유 식별자 코드에 할당되고, 하나 이상의 문자들이 각각의 키와 연관되어 있음 ―;
    상기 가상 키보드의 상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 디스플레이 스크린 상에서 사용자에 의해 생성된 입력 패턴을 검출하는 단계;
    상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 입력 패턴에 대응하는 상기 복수의 고유 식별자 코드들의 시퀀스를 생성함으로써 상기 입력 패턴을 인코딩하는 단계;
    상기 입력 패턴과 후보 단어에 대한 모델화된 입력 패턴 사이의 상관관계를 결정하도록 패턴 매칭 알고리즘을 적용하는 단계; 및
    상기 상관관계에 기초하여 상기 전자 장치 내에 입력될 후보 단어들 중 하나 이상의 후보 단어를 식별하는 단계를 포함하고, 그리고
    상기 하나 이상의 후보 단어들의 후보에 대해:
    상한 경로 길이 임계값과 하한 경로 길이 임계값 내에 있는 연관된 경로 길이들을 가지는 상기 후보의 복수의 부분들을 식별하는 단계 ― 복수의 부분들은 시퀀스를 형성하고, 상기 시퀀스 내의 각각의 다음 부분은 상기 시퀀스 내의 이전 부분과 동일한 문자들의 세트 및 상기 후보의 부가적인 문자를 가짐 ―;
    복수의 스트링 거리들을 결정하는 단계 ― 각각의 스트링 거리는 상기 복수의 부분들 중 각각의 부분과 상기 입력 패턴 사이에 있음 ―;
    상기 복수의 부분들 중에서, 상기 복수의 스트링 거리들 중에서 최상의 스트링 거리를 갖는 부분을 식별하는 단계; 및
    상기 최상의 스트링 거리 및 스트링 거리 임계값 사이의 비교에 기초하여 상기 전자 장치에 의한 출력을 위한 리스트에 상기 후보를 부가하는 단계를 포함하는,
    컴퓨터로 실행되는 방법.
  24. 제23항에 있어서,
    상기 입력 패턴 내의 코너 지점들의 제1 세트를 식별하는 단계, 및
    상기 모델화된 입력 패턴 내의 코너 지점들의 제2 세트를 식별하는 단계
    를 포함하는,
    컴퓨터로 실행되는 방법.
  25. 제24항에 있어서,
    상기 패턴 매칭 알고리즘은 상기 코너 지점들의 제1 세트 및 제2 세트 사이의 상관관계를 결정하는,
    컴퓨터로 실행되는 방법.
  26. 제24항에 있어서,
    각각의 코너 지점에서의 끼인 각도 및/또는 곡률에 기초하여 상기 제1 세트 및/또는 상기 제2 세트 내의 각각의 코너 지점에 가중치가 적용되는,
    컴퓨터로 실행되는 방법.
  27. 제23항에 있어서,
    상기 패턴 매칭 알고리즘은 다이나믹 타임 워핑(dynamic time warping ) 알고리즘인,
    컴퓨터로 실행되는 방법.
  28. 전자 장치에 텍스트를 입력하기 위한 컴퓨터로 실행되는 방법으로서,
    복수의 미리 정의된 비중첩 그룹들에 배열된 복수의 키들을 포함하는 가상 키보드를 디스플레이 스크린에 나타내는 단계 ― 각각의 미리 정의된 비중첩 그룹은 복수의 고유 식별자 코드들 중 연관된 하나의 고유 식별자 코드에 할당되고, 하나 이상의 문자들이 각각의 키와 연관되어 있음 ―;
    상기 가상 키보드의 상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 디스플레이 스크린 상에서 사용자에 의해 생성된 입력 패턴을 검출하는 단계;
    상기 복수의 미리 정의된 비중첩 그룹들에 걸쳐 상기 입력 패턴에 대응하는 상기 복수의 고유 식별자 코드들의 시퀀스를 생성함으로써 상기 입력 패턴을 인코딩하는 단계;
    상기 입력 패턴 내의 하나 이상의 코너 지점들을 식별하는 단계; 및
    인코딩된 상기 입력 패턴에 기초하여 상기 전자 장치로 입력될 하나 이상의 후보들을 식별하는 단계를 포함하고, 그리고
    상기 하나 이상의 후보들의 후보에 대해:
    상한 경로 길이 임계값과 하한 경로 길이 임계값 내에 있는 연관된 경로 길이들을 가지는 상기 후보의 복수의 부분들을 식별하는 단계 ― 복수의 부분들은 시퀀스를 형성하고, 상기 시퀀스 내의 각각의 다음 부분은 상기 시퀀스 내의 이전 부분과 동일한 문자들의 세트 및 상기 후보의 부가적인 문자를 가짐 ―;
    복수의 스트링 거리들을 결정하는 단계 ― 각각의 스트링 거리는 상기 복수의 부분들 중 각각의 부분과 상기 입력 패턴 사이에 있음 ―;
    상기 복수의 부분들 중에서, 상기 복수의 스트링 거리들 중에서 최상의 스트링 거리를 갖는 부분을 식별하는 단계; 및
    상기 최상의 스트링 거리 및 스트링 거리 임계값 사이의 비교에 기초하여 상기 전자 장치에 의한 출력을 위한 리스트에 상기 후보를 부가하는 단계를 포함하며,
    상기 코너 지점에서 끼인 각도 및/또는 곡률이 측정되고, 측정된 끼인 각도 및/또는 곡률에 기초하여 가중치가 적용되는,
    컴퓨터로 실행되는 방법.
  29. 삭제
  30. 삭제
  31. 제1항 내지 제5항, 제8항, 제11항 내지 제13항, 제16항, 및 제18항 내지 제28항 중 어느 한 항에 따른 방법을 실시하기 위한 명령어들을 실행하도록 구성되는 컴퓨팅 장치.
KR1020157022618A 2013-01-21 2014-01-20 텍스트 입력 시스템 및 방법 KR102306899B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN260/CHE/2013 2013-01-21
IN260CH2013 2013-01-21
PCT/IN2014/000039 WO2014111959A2 (en) 2013-01-21 2014-01-20 Text input system and method

Publications (2)

Publication Number Publication Date
KR20150109447A KR20150109447A (ko) 2015-10-01
KR102306899B1 true KR102306899B1 (ko) 2021-09-30

Family

ID=51210162

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157022618A KR102306899B1 (ko) 2013-01-21 2014-01-20 텍스트 입력 시스템 및 방법

Country Status (5)

Country Link
US (1) US10474355B2 (ko)
EP (1) EP2946272A4 (ko)
KR (1) KR102306899B1 (ko)
CN (1) CN105027040B (ko)
WO (1) WO2014111959A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104007832B (zh) 2013-02-25 2017-09-01 上海触乐信息科技有限公司 连续滑行输入文本的方法、系统及设备
US10019567B1 (en) * 2014-03-24 2018-07-10 Amazon Technologies, Inc. Encoding of security codes
CN104281275B (zh) * 2014-09-17 2016-07-06 北京搜狗科技发展有限公司 一种英文的输入方法和装置
GB201418402D0 (en) * 2014-10-16 2014-12-03 Touchtype Ltd Text prediction integration
CN106227333A (zh) * 2016-07-14 2016-12-14 深圳市金立通信设备有限公司 一种终端及其多媒体互动方法
US10635693B2 (en) 2016-11-11 2020-04-28 International Business Machines Corporation Efficiently finding potential duplicate values in data
CN109271037B (zh) * 2017-07-13 2022-09-09 北京搜狗科技发展有限公司 一种纠错词库的建立方法和装置
CN109214167B (zh) * 2018-08-01 2021-04-16 深圳市文鼎创数据科技有限公司 一种智能密钥安全设备及其密钥恢复方法、存储介质
GB201820569D0 (en) * 2018-12-18 2019-01-30 Continental Automotive Gmbh Printed character recognition
WO2020146784A1 (en) * 2019-01-10 2020-07-16 Chevron U.S.A. Inc. Converting unstructured technical reports to structured technical reports using machine learning
CN110928429B (zh) * 2019-11-22 2020-12-22 北京海泰方圆科技股份有限公司 一种信息输入方法、装置、介质和设备
US11735169B2 (en) * 2020-03-20 2023-08-22 International Business Machines Corporation Speech recognition and training for data inputs
US11256864B2 (en) * 2020-06-19 2022-02-22 Apple, Inc. Contacts autocomplete keyboard
WO2022212652A1 (en) * 2021-03-31 2022-10-06 Cerini Arielle Nicole Digital penmanship
US20230315216A1 (en) * 2022-03-31 2023-10-05 Rensselaer Polytechnic Institute Digital penmanship

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040140956A1 (en) * 2003-01-16 2004-07-22 Kushler Clifford A. System and method for continuous stroke word-based text input
JP2009112540A (ja) * 2007-11-07 2009-05-28 Toshiba Corp 関節屈曲動作予測装置および関節屈曲動作予測方法
US20110078563A1 (en) * 2009-09-29 2011-03-31 Verizon Patent And Licensing, Inc. Proximity weighted predictive key entry
US20130006639A1 (en) * 2005-10-22 2013-01-03 Nuance Communications, Inc. System and method for improving text input in a shorthand-on-keyboard interface

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB231418A (en) 1924-03-29 1925-08-06 Walther Koeniger Improvements in means for freezing portions of liquid below the surface of the liquid, for raising sunken ships and other sunken objects
GB233117A (en) 1924-04-10 1925-05-07 Tom Kay Improvements in dust extractors for emery wheels, polishing spindles and the like
GB233297A (en) 1924-04-29 1925-06-04 Atlas Diesel Ab Improvements in or relating to supplying liquid fuel to internalcombustion engines
GB233734A (en) 1924-05-12 1926-07-29 Ver Chemische & Metallurgische Improvements in and relating to processes for obtaining high percentage anthracene and carbazole from crude anthracene
US4650927A (en) 1984-11-29 1987-03-17 International Business Machines Corporation Processor-assisted communication system using tone-generating telephones
DE3528264A1 (de) 1985-08-07 1987-02-12 Bayer Ag Phosphor(phosphon)-saeureester
CA2006163A1 (en) 1988-12-21 1990-06-21 Alfred B. Freeman Keyboard express typing system
US5621641A (en) 1988-12-21 1997-04-15 Freeman; Alfred B. Computer assisted text system
US5128672A (en) 1990-10-30 1992-07-07 Apple Computer, Inc. Dynamic predictive keyboard
JPH0736175B2 (ja) 1991-10-11 1995-04-19 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムのシステム構成設定方法、データ処理システム、及びデータ処理システム用拡張ユニット
JPH05233623A (ja) 1991-11-27 1993-09-10 Internatl Business Mach Corp <Ibm> ストローク構文入力装置
CA2089784C (en) 1992-04-15 1996-12-24 William Joseph Anderson Apparatus and method for disambiguating an input stream generated by a stylus-based user interface
JPH0759170A (ja) 1993-08-19 1995-03-03 Toshiba Corp リモートコントロール装置
GB2283598A (en) 1993-11-03 1995-05-10 Ibm Data entry workstation
JP3546337B2 (ja) 1993-12-21 2004-07-28 ゼロックス コーポレイション 計算システム用ユーザ・インタフェース装置及びグラフィック・キーボード使用方法
IL108565A0 (en) 1994-02-04 1994-05-30 Baron Research & Dev Company L Improved information input apparatus
US5982302A (en) 1994-03-07 1999-11-09 Ure; Michael J. Touch-sensitive keyboard/mouse
US5574482A (en) 1994-05-17 1996-11-12 Niemeier; Charles J. Method for data input on a touch-sensitive screen
US5687254A (en) * 1994-06-06 1997-11-11 Xerox Corporation Searching and Matching unrecognized handwriting
JP3688738B2 (ja) 1994-10-28 2005-08-31 富士通株式会社 対話ボックスを持つデータ処理装置
US5748512A (en) 1995-02-28 1998-05-05 Microsoft Corporation Adjusting keyboard
US5786776A (en) 1995-03-13 1998-07-28 Kabushiki Kaisha Toshiba Character input terminal device and recording apparatus
AU2191095A (en) 1995-03-27 1996-10-16 Donald K. Forest Method of and apparatus for data entry
US6903723B1 (en) 1995-03-27 2005-06-07 Donald K. Forest Data entry method and apparatus
US6160536A (en) 1995-03-27 2000-12-12 Forest; Donald K. Dwell time indication method and apparatus
US5797098A (en) 1995-07-19 1998-08-18 Pacific Communication Sciences, Inc. User interface for cellular telephone
US6005549A (en) 1995-07-24 1999-12-21 Forest; Donald K. User interface method and apparatus
US5999895A (en) 1995-07-24 1999-12-07 Forest; Donald K. Sound operated menu method and apparatus
CA2227904C (en) 1995-07-26 2000-11-14 Tegic Communications, Inc. Reduced keyboard disambiguating system
JP3727399B2 (ja) 1996-02-19 2005-12-14 ミサワホーム株式会社 画面表示式キー入力装置
US5911485A (en) 1995-12-11 1999-06-15 Unwired Planet, Inc. Predictive data entry method for a keypad
US5625354A (en) 1996-01-26 1997-04-29 Lerman; Samuel I. Compact stylus keyboard
JPH10154144A (ja) 1996-11-25 1998-06-09 Sony Corp 文章入力装置及び方法
US5953541A (en) 1997-01-24 1999-09-14 Tegic Communications, Inc. Disambiguating system for disambiguating ambiguous input sequences by displaying objects associated with the generated input sequences in the order of decreasing frequency of use
US6640006B2 (en) * 1998-02-13 2003-10-28 Microsoft Corporation Word segmentation in chinese text
US6104317A (en) 1998-02-27 2000-08-15 Motorola, Inc. Data entry device and method
US6031525A (en) 1998-04-01 2000-02-29 New York University Method and apparatus for writing
KR100327209B1 (ko) 1998-05-12 2002-04-17 윤종용 첨펜의자취를이용한소프트웨어키보드시스템및그에따른키코드인식방법
US6741267B1 (en) 1998-10-30 2004-05-25 Smart Technologies, Inc. Keyboard for an electronic writeboard and method
US7679534B2 (en) 1998-12-04 2010-03-16 Tegic Communications, Inc. Contextual prediction of user words and user actions
EA004128B1 (ru) 1998-12-10 2003-12-25 Итони Эргономикс, Инк. Устройства с высоким разрешением печати вслепую, основанные на неоднозначных кодах, и способы разработки таких устройств
US6313825B1 (en) 1998-12-28 2001-11-06 Gateway, Inc. Virtual input device
DE60003177T2 (de) 1999-03-18 2004-05-06 602531 British Columbia Ltd., Vancouver Dateneingabe für personalrechnergeräte
US6614422B1 (en) 1999-11-04 2003-09-02 Canesta, Inc. Method and apparatus for entering data using a virtual input device
US7750891B2 (en) 2003-04-09 2010-07-06 Tegic Communications, Inc. Selective input system based on tracking of motion parameters of an input device
JP4519381B2 (ja) 1999-05-27 2010-08-04 テジック コミュニケーションズ インク 自動訂正機能を備えたキーボード・システム
US6535883B1 (en) 1999-08-04 2003-03-18 Mdsi Software Srl System and method for creating validation rules used to confirm input data
JP2003516576A (ja) 1999-12-08 2003-05-13 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ポータブル通信装置及びその通信方法
WO2001055829A1 (en) 2000-01-26 2001-08-02 D'agostini Organizzazione S.R.L. Character input device based on a two-dimensional movement sensor
US20020049795A1 (en) 2000-05-15 2002-04-25 Freeman Alfred Boyd Computer assisted text input system
WO2002008882A1 (de) 2000-07-21 2002-01-31 Raphael Bachmann Verfahren für ein schnellschreibsystem und schnellschreibgerät
CA2323856A1 (en) 2000-10-18 2002-04-18 602531 British Columbia Ltd. Method, system and media for entering data in a personal computing device
DE60131894T2 (de) 2000-10-18 2008-12-18 602531 British Columbia Ltd., Vancouver Verfahren, System und Medien zum Eingeben von Daten in eine Personal-Computer-Vorrichtung
US6501464B1 (en) 2000-10-31 2002-12-31 Intel Corporation On-screen transparent keyboard interface
US6967642B2 (en) 2001-01-31 2005-11-22 Microsoft Corporation Input device with pattern and tactile feedback for computer input and control
US6847706B2 (en) 2001-03-20 2005-01-25 Saied Bozorgui-Nesbat Method and apparatus for alphanumeric data entry using a keypad
EP1246048A1 (en) 2001-03-26 2002-10-02 SAP Aktiengesellschaft Method and computer system for executing functions for objects based on the movement of an input device
GB0112870D0 (en) 2001-05-25 2001-07-18 Koninkl Philips Electronics Nv Text entry method and device therefore
US6990534B2 (en) 2001-07-20 2006-01-24 Flowfinity Wireless, Inc. Method for a proactive browser system for implementing background frame maintenance and asynchronous frame submissions
US9164654B2 (en) 2002-12-10 2015-10-20 Neonode Inc. User interface for mobile computer unit
US8095879B2 (en) 2002-12-10 2012-01-10 Neonode Inc. User interface for mobile handheld computer unit
US20040163032A1 (en) 2002-12-17 2004-08-19 Jin Guo Ambiguity resolution for predictive text entry
US7251367B2 (en) * 2002-12-20 2007-07-31 International Business Machines Corporation System and method for recognizing word patterns based on a virtual keyboard layout
US7453439B1 (en) 2003-01-16 2008-11-18 Forward Input Inc. System and method for continuous stroke word-based text input
US7382358B2 (en) 2003-01-16 2008-06-03 Forword Input, Inc. System and method for continuous stroke word-based text input
US7411575B2 (en) 2003-09-16 2008-08-12 Smart Technologies Ulc Gesture recognition method and touch system incorporating the same
US7706616B2 (en) 2004-02-27 2010-04-27 International Business Machines Corporation System and method for recognizing word patterns in a very large vocabulary based on a virtual keyboard layout
US7555732B2 (en) * 2004-03-12 2009-06-30 Steven Van der Hoeven Apparatus method and system for a data entry interface
GB0406451D0 (en) 2004-03-23 2004-04-28 Patel Sanjay Keyboards
KR101128572B1 (ko) 2004-07-30 2012-04-23 애플 인크. 터치 감지 입력 장치용 제스처
US20060176283A1 (en) 2004-08-06 2006-08-10 Daniel Suraqui Finger activated reduced keyboard and a method for performing text input
GB0505941D0 (en) 2005-03-23 2005-04-27 Patel Sanjay Human-to-mobile interfaces
GB0505942D0 (en) 2005-03-23 2005-04-27 Patel Sanjay Human to mobile interfaces
US8036878B2 (en) 2005-05-18 2011-10-11 Never Wall Treuhand GmbH Device incorporating improved text input mechanism
US9606634B2 (en) 2005-05-18 2017-03-28 Nokia Technologies Oy Device incorporating improved text input mechanism
US8117540B2 (en) 2005-05-18 2012-02-14 Neuer Wall Treuhand Gmbh Method and device incorporating improved text input mechanism
US7886233B2 (en) 2005-05-23 2011-02-08 Nokia Corporation Electronic text input involving word completion functionality for predicting word candidates for partial word inputs
US7542029B2 (en) 2005-09-20 2009-06-02 Cliff Kushler System and method for a user interface for text editing and menu selection
JP2007316732A (ja) 2006-05-23 2007-12-06 Sharp Corp 項目選択装置、情報処理装置、及び項目選択のためのコンピュータプログラム
US8225203B2 (en) * 2007-02-01 2012-07-17 Nuance Communications, Inc. Spell-check for a keyboard system with automatic correction
JP4694579B2 (ja) 2007-04-11 2011-06-08 株式会社フェイビー 文字入力システム
US7895518B2 (en) 2007-04-27 2011-02-22 Shapewriter Inc. System and method for preview and selection of words
US8504349B2 (en) 2007-06-18 2013-08-06 Microsoft Corporation Text prediction with partial selection in a variety of domains
WO2009005415A1 (en) 2007-07-03 2009-01-08 Teleca Sweden Ab Method for displaying content on a multimedia player and a multimedia player
CN100545792C (zh) 2007-08-24 2009-09-30 上海汉翔信息技术有限公司 电子设备屏幕上实现智能软件键盘输入的方法
IL188523A0 (en) * 2008-01-01 2008-11-03 Keyless Systems Ltd Data entry system
CN100592249C (zh) 2007-09-21 2010-02-24 上海汉翔信息技术有限公司 快速输入相关词的方法
EP2077486A1 (en) 2007-12-28 2009-07-08 Research In Motion Limited Keypad navigation selection and method on mobile device
US8232973B2 (en) 2008-01-09 2012-07-31 Apple Inc. Method, device, and graphical user interface providing word recommendations for text input
US8756527B2 (en) 2008-01-18 2014-06-17 Rpx Corporation Method, apparatus and computer program product for providing a word input mechanism
CN101266520B (zh) 2008-04-18 2013-03-27 上海触乐信息科技有限公司 一种可实现灵活键盘布局的系统
KR100988397B1 (ko) 2008-06-09 2010-10-19 엘지전자 주식회사 이동 단말기 및 그의 텍스트 수정방법
CA2733645A1 (en) 2008-08-12 2010-02-18 Keyless Systems Ltd. Data entry system
US20110209087A1 (en) 2008-10-07 2011-08-25 TikiLabs Method and device for controlling an inputting data
US20100114930A1 (en) 2008-11-06 2010-05-06 Samsung Electronics Co., Ltd Situation-aware, interest based search query generation
US8669941B2 (en) 2009-01-05 2014-03-11 Nuance Communications, Inc. Method and apparatus for text entry
US20100199176A1 (en) 2009-02-02 2010-08-05 Chronqvist Fredrik A Electronic device with text prediction function and method
US8605039B2 (en) 2009-03-06 2013-12-10 Zimpl Ab Text input
GB0905457D0 (en) 2009-03-30 2009-05-13 Touchtype Ltd System and method for inputting text into electronic devices
GB0917753D0 (en) 2009-10-09 2009-11-25 Touchtype Ltd System and method for inputting text into electronic devices
GB201016385D0 (en) 2010-09-29 2010-11-10 Touchtype Ltd System and method for inputting text into electronic devices
US8212788B2 (en) * 2009-05-07 2012-07-03 Microsoft Corporation Touch input to modulate changeable parameter
JP2009283015A (ja) 2009-09-02 2009-12-03 Kyocera Corp 情報入力支援装置
US9317116B2 (en) 2009-09-09 2016-04-19 Immersion Corporation Systems and methods for haptically-enhanced text interfaces
US20110063231A1 (en) * 2009-09-14 2011-03-17 Invotek, Inc. Method and Device for Data Input
US8135582B2 (en) 2009-10-04 2012-03-13 Daniel Suraqui Keyboard system and method for global disambiguation from classes with dictionary database from first and last letters
US20110087961A1 (en) 2009-10-11 2011-04-14 A.I Type Ltd. Method and System for Assisting in Typing
US8884872B2 (en) 2009-11-20 2014-11-11 Nuance Communications, Inc. Gesture-based repetition of key activations on a virtual keyboard
WO2011094931A1 (en) 2010-02-03 2011-08-11 Nokia Corporation Method and apparatus for providing context attributes and informational links for media data
US8782556B2 (en) 2010-02-12 2014-07-15 Microsoft Corporation User-centric soft keyboard predictive technologies
GB201003628D0 (en) 2010-03-04 2010-04-21 Touchtype Ltd System and method for inputting text into electronic devices
KR101477530B1 (ko) * 2010-03-12 2014-12-30 뉘앙스 커뮤니케이션즈, 인코포레이티드 이동 전화의 터치 스크린과 함께 사용하기 위한 다중 모드 문자 입력 시스템
JP2012003545A (ja) 2010-06-17 2012-01-05 Nec Corp 情報処理端末およびその操作制御方法
US8266528B1 (en) 2010-06-24 2012-09-11 Google Inc. Spelling suggestions based on an input sequence including accidental “delete”
US8918734B2 (en) 2010-07-28 2014-12-23 Nuance Communications, Inc. Reduced keyboard with prediction solutions when input is a partial sliding trajectory
US8523250B2 (en) * 2010-12-06 2013-09-03 Lynn Chiung-Ling Chen Top-and-bottom latch structure for lock
CN103502915B (zh) 2011-04-09 2017-01-11 上海触乐信息科技有限公司 电子设备上基于屏幕软件键盘实现滑动输入文本的系统及方法
JP2013003801A (ja) 2011-06-15 2013-01-07 Sharp Corp 文字入力装置、文字入力装置の制御方法、制御プログラム、及び記録媒体
US20130002556A1 (en) 2011-07-01 2013-01-03 Jason Tyler Griffin System and method for seamless switching among different text entry systems on an ambiguous keyboard
US20130018954A1 (en) 2011-07-15 2013-01-17 Samsung Electronics Co., Ltd. Situation-aware user sentiment social interest models
CN102360249B (zh) 2011-09-29 2016-09-07 上海触乐信息科技有限公司 分立式键盘布局系统和设置方法、相应的便携电子设备及控制方法
US9122672B2 (en) 2011-11-10 2015-09-01 Blackberry Limited In-letter word prediction for virtual keyboard
US9223497B2 (en) 2012-03-16 2015-12-29 Blackberry Limited In-context word prediction and word correction
US20130285916A1 (en) 2012-04-30 2013-10-31 Research In Motion Limited Touchscreen keyboard providing word predictions at locations in association with candidate letters
US9128921B2 (en) 2012-05-31 2015-09-08 Blackberry Limited Touchscreen keyboard with corrective word prediction
US9116552B2 (en) 2012-06-27 2015-08-25 Blackberry Limited Touchscreen keyboard providing selection of word predictions in partitions of the touchscreen keyboard
CN102739873B (zh) 2012-07-13 2017-01-18 上海触乐信息科技有限公司 便携式终端设备滑行操作辅助信息输入控制功能的系统及方法
US20140063067A1 (en) 2012-08-31 2014-03-06 Research In Motion Limited Method to select word by swiping capacitive keyboard

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040140956A1 (en) * 2003-01-16 2004-07-22 Kushler Clifford A. System and method for continuous stroke word-based text input
US20130006639A1 (en) * 2005-10-22 2013-01-03 Nuance Communications, Inc. System and method for improving text input in a shorthand-on-keyboard interface
JP2009112540A (ja) * 2007-11-07 2009-05-28 Toshiba Corp 関節屈曲動作予測装置および関節屈曲動作予測方法
US20110078563A1 (en) * 2009-09-29 2011-03-31 Verizon Patent And Licensing, Inc. Proximity weighted predictive key entry

Also Published As

Publication number Publication date
US10474355B2 (en) 2019-11-12
WO2014111959A2 (en) 2014-07-24
CN105027040B (zh) 2018-09-21
EP2946272A4 (en) 2016-11-02
US20150355836A1 (en) 2015-12-10
KR20150109447A (ko) 2015-10-01
WO2014111959A3 (en) 2015-09-11
EP2946272A2 (en) 2015-11-25
CN105027040A (zh) 2015-11-04

Similar Documents

Publication Publication Date Title
KR102306899B1 (ko) 텍스트 입력 시스템 및 방법
JP6492239B2 (ja) テキスト入力のためのシステム及び方法
US11614862B2 (en) System and method for inputting text into electronic devices
US11334717B2 (en) Touch keyboard using a trained model
US8914275B2 (en) Text prediction
US9798393B2 (en) Text correction processing
US10445424B2 (en) System and method for inputting text into electronic devices
US8892996B2 (en) Spell-check for a keyboard system with automatic correction
CA2514470A1 (en) System and method for continuous stroke word-based text input
CN105431809A (zh) 用于国际语言的虚拟键盘输入
CN103299550A (zh) 用于具有自动校正的键盘系统的拼写检查
US20140181723A1 (en) System and method for text input with a multi-touch screen
CN111052064A (zh) 自动提供基于手势的自动完成建议的方法及其电子设备
CN105164676A (zh) 查询特征和问题
JP4687089B2 (ja) 重複レコード検出システム、および重複レコード検出プログラム
JP4108337B2 (ja) 電子ファイリングシステム及びその検索インデックス作成方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right