KR101398117B1 - 단어 구분자를 포함하는 문자 스트링의 에러 정정 - Google Patents

단어 구분자를 포함하는 문자 스트링의 에러 정정 Download PDF

Info

Publication number
KR101398117B1
KR101398117B1 KR1020130123590A KR20130123590A KR101398117B1 KR 101398117 B1 KR101398117 B1 KR 101398117B1 KR 1020130123590 A KR1020130123590 A KR 1020130123590A KR 20130123590 A KR20130123590 A KR 20130123590A KR 101398117 B1 KR101398117 B1 KR 101398117B1
Authority
KR
South Korea
Prior art keywords
character string
character
computing device
series
display
Prior art date
Application number
KR1020130123590A
Other languages
English (en)
Other versions
KR20140048830A (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 KR20140048830A publication Critical patent/KR20140048830A/ko
Application granted granted Critical
Publication of KR101398117B1 publication Critical patent/KR101398117B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • 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]
    • 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/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/0489Interaction 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 dedicated keyboard keys or combinations thereof
    • G06F3/04895Guidance during keyboard input operation, e.g. prompting
    • 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/232Orthographic correction, e.g. spell checking or vowelisation

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)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • User Interface Of Digital Computer (AREA)
  • Machine Translation (AREA)

Abstract

제 1 시리즈의 유저 입력이 제 1 문자 스트링에 대응하는 것으로 결정한 것에 응답하여, 상기 컴퓨팅 디바이스는, 디스플레이를 위해, 상기 제 1 문자 스트링을 출력한다. 제 2 문자 스트링이 상기 제 1 문자 스트링보다 상기 제 1 시리즈의 유저 입력에 더 대응할 것 같은 것으로 결정한 것에 응답하여, 상기 컴퓨팅 디바이스는 상기 제 1 문자 스트링 대신에 상기 제 2 문자 스트링을 출력한다. 상기 제 1 시리즈의 유저 입력을 수신한 후에, 상기 컴퓨팅 디바이스는 제 2 시리즈의 유저 입력을 수신한다. 상기 제 2 시리즈의 유저 입력이 제 3 문자 스트링에 대응하는 것으로 결정한 것에 응답하여, 상기 컴퓨팅 디바이스는 상기 제 3 문자 스트링을 출력한다. 상기 컴퓨팅 디바이스는, 상기 제 1 및 제 2 시리즈의 유저 입력들에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정하고, 디스플레이를 위해, 상기 제 4 문자 스트링을 출력한다.

Description

단어 구분자를 포함하는 문자 스트링의 에러 정정{CORRECTION OF ERRORS IN CHARACTER STRINGS THAT INCLUDE A WORD DELIMITER}
본 발명은 단어 구분자(word delimiter)를 포함하는 문자 스트링(character string)에서 에러를 정정하는 것에 관한 것이다.
일부 컴퓨팅 디바이스(예를 들어, 모바일 폰, 태블릿 컴퓨터 등)는 (예를 들어, 존재-감응 입력 디바이스(presence-sensitive input device) 및/또는 디스플레이, 예를 들어 터치스크린(touchscreen)을 사용하여) 텍스트(text)를 작성하기 위한 그래픽 유저 인터페이스(graphic user interface)의 일부로서 그래픽 키보드(graphic keyboard)를 제공할 수 있다. 이 그래픽 키보드는 컴퓨팅 디바이스의 유저로 하여금 텍스트(예를 들어, 이메일(e-mail), 텍스트 메시지, 또는 문서(document) 등)를 입력할 수 있게 할 수 있다. 예를 들어, 컴퓨팅 디바이스의 존재 감응 디스플레이는 유저로 하여금 존재-감응 디스플레이에서 디스플레이된 키를 표시하는(indicating) 것(예를 들어, 탭핑(tapping)하는 것)에 의해 데이터를 입력할 수 있게 하는 그래픽(또는 "소프트(soft)") 키보드를 출력할 수 있다.
일부 경우에, 컴퓨팅 디바이스는 연속적인-제스처(gesture) 그래픽 키보드(종종 "제스처 키보드(gesture keyboard)" 또는 "단어-제스처 키보드(word-gesture key-board)"라고 언급된다)를 제공할 수 있는데, 이 경우 유저는 이 그래픽 키보드의 키와 연관된 존재-감응 디스플레이의 구역(region)에 걸쳐 자기의 손가락을 슬라이딩(sliding)하여, 본질적으로 컴퓨팅 디바이스에 입력할 단어를 제스처 취하는 것에 의해 이 그래픽 키보드와 상호대화할 수 있다. 다른 단어에서, 유저는 존재-감응 디스플레이에서 출력된 단어의 글자(letter)를 추적(trace over)하는 것에 의해 단일 제스처로 전체 단어를 입력할 수 있다. 이런 방식으로, 연속적인-제스처 그래픽 키보드는 유저로 하여금 제스처로 단어 또는 단어 그룹을 입력하게 하는 입력 방법을 제공한다. 그리하여, 연속적인-제스처 그래픽 키보드는 유저로 하여금, 특히, 존재-감응 스크린(예를 들어, 컴퓨팅 디바이스에 동작가능하게 연결되거나 이에 집적된 존재-감응 스크린)을 한 손으로 탭핑하는 것에 비해 특정 정도의 효율을 달성하게 할 수 있다.
유저는 텍스트를 컴퓨팅 디바이스에 입력할 때 자주 타이핑 에러를 한다. 유저가 타이핑 에러를 하는 빈도는 특히 작은 가상 키보드(virtual keyboard), 예를 들어, 모바일 전화 및 태블릿에서 일반적으로 발견되는 키보드에서 높을 수 있다. 유저가 더 적은 타이핑 에러로 텍스트를 입력하는 것을 돕기 위해, 컴퓨팅 디바이스는 입력된 단어가 언어 사전(lexicon)에 있지 않는 것인지 여부를 결정하고 유저가 입력하고자 의도한 단어를 식별하고자 시도할 수 있다. 이때, 컴퓨팅 디바이스는 입력된 단어를 식별된 단어로 자동으로 대체할 수 있다.
하나의 일반적인 유형의 타이핑 에러는 어구(phrase) 내 잘못된 곳에 스페이스 문자(space character)를 타이핑하는 것을 포함한다. 예를 들어, 유저가 어구(phrase) "this is"를 타이핑할 때, 유저는 스페이스 문자를 너무 일찍 입력할 수 있고, 그 결과 유저는 문자의 다음 시퀀스 "thi sis"를 입력할 수 있다. 이 예에서, 컴퓨팅 디바이스는 스페이스 문자가 스페이스 문자 앞에 발생하는 문자들이 하드 커밋(hard commit)인지 여부를 결정할 수 있다. 컴퓨팅 디바이스는 스페이스 문자의 유저 입력 후에 수신된 임의의 유저 입력(예를 들어, 탭핑 제스처)이 그 다음 단어와 관련된 것인지를 고려할 수 있다. 따라서, 이 예에서, 컴퓨팅 디바이스는 스페이스 문자의 유저 입력 후에 수신된 유저 입력에 기초하여 스페이스 문자 전에 발생하는 문자를 수정할 수 없다.
나아가, 본 예에서, 컴퓨팅 디바이스는 "thi"이 사전에 없는 것이어서 자동으로 "thi"를 사전에 있는 문자 스트링, 예를 들어 "this"으로 자동으로 대체할 수 있는지를 결정할 수 있다. 그 결과, 컴퓨팅 디바이스는 원하는 어구(phrase)가 아닌 어구(phrase) "this sis"를 출력할 수 있다. 그 결과, 이 예에서, 유저는 원하는 문자 스트링 "this is"를 얻기 위해 문자 스트링 "this" 및 문자 스트링 "sis" 중 어느 하나 또는 둘 모두를 수동으로 정정해야 할 수 있다. 이러한 수동 정정은 유저의 텍스트 입력을 느리게 하고, 생산성을 감소시키며 유저의 의욕을 저하시킬 수 있다.
또 다른 문제는 유저가 스페이스 문자를 더 입력할 때까지 문자 스트링에 타이핑 에러가 발생한 것을 유저가 인지하지 못할 만큼 유저가 문자 스트링을 너무 빨리 입력하는 경우에 발생할 수 있다. 이 경우에, 컴퓨팅 디바이스가 스페이스 문자의 선택을 나타내는 입력을 수신한 후, 컴퓨팅 디바이스는 문자 스트링의 제안(suggestion)을 폐기(discard)할 수 있다. 또한 이 경우에, 유저가 스페이스 문자를 입력하기 전에 타이핑 에러를 인지하였다면, 유저는 컴퓨팅 디바이스에 의해 제공된 문자 스트링 제안 중 하나를 선택하는 것에 의해 타이핑 에러를 정정할 수 있다. 그러나, 이 경우에, 유저는 스페이스 문자의 선택을 나타내는 입력을 이미 입력한 상태에 있으므로, 유저는 타이핑 에러를 정정하기 위해 제공된 문자 스트링 제안으로부터 복구하고 선택할 방법이 없을 수 있다. 그 결과, 이 경우에 유저는 커서를 재위치시켜 수동으로 문자 스트링에 있는 타이핑 에러를 정정하여 원하는 텍스트를 컴퓨팅 디바이스에 입력하는 것이 요구될 수 있다.
일 측면에서, 방법은 컴퓨팅 디바이스에 의하여, 제 1 시리즈(series)의 하나 이상의 유저 입력을 수신하는 단계를 포함한다. 나아가, 본 방법은 제 1 시리즈의 하나 이상의 유저 입력에 기초하여 디스플레이를 위해 제 1 문자 스트링을 출력하는 단계를 포함한다. 게다가, 본 방법은, 제 1 스트링이 단어 구분자(word delimiter)로 종료(end)하고 제 2 문자 스트링이 제 1 문자 스트링보다 제 1 시리즈의 유저 입력에 더 대응할 것 같은(more likely) 것으로 결정함에 응답하여, 상기 컴퓨팅 디바이스에 의해, 상기 제 1 문자 스트링 대신에 제 2 문자 스트링을, 디스플레이를 위해, 출력하는 단계를 포함한다. 본 방법은 또한, 제 1 시리즈의 하나 이상의 유저 입력을 수신한 후, 상기 컴퓨팅 디바이스에 의해, 제 2 시리즈의 하나 이상의 유저 입력을 수신하는 단계를 포함한다. 게다가, 본 방법은, 상기 컴퓨팅 디바이스에 의해, 제 2 시리즈의 하나 이상의 유저 입력에 적어도 부분적으로 기초하여, 제 3 문자 스트링을, 디스플레이를 위해, 출력하는 단계를 포함한다. 본 방법은 또한, 상기 컴퓨팅 디바이스에 의해 및 제 1 및 제 2 시리즈의 하나 이상의 유저 입력에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정하는 단계를 포함한다. 나아가, 본 방법은, 상기 컴퓨팅 디바이스에 의해, 제 2 및 제 3 문자 스트링 대신에 제 4 스트링을, 디스플레이를 위해, 출력하는 단계를 포함한다.
또 다른 측면에서, 컴퓨팅 디바이스는 제 1 시리즈의 하나 이상의 유저 입력을 수신하도록 구성된 하나 이상의 프로세서를 포함한다. 하나 이상의 프로세서는, 제 1 시리즈의 하나 이상의 유저 입력이 제 1 문자 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해 제 1 문자 스트링을 출력하도록 더 구성된다. 게다가, 하나 이상의 프로세서는, 제 1 스트링이 단어 구분자로 종료하고, 제 2 문자 스트링이 제 1 문자 스트링보다 제 1 시리즈의 유저 입력에 더 대응할 것 같은 것으로 결정됨에 응답하여, 제 1 문자 스트링 대신에 디스플레이를 위해 제 2 문자 스트링을 출력하도록 구성된다. 하나 이상의 프로세서는 또한, 제 1 시리즈의 하나 이상의 유저 입력을 수신한 후에, 제 2 시리즈의 하나 이상의 유저 입력을 수신하도록 더 구성된다. 나아가, 하나 이상의 프로세서는, 제 2 시리즈의 하나 이상의 유저 입력이 제 3 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해, 제 3 스트링을 출력하도록 구성된다. 게다가, 하나 이상의 프로세서는, 제 1 및 제 2 시리즈의 하나 이상의 유저 입력에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정하도록 구성된다. 하나 이상의 프로세서는 또한 제 2 및 제 3 스트링 대신에 디스플레이를 위해 제 4 문자 스트링을 출력하도록 구성된다.
또 다른 측면에서, 컴퓨터-판독가능한 저장 매체는, 컴퓨팅 디바이스의 하나 이상의 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금, 제 1 시리즈의 하나 이상의 유저 입력이 제 1 문자 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해, 제 1 문자 스트링을 출력하게 하는 명령을 저장한다. 이 명령은 또한, 컴퓨팅 디바이스로 하여금 제 1 스트링이 단어 구분자로 종료하고, 제 2 문자 스트링이 제 1 문자 스트링보다 제 1 시리즈의 유저 입력에 더 대응할 것 같은 것으로 결정됨에 응답하여, 디스플레이를 위해, 제 1 문자 스트링 대신에 제 2 문자 스트링을 출력하게 한다. 게다가, 이 명령은, 컴퓨팅 디바이스로 하여금 제 1 시리즈의 하나 이상의 유저 입력 후에 수신된 제 2 시리즈의 하나 이상의 유저 입력이 제 3 문자 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해, 제 3 문자 스트링을 출력하게 한다. 이 명령은 또한, 컴퓨팅 디바이스로 하여금 제 1 및 제 2 시리즈의 하나 이상의 유저 입력에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정하게 한다. 나아가, 이 명령은, 컴퓨팅 디바이스로 하여금 디스플레이를 위해, 제 2 및 제 3 문자 스트링 대신에 제 4 스트링을 출력하게 한다.
하나 이상의 실시예는 첨부 도면 및 이하 상세한 설명에 제시된다. 다른 특징, 목적, 및 이점은 본 상세한 설명, 도면, 및 청구범위로부터 명백할 것이다.
도 1은 본 발명의 하나 이상의 측면에 따라 실시예 컴퓨팅 디바이스를 도시하는 개념도;
도 2는 본 발명의 하나 이상의 측면에 따라 예시적인 컴퓨팅 디바이스를 도시하는 블록도;
도 3은 본 발명의 하나 이상의 측면에 따라 원격 디스플레이 디바이스에 디스플레이하기 위해 컴퓨팅 디바이스가 그래픽 컨텐츠를 출력하는 일 실시예를 도시하는 블록도;
도 4a 및 도 4b는 본 발명의 하나 이상의 측면에 따라 잘못 위치된(misplaced) 스페이스 문자의 정정을 도시하는 개념도;
도 5a 및 도 5b는 본 발명의 하나 이상의 측면에 따라 이전의(previous) 단어의 정정을 도시하는 개념도;
도 6a 및 도 6b는 본 발명의 하나 이상의 측면에 따라 비(non)-스페이스 문자 대신에 에러(erroneous) 스페이스 문자를 포함하는 단어의 정정을 도시하는 개념도;
도 7a 및 도 7b는 본 발명의 하나 이상의 측면에 따라 에러 스페이스 문자를 포함하는 단어의 정정을 도시하는 개념도;
도 8은 본 발명의 하나 이상의 측면에 따라 입력 방법 에디터(editor)(IME) 모듈의 예시적인 동작을 도시하는 흐름도;
도 9a 및 도 9b는 본 발명의 하나 이상의 측면에 따라 유저 입력을 해석하는 컴퓨팅 디바이스의 예시적인 동작을 도시하는 흐름도;
도 10은 본 발명의 하나 이상의 측면에 따라 컴퓨팅 디바이스의 또 다른 예시적인 동작을 도시하는 흐름도.
타이핑 에러는 유저가 텍스트를 컴퓨팅 디바이스, 특히 모바일 전화 및 태블릿에 입력할 때 자주 발생한다. 타이핑 에러를 완화하기 위해, 컴퓨팅 디바이스는 문자 스트링을 자동 정정할 수 있다. 예를 들어, 컴퓨팅 디바이스는 초기 시리즈의 유저 입력의 표시(indication)를 수신하고 초기 시리즈의 유저 입력에 기초하여, 제 1 문자 스트링을 출력할 수 있다. 이후, 스페이스 문자 또는 다른 단어 구분자에 대응하는 유저 입력의 표시를 수신함에 응답하여, 컴퓨팅 디바이스는 초기 시리즈의 유저 입력이 제 1 문자 스트링보다 제 2 문자 스트링에 더 대응할 것 같은지를 결정할 수 있다. 초기 시리즈의 유저 입력이 제 1 문자 스트링보다 제 2 문자 스트링에 더 대응할 것 같은 것으로 결정함에 응답하여, 컴퓨팅 디바이스는 제 1 문자 스트링 대신에 제 2 문자 스트링을 출력할 수 있다. 예를 들어, 제 1 문자 스트링이 언어 사전에 있는 단어와 매치(match)하지 않는다면, 컴퓨팅 디바이스는 제 1 문자 스트링을 제 2 문자 스트링으로 대체할 수 있다. 사전은 적어도 언어적으로 유효한 단어의 서브셋(subset)일 수 있다. 컴퓨팅 디바이스가 제 1 문자 스트링 대신에 제 2 문자 스트링을 출력한 후, 컴퓨팅 디바이스는 텍스트를 입력하는 유저 입력의 표시를 계속 수신할 수 있다. 문자는 기호(symbol), 예를 들어, 글자(letter), 로고그램(logogram), 단어 구분문자(예를 들어, 스페이스 문자, 구두점 부호(punctuation mark) 등) 등을 포함할 수 있다.
그러나, 일부 상황에서, 제 2 문자 스트링은 유저가 입력을 원하는 문자 스트링이 아닐 수 있다. 다른 단어에서, 제 2 문자 스트링은 원치 않는 자동 정정된 문자 스트링이다. 본 발명의 기술에 따라, 컴퓨팅 디바이스는, 초기 시리즈의 유저 입력 및 후속 시리즈의 유저 입력에 적어도 부분적으로 기초하여, 대체 후보를 결정할 수 있다. 컴퓨팅 디바이스는 원치 않는 자동 정정된 문자 스트링 및 이 원치 않는 자동 정정된 문자 스트링에 따라오는 문자 스트링을 모두 대체 후보로 대체할 수 있다. 이런 방식으로, 이 컴퓨팅 디바이스는 유저가 원치 않는 자동 정정된 문자 스트링을 정정하려고 되돌아가는 수고를 절감할 수 있다. 따라서, 컴퓨팅 디바이스는 스페이스 문자를, 스페이스 문자 전에 입력된 문자 스트링의 소프트 커밋(soft commit)으로 취급(treat)할 수 있다. 이것은 유저에게 지나간 단어를 용이하게 정정할 수 있는 능력을 제공할 수 있다.
컴퓨팅 디바이스는 초기 시리즈의 유저 입력이 제 1 문자 스트링(예를 들어, "eo")에 대응하고 제 1 문자 스트링을 제 2 문자 스트링(예를 들어, "do")으로 자동 대체할 수 있는 것으로 결정할 수 있다. 컴퓨팅 디바이스는 후속 시리즈의 유저 입력이 제 3 문자 스트링(예를 들어, "happy")에 대응하는 것으로 결정하고 이후 초기 및 후속 시리즈의 유저 입력이 제 2 및 제 3 문자 스트링(예를 들어, "do happy")의 연쇄(concatenation)에 대응하는 것 보다 제 4 문자 스트링(예를 들어, "so happy")에 더 대응할 것 같은 것으로 결정할 수 있다. 따라서, 컴퓨팅 디바이스는 제 4 문자 스트링(예를 들어, "so happy")을 대체 후보로 출력할 수 있다. 컴퓨팅 디바이스가 대체 후보의 유저 선택의 표시를 수신하면, 컴퓨팅 디바이스는 제 2 및 제 3 문자 스트링(예를 들어, "do happy") 대신에 제 4 문자 스트링(예를 들어, "so happy")을 디스플레이를 위해 출력할 수 있다.
도 1은 본 발명의 하나 이상의 기술에 따라 예시적인 컴퓨팅 디바이스(2)를 도시하는 개념도이다. 컴퓨팅 디바이스(2)는 여러 유형의 컴퓨팅 디바이스일 수 있다. 예를 들어, 컴퓨팅 디바이스(2)는 모바일 디바이스, 예를 들어 모바일 전화, 태블릿 컴퓨터, 노트북 또는 랩탑 컴퓨터, 퍼스널 미디어 플레이어, 휴대용 게임 디바이스, 또는 또 다른 유형의 컴퓨팅 디바이스일 수 있다. 다른 실시예에서, 컴퓨팅 디바이스(2)는 다른 유형의 컴퓨팅 디바이스, 예를 들어 데스크탑 컴퓨터, POS(point of sale) 디바이스, 텔레비전, 갬블링(gambling) 디바이스, 어플라이언스(appliance), 차량 내(in-car) 컴퓨터, 및 다른 유형의 컴퓨팅 디바이스일 수 있다.
도 1의 실시예에서, 컴퓨팅 디바이스(2)는 적어도 하나의 유저 인터페이스 디바이스(4)를 포함한다. 유저 인터페이스 디바이스(4)는 디스플레이 디바이스 및 유저 입력 디바이스를 포함하여 유저 인터페이스 디바이스(4)가 그래픽 데이터를 디스플레이하고 하나 이상의 입력 객체(input object), 예를 들어 손가락 또는 스타일러스(stylus)의 존재를 검출하게 할 수 있다. 유저 인터페이스 디바이스(4)는 그래픽 데이터를 디스플레이하고 하나 이상의 입력 객체의 존재를 검출할 수 있으므로, 유저 인터페이스 디바이스(4)는 존재-감응 디스플레이 디바이스라고 언급될 수 있다. 유저 인터페이스 디바이스(4)는 여러 기술을 사용하여 구현될 수 있다. 예를 들어, 유저 인터페이스 디바이스(4)는 저항 터치스크린(resistive touchscreen), 표면 음향파(surface acoustic wave) 터치스크린, 용량성(capacitive) 터치스크린, 투영(projective) 커패시턴스 터치스크린, 음향 펄스(acoustic pulse) 인식 터치스크린, 또는 또 다른 터치스크린 기술을 사용하여 구현될 수 있다. 일부 실시예에서, 유저 인터페이스 디바이스(4)는 입력 객체가 유저 인터페이스 디바이스(4)를 물리적으로 터치함이 없이 입력 객체의 존재를 검출할 수 있다. 오히려, 이러한 실시예에서, 유저 인터페이스 디바이스(4)는 입력 객체가 유저 인터페이스 디바이스(4)에 충분히 가까이 있을 때 입력 객체의 존재를 검출할 수 있다.
유저 인터페이스 디바이스(4)는 여러 방식으로 컴퓨팅 디바이스(2)에 동작가능하게 연결될 수 있다. 예를 들어, 유저 인터페이스 디바이스(4)는 컴퓨팅 디바이스(2)의 하우징에 집적될 수 있고 하나 이상의 내부 커넥터를 통해 컴퓨팅 디바이스(2)에 연결될 수 있다. 또 다른 실시예에서, 유저 인터페이스 디바이스(4)는 컴퓨팅 디바이스(2)의 하우징의 외부에 있을 수 있고 하나 이상의 외부 케이블 및/또는 통신 네트워크를 통해 컴퓨팅 디바이스(2)와 통신할 수 있다.
도 1의 실시예는 유저 인터페이스 디바이스(4)가 존재-감응 디스플레이 디바이스인 것으로 가정하고 있으나, 본 발명의 기술은 이것으로 제한되지 않는다. 다른 실시예에서, 유저 인터페이스 디바이스(4)는 입력 객체의 존재를 검출하지 않는 디스플레이 디바이스일 수 있다. 예를 들어, 컴퓨팅 디바이스(2)는 유저 입력 디바이스로부터 유저 입력의 표시를 수신할 수 있고 유저 입력 디바이스와는 별개의 디스플레이 디바이스에서 디스플레이하기 위해 그래픽 데이터를 출력할 수 있다.
도 1에 도시된 바와 같이, 컴퓨팅 디바이스(2)는 유저 인터페이스 디바이스(4)에서 디스플레이하기 위해 그래픽 유저 인터페이스(GUI)(10)를 출력할 수 있다. 도 1의 실시예는 GUI(10)의 3개의 예시적인 형태(10A, 10B, 및 10C)를 포함한다. 일반적으로, GUI는 유저로 하여금 이미지를 사용하여 컴퓨팅 디바이스와 상호대화할 수 있게 하는 유형의 유저 인터페이스일 수 있다. GUI(10)는 가상 키보드(12)를 포함할 수 있다. 가상 키보드(12)는 가상 키 세트(virtual key set)를 포함할 수 있다. 게다가, GUI(10)는 텍스트 디스플레이 영역(14)을 포함할 수 있다. 텍스트 디스플레이 영역(14)은 유저에 의해 입력된 텍스트(16)를 디스플레이할 수 있다. 예를 들어, 컴퓨팅 디바이스(2)는 가상 키보드(12)에서 유저 입력의 하나 이상의 표시에 응답하여 텍스트 디스플레이 영역(14)에서 디스플레이하기 위해 텍스트(16)를 출력할 수 있다. 게다가, 텍스트 디스플레이 영역(14)은 텍스트(16) 내 삽입 포인트(insertion point)를 나타내는 커서(18)를 포함할 수 있다. 컴퓨팅 디바이스(2)는 삽입 포인트에서 문자를 삽입하거나 또는 커서(18)로 표시된 입력 포인트에 인접한 문자를 삭제할 수 있다. 게다가, GUI(10)는 제안 요소(suggestion element)(20A 내지 20C) 세트(집합적으로 "제안 요소(20)")를 포함할 수 있다.
컴퓨팅 디바이스(2)는 입력 방법 에디터(IME) 모듈(6)을 포함할 수 있다. IME 모듈(6)은 유저 입력 이벤트를 수신할 수 있다. 유저 입력 이벤트는 컴퓨팅 디바이스(2)에 의해 수신된 유저 입력을 나타내는 데이터를 포함할 수 있다. IME 모듈(6)은 여러 유형의 유저 입력 이벤트를 수신할 수 있다. 예를 들어, IME 모듈(6)은 물리적 키보드에 있는 키의 프레스(press) 및 해제(release)를 나타내는 유저 입력 이벤트를 수신할 수 있다. 또 다른 실시예에서, IME 모듈(6)은 가상(예를 들어, 온스크린) 키보드에 있는 가상 키에서 태핑 제스처를 나타내는 유저 입력 이벤트를 수신할 수 있다. 또 다른 실시예에서, IME 모듈(6)은 가상 키보드에 있는 슬라이딩 제스처를 나타내는 유저 입력 이벤트를 수신할 수 있다.
IME 모듈(6)은 유저 입력 이벤트가 하나 이상의 문자의 스트링(즉, 문자 스트링)에 대응하는 것을 결정할 수 있다. 여러 실시예에서, IME 모듈(6)은 유저 입력 이벤트가 여러 언어, 예를 들어, 영어, 러시아어, 프랑스어, 일어, 한국어, 중국어, 힌디어(Hindi), 아랍어(Arabic) 등의 단어와 매치하는 문자 스트링에 대응하는지를 결정할 수 있다. IME 모듈(6)은 증분적(incremental) 다중-단어 인식 알고리즘을 구현할 수 있다. 즉, IME 모듈(6)은 하나 이상의 가정된(hypothesized) 문자 스트링이 유저 입력 이벤트들 각각을 수신한 것에 응답하여 유저 입력 이벤트에 대응하는지를 결정할 수 있다.
도 1의 실시예에서, 컴퓨팅 디바이스(2)는 또한 애플리케이션 모듈(들)(8A-8N)(집합적으로 "애플리케이션 모듈(들)(8)")을 포함한다. 애플리케이션 모듈(들)(8)에서 명령을 실행하면 컴퓨팅 디바이스(2)로 하여금 여러 애플리케이션(예를 들어, "앱")을 제공하게 할 수 있다. 일부 실시예에서, IME 모듈(6)은 IME 모듈(6)에 의해 결정된 문자 스트링을 하나 이상의 애플리케이션 모듈(들)(8)에 출력할 수 있다.
나아가, IME 모듈(6)이 특정 문자 스트링에 대응하는 일정 시리즈의 하나 이상의 유저 입력 이벤트를 수신하면, IME 모듈(6)은 시리즈의 유저 입력 이벤트에 기초하여 대체 후보 세트(replacement candidate set)를 결정할 수 있다. 대체 후보 세트는 특정 문자 스트링과 매치하는 접두어(prefix)를 가지는 사전(7)에 있는 단어를 포함할 수 있다. 예를 들어, 특정 문자 스트링이 "eo"인 경우, 문자 스트링 "eo"에 대한 대체 후보 세트는 단어 "eon", "Eos", "eolith", "Eocene" 등을 포함할 수 있다. 게다가, 대체 후보 세트는 유저가 시리즈의 유저 입력 이벤트에 의해 표시된 유저 입력을 제공할 때 유저가 입력으로 의도되었을 수 있는 단어를 포함할 수 있다. 예를 들어, 특정 문자 스트링이 "eo"인 경우, 대체 후보 세트는 단어 "do" 및 "so"를 포함할 수 있다.
IME 모듈(6)은 대체 스코어(replacement score)를 각 대체 후보에 할당할 수 있다. 일반적으로, 대체 후보에 할당된 대체 스코어는 대체 후보가 유저가 입력하기를 원하는 문자 스트링일 것 같은 추정된 가능성(estimated probability)과 상관될 수 있다. 본 발명의 나머지에서는 상대적으로 낮은 대체 스코어는 유저가 입력하기를 원하는 문자 스트링일 가능성이 상대적으로 높은 대체 후보에 할당되고, 그 역으로도 될 수 있는 것으로 가정한다. 그러나, 다른 실시예에서, 상대적으로 높은 대체 스코어는 유저가 입력하기를 원하는 문자 스트링일 가능성이 상대적으로 높은 대체 후보에 할당될 수 있다.
IME 모듈(6)이 대체 후보 세트 및 그 대체 스코어를 결정한 후에, IME 모듈(6)은 대체 후보의 일부분(portion)(예를 들어, 서브셋)을 선택할 수 있다. 일부 실시예에서, IME 모듈(6)은 대체 후보에 대한 대체 스코어에 적어도 부분적으로 기초하여 대체 후보의 일부분을 선택할 수 있다. 일부 실시예에서, IME 모듈(6)은 하나 이상의 추가적인 요인에 기초하여, 예를 들어 특정 대체 후보가 블랙리스트(blacklist)에 있는지 또는 화이트리스트(whitelist)에 있는지에 기초하여 대체 후보의 일부분을 선택할 수 있다. 대체 후보의 일부분을 선택한 후, IME 모듈(6)은 선택된 대체 후보를 제안 요소(20)에 식재(populate)할 수 있다. 도 1에서 GUI(10)의 형태(10A)로 도시된 바와 같이, IME 모듈(6)은 대체 후보 "eo", "do", 및 "so"를 제안 요소(20)에 식재할 수 있다.
IME 모듈(6)은 제안 요소(20)들 중 하나의 유저 선택에 대응하는 유저 입력 이벤트를 수신할 수 있다. 이에 응답하여, IME 모듈(6)은 선택된 제안 요소에 있는 대체 후보에 대한 관련 문자 스트링(relevant character string)을 결정할 수 있다. 관련 문자 스트링은 텍스트(16)에 있는 문자 스트링일 수 있다. IME 모듈(6)은, 디스플레이를 위해, 관련 문자 스트링 대신에 선택된 제안 요소에 있는 대체 후보를 출력할 수 있다. 예를 들어, IME 모듈(6)이 GUI(10)의 형태(10A)로 제안 요소(20C)의 유저 선택에 대응하는 유저 입력 이벤트를 수신하면, 컴퓨팅 디바이스(2)는 문자 스트링 "eo" 대신에 대체 후보 "so"를 출력할 수 있다. 일부 실시예에서, 관련 문자 스트링은 커서(18)에 인접한 단어의 문자를 포함할 수 있다. 나아가, 일부 경우에, 관련 문자 스트링은 커서(18) 앞에 있는 하나 이상의 단어를 포함할 수 있다.
많은 경우에, 컴퓨팅 디바이스(2)는 제안 요소(20)들 중 하나의 유저 선택에 대응하는 유저 입력을 수신하지 않는다. 오히려, 시리즈의 유저 입력 이벤트가 특정 문자 스트링에 대응하는 것으로 결정한 후, IME 모듈(6)은 후속 유저 입력 이벤트가 단어 구분자에 대응하는지 결정할 수 있다. 예시적인 단어 구분자에는 스페이스 문자, 마침표 부호(period mark), 의문(question) 부호, 콤마(comma), 세미콜론(semi-colon), 인용(quotation) 부호, 감탄(exclamation) 부호, 리턴(return) 문자, 텍스트의 시작부 등을 포함할 수 있다. 게다가, IME 모듈(6)은, 후속 유저 입력 이벤트가 커서(18)를 텍스트 디스플레이 영역(14)내의 상이한 위치로 이동시키는 탭핑 또는 슬라이딩 제스처를 나타내는 경우, 후속 유저 입력 이벤트가 단어 구분자에 대응하는 것으로 결정할 수 있다.
후속 유저 입력 이벤트가 단어 구분자에 대응하는 것으로 결정한 것에 응답하여, IME 모듈(6)은 탑-랭킹된(top-ranked) 대체 후보를 결정할 수 있다. 탑-랭킹된 대체 후보는 최저 대체 스코어를 구비하는 대체 후보일 수 있다. 게다가, IME 모듈(6)은 탑-랭킹된 대체 후보에 대하여 관련 문자 스트링을 결정할 수 있다. IME 모듈(6)은 이후 관련 문자 스트링이 기초하는 유저 입력의 시리즈가 관련 문자 스트링보다 탑-랭킹된 대체 후보에 더 대응할 것 같은지 여부를 결정할 수 있다. 만약 그렇다면, IME 모듈(6)은 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 디스플레이를 위해 자동으로 출력할 수 있다. 이런 방식으로, IME 모듈(6)은 제 1 문자 스트링을 제 2 문자 스트링으로 자동 대체할 수 있다.
일부 실시예에서, IME 모듈(6)은 관련 문자 스트링이 사전(7)에 있는 임의의 단어와 매치하지 않는 단어를 포함하는지 여부를 결정할 수 있다. 탑-랭킹된 문자 스트링에 대한 관련 문자 스트링이 사전(7)에 있는 임의의 단어와 매치하지 않는 단어를 포함하고 탑-랭킹된 대체 후보에 대한 대체 스코어가 자동-대체 임계값 미만이면, IME 모듈(6)은 이 시리즈의 유저 입력이 관련 문자 스트링보다 탑-랭킹된 대체 후보에 더 대응할 것 같은 것으로 결정할 수 있다. 따라서, IME 모듈(6)은 탑-랭킹된 후보에 대한 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 디스플레이를 위해, 자동으로 출력할 수 있다. 이런 방식으로, IME 모듈(6)은, 유저가 단어 구분자, 예를 들어 스페이스 문자를 입력할 때, 관련 문자 스트링을 탑-랭킹된 대체 후보로 자동으로 대체할 수 있다. IME 모듈(6)이 관련 문자 스트링으로 탑-랭킹된 대체 후보를 출력할 때, IME 모듈(6)은 후보 스트링 세트를 유지(예를 들어, 보유)할 수 있다. 예를 들어, 도 1의 실시예에서, 문자 스트링 "eo"은 사전(7)에 있는 단어와 매치하지 않는다. 따라서, GUI(10)의 형태(10B)에 도시된 바와 같이, IME 모듈(6)은 문자 스트링 "eo"을 탑-랭킹된 대체 후보 "do"으로 자동으로 대체하였다.
IME 모듈(6)은 단어 구분자의 유저 입력을 수신한 후에 후보 스트링 세트를 유지하므로, IME 모듈(6)은 IME 모듈(6)이 단어 구분자를 삭제하는 추가적인 유저 입력 이벤트를 수신하는 경우 제안 요소(20)에 있는 제안된 문자 스트링의 적어도 일부분을 다시 출력할 수 있다. 제안 요소 중 하나의 선택을 나타내는 유저 입력 이벤트를 수신한 것에 응답하여, IME 모듈(6)은 원래의 문자 스트링을 대체한 문자 스트링 대신에 제안 요소에 의해 표시된 문자 스트링을 출력할 수 있다.
IME 모듈(6)이 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 출력한 후, IME 모듈(6)은 후속하는 제 2 시리즈의 하나 이상의 유저 입력 이벤트를 수신할 수 있다. 이에 응답하여, IME 모듈(6)은 제 2 시리즈의 유저 입력 이벤트가 또 다른 문자 스트링에 대응하는 지 여부를 결정할 수 있다. 따라서, IME 모듈(6)은 다른 문자 스트링을 텍스트(16)에 부속(append)시킬 수 있다. 나아가, IME 모듈(6)은, 제 1 시리즈의 유저 입력 이벤트 및 제 2 시리즈의 유저 입력 이벤트에 적어도 부분적으로 기초하여, 대체 후보의 제 2 세트를 결정할 수 있다.
일부 경우에, 대체 후보의 제 2 세트에 있는 특정 대체 후보에 대한 관련 스트링은 텍스트(16)에 있는 다른 문자 스트링 및 이 다른 문자 스트링에 앞서는 하나 이상의 단어를 포함할 수 있다. 따라서, IME 모듈(6)이 이 특정 대체 후보를 특정 제안 요소에 식재하고 특정 제안 요소의 유저 선택에 대응하는 유저 입력 이벤트를 수신하면, IME 모듈(6)은 다른 문자 스트링 및 이 다른 문자 스트링에 앞서는 하나 이상의 단어 대신에 특정 대체 후보를, 디스플레이를 위해, 출력할 수 있다. IME 모듈(6)은 앞선 단어들이 자동-대체된 단어를 포함하는 경우에도 그렇게 할 수 있다. IME 모듈(6)은 특정 대체 후보의 관련 문자 스트링을 특정 대체 후보로 자동으로 대체할 때 유사한 기능을 제공할 수 있다.
도 1의 실시예에서, IME 모듈(6)은 문자 스트링 "eo"을 탑-랭킹된 대체 후보 "do"로 자동 대체한 후, 제 2 시리즈의 유저 입력 이벤트가 문자 스트링 "haopy"에 대응하는지를 결정하였다. 본 발명의 기술에 따라, 문자 스트링 "eo"을 문자 스트링 "do"으로 정정하는 것은 스페이스 문자 후에도 최종(final)이 아니다. 문자 스트링 "haopy"이 입력되면, IME 모듈(6)은 두 단어에 의해 제공된 언어 모델 정보에 기초하여 그 해석을 정제할(refine) 수 있다(즉, "so happy"는 "do happy"보다 더 바이그램(bi-gram)일 것 같다는 것을 알 수 있다). 예를 들어, IME 모듈(6)은 두 문자 스트링(예를 들어, 단어)에 대해 결합 가설(joint hypotheses)을 고려하고 각 문자 스트링 쌍(pair)이 언어 모델에 기초하여 발생하는 빈도를 고려할 수 있다. 따라서, IME 모듈(6)은 제 1 시리즈의 유저 입력에 대한 후보 스트링 세트, 예를 들어, "eo", "do", 및 "so"를 유지할 수 있다. IME 모듈(6)은 단어 구분자 이후에 오는 유저 입력의 시리즈에 대한 후보 스트링 세트가 문자 스트링 "haopy" 및 "happy"를 포함하는지를 결정할 수 있다. "so happy"의 결합 가설이 "do haopy", "do happy", 또는 "so haopy"의 결합 가설보다 더 가능성이 높다. 그리하여, "so happy"가 탑-랭킹된 대체 후보일 수 있다.
따라서, 도 1에서 GUI(10)의 형태(10B)에 도시된 바와 같이, IME 모듈(6)은 대체 후보 "eo hapoy", "so happy", 및 "do happy"를 제안 요소(20)에 식재하였다. 도 1에서 GUI(10)의 형태(10C)에 도시된 바와 같이, IME 모듈(6)은 유저 입력 이벤트가 제안 요소(20B)의 유저 선택에 대응하는 것으로 결정하였다. 이에 응답하여, IME 모듈(6)은 문자 스트링 "do haopy"을 문자 스트링 "so happy"으로 대체하였다. 도 1의 실시예에서, 가상 키보드(12)는 명확화를 위하여 GUI(10)의 형태(10B 및 10C)에서 생략되어 있다.
따라서, 본 발명의 기술에 따라, 컴퓨팅 디바이스(2)는 제 1 시리즈의 하나 이상의 유저 입력을 수신할 수 있다. 제 1 시리즈의 하나 이상의 유저 입력이 제 1 문자 스트링에 대응하는 것으로 결정함에 응답하여, 컴퓨팅 디바이스(2)는, 디스플레이 디바이스에서 디스플레이하기 위해, 제 1 문자 스트링을 출력할 수 있다. 제 1 스트링이 단어 구분자로 종료하고, 제 2 문자 스트링이 제 1 문자 스트링보다 제 1 시리즈의 유저 입력에 더 대응할 것 같은 것으로 결정함에 응답하여, 컴퓨팅 디바이스(2)는 제 1 스트링 대신에 제 2 문자 스트링을 출력할 수 있다. 제 1 시리즈의 하나 이상의 유저 입력을 수신한 후에, 컴퓨팅 디바이스(2)는 제 2 시리즈의 하나 이상의 유저 입력을 수신할 수 있다. 제 2 시리즈의 하나 이상의 유저 입력이 제 3 스트링에 대응하는 것으로 결정한 것에 응답하여, 컴퓨팅 디바이스(2)는, 디스플레이 디바이스에서 디스플레이하기 위해, 제 3 스트링을 출력할 수 있다. 게다가, 컴퓨팅 디바이스(2)는, 제 1 및 제 2 시리즈의 유저 입력에 적어도 부분적으로 기초하여, 제 4 스트링을 결정할 수 있다. 일부 경우에, 제 4 스트링은 사전(7)에 하나를 초과하는 단어를 포함할 수 있다. 다른 경우에, 제 4 스트링은 사전(7)에 2개 이상의 단어를 포함할 수 있다. 컴퓨팅 디바이스(2)는, 디스플레이 디바이스에 디스플레이하기 위해, 제 2 및 제 3 스트링 대신에 제 4 스트링을 출력할 수 있다.
이전의 단어의 부적절한 자동-대체를 수반하는 에러를 정정하는 것에 더하여, 본 발명의 기술은 또한 단어 구분자를 수반하는 다른 유형의 에러를 정정할 수 있다. 예를 들어, IME 모듈(6)은 단어 구분자(예를 들어, 스페이스 문자)가 문자 스트링에서 잘못된 포인트에 삽입된 에러를 정정하는 대체 후보를 결정할 수 있다. 후술된 도 4a 및 도 4b는, IME 모듈(6)이 이러한 에러를 정정할 수 있는 방식을 도시한다. 또 다른 실시예에서, IME 모듈(6)은 단어 구분자(예를 들어, 스페이스 문자)가 단어의 중간에 의도치 않게 삽입된 에러를 정정하는 대체 후보를 결정할 수 있다. 후술된 도 6a 및 도 6b는 IME 모듈(6)이 이러한 에러를 정정할 수 있는 방식을 도시한다. 또 다른 실시예에서, IME 모듈(6)은 문자가 단어 구분자 대신에 문자 스트링에 삽입된 에러를 정정하거나 또는 단어 구분자가 생략된 에러를 정정하는 대체 후보를 결정할 수 있다. 후술된 도 7a 및 도 7b는 IME 모듈(6)이 이러한 에러를 정정할 수 있는 방식을 도시한다.
도 2는 본 발명의 하나 이상의 측면에 따라 컴퓨팅 디바이스(2)의 예시적인 형태를 도시하는 블록도이다. 예시적인 목적을 위하여, 도 2 및 이하 도면의 설명은 도 1을 계속 참조한다. 그러나, 본 발명의 기술은 이들로 제한되지 않는다. 도 2는 컴퓨팅 디바이스(2)의 단 하나의 특정 실시예만을 도시하는 것이며, 컴퓨팅 디바이스(2)의 많은 다른 예시적인 형태들도 존재한다.
도 2의 실시예에 도시된 바와 같이, 컴퓨팅 디바이스(2)는 하나 이상의 프로세서(30), 하나 이상의 입력 디바이스(32), 하나 이상의 통신 유닛(34), 하나 이상의 출력 디바이스(36), 하나 이상의 저장 디바이스(38), 하나 이상의 통신 채널(40), 및 유저 인터페이스 디바이스(4)를 포함한다. 컴퓨팅 디바이스(2)는 많은 다른 성분을 포함할 수 있다. 예를 들어, 컴퓨팅 디바이스(2)는 물리적 버튼, 마이크로폰, 스피커, 통신 포트 등을 포함할 수 있다.
통신 채널(40)은 성분 간 통신을 위하여 성분(30, 32, 34, 36, 38, 및 4) 각각을 (물리적으로, 통신가능하게, 및/또는 동작가능하게) 상호 연결할 수 있다. 일부 실시예에서, 통신 채널(들)(40)은 시스템 버스, 네트워크 연결, 프로세스 간 통신 데이터 구조, 또는 임의의 다른 데이터 통신 방법을 포함할 수 있다.
컴퓨팅 디바이스(2) 내 하나 이상의 저장 디바이스(들)(38)는 컴퓨팅 디바이스(2)의 동작 동안 사용하는데 필요한 정보를 저장할 수 있다. 저장 디바이스(들)(38)는, 일부 실시예에서, 1차 목적이 단기(short term) 및 비 장기 컴퓨터-판독가능한 저장 매체인 것이다. 저장 디바이스(들)(38)는 휘발성 메모리일 수 있고 그리하여 전력 오프시에는 저장된 컨텐츠를 유지하지 않을 수 있다. 휘발성 메모리의 예로는 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 및 이 기술 분야에 알려진 다른 형태의 휘발성 메모리를 포함할 수 있다. 저장 디바이스(38)는 비휘발성 메모리 스페이스로서 정보를 장기 저장하도록 더 구성될 수 있고 그리하여 전력 온/오프 사이클 후에도 정보를 유지할 수 있다. 비휘발성 메모리 형태의 예로는 자기 하드 디스크, 광 디스크, 플로피 디스크, 플래시 메모리, 또는 전기적으로 프로그래밍가능한 메모리(EPROM) 또는 전기적으로 소거가능한 및 프로그래밍가능한 메모리(EEPROM) 형태를 포함할 수 있다. 일부 실시예에서, 컴퓨팅 디바이스(2)의 프로세서(들)(30)는 저장 디바이스(들)(38)에 의해 저장된 명령을 판독하고 실행할 수 있다.
컴퓨팅 디바이스(2)는 컴퓨팅 디바이스(2)가 유저 입력을 수신하는데 사용하는 하나 이상의 입력 디바이스(들)(32)를 포함할 수 있다. 유저 입력의 예로는 촉각적, 오디오, 및 비디오 유저 입력을 포함한다. 입력 디바이스(들)(32)는 존재-감응 스크린, 터치-감응 스크린, 마우스, 키보드, 음성 응답 시스템, 비디오 카메라, 마이크로폰 또는 사람 또는 기계로부터 입력을 검출하는 다른 유형의 디바이스를 포함할 수 있다.
통신 유닛(들)(34)은 컴퓨팅 디바이스(2)로 하여금 통신 네트워크, 예를 들어 국부 영역 네트워크 또는 인터넷에 데이터를 송신하거나 이로부터 데이터를 수신하게 할 수 있다. 일부 실시예에서, 통신 유닛(들)(34)은 컴퓨팅 디바이스(2)로 하여금 통신 네트워크와 무선으로 통신할 수 있게 하는 무선 송신기 및 수신기를 포함할 수 있다.
출력 디바이스(들)(36)는 출력을 생성할 수 있다. 출력의 예로는 촉각적, 오디오, 및 비디오 출력을 포함한다. 출력 디바이스(들)(36)는 존재-감응 스크린, 사운드 카드, 비디오 그래픽 어댑터 카드, 스피커, CRT(cathode ray tube) 모니터, LCD(liquid crystal display), 또는 출력을 생성하는 다른 유형의 디바이스를 포함할 수 있다.
프로세서(들)(30)는 저장 디바이스(들)(38)로부터 명령을 판독할 수 있고 저장 디바이스(들)(38)에 의해 저장된 명령을 실행할 수 있다. 프로세서(30)에 의해 명령을 실행하면 컴퓨팅 디바이스(2)를 구성하거나 이 디바이스로 하여금 본 발명에 속하는 기능의 적어도 일부를 컴퓨팅 디바이스(2)에 제공하게 할 수 있다. 도 2의 실시예에 도시된 바와 같이, 저장 디바이스(들)(38)는 운영 시스템(44), IME 모듈(6), 및 애플리케이션 모듈(8A-8N)과 연관된 컴퓨터-판독가능한 명령을 포함한다. 운영 시스템(44)과 연관된 명령을 실행하면 컴퓨팅 디바이스(2)로 하여금 컴퓨팅 디바이스(2)의 하드웨어 자원을 관리하고 다른 컴퓨터 프로그램에 여러 공통 서비스를 제공하는 여러 기능을 수행하게 할 수 있다. 애플리케이션 모듈(8)과 연관된 명령을 실행하면 컴퓨팅 디바이스(2)로 하여금 여러 애플리케이션(예를 들어, "앱(app)")을 제공하게 할 수 있다.
도 2의 실시예에서, IME 모듈(6)은 디코더 모듈(46), 자동-대체 모듈(48), 제안 모듈(50), 및 사전(7)을 포함한다. 이들 모듈에서 명령을 실행하면 컴퓨팅 디바이스(2)로 하여금 본 발명에 속하는 기능을 이들 모듈에 제공하게 할 수 있다.
디코더 모듈(46)은 운영 시스템(44)으로부터 유저 입력 이벤트를 수신할 수 있다. 유저 입력 이벤트는 유저 인터페이스 디바이스(4) 및/또는 입력 디바이스(들)(32)에 의해 수신된 유저 입력의 표시일 수 있다. 유저 입력 이벤트는 터치-다운 이벤트(touch-down event), 리스트-오프(lift-off) 이벤트, 및 움직임(movement) 이벤트를 포함할 수 있다. 터치-다운 이벤트는 유저 인터페이스 디바이스(4)가 특정 위치에서 입력 객체의 존재를 검출한 것을 나타낼 수 있다. 리프트-오프 이벤트는 유저 인터페이스 디바이스(4)가 더 이상 입력 객체의 존재를 검출하지 못하는 것을 나타낼 수 있다. 움직임 이벤트는 유저 인터페이스 디바이스(4) 상에서 입력 객체의 움직임을 나타낼 수 있다.
디코더 모듈(46)은 터치-다운 이벤트가 입력 객체에 대해 발생하고 나서, 객체에 대해 상당한 개입(intervening) 움직임 이벤트 없이 입력 객체에 대해 리프트-오프 이벤트가 발생하면 탭핑 제스처가 발생한 것으로 결정할 수 있다. 디코더 모듈(46)은 터치-다운 이벤트가 입력 객체에 대해 발생하고 나서, 입력 객체에 대해 움직임 이벤트가 발생하고, 이후 입력 객체에 대해 리프트-오프 이벤트가 발생하면, 슬라이딩 제스처가 발생한 것으로 결정할 수 있다. 나아가, 입력 디바이스(들)(32) 중 하나가 물리적 키보드이면, 유저 입력 이벤트는 물리적 키보드의 여러 키의 프레스 및 해제에 대응하는 키 업 이벤트(key up event) 및 키 다운 이벤트(key down event)를 포함할 수 있다.
디코더 모듈(46)은 시리즈의 하나 이상의 유저 입력 이벤트가 하나 이상의 문자 스트링에 대응하는지 여부를 결정할 수 있다. 디코더 모듈(46)은 여러 동작을 수행하여 유저 입력 이벤트의 시리즈가 하나 이상의 문자 스트링에 대응하는지 여부를 결정할 수 있다. 예를 들어, 디코더 모듈(46)은 탭핑 제스처가 유저 인터페이스 디바이스(4)의 특정 위치에서 발생하였는지를 결정할 수 있다. 이 실시예에서, 디코더 모듈(46)은 특정 위치가 하나 이상의 가상 키를 디스플레이하는 유저 인터페이스 디바이스(4)의 구역에 대응하는 지를 결정할 수 있다. 나아가, 이 실시예에서, 디코더 모듈(46)은, 여러 요인에 기초하여, 유저가 이 구역에 있는 가상 키 중 특정 키를 선택하려고 가장 의도했을 것 같은 것을 결정할 수 있다. 이 요인은 유저 인터페이스 디바이스(4)에서 특정 위치, 앞에 있는 문자 또는 단어 등을 포함할 수 있다.
특정 가상 키는 다수의 문자에 대응할 수 있다. 예를 들어, 특정 가상 키는 문자의 대문자 및 소문자 형태(upper and lower case version), 문자의 여러 강조된 형태(accented version) 등에 대응할 수 있다. 이 실시예에서, 디코더 모듈(46)은, 또 다른 요인 세트에 기초하여, 특정 문자가 특정 가상 키에 가장 대응할 것 같은지를 결정할 수 있다. 이 다른 요인 세트는 앞선 문자, 앞선 단어 등을 포함할 수 있다. 일부 실시예에서, 특정 가상 키는 단어 구분자에 대응할 수 있다. 이런 방식으로, 시리즈의 탭핑 제스처를 검출하는 것에 의해, 디코더 모듈(46)은 시리즈의 유저 입력 이벤트가 문자 스트링에 대응하는지를 결정할 수 있다.
또 다른 실시예에서, 디코더 모듈(46)은 슬라이딩 제스처가 유저 인터페이스 디바이스(4)에서 발생하였는지를 결정할 수 있다. 이 실시예에서, 슬라이딩 제스처는 특정 가상 키에 대응하는 가상 키보드의 구역을 통과하는 움직임을 포함할 수 있다. 디코더 모듈(46)은 슬라이딩 제스처가 특정 문자 스트링에 가장 대응할 것 같은지를 결정할 수 있다. 예를 들어, 슬라이딩 제스처는 문자 "h", "a", "p", "p", 및 "y"에 대해 가상 키를 통과하는 움직임을 포함할 수 있다. 이 실시예에서, 디코더 모듈(46)은 슬라이딩 제스처가 문자 스트링 "happy"에 가장 대응할 것 같은 것으로 결정할 수 있다. 나아가, 디코더 모듈(46)은 슬라이딩 제스처가 단어 구분자, 예를 들어 스페이스 문자 또는 마침표(period)에 대응하는 위치에서 종료하는지를 결정할 수 있다. 이런 방식으로, 디코더 모듈(46)은 유저 입력이 하나 이상의 영숫자 문자(alphanumeric character) 스트링 이후에 단어 구분자가 따라오는 것에 대응하는지를 결정할 수 있다.
디코더 모듈(46)은, 유저 입력 이벤트에 적어도 부분적으로 기초하여, 대체 후보 세트 및 이 대체 후보에 대한 대체 스코어를 결정할 수 있다. 각 대체 후보는 사전(7)에 하나 이상의 단어를 포함할 수 있다. 디코더 모듈(46)은 대체 후보 및 대체 스코어를 여러 방식으로 결정할 수 있다. 예를 들어, 디코더 모듈(46)은 하나 이상의 유한 상태 트랜스듀서(FST)를 사용하여 대체 후보 및 대체 스코어를 결정할 수 있다. 보다 상세히 후술된 도 9a 및 도 9b는 FST를 사용하여 대체 후보 및 대체 스코어를 결정할 수 있는 예시적인 동작을 도시하는 흐름도이다.
디코더 모듈(46)이 대체 후보 및 이 대체 후보에 대한 대체 스코어를 결정한 후에, 자동-대체 모듈(48)은, 디코더 모듈(46)이 유저 입력 이벤트가 단어 구분자에 대응하는 것으로 결정한 것에 응답하여, 탑-랭킹된 대체 후보를 결정할 수 있다. 탑-랭킹된 대체 후보는 최저 대체 스코어를 갖는 대체 후보일 수 있다. 게다가, 자동-대체 모듈(48)은 탑-랭킹된 대체 후보가 탑-랭킹된 대체 후보에 대한 관련 문자 스트링보다 유저 입력 이벤트에 더 대응할 것 같은지 여부를 결정할 수 있다. 만약 그렇다면, 자동-대체 모듈(48)은, 디스플레이를 위해, 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 출력할 수 있다. 일부 실시예에서, 자동-대체 모듈(48)은 탑-랭킹된 대체 후보에 대한 관련 문자 스트링이 사전(7)에 있는 단어와 매치하지 않는 단어를 포함하는지 여부를 결정할 수 있다. 이러한 실시예에서, 자동-대체 모듈(48)은, 관련 문자 스트링이 사전(7)에 있는 단어와 매치하지 않는 단어를 포함하는 것으로 결정한 것에 응답하여, 대체 후보의 대체 스코어 및 자동-대체 임계값을 비교한 것에 적어도 부분적으로 기초하여, 관련 스트링 대신에 탑-랭킹된 대체 후보를 출력할 수 있다. 일부 실시예에서, 자동-대체 모듈(48)은 탑-랭킹된 자동-대체 후보에 대한 대체 스코어가 자동-대체 임계값보다 더 낮은지 여부를 결정할 수 있다. 탑-랭킹된 대체 후보에 대한 대체 스코어가 자동-대체 임계값보다 더 작은 것으로 결정한 것에 응답하여, 자동-대체 모듈(48)은, 유저 인터페이스 디바이스(4)에서 디스플레이하기 위해, 탑-랭킹된 자동-대체 후보에 대한 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 출력할 수 있다.
나아가, 제안 모듈(50)은, 대체 후보의 대체 스코어에 적어도 부분적으로 기초하여, 대체 후보의 적어도 일부분을 선택할 수 있다. 제안 모듈(50)은 제안 요소(20)에서 선택된 대체 후보를 출력할 수 있다. 다른 단어에서, 제안 모듈(50)은 선택된 대체 후보를 제안 요소(20)에 식재할 수 있다. 일부 실시예에서, 디코더 모듈(46)은 자동-대체를 위한 대체 후보 세트 및 제안 요소(20)를 식재하는데 사용하기 위한 별개의 대체 후보 세트를 결정할 수 있다. 나아가, 일부 실시예에서, 디코더 모듈(46)은 자동-대체를 위한 대체 스코어 세트 및 제안 요소(20)를 식재하는데 사용하기 위한 별개의 대체 스코어 세트를 결정할 수 있다.
제안 모듈(50)은, 하나 이상의 유저 입력 이벤트에 기초하여, 유저가 제안 요소(20)들 중 하나를 선택하였는지를 결정할 수 있다. 이에 응답하여, 제안 모듈(50)은, 유저 인터페이스 디바이스(4)에서 디스플레이하기 위해, 디스플레이된 텍스트의 일부분 대신에 선택된 제안 요소와 연관된 대체 후보를 출력할 수 있다. 예를 들어, 제안 모듈(50)은 하나 이상의 단어 대신에 선택된 제안 요소의 대체 후보를 출력할 수 있다.
도 3은 본 발명의 하나 이상의 기술에 따라 하나 이상의 원격 디바이스에 의해 디스플레이하기 위해 데이터를 출력하는 예시적인 컴퓨팅 디바이스(10)를 도시하는 블록도이다. 하나 이상의 원격 디바이스는 컴퓨팅 디바이스(10)에 의해 출력된 데이터에 기초하여 그래픽 컨텐츠를 디스플레이할 수 있다. 일반적으로, 그래픽 컨텐츠는 디스플레이를 위해 출력될 수 있는 임의의 시각적 정보, 예를 들어 텍스트, 이미지, 동화상 그룹(group of moving image) 등을 포함할 수 있다. 일부 실시예에서, 컴퓨팅 디바이스(10)는 원격 디바이스에 의해 디스플레이된 그래픽 컨텐츠를 생성하도록 원격 디바이스가 렌더링할 수 있는 데이터, 예를 들어, 하이퍼텍스트 마크업 언어(Hypertext Markup Language)(HTML) 데이터를 출력할 수 있다. 다른 실시예에서, 컴퓨팅 디바이스(10)는 원격 디바이스에 의해 디스플레이된 그래픽 컨텐츠를 원격 디바이스가 생성하는데 사용할 수 있는 디지털 또는 아날로그 신호를 출력할 수 있다.
도 3의 실시예에서, 컴퓨팅 디바이스(10)는 존재-감응 디스플레이(52) 및 통신 유닛(54)에 동작가능하게 연결된다. 나아가, 도 3의 실시예에서, 하나 이상의 원격 디바이스는 프로젝터(56), 프로젝션 스크린(58), 모바일 디바이스(60), 및 시각적 디스플레이 디바이스(62)를 포함한다. 컴퓨팅 디바이스(10)는 간략함과 예시를 위하여 도 3에는 도시되지 않은 하나 이상의 다른 디바이스, 예를 들어, 입력 디바이스, 출력 디바이스, 메모리, 저장 디바이스 등을 포함하거나 및/또는 이에 동작가능하게 연결될 수 있다.
컴퓨팅 디바이스(10)는 프로세서(30)(도 2)에 대해 전술된 기능을 구비하는 프로세서일 수 있다. 예를 들어, 컴퓨팅 디바이스(10)는 마이크로프로세서, ASIC, 또는 본 발명의 기술을 구현하도록 구성된 또 다른 유형의 집적 회로일 수 있다. 다른 실시예에서, 도 1a, 도 1b, 및 도 2에 도시된 바와 같이, 컴퓨팅 디바이스(10)는 존재-감응 디스플레이를 포함하거나 또는 이에 동작가능하게 연결된 독립형 컴퓨팅 디바이스일 수 있다. 이러한 실시예에서, 컴퓨팅 디바이스(10)는 데스크탑 컴퓨터, 태블릿 컴퓨터, 스마트 텔레비전 플랫폼, 카메라, PDA(personal digital assistant), 서버 디바이스, 메인프레임 컴퓨터, 전화, 휴대용 게임 디바이스, 퍼스널 미디어 플레이어, 리모콘 디바이스, 착용가능한 컴퓨팅 디바이스, 또는 또 다른 유형의 컴퓨팅 디바이스일 수 있다. 본 발명에서, 제 1 디바이스는 제 1 및 제 2 디바이스의 동작이 일정 방식으로 연결되면, 제 2 디바이스에 동작가능하게 연결된 것이라고 말할 수 있다.
컴퓨팅 디바이스(10)는 통신 채널(64A)을 통해 존재-감응 디스플레이(52)와 통신할 수 있다. 컴퓨팅 디바이스(10)는 통신 채널(64B)을 통해 통신 유닛(54)과 통신할 수 있다. 통신 채널(64A, 64B)은 각각 시스템 버스 또는 또 다른 적절한 연결을 포함할 수 있다. 도 3의 실시예는 컴퓨팅 디바이스(10), 존재-감응 디스플레이(52), 및 통신 유닛(54)을 별개인 것으로 도시하지만, 컴퓨팅 디바이스(10), 존재-감응 디스플레이(52), 및/또는 통신 유닛(54)은 단일 디바이스로 집적될 수 있다.
도 3의 실시예에서, 존재-감응 디스플레이(52)는 디스플레이 디바이스(66) 및 존재-감응 입력 디바이스(68)를 포함한다. 디스플레이 디바이스(66)는 컴퓨팅 디바이스(10)로부터 수신된 데이터에 기초하여 그래픽 컨텐츠를 디스플레이할 수 있다. 존재-감응 입력 디바이스(68)는 하나 이상의 유저 입력(예를 들어, 연속적인 제스처, 다중-터치 제스처, 단일-터치 제스처 등)을 결정할 수 있다. 존재-감응 입력 디바이스(68)는 용량성, 유도성, 및/또는 광 인식 기술을 사용하여 유저 입력을 결정할 수 있다. 존재-감응 디스플레이(52)는 이러한 유저 입력의 표시를 통신 채널(64A) 또는 또 다른 통신 채널을 통해 컴퓨팅 디바이스(10)에 송신할 수 있다. 일부 실시예에서, 존재-감응 입력 디바이스(68)는 디스플레이 디바이스(66)에 대해 물리적으로 위치되어, 유저가 그래픽 요소를 디스플레이하는 디스플레이 디바이스(66) 상의 위치에 입력 객체를 위치시킬 때 존재-감응 입력 디바이스(68)는 그래픽 요소를 디스플레이하는 디스플레이 디바이스(66) 상의 위치에서 입력 객체(예를 들어, 손가락 또는 스타일러스)의 존재를 검출할 수 있다.
통신 유닛(54)은 통신 유닛(들)(34)의 기능을 구비할 수 있다. 본 발명은 도 2에 대해 통신 유닛(34)의 기능을 설명한다. 통신 유닛(54)의 실시예는 네트워크 인터페이스 카드, 이더넷 카드, 광 트랜시버, 무선 주파수 트랜시버, 블루투스, 3G, 및 WiFi 무선, USB(Universal Serial Bus) 인터페이스, 또는 데이터를 송수신할 수 있는 다른 유형의 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(10)가 하나 이상의 원격 디바이스(예를 들어 프로젝터(56), 프로젝션 스크린(58), 모바일 디바이스(60), 및 시각적 디스플레이 디바이스(62))에 의해 디스플레이하기 위해 데이터를 출력할 때, 컴퓨팅 디바이스(10)는 이 데이터를 통신 유닛(54)과 같은 컴퓨팅 디바이스(10)의 통신 유닛에 출력할 수 있다. 통신 유닛(54)은 이 데이터를 하나 이상의 원격 디바이스에 송신할 수 있다. 하나 이상의 원격 디바이스는 이 데이터에 적어도 부분적으로 기초하여 그래픽 컨텐츠를 디스플레이할 수 있다.
통신 유닛(54)은 여러 통신 기술을 사용하여 데이터를 송수신할 수 있다. 도 3의 실시예에서, 네트워크 링크(70A)는 통신 유닛(54)을 외부 네트워크(72)에 동작가능하게 연결한다. 네트워크 링크(70B, 70C, 및 70D)는 각 원격 디바이스를 외부 네트워크(72)에 동작가능하게 연결할 수 있다. 외부 네트워크(72)는 네트워크 허브, 네트워크 스위치, 네트워크 라우터, 또는 도 3에 도시된 컴퓨팅 디바이스(10) 및 원격 디바이스 사이에 정보를 교환하는 다른 유형의 디바이스를 포함할 수 있다. 일부 실시예에서, 네트워크 링크(70A 내지 70D)는 이더넷, ATM 또는 다른 유선 및/또는 무선 네트워크 연결일 수 있다.
일부 실시예에서, 통신 유닛(54)은 직접 디바이스 통신(74)을 사용하여 도 3에 도시된 하나 이상의 원격 디바이스와 통신할 수 있다. 직접 디바이스 통신(74)은 컴퓨팅 디바이스(10)가 유선 또는 무선 통신을 사용하여 원격 디바이스와 직접 데이터를 송수신할 수 있게 하는 통신을 포함할 수 있다. 즉, 직접 디바이스 통신(74)의 일부 실시예에서, 컴퓨팅 디바이스(10)에 의해 송신된 데이터는 원격 디바이스에서 수신되기 전에는 하나 이상의 추가적인 디바이스에 의해 전달되지 않을 수 있고, 그 역으로도 그러할 수 있다. 직접 디바이스 통신(74)의 실시예는 블루투스, 근접장 통신, USB(Universal Serial Bus), WiFi, 적외선 등을 포함할 수 있다. 도 3에 도시된 하나 이상의 원격 디바이스는 통신 링크(76A 내지 76D)에 의해 통신 유닛(54)과 동작가능하게 연결될 수 있다. 일부 실시예에서, 통신 링크(76A 내지 76D)는 블루투스, 근접장 통신, USB(Universal Serial Bus), 적외선 등을 사용하는 연결일 수 있다. 이러한 연결은 무선 및/또는 유선 연결일 수 있다.
도 3의 실시예에서, 프로젝터(56)는 컴퓨팅 디바이스(10)로부터 데이터를 수신한다. 프로젝터(56)는 이 데이터에 기초하여 그래픽 컨텐츠를 프로젝션 스크린(58) 상으로 투영(project)할 수 있다. 도 3의 실시예는 프로젝터(56)를 테이블탑(tabletop) 프로젝터로서 도시하고 프로젝션 스크린(58)을 프리스탠딩(freestanding) 스크린으로 도시한다. 다른 실시예에서, 컴퓨팅 디바이스(10)는 다른 유형의 프로젝션 디바이스, 예를 들어 전자 화이트보드, 홀로그래픽 디스플레이 디바이스, 및 그래픽 컨텐츠를 디스플레이하는 다른 적절한 디바이스에 의해 디스플레이하기 위해 데이터를 출력할 수 있다.
일부 실시예에서, 프로젝터(56)는 프로젝션 스크린(58)에서 하나 이상의 유저 입력(예를 들어, 연속적인 제스처, 다중-터치 제스처, 단일-터치 제스처 등)을 결정하고 이러한 유저 입력의 표시를 컴퓨팅 디바이스(10)에 송신할 수 있다. 이러한 실시예에서, 프로젝터(56)는 광 인식 또는 다른 적절한 기술을 사용하여 유저 입력을 결정할 수 있다. 프로젝션 스크린(58)(예를 들어, 전자 화이트보드)은 컴퓨팅 디바이스(10)로부터 수신된 데이터에 기초하여 그래픽 컨텐츠를 디스플레이할 수 있다.
모바일 디바이스(60) 및 시각적 디스플레이 디바이스(62)는 각각 컴퓨팅 및 연결 능력을 구비할 수 있고 각각 컴퓨팅 디바이스(10)가 출력하는 데이터를 디스플레이를 위해 수신할 수 있다. 모바일 디바이스(60)의 예로는 전자-판독기(e-reader) 디바이스, 전환가능한(convertible) 노트북 디바이스, 하이브리드 슬레이트(hybrid slate) 디바이스 등을 포함할 수 있다. 시각적 디스플레이 디바이스(62)의 예로는 텔레비전, 컴퓨터 모니터 등을 포함할 수 있다. 도 3에 도시된 바와 같이, 프로젝션 스크린(58)은 존재-감응 디스플레이(78)을 포함할 수 있고, 모바일 디바이스(60)는 존재-감응 디스플레이(80)를 포함할 수 있고, 시각적 디스플레이 디바이스(62)는 존재-감응 디스플레이(82)를 포함할 수 있다. 존재-감응 디스플레이(78, 80, 82)는 UI 디바이스(4)를 위해 본 발명에서 설명된 기능의 전부 또는 일부를 구비할 수 있다. 일부 실시예에서, 존재-감응 디스플레이(78, 80, 82)는 UI 디바이스(4)의 기능에 더하여 기능을 포함할 수 있다. 존재-감응 디스플레이(78, 80, 82)는 컴퓨팅 디바이스(10)로부터 데이터를 수신할 수 있고 데이터에 기초하여 그래픽 컨텐츠를 디스플레이할 수 있다. 일부 실시예에서, 존재-감응 디스플레이(78, 80, 82)는 하나 이상의 유저 입력(예를 들어, 연속적인 제스처, 다중-터치 제스처, 단일-터치 제스처 등)을 결정하고 이러한 유저 입력의 표시를 컴퓨팅 디바이스(10)에 송신할 수 있다. 존재-감응 디스플레이(78, 80, 및/또는 82)는 용량성, 유도성, 광 인식 기술 및/또는 다른 기술을 사용하여 유저 입력을 결정할 수 있다.
일부 실시예에서, 컴퓨팅 디바이스(10)는 존재-감응 디스플레이(52)에 의한 디스플레이를 위한 데이터를 출력하지 않는다. 다른 실시예에서, 컴퓨팅 디바이스(10)는 디스플레이를 위한 데이터를 출력하되, 존재-감응 디스플레이(52) 및 하나 이상의 원격 디바이스 모두가 동일한 그래픽 컨텐츠를 디스플레이하도록 출력할 수 있다. 이러한 실시예에서, 각 해당 디바이스는 동일한 그래픽 컨텐츠를 실질적으로 동시에 디스플레이할 수 있다. 이러한 실시예에서, 각 디바이스는 통신 레이턴시(latency)로 인해 상이한 시간에 그래픽 컨텐츠를 디스플레이할 수 있다. 다른 실시예에서, 컴퓨팅 디바이스(10)는 디스플레이를 위한 데이터를 출력하되, 존재-감응 디스플레이(52) 및 하나 이상의 원격 디바이스는 상이한 그래픽 컨텐츠를 디스플레이하도록 출력할 수 있다.
도 3의 실시예에서, 컴퓨팅 디바이스(2)는 존재-감응 입력 디바이스(68) 및 존재-감응 디스플레이(78, 80, 및 82) 중 하나 이상으로부터 제 1 시리즈의 하나 이상의 유저 입력을 수신할 수 있다. 제 1 시리즈의 하나 이상의 유저 입력이 제 1 스트링의 문자에 대응하는 것으로 결정한 것에 응답하여, 컴퓨팅 디바이스(2)는, 디스플레이 디바이스(66), 존재-감응 디스플레이(78, 80, 및 82) 중 하나 이상에서 디스플레이하기 위해, 제 1 문자 스트링을 출력할 수 있다. 제 1 스트링이 단어 구분자로 종료하는 것으로 결정한 것에 응답하여, 컴퓨팅 디바이스(2)는, 디스플레이 디바이스(66) 및 존재-감응 디스플레이(78, 80, 및 82) 중 하나 이상에서 디스플레이하기 위해, 제 1 문자 스트링 대신에 제 2 문자 스트링을 출력할 수 있다. 제 1 시리즈의 하나 이상의 유저 입력을 수신한 후, 컴퓨팅 디바이스(2)는 디스플레이 디바이스(66) 및 존재-감응 디스플레이(78, 80, 및 82) 중 하나 이상으로부터 제 2 시리즈의 하나 이상의 유저 입력을 수신할 수 있다. 제 2 시리즈의 하나 이상의 유저 입력이 제 3 문자 스트링에 대응하는 것으로 결정한 것에 응답하여, 컴퓨팅 디바이스(2)는, 디스플레이 디바이스(66), 존재-감응 디스플레이(78, 80, 및 82) 중 하나 이상에서 디스플레이하기 위해, 제 3 스트링을 출력할 수 있다. 컴퓨팅 디바이스(2)는, 제 1 및 제 2 시리즈의 하나 이상의 유저 입력에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정할 수 있다. 게다가, 컴퓨팅 디바이스(2)는, 디스플레이 디바이스(66), 존재-감응 디스플레이(78, 80, 및 82) 중 하나 이상에서 디스플레이하기 위해, 제 2 및 제 3 스트링 대신 제 4 스트링을 출력할 수 있다.
도 4a 및 도 4b는 본 발명의 하나 이상의 측면에 따라 잘못 위치된 스페이스 문자의 정정을 도시하는 개념도이다. 도 4a의 실시예에서 도시된 바와 같이, 유저는 문자 스트링 "thi" 다음에 스페이스 문자를 입력하였다. 도 4a의 실시예에서, IME 모듈(6)은 유저 입력 이벤트가 문자 스트링 "thi"에 대응하는 것으로 결정한 것에 응답하여 하나 이상의 대체 후보를 식별할 수 있다. 그러나, 도 4a의 실시예에서, 대체 후보 중 그 어느 것도 자동-대체 임계값 미만인 대체 스코어를 구비하지 않는다. 따라서, 문자 스트링 "thi"이 사전(7)에 있는 단어와 매치하지 않는다 하더라도, IME 모듈(6)이 스페이스 문자에 대응하는 유저 입력 이벤트를 수신할 때에는 IME 모듈(6)은 문자 스트링 "thi"를 사전(7)에 있는 단어로 대체하지 않는다.
이후, 도 4a의 실시예에 도시된 바와 같이, IME 모듈(6)은 후속하는 시리즈의 유저 입력 이벤트가 문자 스트링 "sis"에 대응하는 지를 결정할 수 있다. 이에 응답하여, 컴퓨팅 디바이스(2)는 문자 스트링 "thi" 및 스페이스 문자 다음에 GUI(10)에서 문자 스트링 "sis"을 디스플레이한다. 게다가, IME 모듈(6)은 대체 후보의 제 2 세트를 결정할 수 있다. IME 모듈(6)은 제안 요소(20)에 있는 대체 후보의 일부분을 출력할 수 있다. 도 4a의 실시예에서, IME 모듈(6)은 제안 요소(20)에 있는 문자 스트링 "the sis", "this is", 및 "this sister"을 출력한다.
IME 모듈(6)이 하나 이상의 유저 입력 이벤트가 제안 요소(20) 중 하나의 유저 선택에 대응하는 것으로 결정하면, IME 모듈(6)은 선택된 제안 요소에 포함된 대체 후보에 대한 관련 문자 스트링을 결정할 수 있다. IME 모듈(6)은 이후 관련 문자 스트링 대신에 대체 후보를 출력할 수 있다. 예를 들어, IME 모듈(6)이 제안 요소(20B)를 선택하는 유저 입력의 표시를 수신하면, IME 모듈(6)은 "thi sis"이 대체 후보 "this is"에 대한 관련 문자 스트링인 것으로 결정할 수 있다. 도 4b에 도시된 바와 같이, IME 모듈(6)은 이후 관련 문자 스트링 "thi sis" 대신에 대체 후보 "this is"를 출력할 수 있다. 대안적으로, 도 4a의 실시예에서, IME 모듈(6)은 시리즈의 유저 입력 이벤트가 문자 스트링 "thi sis" 이후에 스페이스 문자가 따라오는 것에 대응하는지를 결정할 수 있다. IME 모듈(6)은 최고-랭킹된 대체 후보가 "this is"이고 최고-랭킹된 대체 후보에 대한 관련 문자 스트링은 "thi sis"인 것으로 결정할 수 있다. 따라서, 도 4b에 도시된 바와 같이, IME 모듈(6)은 "thi sis" 대신에 "this is"를 자동으로 출력할 수 있다.
도 4a 및 도 4b의 실시예에서, "sis"는 제 1 문자 "s" 다음에 서브스트링 "is"이 따라오는 것을 포함할 수 있다. 도 4a 및 도 4b의 실시예에서, "this is"는 제 1 스트링 "thi" 다음에 제 1 문자 "s"가 따라오고, 이어서 단어 구분자 " "가 따라오고 나서, 서브스트링 "is"이 있는 것을 포함한다. 제 1 스트링 "thi" 다음에 제 1 문자 "s" 및 서브스트링 "is"이 따라오는 것은 사전(7)에 있는 단어와 매치한다.
도 4a 및 도 4b의 실시예와 유사한 실시예에서, IME 모듈(6)은 제 1 시리즈의 유저 입력이 서브스트링("this") 다음에 하나 이상의 잘못 위치된 문자("i")가 따라오는 것을 포함하는 제 1 스트링(예를 들어, "thisi")에 대응하는 것으로 결정할 수 있다. 이 실시예에서, IME 모듈(6)은 후속 시리즈의 유저 입력이 제 2 스트링(예를 들어, "s")에 대응하는 것으로 결정할 수 있다. 이 실시예에서, 대체 후보(예를 들어, "this is")는 서브스트링("this") 다음에 단어 구분자(예를 들어, " ")가 따라오고, 이후 하나 이상의 잘못 위치된 문자("i")가 따라오고 나서 제 2 스트링("s")이 따라오는 것을 포함할 수 있다. 서브스트링 및 하나 이상의 잘못 위치된 문자 다음에 제 3 스트링이 따라오는 것은 사전(7)에 있는 단어와 매치한다.
도 5a 및 도 5b는 본 발명의 하나 이상의 측면에 따라 이전의 단어의 정정을 도시하는 개념도이다. 도 5a의 실시예에 도시된 바와 같이, 유저는 이전에 텍스트 "correct prewviius word"를 입력하였다. 문자 스트링 "prewviius"은 영어-언어 사전에 있는 임의의 단어와 매치하지 않는다. 그러나, 문자 스트링 "word"는 영어-언어 사전에 있는 단어와 매치한다.
따라서, 도 5a의 실시예에서, IME 모듈(6)은 대체 후보 세트를 결정하고 제안 요소(20)에 있는 대체 후보의 일부분을 출력할 수 있다. 각 대체 후보에 대한 관련 문자 스트링은 문자 스트링 "prewviius word"일 수 있다. 따라서, 도 5a의 실시예에 도시된 바와 같이, IME 모듈(6)은 GUI(10)에 관련 문자 스트링에 있는 문자의 시각적 표시를 포함할 수 있다. 도 5a의 실시예에서, IME 모듈(6)은 이 문자 스트링이 관련 문자 스트링이라는 것을 나타내기 위해 문자 스트링 "prewviius word"에 밑줄을 친다(underline). 다른 실시예에서, IME 모듈(6)은 GUI(10)에서 적용가능한(applicable) 문자 스트링에 있는 문자의 또 다른 시각적 표시를 하이라이트하거나 이탤릭체로 하거나 확대하거나 그 색상을 변화시킬 수 있거나 또는 이를 포함(표시)할 수 있다.
IME 모듈(6)이 제안 요소(20) 중 하나를 선택하는 유저 입력의 표시를 수신하면, IME 모듈(6)은 관련 문자 스트링 대신에 선택된 제안 요소에 대응하는 문자 스트링을 출력할 수 있다. 예를 들어, 도 5b의 실시예에서, IME 모듈(6)은, 하나 이상의 유저 입력 이벤트가 제안 요소(20B)의 유저 선택에 대응하는 것으로 결정한 것에 응답하여, 문자 스트링 "prewviius word" 대신에 문자 스트링 "previous word"를 출력할 수 있다.
일부 실시예에서, IME 모듈(6)은, IME 모듈(6)이 하나 이상의 유저 입력 이벤트가 단어 구분자에 대응하는 것으로 결정한 경우, "prewviius word"가 탑-랭킹된 대체 후보에 대한 관련 문자 스트링인 경우, 및 탑-랭킹된 대체 후보의 대체 스코어가 자동-대체 임계값 미만인 경우, 문자 스트링 "prewviius word" 대신에 탑-랭킹된 대체 후보를 자동으로 출력할 수 있다.
도 6a 및 도 6b는 비-스페이스 문자 대신에 에러 스페이스 문자를 포함하는 단어의 정정을 도시하는 개념도이다. 도 6a의 실시예에서, 유저는 단어 "someone"을 입력하고자 의도하였으나 의도치 않게 글자 "n"에 대한 키 대신에 스페이스 문자를 선택하였다. 따라서, IME 모듈(6)은 GUI(10)에서 문자 스트링 "someo e"을 출력할 수 있다.
이에 응답하여, IME 모듈(6)은 대체 후보 "someo e", "someone", 및 "Simone"를 제안 요소(20)에 식재할 수 있다. IME 모듈(6)은, 하나 이상의 유저 입력 이벤트가 대체 후보를 포함하는 제안 요소의 유저 선택에 대응하는 것으로 결정한 것에 응답하여, 문자 스트링 "someo e" 대신에 대체 후보를 출력할 수 있다. 예를 들어, IME 모듈(6)은, 도 6b에 도시된 바와 같이, 하나 이상의 유저 입력 이벤트가 제안 요소(20B)의 유저 선택에 대응하는 것으로 결정한 것에 응답하여, 문자 스트링 "someo e" 대신에 대체 후보 "someone"를 출력할 수 있다. 도 6a 및 도 6b의 실시예에서, 대체 후보 "someone"는 제 1 스트링("someo") 다음에 영숫자 문자 "n"이 따라오고 나서, 제 2 스트링("e")이 따라오는 것과 매치한다. 더욱이, IME 모듈(6)은, IME 모듈(6)이 하나 이상의 유저 입력 이벤트가 단어 구분자에 대응하는 것으로 결정한 경우, 및 탑-랭킹된 대체 후보의 대체 스코어가 자동-대체 임계값 미만인 것으로 결정한 경우, 문자 스트링 "someo e" 대신에 탑-랭킹된 대체 후보(예를 들어, "someone")를 자동으로 출력할 수 있다.
도 7a 및 도 7b는 에러 스페이스 문자를 포함하는 단어의 정정을 도시하는 개념도이다. 도 7a의 실시예에서, 유저는 단어 "sentence"를 입력하기를 의도하였으나 의도치 않게 단어 "sentence"에서 글자 "t" 및 "e" 사이에 스페이스 문자를 선택하였다. 이에 응답하여, IME 모듈(6)은 제안 요소(20)에 있는 대체 후보 "sent ence", "sentence", 및 "tense"를 출력할 수 있다.
IME 모듈(6)은, 하나 이상의 유저 입력 이벤트가 대체 후보에 대응하는 제안 요소의 유저 선택에 대응하는 것으로 결정한 것에 응답하여, 대체 후보에 대한 관련 문자 스트링 대신에 대체 후보를 출력할 수 있다. 예를 들어, 제안 요소(20B)에 있는 대체 후보에 대한 관련 문자 스트링은 "sent ence"일 수 있다. 이 실시예에서, IME 모듈(6)이 하나 이상의 유저 입력 이벤트가 제안 요소(20B)의 유저 선택에 대응하는 것으로 결정하면, IME 모듈(6)은 도 6b에 도시된 "sent ence" 대신에 대체 후보 "sentence"를 출력할 수 있다. 제안 요소(20C)에 있는 대체 후보에 대한 관련 문자 스트링은 "ence"일 수 있다. 따라서, IME 모듈(6)이 하나 이상의 유저 입력 이벤트가 제안 요소(20C)의 유저 선택에 대응하는 것으로 결정하면, IME 모듈(6)은 "ence" 대신에 "tense"을 출력할 수 있다.
더욱이, IME 모듈(6)은 IME 모듈(6)이 하나 이상의 유저 입력 이벤트가 단어 구분자에 대응하는 것으로 결정한 경우, 탑-랭킹된 대체 후보에 대한 관련 문자 스트링이 "sent ence"인 경우, 및 탑-랭킹된 대체 후보의 대체 스코어가 자동-대체 임계값 미만인 경우, 문자 스트링 "sent ence" 대신에 탑-랭킹된 대체 후보("sentence")를 자동으로 출력할 수 있다. IME 모듈(6)은 IME 모듈(6)이 하나 이상의 유저 입력 이벤트가 단어 구분자에 대응하는 것으로 결정한 경우, 탑-랭킹된 대체 후보에 대한 관련 문자 스트링이 "ence"인 경우, 및 탑-랭킹된 대체 후보의 대체 스코어가 자동-대체 임계값 미만인 경우, 문자 스트링 "ence"를 탑-랭킹된 대체 후보("tense")로 자동으로 대체할 수 있다.
도 7a 및 도 7b의 실시예에서, IME 모듈(6)은 제 1 시리즈의 유저 입력이 제 1 스트링("sent")에 대응하는지를 결정할 수 있다. 게다가, IME 모듈(6)은 제 2 시리즈의 유저 입력이 제 2 스트링("ence")에 대응하는지를 결정할 수 있다. 도 7a 및 도 7b의 실시예에서, IME 모듈(6)은, 사전(7)에 있는 단어와 매치하고 제 1 스트링("sent")에 제 2 스트링("ence")이 부속(appended)된 것과 같은 대체 후보("sentence")를 결정할 수 있다.
도 8은 본 발명의 하나 이상의 측면에 따라 IME 모듈(6)의 예시적인 동작(300)을 도시하는 흐름도이다. 도 8의 실시예에서, IME 모듈(6)은 시리즈의 하나 이상의 유저 입력 이벤트를 수신할 수 있다(302). 시리즈의 유저 입력 이벤트는 컴퓨팅 디바이스(2)에 의해 수신된 시리즈의 하나 이상의 유저 입력을 나타낼 수 있다. IME 모듈(6)은 시리즈의 유저 입력 이벤트가 문자 스트링에 대응하는지 여부를 결정할 수 있다(304). 문자 스트링은 하나 이상의 문자를 포함할 수 있다. 시리즈의 유저 입력 이벤트가 문자 스트링에 대응하는 것으로 결정한 것에 응답하여(304에서 "예" 분기), IME 모듈(6)은 유저 인터페이스 디바이스(4)에서 디스플레이하기 위한 문자 스트링을 출력할 수 있다(306). 예를 들어, IME 모듈(6)이 시리즈의 유저 입력 이벤트가 문자 스트링 "thi"에 대응하는 것으로 결정하면, IME 모듈(6)은 유저 인터페이스 디바이스(4)에서 디스플레이하기 위한 문자 스트링 "thi"을 출력할 수 있다.
나아가, IME 모듈(6)이 시리즈의 유저 입력 이벤트가 문자 스트링에 대응하는 것으로 결정하면, IME 모듈(6)은 하나 이상의 대체 후보 세트를 결정할 수 있다(308). 일부 경우에, IME 모듈(6)은 복수의 대체 후보를 결정할 수 있다. 각 대체 후보는 문자 스트링일 수 있다. 일부 실시예에서, IME 모듈(6)은 다수의 시리즈의 유저 입력 이벤트에 기초하여 대체 후보 세트를 결정할 수 있다. 예를 들어, IME 모듈(6)은 제 1 시리즈의 유저 입력 이벤트가 제 1 문자 스트링에 대응하는지를 결정할 수 있다. 이 실시예에서, 제 1 문자 스트링은 사전(7)에 있는 단어와 매치하지 않고 IME 모듈(6)은 제 1 문자 스트링을 제 2 문자 스트링으로 자동-대체할 수 있다. 나아가, 이 실시예에서, IME 모듈(6)은 제 2의 후속 시리즈의 유저 입력 이벤트를 수신할 수 있다. 이 실시예에서, IME 모듈(6)은 제 1 및 제 2 시리즈의 유저 입력 이벤트에 적어도 부분적으로 기초하여 대체 후보 세트를 결정할 수 있다.
게다가, IME 모듈(6)은 대체 스코어를 대체 후보에 할당할 수 있다(310). IME 모듈(6)은 여러 동작을 수행하여 대체 스코어를 대체 후보에 할당할 수 있다. 예를 들어, 일부 실시예에서, IME 모듈(6)은 도 9a 및 도 9b의 예시적인 동작을 수행하여 문자 스트링을 결정하고, 대체 후보 세트를 결정하고, 대체 스코어를 할당할 수 있다.
IME 모듈(6)은 또한 문자 스트링이 단어 구분자로 종료하는지 여부를 결정할 수 있다(312). 예시적인 단어 구분자는 스페이스 문자, 리턴(return) 문자, 콤마(comma), 마침표(period), 의문(question) 부호, 괄호 등을 포함한다. 문자 스트링이 단어 구분자로 종료하지 않는 것으로 결정한 것에 응답하여(312의 "아니오" 분기), IME 모듈(6)은, 대체 후보에 할당된 대체 스코어에 적어도 부분적으로 기초하여, 대체 후보의 일부분을 선택할 수 있다(314). IME 모듈(6)은 이후 제안 요소(20)에 있는 대체 후보의 선택된 부분을 출력할 수 있다(316). 각 제안 요소(20)는 대체 후보 세트의 부분에서 상이한 대체 후보를 지정(specify)할 수 있다.
문자 스트링이 단어 구분자로 종료한 것으로 결정한 것에 응답하여(312의 "예" 분기), IME 모듈(6)은 탑-랭킹된 대체 후보에 대한 관련 문자 스트링에 있는 각 단어가 사전(7)에 있는 단어와 매치하는지 여부를 결정할 수 있다(318). 탑-랭킹된 대체 후보에 대한 관련 문자 스트링에 있는 각 단어가 사전(7)에 있는 단어와 매치하는 것으로 결정한 것에 응답하여(318의 "예" 분기), IME 모듈(6)은 유저 인터페이스 디바이스(4)에서 디스플레이하기 위한 단어 구분자를 출력하고(320) 추가적인 유저 입력 이벤트의 수신을 대기할 수 있다(302).
한편, 탑-랭킹된 대체 후보에 대한 관련 문자 스트링에 있는 하나 이상의 단어가 사전(7)에 있는 임의의 단어와 매치하지 않는 것으로 결정한 것에 응답하여(318의 "아니오" 분기), IME 모듈(6)은 탑-랭킹된 대체 후보에 대한 대체 스코어가 자동-대체 임계값 미만인지 여부를 결정할 수 있다(322). 탑-랭킹된 대체 후보에 대한 대체 스코어가 자동-대체 임계값 미만이 아닌 것으로 결정한 것에 응답하여(322의 "아니오" 분기), IME 모듈(6)은 유저 인터페이스 디바이스(4)에서 디스플레이하기 위한 단어 구분자를 출력하고(320) 추가적인 유저 입력 이벤트의 수신을 대기할 수 있다(302).
그러나, 탑-랭킹된 대체 후보에 대한 대체 스코어가 자동-대체 임계값 미만인 것으로 결정한 것에 응답하여(322의 "예" 분기), IME 모듈(6)은, 유저 인터페이스 디바이스(4)에서 디스플레이하기 위해, 탑-랭킹된 대체 후보에 대한 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 출력할 수 있다(324). 예를 들어, 탑-랭킹된 대체 후보에 대한 관련 문자 스트링가 "thesa"이고 탑-랭킹된 대체 후보가 "thesaurus"인 경우, IME 모듈(6)은 "thesa" 대신에 "thesaurus"을 출력할 수 있다. 또 다른 실시예에서, IME 모듈(6)은 제 1 시리즈의 유저 입력이 제 1 문자 스트링(예를 들어, 도 1에서 "eo")에 대응하는 것으로 결정하고 제 1 문자 스트링을 제 2 문자 스트링(예를 들어, 도 1에서 "do")으로 자동-대체할 수 있다. 이 실시예에서, IME 모듈(6)은 후속하는 제 2 시리즈의 유저 입력이 제 3 문자 스트링(예를 들어, 도 1에서 "haopy")에 대응하는지를 결정할 수 있다. 이 실시예에서, "do haopy"는 관련 문자 스트링이고 IME 모듈(6)은, 제 3 문자 스트링이 단어 구분자로 종료된 것으로 결정한 것에 응답하여, 제 2 및 제 3 스트링 대신에 제 4 스트링(예를 들어, 도 1에서 "so happy")을 출력할 수 있다. 이 실시예에서, 제 4 스트링은 대체 후보 세트 중에서 최저 대체 스코어를 구비할 수 있다. 이런 방식으로, IME 모듈(6)은, 탑-랭킹된 대체 후보가 관련 문자 스트링보다 시리즈의 하나 이상의 유저 입력 이벤트에 더 대응할 것 같은 것으로 결정한 것에 응답하여, 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 출력할 수 있다. 일부 실시예에서, IME 모듈(6)은, 관련 문자 스트링에 있는 하나 이상의 단어가 사전(7)에 있는지를 제일 먼저 결정함이 없이, 탑-랭킹된 대체 후보가 관련 문자 스트링보다 시리즈의 하나 이상의 유저 입력 이벤트에 더 대응할 것 같을 때, 관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 출력할 수 있다.
관련 문자 스트링 대신에 탑-랭킹된 대체 후보를 출력한 후, IME 모듈(6)은 유저 인터페이스 디바이스(4)에서 디스플레이하기 위한 단어 구분자를 출력할 수 있다(320). IME 모듈(6)은 이후 추가적인 유저 입력 이벤트의 수신을 대기할 수 있다(302).
시리즈의 유저 입력 이벤트가 문자 스트링에 대응하지 않는 것으로 결정한 것에 응답하여(304의 "아니오" 분기), IME 모듈(6)은 시리즈의 유저 입력 이벤트가 제안 요소(20)들 중 하나의 유저 선택에 대응하는지 여부를 결정할 수 있다(326). 시리즈의 유저 입력 이벤트가 제안 요소(20) 중 하나의 유저 선택에 대응하지 않는 것으로 결정한 것에 응답하여(326의 "아니오" 분기), IME 모듈(6)은 시리즈의 유저 입력 이벤트를 처리하고 추가적인 유저 입력 이벤트의 수신을 대기할 수 있다(302).
시리즈의 유저 입력 이벤트가 제안 요소(20) 중 하나의 유저 선택에 대응하는 것으로 결정한 것에 응답하여(326의 "예" 분기), IME 모듈(6)은, 유저 인터페이스 디바이스(4)에서 디스플레이하기 위해, 선택된 제안 요소의 대체 후보에 대한 관련 문자 스트링 대신에 선택된 제안 요소의 대체 후보를 출력할 수 있다(328). 관련 문자 스트링을 대체한 후, IME 모듈(6)은 추가적인 유저 입력 이벤트의 수신을 대기할 수 있다(302). 예를 들어, 선택된 제안 요소의 대체 후보에 대한 관련 문자 스트링이 "do haopy"이고 선택된 제안 요소의 대체 후보가 "so happy"인 경우, IME 모듈(6)은 "do haopy" 대신에 "so happy"를 출력할 수 있다. 따라서, 이 실시예에서, IME 모듈(6)이 제 1 스트링("eo")을 제 2 스트링("do")으로 자동-대체하고 후속하는 시리즈의 유저 입력이 제 3 스트링("haopy")에 대응하는 것으로 결정한 경우, IME 모듈(6)은, 제 4 스트링("so happy")을 포함하는 제안 요소를 선택하는 유저 입력을 수신한 것에 응답하여, 제 2 및 제 3 스트링 대신에 제 4 스트링을 출력할 수 있다.
도 9a는 본 발명의 하나 이상의 측면에 따라 유저 입력을 해석하는 컴퓨팅 디바이스(2)의 예시적인 동작(500)을 도시하는 흐름도이다. IME 모듈(6)은 동작(500)을 수행하여 시리즈의 유저 입력 이벤트가 문자 스트링에 대응하는지 결정하고, 디스플레이를 위한 문자 스트링을 출력하고, 대체 후보를 결정하며, 동작(300)의 액션(304 내지 310)에서 대체 스코어를 대체 후보에 할당할 수 있다.
도 9a 및 도 9b의 실시예에서, IME 모듈(6)은 사전 유한 상태 트랜스듀서(finite state transducer)(FST)를 사용하여 시리즈의 유저 입력이 문자 스트링에 대응하는지 결정하고 또한 대체 후보 및 대체 스코어를 결정한다. 사전(lexicon) FST는 복수의 노드(node) 및 복수의 호(arc)를 포함한다. 이 노드는 엔트리 노드(entry node), 복수의 단말 노드(terminal node), 및 복수의 비-단말 노드를 포함할 수 있다. 엔트리 노드와는 다른 각 노드는 정확히 하나의 들어오는 호(incoming arc) 및 적어도 하나의 나가는 호(outgoing arc)를 구비할 수 있다. 노드의 들어오는 호는 또 다른 노드로부터 이 노드로 이어지는 호일 수 있다. 노드의 나가는 호는 이 노드로부터 또 다른 노드로 이어지는 호일 수 있다. 다른 노드로부터 노드로 이어지는 호가 있는 경우 이 노드는 본 명세서에서 또 다른 노드의 자녀 노드(child node)라고 언급된다.
각 단말 노드는 사전(7)에 하나 이상의 단어를 포함하는 문자 스트링과 연관될 수 있다. 각 단말 노드는 엔트리 노드로부터 사전 FST(lexicon FST)를 통해 시리즈의 하나 이상의 호를 따르는 것에 의해 도달될 수 있다. 각 단말 노드는 사전 FST의 엔트리 노드로 다시 이어지는 나가는 호를 구비할 수 있다.
각 호는 입력 문자와 연관될 수 있다. 이 호의 입력 문자는 영숫자 문자 및/또는 단어 구분자일 수 있다. 나아가, 호의 입력 문자는 람다 문자(lambda character)일 수 있다. 람다 문자는 문자에 대한 플레이스홀더(placeholder)이다. 호의 입력 문자가 람다 문자인 경우, 어떤 유저 입력 이벤트도 이 호를 따르는 것에 의해 소비되지 않는다. 람다 문자는 단말 노드로부터 엔트리 노드로 가는 나가는 호와 연관될 수 있다.
IME 모듈(6)은 유저 입력의 표시를 수신할 수 있다(502). 다른 단어에서, IME 모듈(6)은 유저 입력 이벤트를 수신할 수 있다. 이에 응답하여, IME 모듈(6)은 사전 FST의 엔트리 노드와 연관된 토큰(token)을 생성할 수 있다(504). 토큰은 여러 데이터를 저장하는 데이터 구조일 수 있다. IME 모듈(6)은 토큰을 활성 빔(active beam)으로 푸시(push)할 수 있다(506). 도 9a 및 도 9b의 상황에서, 빔은 토큰을 저장하는 데이터 구조일 수 있다. IME 모듈(6)이 토큰을 활성 빔으로 푸시할 때, 활성 빔의 컨텐츠는 아래 표 1로 제시될 수 있다.
인덱스 부모 인덱스 노드의 문자 문자 사슬 비용 값 룩어헤드 스코어
0 - - - 0 0
표 1에서, 각 행은 개별 토큰을 나타낸다. 각 토큰에서, 인덱스 열(index column)은 토큰에 대한 고유한 인덱스 값을 나타낸다. 각 토큰에서, 부모(parent) 인덱스 열은 토큰의 부모 인덱스 값을 나타낸다. 토큰의 부모 인덱스는 토큰의 부모 토큰의 인덱스이다. 특정 토큰은, IME 모듈(6)이 특정 토큰의 사본(copy)으로 다른 토큰을 생성한 경우, 또 다른 토큰의 부모 토큰일 수 있다. 각 토큰에서, 노드 열의 문자는 토큰의 부모와 연관된 노드로부터 이 토큰과 연관된 노드로 이어지는 호의 입력 문자를 나타낼 수 있다. 각 토큰에서, 문자 사슬 열(chain column)은 토큰의 부모와 연관된 노드로부터 토큰과 연관된 노드로 이어지는 호의 입력 문자와 연쇄된 토큰의 부모의 문자 사슬을 나타낼 수 있다. 각 토큰에서, 비용 값 열(cost value column)은 토큰의 비용 값을 나타낼 수 있다. 토큰의 비용 값은 토큰의 부모의 비용 값 플러스(plus) 토큰의 부모와 연관된 노드로부터 이 토큰과 연관된 노드로 이어지는 호의 비용 값과 같을 수 있다. 표 1에 도시된 바와 같이, 이 토큰은 0의 인덱스(즉, 토큰0), 부모 인덱스 없음, 노드의 문자 없음, 문자 사슬 없음, 및 제로(zero)의 비용 값을 구비한다.
토큰을 활성빔으로 푸시한 후, IME 모듈(6)은 활성빔으로부터 토큰을 선택할 수 있다(508). IME 모듈(6)은 이후 선택된 토큰의 사본이 선택된 토큰과 연관된 노드의 각 자녀 노드에 대해 생성된 것인지 여부를 결정할 수 있다(510). 설명의 편의를 위하여, 본 발명은 토큰과 연관된 노드를 토큰의 노드로서 설명할 수 있다. IME 모듈(6)이 선택된 토큰의 사본이 토큰의 노드의 자녀 노드에 대해 아직 생성되지 않은 것으로 결정한 경우(10의 "아니오" 분기), IME 모듈(6)은 선택된 토큰의 사본을 생성할 수 있고 이 사본을 자녀(child) 노드와 연관시킬 수 있다(512). 선택된 토큰의 노드가 단말 노드인 경우, 자녀(child) 노드는 사전 FST의 엔트리 노드일 수 있다. IME 모듈(6)은 사본의 컨텐츠를 업데이트할 수 있다(514).
IME 모듈(6)이 사본의 컨텐츠를 업데이트하면, IME 모듈(6)은 사본의 인덱스를 업데이트하여 이 사본이 그 다음 빔에 있는 토큰 중에서 고유한 인덱스를 구비하게 할 수 있다. 게다가, IME 모듈(6)은 이 사본의 부모 인덱스를 업데이트하여 선택된 토큰의 인덱스를 나타낼 수 있다. IME 모듈(6)은 또한 사본의 노드의 문자 필드(character-of-node field)를 업데이트하여 선택된 토큰의 노드로부터 사본의 노드로 가는 호와 연관된 입력 문자를 나타낼 수 있다. 게다가, IME 모듈(6)은 사본의 문자 사슬 필드(character chain field)를 업데이트하여 선택된 토큰의 노드로부터 사본의 노드로 가는 호와 연관된 입력 문자를 부속시킬 수 있다. IME 모듈(6)은 또한 사본의 비용 값 필드(cost value field)를 업데이트하여 선택된 토큰의 노드로부터 사본의 노드로 가는 호와 연관된 비용 값을 추가할 수 있다.
일부 실시예에서, IME 모듈(6)은 사본의 문자 사슬이 특정 개수를 초과하는 단어 구분자를 포함하는지 여부를 결정할 수 있다. 예를 들어, IME 모듈(6)은 사본의 문자 사슬이 2개를 초과하는 단어 구분자를 포함하는지 여부를 결정할 수 있다. 사본의 문자 사슬이 특정 개수를 초과하는 단어 구분자를 포함하는 것으로 결정한 것에 응답하여, IME 모듈(6)은 사본의 문자 사슬로부터 오래된(old) 문자를 제거하고 사본의 비용 값으로부터 오래된 비용을 제거할 수 있다. 오래된 문자는 사본의 문자 사슬에 있는 것 중 가장 앞선(earliest) 단어 구분자 이전에 사본의 문자 사슬에서 발생한 문자일 수 있다. 이 오래된 비용은 오래된 문자와 연관된 비용일 수 있다.
IME 모듈(6)은 여러 방식으로 호와 연관된 비용 값을 결정할 수 있다. 일부 실시예에서, IME 모듈(6)은 호에 대한 문자-레벨 비용 값에 적어도 부분적으로 기초하여 호와 연관된 비용 값을 결정할 수 있다. IME 모듈(6)은 문자-레벨 FST를 사용하여 호에 대한 문자-레벨 비용 값을 결정할 수 있다. 문자-레벨 FST는 전술된 사전 FST와 같은 FST일 수 있다. 설명의 편의를 위하여, 문자-레벨 FST는 본 명세서에서 C-FST라고 언급될 수 있다.
C-FST는 호에 의해 연결된 복수의 노드를 포함할 수 있다. 각 호는 입력 문자를 구비할 수 있다. 이 실시예에서, IME 모듈(6)은 C-FST의 노드를 통한 경로를 따르고 이 경로를 따라 호의 비용을 합산(summing)하는 것에 의해 문자 시퀀스에 대한 문자-레벨 비용 값을 결정할 수 있다. 이 경로에서 호의 출력 문자는 사본의 문자 사슬에 있는 문자와 매치한다. C-FST의 노드를 통한 경로에 있는 각 호에 대해, IME 모듈(6)은 호의 입력 문자에 대한 공간 모델 스코어 및 이 호의 입력 문자에 대한 언어 모델 스코어에 적어도 부분적으로 기초하여 호의 비용을 결정할 수 있다.
입력 문자에 대한 공간 모델 스코어는 유저 입력 이벤트가 입력 문자에 대응할 가능성(probability)을 나타낼 수 있다. 예를 들어, 유저 입력 이벤트가 유저 인터페이스 디바이스(4)의 특정 위치에서 탭핑 제스처에 대응하는 경우, 입력 문자에 대한 공간 모델 스코어는 입력 문자에 대한 가상 키 및 특정 위치 사이의 공간 거리와 상관될 수 있다.
입력 문자에 대한 언어 모델 스코어는 이 경로에서 앞선 호의 입력 문자들이 주어지면 이 입력 문자들의 가능성을 나타낼 수 있다. 예를 들어, 입력 문자가 일반적으로 경로의 앞선 호의 입력 문자를 따르지 않는 경우, 이 입력 문자는 낮은 언어 모델 스코어를 수신할 수 있다. 예를 들어, 문자 "k"는 일반적으로 영어에서 문자 "f"를 따르지 않는다. 따라서, 이 실시예에서, 글자 "k"는 앞선 호의 입력 문자가 "f"인 경우, 낮은 언어 모델 스코어를 수신할 수 있다.
람다 문자는 C-FST에 있는 일부 호에 대해 입력 문자 또는 출력 문자일 수 있다. 어떤 유저 입력 이벤트도, 람다 문자가 호의 입력 문자인 경우, 호를 따라 전이(transitioning)하는 것에 의해 소비되지 않는다. C-FST는, 특정 문자를 입력 문자로 구비하고 람다 문자를 출력 문자로 구비하는 호를 사용하여 특정 문자를 우연히 포함하는 스트링을 모델링할 수 있다. IME 모듈(6)은, 람다 문자를 호의 출력 문자로 구비하는 호를 따라 전이하는 것에 의해 임의의 문자를 토큰의 문자 사슬에 추가하지 않는다. C-FST는 람다 문자를 입력 문자로 구비하고 생략된 문자를 출력 문자로 구비하는 호를 따르는 것에 의해 의도치 않게 생략된 문자를 포함하는 스트링을 모델링할 수 있다. 이런 방식으로, 람다 입력 또는 출력 문자를 구비하는 호는 C-FST로 하여금 유저가 의도치 않게 생략하거나 삽입한 문자, 예를 들어 영숫자 문자, 스페이스 문자, 또는 구두점 부호를 포함하는 문자 스트링을 모델링할 수 있게 한다.
액션(514)에서 사본의 비용 값을 변경하는 것에 더하여, IME 모듈(6)은 사본에 대한 룩어헤드(look-ahead) 스코어를 결정할 수 있다. IME 모듈(6)은 여러 방식으로 사본에 대한 룩어헤드 스코어를 결정할 수 있다. 예를 들어, IME 모듈(6)은 사본의 노드로부터 도달가능한 사전 FST에 있는 각 단말 노드 대한 시범적인(trial) 룩어헤드 스코어를 결정하는 것에 의해 사본의 룩어헤드 스코어를 결정할 수 있다. 단말 노드는 사본의 노드로부터 엔트리 노드를 통과하지 않는 단말 노드로 사전 FST를 통한 경로가 있는 경우 사본의 노드로부터 사전 FST에 도달가능하다. IME 모듈(6)은 사본의 룩어헤드 스코어를 시범적인 룩어헤드 스코어 중 최대값으로 설정할 수 있다. IME 모듈(6)은 단말 노드에 대한 공간 스코어 및 단말 노드에 대한 언어 스코어를 추가하는 것에 의해 단말 노드에 대한 시범적인 룩어헤드 스코어를 결정할 수 있다. 단말 노드에 대한 공간 스코어는 사본의 문자 사슬에 있는 문자의 개수 및 이 단말 노드와 연관된 단어에 있는 문자의 개수 사이의 차이에 적어도 부분적으로 기초할 수 있다. 단말 노드에 대한 언어 스코어는 n-1개의 앞선 단어 또는 후보 단어들이 주어지면 단말 노드의 단어의 가능성에 적어도 부분적으로 기초할 수 있다. 본 발명의 기술에 따라, IME 모듈(6)은 이전에 입력된 문자 스트링에 대한 후보 스트링의 세트를 유지할 수 있다. IME 모듈(6)은 이전에 입력된 단어에 대한 후보 스트링 세트 및 단말 노드의 단어의 결합 가설에 기초하여 단말 노드에 대한 언어 스코어를 결정할 수 있다. IME 모듈(6)은 단말 노드의 언어 스코어를 최대 가능성을 가지는 결합 가설의 가능성으로 결정할 수 있다. 예를 들어, 전술된 실시예에 설명된 바와 같이 이전에 입력된 단어에 대한 후보 스트링 세트는 "eo", "so", 및 "do"일 수 있다. 이 실시예에서, "do"는 더 앞선 시리즈의 유저 입력에 기초하여 최고-랭킹된 후보 스트링일 수 있다. 이 실시예에서, 단말 노드는 단어 "happy"에 대응할 수 있다. "do"가 최고-랭킹된 후보 스트링였다 하더라도, 최대 가능성을 가지는 결합 가설은 "so happy"일 수 있다. 그리하여, 단말 노드에 대한 언어 스코어는 "so" 및 "happy"의 조합의 가능성일 수 있다.
전술된 바와 같이, IME 모듈(6)은 선택된 토큰의 사본을 생성하고 선택된 토큰의 컨텐츠를 업데이트할 수 있다. 나아가, IME 모듈(6)은 선택된 토큰의 사본을 그 다음 빔으로 푸시할 수 있다(516). 이 사본을 그 다음 빔으로 푸시한 후에, IME 모듈(6)은 그 다음 빔을 프루닝(prune)할 수 있다(518). IME 모듈(6)이 그 다음 빔을 프루닝할 때, IME 모듈(6)은 그 다음 빔에 있는 토큰의 비용값들을 비교할 수 있다. IME 모듈(6)은 최저 비용 값을 구비하는 n개(여기서 n은 정수(예를 들어, 10)이다)의 토큰 중에 있지 않는 그 다음 빔에 있는 임의의 토큰을 폐기할 수 있다. 그 다음 빔에 있는 토큰이 n개 미만이라면, IME 모듈(6)은 그 다음 빔에 있는 어떤 토큰도 폐기하지 않는다. 그 다음 빔을 프루닝한 후, IME 모듈(6)은 선택된 토큰의 사본이 선택된 토큰의 노드의 각 자녀 노드에 대해 생성되었는지 여부를 다시 결정할 수 있다(510). 만약 생성되지 않았다면, IME 모듈(6)은 선택된 토큰의 노드의 또 다른 자녀(child) 노드에 대해 액션(512 내지 518)을 반복할 수 있다. 이런 방식으로, IME 모듈(6)은 선택된 토큰의 노드의 각 자녀 노드에 대해 선택된 토큰의 사본을 생성할 수 있다. 한편, 사본이 선택된 토큰의 노드의 각 자녀 노드에 대해 생성된 것으로 결정한 것에 응답하여(510의 "예" 분기), IME 모듈(6)은 도 9b에 도시된 동작(500)의 일부분을 수행할 수 있다.
도 9b는 동작(500)의 예시적인 연속을 도시하는 흐름도이다. IME 모듈(6)은 사전 FST의 엔트리 노드를 통과함이 없이 선택된 토큰의 노드로부터 도달가능한 사전 FST의 단말 노드를 식별할 수 있다(530). 일부 실시예에서, IME 모듈(6)은, IME 모듈(6)이 선택된 토큰의 사본이 선택된 토큰의 노드의 각 자녀 노드에 대해 생성된 것으로 결정한 후, 선택된 토큰의 노드로부터 도달가능한 사전 FST의 단말 노드를 식별할 수 있다.
선택된 토큰의 노드가 단말 노드인 경우, 선택된 토큰의 노드는 단지 도달가능한 단말 노드이다. IME 모듈(6)은 각 식별된 단말 노드와 연관된 대체 후보를 생성할 수 있다(532). IME 모듈(6)은 생성된 대체 후보를 대체 후보 세트에 추가할 수 있다(534). IME 모듈(6)은 선택된 토큰의 노드로부터 단말 노드로 가는 경로에 있는 사전 FST의 호의 입력 문자를 선택된 토큰의 문자 스트링에 연쇄시키는 것에 의해 단말 노드와 연관된 대체 후보를 생성할 수 있다. 예를 들어, 선택된 토큰의 문자 스트링이 "hap"이고 선택된 토큰의 노드로부터 단말 노드로 가는 경로에 있는 호의 입력 문자는 "p" 및 "y"인 경우, IME 모듈(6)은 대체 후보 "happy"를 생성할 수 있다. 이런 방식으로, 활성빔에 있는 특정 토큰이 사전 FST의 특정 노드와 연관된 경우, 대체 후보는 특정 노드로부터 도달가능한 사전 FST의 단말 노드와 연관된 단어를 포함할 수 있다.
나아가, IME 모듈(6)은 생성된 대체 후보에 대한 대체 스코어를 결정할 수 있다(536). IME 모듈(6)은 선택된 토큰의 비용 값을 대체 후보와 연관된 단말 노드에 대한 룩어헤드 스코어에 추가하는 것에 의해 대체 후보에 대한 대체 스코어를 결정할 수 있다. IME 모듈(6)은 대체 후보와 연관된 단말 노드에 대한 공간 스코어 및 대체 후보와 연관된 단말 노드에 대한 언어 스코어를 추가하는 것에 의해 대체 후보에 대한 룩어헤드 스코어를 결정할 수 있다. 전술된 바와 같이, 단말 노드에 대한 공간 스코어는 사본의 문자 사슬에 있는 문자의 개수 및 단말 노드와 연관된 단어에 있는 문자의 개수 사이의 차이에 적어도 부분적으로 기초할 수 있다. 단말 노드에 대한 언어 스코어는 n-1개의 앞선 단어들이 주어지면 단말 노드의 단어의 확률에 적어도 부분적으로 기초할 수 있다. 이 실시예에서, IME 모듈(6)은 낮은 높은 대체 스코어를 갖는 대체 후보보다 대체 스코어를 갖는 대체 후보에 더 높은 랭킹을 부여할 수 있다.
대체 스코어를 결정한 후, IME 모듈(6)은 선택된 토큰의 처리를 종료한다. IME 모듈(6)은 활성빔에 임의의 미처리된 토큰이 남아있는지 여부를 결정할 수 있다(538). 활성빔에 하나 이상의 미처리된 토큰이 남아있다면(538의 "예" 분기), IME 모듈(6)은 활성빔으로부터 또 다른 토큰을 선택하고(508)(도 9a) 이 선택된 토큰을 사용하여 액션(510-536)을 반복할 수 있다. 이런 방식으로, IME 모듈(6)은 활성빔에서 각 토큰을 처리할 수 있다. 활성빔에서 각 토큰을 처리한 후에는, 활성빔에 미처리된 토큰은 남아 있지 않는다.
활성빔에서 미처리된 토큰이 남아 있지 않으면(538의 "아니오" 분기), IME 모듈(6)은 활성빔에 있는 토큰에 랭킹을 부여할 수 있다(540). IME 모듈(6)은 활성빔에 있는 토큰의 비용값에 적어도 부분적으로 기초하여 활성빔에 있는 토큰에 랭킹을 부여할 수 있다. 일부 실시예에서, IME 모듈(6)은 활성빔에 있는 각 토큰에 대한 출력 스코어를 계산할 수 있다. 토큰에 대한 출력 스코어는 토큰의 비용 값 및 토큰의 룩어헤드 스코어에 적어도 부분적으로 기초할 수 있다. 예를 들어, 토큰에 대한 출력 스코어는 토큰의 비용 값 플러스(plus) 토큰의 룩어헤드 스코어의 합계와 동일할 수 있다. 이러한 실시예에서, 최저 출력 스코어를 갖는 토큰은 최고-랭킹된 토큰일 수 있다. 활성빔에 있는 토큰에 랭킹을 부여한 후, IME 모듈(6)은, 유저 인터페이스 디바이스(4)에서 디스플레이하기 위해, 활성빔에 있는 최고-랭킹된 토큰의 문자 스트링을 출력할 수 있다(542). 이런 방식으로, IME 모듈(6)은, 활성빔에 있는 토큰의 비용값에 적어도 부분적으로 기초하여, 활성빔에 있는 최고-랭킹된 토큰을 결정할 수 있고, 여기서 활성빔에 있는 최고-랭킹된 토큰은 문자 스트링을 지정한다. IME 모듈(6)은 이후 활성빔에 있는 토큰을 폐기할 수 있다(544).
대체 후보와 관련된 문자 스트링은 선택된 토큰에 의해 소비된 유저 입력 이벤트에 기초하여 IME 모듈(6)이 이전에 출력한 문자 스트링일 수 있다. 예를 들어, IME 모듈(6)은 0 내지 8로 인덱스된 시리즈의 유저 입력 이벤트를 수신할 수 있다. 이 실시예에서, 제 1 토큰은 제 1 토큰이 입력 문자 "e", "o", " ", "h", "a", "o", "p", 및 "y"를 가지는 호를 횡단할 때 유저 입력 이벤트 0 내지 8를 소비할 수 있다. 그리하여, 이 실시예에서, 1 토큰의 문자 스트링은 "eo haopy"일 수 있다. 제 2 토큰은 제 2 토큰이 입력 문자 "s", "o", " ", "h", "a", "p", "p", 및 "y"를 가지는 호를 횡단할 때 유저 입력 이벤트 0 내지 8를 소비할 수 있다. 그리하여, 이 실시예에서, 제 2 토큰의 문자 스트링은 "so happy"이다. 제 1 토큰의 출력 스코어는 제 2 토큰의 출력 스코어보다 더 낮을 수 있다. 이 실시예에서, 제 1 토큰의 출력 스코어는 유저 인터페이스 디바이스(4)가 입력 객체를 검출한 포인트들이 문자 스트링 "so happy"에 있는 문자에 대한 가상 키보다 문자 스트링 "eo haopy"에 있는 문자에 대한 가상 키에 더 가까울 수 있으므로, 제 2 토큰의 출력 스코어보다 더 낮을 수 있다. 제 1 토큰의 출력 스코어는 제 2 토큰에 대한 출력 스코어보다 더 낮으므로, IME 모듈(6)은 "so happy" 대신에 "eo haopy"를 출력할 수 있다. 그러나, "so happy"는 대체 후보 세트 중에 있을 수 있다. 대체 후보 "so happy"에 대한 관련 스트링은, "eo haopy"이 제 2 토큰에 의해 소비된 유저 입력 이벤트에 기초하여 IME 모듈(6)이 이전에 출력한 문자 스트링이므로, "eo haopy"일 수 있다. 이런 방식으로, 중간 문자 스트링은 선택된 토큰의 노드로부터 단말 노드로 가는 경로에 있는 사전 FST의 호의 입력 문자를 선택된 토큰의 문자 스트링에 연쇄시키는 것으로부터 초래된다. 이러한 실시예에서, IME 모듈(6)은 이전 대체 후보 세트로부터의 특정 후보 스트링을 중간 문자 스트링의 시작부에 추가할 수 있다. 특정 후보 스트링 및 중간 문자 스트링의 결합 가설은 중간 문자 스트링 및 이전 대체 후보 세트에 있는 임의의 다른 후보 스트링의 결합 가설보다 더 큰 가능성을 가질 수 있다.
활성빔에 있는 토큰을 폐기한 후, IME 모듈(6)은 소비를 위한 추가적인 유저 입력 이벤트가 있는지 여부를 결정할 수 있다(546). 소비를 위한 추가적인 유저 입력 이벤트가 없는 경우(546의 "아니오" 분기), IME 모듈(6)은 소비를 위한 하나 이상의 유저 입력 이벤트가 있을 때까지 동작(500)을 보류(suspend)할 수 있다. 한편, 소비를 위한 하나 이상의 유저 입력이 있는 경우(546의 "예" 분기), IME 모듈(6)은 활성빔 및 그 다음 빔을 스위칭할 수 있다(548). 따라서, 활성빔은 그 다음 빔으로 지정되고 그 다음 빔은 활성빔으로 지정된다. IME 모듈(6)은 이후 활성빔으로부터 토큰을 선택하고(508) 이 선택된 토큰을 사용하여 액션(508-536)을 반복할 수 있다.
도 10은 본 발명의 하나 이상의 측면에 따라 컴퓨팅 디바이스(2)의 예시적인 동작(600)을 도시하는 흐름도이다. 도 8a 및 도 8b의 예시적인 동작(300)은 동작(600)의 특정 예일 수 있다.
도 10의 실시예에서, 컴퓨팅 디바이스(2)는 제 1 시리즈의 하나 이상의 유저 입력을 수신할 수 있다(602). 컴퓨팅 디바이스(2)는, 디스플레이 디바이스에서 디스플레이하기 위해, 제 1 시리즈의 하나 이상의 유저 입력에 기초하여 제 1 문자 스트링을 출력할 수 있다(604). 제 1 스트링이 단어 구분자로 종료하고, 제 2 문자 스트링이 제 1 문자 스트링보다 제 1 시리즈의 유저 입력에 더 대응할 것 같은 것으로 결정한 것에 응답하여, 컴퓨팅 디바이스(2)는, 디스플레이 디바이스에서 디스플레이하기 위해, 제 1 문자 스트링 대신에 제 2 문자 스트링을 출력할 수 있다(606). 제 1 시리즈의 하나 이상의 유저 입력을 수신한 후에, 컴퓨팅 디바이스(2)는 제 2 시리즈의 하나 이상의 유저 입력을 수신할 수 있다(608). 컴퓨팅 디바이스(2)는, 디스플레이 디바이스에서 디스플레이하기 위해, 제 2 시리즈의 하나 이상의 유저 입력에 기초하여 제 3 문자 스트링을 출력할 수 있다(610).
게다가, 컴퓨팅 디바이스(2)는, 제 1 및 제 2 시리즈의 유저 입력에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정할 수 있다(612). 일부 경우에, 제 4 스트링은 사전(7)에 있는 하나를 초과하는 단어를 포함할 수 있다. 다른 경우에, 제 4 스트링은 사전(7)에 2개 이상의 단어를 포함할 수 있다. 컴퓨팅 디바이스(2)는, 디스플레이 디바이스에 디스플레이하기 위해, 제 2 및 제 3 문자 스트링 대신에 제 4 문자 스트링을 출력할 수 있다(614).
하나 이상의 실시예에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현된 경우, 이 기능은 하나 이상의 명령 또는 코드로서, 컴퓨터-판독가능한 매체 상에 저장되거나 이 매체 상으로 전달되고 하드웨어-기반 처리 유닛에 의해 실행될 수 있다. 컴퓨터-판독가능한 매체는 유형적인 매체, 예를 들어 데이터 저장 매체에 대응하는 컴퓨터-판독가능한 저장 매체, 또는 예를 들어, 통신 프로토콜에 따라 한 곳으로부터 또 다른 곳으로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이런 방식으로, 컴퓨터-판독가능한 매체는 일반적으로 (1) 비일시적인 유형적인 컴퓨터-판독가능한 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 발명에 설명된 기술을 구현하는 명령, 코드 및/또는 데이터 구조를 검색하는 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능한 매체를 포함할 수 있다.
예를 들어, 비제한적으로, 이러한 컴퓨터-판독가능한 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스, 플래시 메모리, 또는 명령 또는 데이터 구조 형태로 원하는 프로그램 코드를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결은 적절히 언급된 컴퓨터-판독가능한 매체이다. 예를 들어, 명령이 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 라인(DSL), 또는 무선 기술, 예를 들어 적외선, 무선, 및 마이크로파를 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되면, 이 동축 케이블, 광섬유 케이블, 트위스티드 페어(twisted pair), DSL, 또는 무선 기술, 예를 들어 적외선, 무선, 및 마이크로파는 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능한 저장 매체 및 데이터 저장 매체는 연결, 반송파, 신호, 또는 다른 일시적인(transient) 매체를 포함하는 것이 아니라, 비-일시적인 유형적인 저장 매체에 관한 것으로 이해된다. 본 명세서에 사용된 디스크(disk) 및 디스크(disc)는 콤팩트 디스크(CD), 레이저 디스크, 광 디스크, DVD(디지털 디스크), 플로피 디스크 및 블루레이 디스크를 포함하고, 여기서 디스크(disk)는 통상적으로 데이터를 자기적으로 재생하는 것인 반면, 디스크(disc)는 데이터를 레이저로 광학적으로 재생하는 것을 말한다. 상기한 바의 조합이 또한 컴퓨터-판독가능한 매체의 범위 내에 포함된다.
명령은 하나 이상의 프로세서, 예를 들어 하나 이상의 디지털 신호 프로세서(DSP), 일반 목적 마이크로프로세서, 응용 특정 집적 회로(ASIC), 전계 프로그래밍가능한 논리 어레이(FPGA), 또는 다른 균등한 집적 또는 이산 논리 회로에 의해 실행될 수 있다. 따라서, 본 명세서에 사용된 "프로세서"라는 용어는 전술된 구조 또는 본 명세서에 설명된 기술을 구현하기에 적절한 임의의 다른 구조 중 어느 것을 말할 수 있다. 게다가, 일부 측면에서, 본 명세서에 설명된 기능은 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공될 수 있다. 또한, 이 기술은 하나 이상의 회로 또는 논리 요소로 완전히 구현될 수 있다.
본 발명의 기술은 무선 핸드셋, 집적 회로(IC) 또는 IC 세트(예를 들어, 칩셋)를 포함하는 다양한 디바이스 또는 장치로 구현될 수 있다. 여러 성분, 모듈, 또는 유닛이 개시된 기술을 수행하도록 구성된 디바이스의 기능적 측면을 강조하기 위해 본 발명에 설명되어 있으나, 반드시 여러 하드웨어 유닛에 의해 실현될 것을 요구하는 것은 아니다. 오히려, 전술된 바와 같이, 여러 유닛은 적절한 소프트웨어 및/또는 펌웨어와 함께 전술된 하나 이상의 프로세서를 포함하는 하드웨어 유닛으로 결합되거나 또는 상호동작가능한 하드웨어 유닛들의 집합으로 제공될 수 있다.
여러 실시예들이 설명되었다. 이들 및 다른 실시예들은 이하 청구범위에 있다.

Claims (20)

  1. 방법으로서,
    컴퓨팅 디바이스에 의해, 제 1 시리즈의 하나 이상의 유저 입력들을 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 1 시리즈의 하나 이상의 유저 입력들에 기초하여 제 1 문자 스트링(character string)을, 디스플레이를 위해, 출력하는 단계;
    상기 제 1 문자 스트링이 단어 구분자(word delimiter)로 종료되고 제 2 문자 스트링이 상기 제 1 문자 스트링보다 상기 제 1 시리즈의 유저 입력에 더 대응할 것 같은(more likely to correspond) 것으로 결정됨에 응답하여, 상기 컴퓨팅 디바이스에 의해, 상기 제 1 문자 스트링 대신에 상기 제 2 문자 스트링을, 디스플레이를 위해, 출력하는 단계;
    상기 제 1 시리즈의 하나 이상의 유저 입력들을 수신한 후, 상기 컴퓨팅 디바이스에 의해, 제 2 시리즈의 하나 이상의 유저 입력들을 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 제 2 시리즈의 하나 이상의 유저 입력들에 기초하여 제 3 문자 스트링을, 디스플레이하기 위해, 출력하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 제 1 및 제 2 시리즈의 하나 이상의 유저 입력들에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 제 2 및 제 3 문자 스트링 대신에 상기 제 4 문자 스트링을, 디스플레이하기 위해, 출력하는 단계를 포함하는, 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 제 4 문자 스트링은 사전에 2개 이상의 단어들을 포함하는, 방법.
  4. 제1항에 있어서, 상기 방법은, 상기 컴퓨팅 디바이스에 의해, 상기 제 4 문자 스트링을 포함하는 제안 요소(suggestion element)를, 디스플레이하기 위해, 출력하는 단계를 더 포함하고; 및
    상기 제 2 및 제 3 문자 스트링 대신에 상기 제 4 문자 스트링을 출력하는 단계는, 상기 제안 요소를 선택하는 유저 입력의 표시를 수신함에 응답하여, 상기 컴퓨팅 디바이스에 의해, 상기 제 2 및 제 3 문자 스트링 대신에 상기 제 4 문자 스트링을, 디스플레이를 위해, 출력하는 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 제안 요소는 제 1 제안 요소이고;
    상기 제 4 문자 스트링을 결정하는 단계는,
    상기 컴퓨팅 디바이스에 의해, 상기 제 1 및 제 2 시리즈의 하나 이상의 유저 입력들에 적어도 부분적으로 기초하여, 복수의 대체 후보(replacement candidate)들을 결정하는 단계; 및
    상기 컴퓨팅 디바이스에 의해, 상기 복수의 대체 후보들의 일부분을 선택하는 단계를 포함하고, 각 상기 대체 후보는 문자 스트링이고, 상기 복수의 대체 후보들의 상기 일부분은 상기 제 4 문자 스트링을 포함하고;
    상기 방법은 복수의 제안 요소들을 출력하는 단계를 더 포함하고, 상기 복수의 제안 요소들은 상기 제 1 제안 요소를 포함하고, 각 상기 제안 요소는 상기 복수의 대체 후보들의 상기 일부분에서 상이한 대체 후보를 지정하는, 방법.
  6. 제1항에 있어서, 상기 단어 구분자는 제 1 단어 구분자이고, 상기 제 4 문자 스트링을 출력하는 단계는, 상기 제 3 문자 스트링이 제 2 단어 구분자로 종료되는 것으로 결정됨에 응답하여, 상기 컴퓨팅 디바이스에 의해, 상기 제 2 및 제 3 문자 스트링 대신에 상기 제 4 문자 스트링을, 디스플레이하기 위해, 출력하는 단계를 포함하는, 방법.
  7. 제1항에 있어서, 상기 제 4 문자 스트링을 결정하는 단계는, 상기 컴퓨팅 디바이스에 의해, 상기 제 1 및 제 2 시리즈의 하나 이상의 유저 입력들에 기초하여, 복수의 대체 후보들을 결정하는 단계를 포함하고, 상기 복수의 대체 후보들은 상기 제 4 문자 스트링을 포함하고;
    상기 방법은, 상기 컴퓨팅 디바이스에 의해, 상기 제 4 문자 스트링이 상기 복수의 대체 후보들 중에서 최저 대체 스코어를 구비하는지를 결정하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 상기 제 1 시리즈의 하나 이상의 유저 입력들은 존재-감응 디스플레이(presence-sensitive input device)에서 시리즈의 하나 이상의 탭핑 제스처(tapping gesture)들을 포함하는, 방법.
  9. 제1항에 있어서, 상기 제 1 시리즈의 하나 이상의 유저 입력들은 존재-감응 디스플레이에서 입력 객체의 슬라이딩 움직임(sliding movement)을 포함하는, 방법.
  10. 제1항에 있어서, 상기 단어 구분자는 스페이스 문자이고,
    상기 제 3 문자 스트링은, 제 1 문자 다음에 서브스트링이 따라오는 것을 포함하고,
    상기 제 4 문자 스트링은, 상기 제 1 문자 스트링 다음에 상기 제 1 문자가 따라오고, 이후에 상기 단어 구분자가 따라오며, 이어서 상기 서브스트링이 따라오는 것을 포함하고,
    상기 제 1 문자 스트링의 다음에 상기 제 1 문자 및 상기 서브스트링이 따라오는 것은 사전에 있는 단어와 매치하는, 방법.
  11. 제1항에 있어서, 상기 단어 구분자는 스페이스 문자이고,
    상기 제 1 문자 스트링은, 서브스트링의 다음에 잘못 위치된 문자가 따라오는 것을 포함하고,
    상기 제 4 문자 스트링은, 상기 서브스트링의 다음에, 상기 단어 구분자가 따라오고, 그 다음에 상기 잘못 위치된 문자가 따라오고, 이어서 상기 제 3 문자 스트링이 따라오는 것을 포함하고,
    상기 서브스트링 및 상기 잘못 위치된 문자의 다음에 상기 제 3 문자 스트링이 따라오는 것은 사전에 있는 단어와 매치하는, 방법.
  12. 제1항에 있어서, 상기 제 4 문자 스트링은 사전에 있는 단어와 매치하고, 상기 제 4 문자 스트링은, 상기 제 1 문자 스트링의 다음에 영숫자 문자(alphanumeric character)가 따라오고, 이어서 상기 제 3 문자 스트링이 따라오는 것과 매치하는, 방법.
  13. 제1항에 있어서, 상기 제 4 문자 스트링은 사전에 있는 단어와 매치하고, 상기 단어 구분자는 스페이스 문자이고, 상기 제 4 문자 스트링은 상기 제 3 문자 스트링이 첨부된(appended) 상기 제 1 문자 스트링과 매치하는, 방법.
  14. 제1항에 있어서, 상기 컴퓨팅 디바이스에 의해, 유한 상태 트랜스듀서(FST)를 사용하여 상기 제 2 시리즈의 하나 이상의 유저 입력들이 상기 제 3 문자 스트링에 대응하는지를 결정하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서, 상기 FST를 사용하는 것은, 상기 컴퓨팅 디바이스에 의해, 활성빔(active beam)에 있는 토큰(token)들의 비용 값들에 적어도 부분적으로 기초하여, 상기 활성빔에서 최고-랭킹된 토큰을 결정하는 것을 포함하고, 상기 활성빔에서 상기 최고-랭킹된 토큰은 상기 제 3 문자 스트링을 지정하고, 상기 활성빔에서 각 상기 토큰은 상기 FST에 있는 노드와 연관되는, 방법.
  16. 제15항에 있어서, 상기 활성빔에 있는 특정 토큰은 상기 FST의 특정 노드와 연관되고, 상기 제 4 문자 스트링은 상기 특정 노드로부터 도달가능한 상기 FST의 단말 노드와 연관된 단어를 포함하는, 방법.
  17. 제1항에 있어서, 상기 방법은, 상기 컴퓨팅 디바이스에 의해, 상기 제 1 시리즈의 하나 이상의 유저 입력들에 기초하여, 복수의 대체 후보들을 결정하는 단계를 더 포함하고;
    상기 제 1 문자 스트링 대신에 상기 제 2 문자 스트링을 출력하는 단계는, 상기 컴퓨팅 디바이스에 의해, 상기 제 2 문자 스트링의 대체 스코어 및 임계값을 비교한 것에 적어도 부분적으로 기초하여, 상기 제 1 문자 스트링 대신에 상기 제 2 문자 스트링을, 디스플레이를 위해, 출력하는 단계를 포함하는, 방법.
  18. 하나 이상의 프로세서들을 포함하는 컴퓨팅 디바이스로서,
    상기 하나 이상의 프로세서들은,
    제 1 시리즈의 하나 이상의 유저 입력들을 수신하는 것;
    상기 제 1 시리즈의 하나 이상의 유저 입력들이 제 1 문자 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해, 상기 제 1 문자 스트링을 출력하는 것;
    상기 제 1 문자 스트링이 단어 구분자로 종료되고 제 2 문자 스트링이 상기 제 1 문자 스트링보다 상기 제 1 시리즈의 유저 입력에 더 대응할 것 같은 것으로 결정됨에 응답하여, 디스플레이를 위해, 상기 제 1 문자 스트링 대신에 상기 제 2 문자 스트링을 출력하는 것;
    상기 제 1 시리즈의 하나 이상의 유저 입력들을 수신한 후, 제 2 시리즈의 하나 이상의 유저 입력들을 수신하는 것;
    상기 제 2 시리즈의 하나 이상의 유저 입력들이 제 3 문자 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해, 상기 제 3 문자 스트링을 출력하는 것;
    상기 제 1 및 제 2 시리즈의 하나 이상의 유저 입력들에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정하는 것; 및
    디스플레이를 위해, 상기 제 2 및 제 3 문자 스트링 대신에 상기 제 4 문자 스트링을 출력하는 것을 수행하도록 구성되는, 컴퓨팅 디바이스.
  19. 제18항에 있어서, 상기 하나 이상의 프로세서들은,
    디스플레이를 위해, 상기 제 4 문자 스트링을 포함하는 제안 요소를 출력하는 것; 및
    상기 제안 요소를 선택하는 유저 입력의 표시를 수신함에 응답하여, 디스플레이를 위해, 상기 제 2 및 제 3 문자 스트링 대신에 상기 제 4 문자 스트링을 출력하는 것을 수행하도록 구성되는, 컴퓨팅 디바이스.
  20. 명령을 저장하는 비일시적인 컴퓨터-판독가능한 저장 매체로서, 상기 명령은, 컴퓨팅 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금,
    제 1 시리즈의 하나 이상의 유저 입력들이 제 1 문자 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해, 상기 제 1 문자 스트링을 출력하는 것;
    상기 제 1 문자 스트링이 단어 구분자로 종료하고, 제 2 문자 스트링이 상기 제 1 문자 스트링보다 상기 제 1 시리즈의 유저 입력에 더 대응할 것 같은 것으로 결정됨에 응답하여, 디스플레이를 위해, 상기 제 1 문자 스트링 대신 상기 제 2 문자 스트링을 출력하는 것;
    상기 제 1 시리즈의 하나 이상의 유저 입력들 후에 수신된 제 2 시리즈의 하나 이상의 유저 입력들이 제 3 문자 스트링에 대응하는 것으로 결정됨에 응답하여, 디스플레이를 위해, 상기 제 3 문자 스트링을 출력하는 것;
    상기 제 1 및 제 2 시리즈의 하나 이상의 유저 입력들에 적어도 부분적으로 기초하여, 제 4 문자 스트링을 결정하는 것; 및
    디스플레이를 위해, 상기 제 2 및 제 3 문자 스트링 대신에 상기 제 4 문자 스트링을 출력하는 것을 수행하게 하는, 컴퓨터 판독가능한 저장 매체.
KR1020130123590A 2012-10-16 2013-10-16 단어 구분자를 포함하는 문자 스트링의 에러 정정 KR101398117B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261714627P 2012-10-16 2012-10-16
US61/714,627 2012-10-16
US13/901,259 US8612213B1 (en) 2012-10-16 2013-05-23 Correction of errors in character strings that include a word delimiter
US13/901,259 2013-05-23

Publications (2)

Publication Number Publication Date
KR20140048830A KR20140048830A (ko) 2014-04-24
KR101398117B1 true KR101398117B1 (ko) 2014-05-27

Family

ID=49725839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130123590A KR101398117B1 (ko) 2012-10-16 2013-10-16 단어 구분자를 포함하는 문자 스트링의 에러 정정

Country Status (3)

Country Link
US (2) US8612213B1 (ko)
KR (1) KR101398117B1 (ko)
DE (1) DE102013017196A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713433B1 (en) 2012-10-16 2014-04-29 Google Inc. Feature-based autocorrection
US9122376B1 (en) * 2013-04-18 2015-09-01 Google Inc. System for improving autocompletion of text input
US20140359434A1 (en) * 2013-05-30 2014-12-04 Microsoft Corporation Providing out-of-dictionary indicators for shape writing
KR20150026646A (ko) * 2013-09-03 2015-03-11 삼성전자주식회사 사용자로부터 입력되는 텍스트를 수정하는 방법 및 이를 위한 전자 장치
US20150220510A1 (en) * 2014-01-31 2015-08-06 International Business Machines Corporation Interactive data-driven optimization of effective linguistic choices in communication
USD819041S1 (en) 2014-05-14 2018-05-29 Touchtype Ltd. Electronic device display with a keyboard graphical user interface
USD818470S1 (en) 2014-05-14 2018-05-22 Touchtype Ltd. Electronic display with a graphical user interface
US9558101B2 (en) * 2014-08-08 2017-01-31 Raytheon Company Preprocessor directive symbol analyzer devices and methods
US10534532B2 (en) 2014-08-08 2020-01-14 Samsung Electronics Co., Ltd. Electronic device and method for processing letter input in electronic device
US10261674B2 (en) * 2014-09-05 2019-04-16 Microsoft Technology Licensing, Llc Display-efficient text entry and editing
WO2016068455A1 (ko) * 2014-10-30 2016-05-06 주식회사 플런티코리아 적응적인 키보드 인터페이스를 제공하기 위한 방법 및 시스템, 대화 내용과 연동되는 적응적 키보드를 이용한 답변 입력 방법
USD791783S1 (en) 2014-11-14 2017-07-11 Touchtype Limited Electronic device display with a keyboard graphical user interface
CN104571585B (zh) * 2014-12-30 2017-07-28 北京奇虎科技有限公司 输入法光标操作方法和装置
US20160226804A1 (en) * 2015-02-03 2016-08-04 Google Inc. Methods, systems, and media for suggesting a link to media content
CN104571874B (zh) * 2015-02-13 2018-10-30 上海触乐信息科技有限公司 动态切换键盘背景的方法和装置
US9836443B2 (en) * 2015-02-27 2017-12-05 Lenovo (Singapore) Pte. Ltd. Changing text input modes
US9910852B2 (en) * 2015-03-12 2018-03-06 Lenovo (Singapore) Pte. Ltd. Detecting cascading sub-logograms
US11341189B2 (en) * 2015-04-10 2022-05-24 Harman International Industries, Incorporated Multi-character string search engine for in-vehicle information system
US11217266B2 (en) * 2016-06-21 2022-01-04 Sony Corporation Information processing device and information processing method
US10733359B2 (en) * 2016-08-26 2020-08-04 Adobe Inc. Expanding input content utilizing previously-generated content
US10970481B2 (en) * 2017-06-28 2021-04-06 Apple Inc. Intelligently deleting back to a typographical error
USD859453S1 (en) 2017-08-01 2019-09-10 Google Llc Display screen with an animated graphical user interface
CN109582930B (zh) * 2017-09-29 2022-12-20 北京金山安全软件有限公司 一种滑动输入解码方法、装置及电子设备
US10394344B2 (en) 2017-11-07 2019-08-27 International Business Machines Corporation Character input error correction
KR102068130B1 (ko) * 2018-05-10 2020-01-20 주식회사 러너스마인드 모바일 디바이스 환경에서 주관식 테스트를 위한 가상키보드 표시 방법
WO2020144730A1 (ja) * 2019-01-07 2020-07-16 富士通株式会社 抽出方法、抽出プログラムおよび情報処理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7250938B2 (en) 2004-01-06 2007-07-31 Lenovo (Singapore) Pte. Ltd. System and method for improved user input on personal computing devices
US7853874B2 (en) 1998-05-26 2010-12-14 SAS Institute Spelling and grammar checking system
US20110161829A1 (en) 2009-12-24 2011-06-30 Nokia Corporation Method and Apparatus for Dictionary Selection
US8078978B2 (en) 2007-10-19 2011-12-13 Google Inc. Method and system for predicting text

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6126176A (ja) 1984-07-17 1986-02-05 Nec Corp 言語処理用辞書
JPS63766A (ja) 1986-06-20 1988-01-05 Canon Inc 文書処理装置
US4873634A (en) 1987-03-27 1989-10-10 International Business Machines Corporation Spelling assistance method for compound words
US5537317A (en) * 1994-06-01 1996-07-16 Mitsubishi Electric Research Laboratories Inc. System for correcting grammer based parts on speech probability
US5761689A (en) 1994-09-01 1998-06-02 Microsoft Corporation Autocorrecting text typed into a word processing document
US5802205A (en) 1994-09-09 1998-09-01 Motorola, Inc. Method and system for lexical processing
US5940847A (en) 1995-06-07 1999-08-17 Microsoft Corporation System and method for automatically correcting multi-word data entry errors
US6047300A (en) 1997-05-15 2000-04-04 Microsoft Corporation System and method for automatically correcting a misspelled word
KR100327209B1 (ko) 1998-05-12 2002-04-17 윤종용 첨펜의자취를이용한소프트웨어키보드시스템및그에따른키코드인식방법
US7256770B2 (en) 1998-09-14 2007-08-14 Microsoft Corporation Method for displaying information responsive to sensing a physical presence proximate to a computer input device
US7293231B1 (en) 1999-03-18 2007-11-06 British Columbia Ltd. Data entry for personal computing devices
US6618697B1 (en) 1999-05-14 2003-09-09 Justsystem Corporation Method for rule-based correction of spelling and grammar errors
US7030863B2 (en) 2000-05-26 2006-04-18 America Online, Incorporated Virtual keyboard system with automatic correction
EP1192716B1 (en) 1999-05-27 2009-09-23 Tegic Communications, Inc. Keyboard system with automatic correction
CA2416835A1 (en) 2000-07-21 2002-01-31 Raphael Bachmann Method for a high-speed writing system and high-speed writing device
US7042443B2 (en) 2001-10-11 2006-05-09 Woodard Scott E Speed Writer program and device with Speed Writer program installed
US7620538B2 (en) 2002-03-26 2009-11-17 University Of Southern California Constructing a translation lexicon from comparable, non-parallel corpora
US7680649B2 (en) 2002-06-17 2010-03-16 International Business Machines Corporation System, method, program product, and networking use for recognizing words and their parts of speech in one or more natural languages
US7151530B2 (en) 2002-08-20 2006-12-19 Canesta, Inc. System and method for determining an input selected by a user through a virtual interface
US7199786B2 (en) 2002-11-29 2007-04-03 Daniel Suraqui Reduced keyboards system using unistroke input and having automatic disambiguating and a recognition method using said system
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
SG135918A1 (en) 2003-03-03 2007-10-29 Xrgomics Pte Ltd Unambiguous text input method for touch screens and reduced keyboard systems
US7398210B2 (en) 2003-10-23 2008-07-08 Microsoft Corporation System and method for performing analysis on word variants
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
US20060176283A1 (en) 2004-08-06 2006-08-10 Daniel Suraqui Finger activated reduced keyboard and a method for performing text input
US7508324B2 (en) 2004-08-06 2009-03-24 Daniel Suraqui Finger activated reduced keyboard and a method for performing text input
US20060048055A1 (en) 2004-08-25 2006-03-02 Jun Wu Fault-tolerant romanized input method for non-roman characters
US20060075044A1 (en) 2004-09-30 2006-04-06 Fox Kevin D System and method for electronic contact list-based search and display
US7584093B2 (en) 2005-04-25 2009-09-01 Microsoft Corporation Method and system for generating spelling suggestions
US8036878B2 (en) 2005-05-18 2011-10-11 Never Wall Treuhand GmbH Device incorporating improved text input mechanism
US7831911B2 (en) 2006-03-08 2010-11-09 Microsoft Corporation Spell checking system including a phonetic speller
US7739264B2 (en) 2006-11-15 2010-06-15 Yahoo! Inc. System and method for generating substitutable queries on the basis of one or more features
US20080182599A1 (en) 2007-01-31 2008-07-31 Nokia Corporation Method and apparatus for user input
US8059101B2 (en) 2007-06-22 2011-11-15 Apple Inc. Swipe gestures for touch screen keyboards
US8091023B2 (en) 2007-09-28 2012-01-03 Research In Motion Limited Handheld electronic device and associated method enabling spell checking in a text disambiguation environment
US8077983B2 (en) 2007-10-04 2011-12-13 Zi Corporation Of Canada, Inc. Systems and methods for character correction in communication devices
US8176419B2 (en) 2007-12-19 2012-05-08 Microsoft Corporation Self learning contextual spell corrector
US8232973B2 (en) 2008-01-09 2012-07-31 Apple Inc. Method, device, and graphical user interface providing word recommendations for text input
US8103669B2 (en) 2008-05-23 2012-01-24 Xerox Corporation System and method for semi-automatic creation and maintenance of query expansion rules
US8464150B2 (en) 2008-06-07 2013-06-11 Apple Inc. Automatic language identification for dynamic text processing
US20100070908A1 (en) 2008-09-18 2010-03-18 Sun Microsystems, Inc. System and method for accepting or rejecting suggested text corrections
US8239570B2 (en) 2008-10-01 2012-08-07 International Business Machines Corporation Using link send and receive information to select one of multiple links to use to transfer data for send and receive operations
CN102197406B (zh) 2008-10-23 2014-10-15 起元技术有限责任公司 模糊数据操作
US8739055B2 (en) 2009-05-07 2014-05-27 Microsoft Corporation Correction of typographical errors on touch displays
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
WO2011056610A2 (en) 2009-10-26 2011-05-12 Google Inc. Predictive text entry for input devices
US20110179353A1 (en) 2010-01-19 2011-07-21 Research In Motion Limited Mobile Electronic Device and Associated Method Providing Proposed Spelling Corrections Based Upon a Location of Cursor At or Adjacent a Character of a Text Entry
US8179370B1 (en) 2010-02-09 2012-05-15 Google Inc. Proximity based keystroke resolution
US8782556B2 (en) 2010-02-12 2014-07-15 Microsoft Corporation User-centric soft keyboard predictive technologies
US8918734B2 (en) 2010-07-28 2014-12-23 Nuance Communications, Inc. Reduced keyboard with prediction solutions when input is a partial sliding trajectory
US8676937B2 (en) 2011-05-12 2014-03-18 Jeffrey Alan Rapaport Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853874B2 (en) 1998-05-26 2010-12-14 SAS Institute Spelling and grammar checking system
US7250938B2 (en) 2004-01-06 2007-07-31 Lenovo (Singapore) Pte. Ltd. System and method for improved user input on personal computing devices
US8078978B2 (en) 2007-10-19 2011-12-13 Google Inc. Method and system for predicting text
US20110161829A1 (en) 2009-12-24 2011-06-30 Nokia Corporation Method and Apparatus for Dictionary Selection

Also Published As

Publication number Publication date
US20140108925A1 (en) 2014-04-17
US8612213B1 (en) 2013-12-17
KR20140048830A (ko) 2014-04-24
DE102013017196A1 (de) 2014-04-17

Similar Documents

Publication Publication Date Title
KR101398117B1 (ko) 단어 구분자를 포함하는 문자 스트링의 에러 정정
US11379663B2 (en) Multi-gesture text input prediction
AU2014212844B2 (en) Character and word level language models for out-of-vocabulary text input
US10241673B2 (en) Alternative hypothesis error correction for gesture typing
JP6151381B2 (ja) 国際言語のための仮想キーボード入力
US10019435B2 (en) Space prediction for text input
US9547439B2 (en) Dynamically-positioned character string suggestions for gesture typing
US9122376B1 (en) System for improving autocompletion of text input
KR101484582B1 (ko) 문자열 대체
KR101484583B1 (ko) 대체 점수를 사용하여 사전-내에-없는 문자열들의 제스처 키보드 입력
US9965454B2 (en) Assisted punctuation of character strings
AU2013237735B1 (en) Correction of errors in character strings that include a word delimiter
AU2014200570A1 (en) Correction of errors in character strings that include a word delimiter

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170428

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190426

Year of fee payment: 6