KR102209076B1 - 가상 키보드 오타 보정을 위한 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체 - Google Patents
가상 키보드 오타 보정을 위한 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체 Download PDFInfo
- Publication number
- KR102209076B1 KR102209076B1 KR1020180084837A KR20180084837A KR102209076B1 KR 102209076 B1 KR102209076 B1 KR 102209076B1 KR 1020180084837 A KR1020180084837 A KR 1020180084837A KR 20180084837 A KR20180084837 A KR 20180084837A KR 102209076 B1 KR102209076 B1 KR 102209076B1
- Authority
- KR
- South Korea
- Prior art keywords
- key
- rbi
- keys
- typo
- touch
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction 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/0488—Interaction 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/04886—Interaction 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements 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/0233—Character input methods
- G06F3/0236—Character input methods using selection techniques to select from displayed items
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements 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/0233—Character input methods
- G06F3/0237—Character input methods using prediction or retrieval techniques
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Input From Keyboards Or The Like (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
가상 키보드 오타 보정을 위한 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체가 개시된다. 컴퓨터 시스템에서 실행되는 방법은, 가상 키보드의 각 키 별로 키 터치에 따른 타점 좌표를 수집하는 단계; 상기 키 별로 상기 타점 좌표를 이용하여 타점 분포를 분석함으로써 개인화된 타점 영역을 결정하는 단계; 및 상기 가상 키보드에 터치가 인식되면 상기 키 별 개인화된 타점 영역에 기초하여 상기 인식된 터치에 따른 입력 키를 예측하는 단계를 포함한다.
Description
아래의 설명은 가상 키보드의 오타를 보정하는 기술에 관한 것으로, 더욱 상세하게는 정타와 오타를 판별하는 알고리즘과 키 별 타점 영역을 모델링하는 알고리즘을 기계 학습(machine learning)과 융합하여 가상 키보드의 오타를 보정할 수 있는 기술을 제공한다.
기술의 발달과 더불어 급속하게 발전하는 휴대 단말기에는 사용자로부터 다양한 명령 또는 정보를 입력받기 위해 터치 패널 상에 가상 키보드를 제공한다.
휴대 단말기에 가상 키보드를 적용함으로써 기존 하드웨어 키패드를 요구하지 않게 됨에 따라 휴대 단말기의 디스플레이 장치의 크기를 크게 할 수 있음은 물론이고 외관을 미려하게 할 수 있다.
가상 키보드는 휴대 단말기의 입력 수단으로서 터치 패널을 통해 표시되고 동시에 사용자로부터 터치 입력을 수신한다.
예컨대, 한국공개특허 제10-2014-0045489호(공개일 2014년 04월 16일)에는 가상 키보드 상의 키 입력을 인식하는 기술이 개시되어 있다.
가상 키보드는 휴대 단말기의 화면 크기 제약 때문에 버튼 크기가 작고 촉각 피드백이 없으며 입력 시 손가락이 화면을 가리는 등 사용성에 많은 한계가 있고 이러한 한계로 인해 하드웨어 키패드보다 오타가 많이 발생한다.
정타와 오타를 판별하는 알고리즘과 키 별 타점 영역을 모델링하는 알고리즘을 기계 학습과 융합하여 가상 키보드의 오타를 보정할 수 있는 기술을 제공한다.
컴퓨터 시스템에서 실행되는 방법에 있어서, 상기 컴퓨터 시스템은 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 방법은, 상기 적어도 하나의 프로세서에 의해, 가상 키보드의 각 키 별로 키 터치에 따른 타점 좌표를 수집하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 키 별로 상기 타점 좌표를 이용하여 타점 분포를 분석함으로써 개인화된 타점 영역을 결정하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 가상 키보드에 터치가 인식되면 상기 키 별 개인화된 타점 영역에 기초하여 상기 인식된 터치에 따른 입력 키를 예측하는 단계를 포함하는 방법을 제공한다.
일 측면에 따르면, 상기 수집하는 단계는, 상기 가상 키보드의 순차적인 키 터치에 따른 키 리스트와 상기 키 리스트에 포함된 각 키 별로 키 터치에 따른 타점 좌표를 수집하는 단계를 포함할 수 있다.
다른 측면에 따르면, 상기 수집하는 단계는, 상기 가상 키보드의 순차적인 키 터치에 따른 키 리스트를 수집하는 단계; 상기 키 리스트를 이용하여 오타와 상기 오타에 대응되는 정타를 판별하는 단계; 및 상기 오타와 상기 정타에 해당되는 각 키의 타점 좌표를 수집하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 판별하는 단계는, 상기 키 리스트에 포함된 삭제 키를 기준으로 상기 삭제 키 이전에 저장된 이전 키 리스트와 상기 삭제 키 이후에 저장된 이후 키 리스트를 구성하는 단계; 및 상기 이전 키 리스트와 상기 이후 키 리스트 간에 서로 대응되는 위치의 두 키가 다르면 상기 두 키 중 이전 키를 오타로 분류하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 판별하는 단계는, 상기 키 리스트에 포함된 삭제 키를 기준으로 상기 삭제 키의 개수만큼 이전에 저장된 이전 키 리스트와 상기 삭제 키의 개수만큼 이후에 저장된 이후 키 리스트를 구성하는 단계; 및 상기 이전 키 리스트와 상기 이후 키 리스트 간에 서로 대응되는 위치의 두 키가 다르고 상기 가상 키보드 상에서 인접한 위치에 배열된 키이면 상기 두 키 중 이전 키를 오타로 분류하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 결정하는 단계는, 상기 키 별로 상기 타점 분포에 기초하여 해당 키에 대한 터치 타점의 형태를 근사하는 타원 식을 찾아 상기 개인화된 타점 영역을 결정하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 결정하는 단계는, 상기 키에 대해 수집된 터치 좌표를 평균함으로써 타점 중심을 계산하는 단계; 상기 타점 중심을 원점으로 하는 좌표 평면에서 각 사분면에 포함된 타점 좌표의 개수인 타점 개수를 계산하는 단계; 상기 타점 중심에서 타점 개수가 가장 많은 사분면의 타점 표준편차 좌표까지의 거리를 장축 반지름으로 결정하는 단계; 상기 타점 중심에서 타점 개수가 가장 많은 사분면과 인접한 사분면 중 타점 개수가 많은 사분면의 타점 표준편차 좌표까지의 거리를 단축 반지름으로 결정하는 단계; 타점 개수가 가장 많은 사분면에서의 기울기 각도인 장축 기울기를 계산하는 단계; 및 상기 타점 중심, 상기 장축 반지름, 상기 단축 반지름, 및 상기 장축 기울기로 생성된 타원 영역을 해당 키의 개인화된 타점 영역으로 결정하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 예측하는 단계는, 상기 인식된 터치와 대응되는 키 정보와 터치 정보 및 상기 개인화된 타점 영역을 피처(feature)로 하는 기계 학습을 통해 상기 입력 키를 예측하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 예측하는 단계는, 상기 인식된 터치와 대응되는 키 정보와 터치 정보 및 상기 개인화된 타점 영역을 입력 벡터로 구성한 기계 학습 모델을 통해 상기 각 키가 상기 인식된 터치와 대응되는 키일 확률을 산출하는 단계; 및 상기 각 키 별 확률에 기초하여 상기 인식된 터치에 대해 상기 가상 키보드의 실제 입력 키 값을 반환하는 단계를 포함할 수 있다.
상기 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체를 제공한다.
컴퓨터 시스템에 있어서, 메모리; 및 상기 메모리와 연결되고, 상기 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 가상 키보드의 각 키 별로 키 터치에 따른 타점 좌표를 수집하는 데이터 수집부; 상기 키 별로 상기 타점 좌표를 이용하여 타점 분포를 분석함으로써 개인화된 타점 영역을 결정하는 타점 영역 결정부; 및 상기 가상 키보드에 터치가 인식되면 상기 키 별 개인화된 타점 영역에 기초하여 상기 인식된 터치에 따른 입력 키를 예측하는 키 예측부를 포함하는 컴퓨터 시스템을 제공한다.
본 발명의 실시예들에 따르면, 정타와 오타를 판별하는 알고리즘과 키 별 타점 영역을 모델링하는 알고리즘을 기계 학습과 융합하여 가상 키보드의 오타를 보정할 수 있다.
본 발명의 실시예들에 따르면, 가상 키보드의 각 키에 대한 터치 타점 분포를 분석하여 키 별로 사용자에게 개인화된 타점 영역을 찾음으로써 효과적인 오타 보정을 지원할 수 있다.
도 1은 본 발명의 일실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 컴퓨터 시스템이 수행할 수 있는 오타 보정 방법의 예를 도시한 순서도이다.
도 4는 본 발명의 일실시예에 있어서 정타와 오타를 판별하는 과정을 설명하기 위한 순서도이다.
도 5 내지 도 7은 본 발명의 일실시예에 있어서 정타와 오타를 판별하는 과정을 설명하기 위한 예시 도면이다.
도 8은 본 발명의 일실시예에 있어서 가상 키보드의 각 키 별로 터치 타점 분포를 나타낸 것이다.
도 9는 본 발명의 일실시예에 있어서 가상 키보드의 키 별 타점 영역을 모델링하는 과정을 도시한 순서도이다.
도 10은 본 발명의 일실시예에 있어서 키 별 터치 타점의 형태를 근사하는 타원 식을 찾는 과정을 설명하기 위한 예시 도면이다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 컴퓨터 시스템이 수행할 수 있는 오타 보정 방법의 예를 도시한 순서도이다.
도 4는 본 발명의 일실시예에 있어서 정타와 오타를 판별하는 과정을 설명하기 위한 순서도이다.
도 5 내지 도 7은 본 발명의 일실시예에 있어서 정타와 오타를 판별하는 과정을 설명하기 위한 예시 도면이다.
도 8은 본 발명의 일실시예에 있어서 가상 키보드의 각 키 별로 터치 타점 분포를 나타낸 것이다.
도 9는 본 발명의 일실시예에 있어서 가상 키보드의 키 별 타점 영역을 모델링하는 과정을 도시한 순서도이다.
도 10은 본 발명의 일실시예에 있어서 키 별 터치 타점의 형태를 근사하는 타원 식을 찾는 과정을 설명하기 위한 예시 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 가상 키보드의 오타를 보정하는 기술에 관한 것이다.
본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 오타 분석 및 타점 분석 알고리즘과 기계 학습을 융합하여 가상 키보드의 오타를 보정할 수 있고, 이를 통해 정확성, 효율성, 개인화, 비용 절감 등의 측면에 있어서 상당한 장점들을 달성한다.
도 1은 본 발명의 일실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다. 예를 들어, 본 발명의 실시예들에 따른 오타 보정 시스템이 도 1의 컴퓨터 시스템(100)을 통해 구현될 수 있다. 도 1에 도시한 바와 같이, 컴퓨터 시스템(100)은 오타 보정 방법을 실행하기 위한 구성요소로서 프로세서(110), 메모리(120), 영구 저장 장치(130), 버스(140), 입출력 인터페이스(150) 및 네트워크 인터페이스(160)를 포함할 수 있다.
프로세서(110)는 가상 키보드의 오타를 보정하기 위한 구성요소로서 명령어들의 시퀀스를 처리할 수 있는 임의의 장치를 포함하거나 그의 일부일 수 있다. 프로세서(110)는 예를 들어 컴퓨터 프로세서, 이동 장치 또는 다른 전자 장치 내의 프로세서 및/또는 디지털 프로세서를 포함할 수 있다. 프로세서(110)는 예를 들어, 서버 컴퓨팅 디바이스, 서버 컴퓨터, 일련의 서버 컴퓨터들, 서버 팜, 클라우드 컴퓨터, 컨텐츠 플랫폼 등에 포함될 수 있다. 프로세서(110)는 버스(140)를 통해 메모리(120)에 접속될 수 있다.
메모리(120)는 컴퓨터 시스템(100)에 의해 사용되거나 그에 의해 출력되는 정보를 저장하기 위한 휘발성 메모리, 영구, 가상 또는 기타 메모리를 포함할 수 있다. 메모리(120)는 예를 들어 랜덤 액세스 메모리(RAM: random access memory) 및/또는 다이내믹 RAM(DRAM: dynamic RAM)을 포함할 수 있다. 메모리(120)는 컴퓨터 시스템(100)의 상태 정보와 같은 임의의 정보를 저장하는 데 사용될 수 있다. 메모리(120)는 예를 들어 가상 키보드와 관련된 명령어들을 포함하는 컴퓨터 시스템(100)의 명령어들을 저장하는 데에도 사용될 수 있다. 컴퓨터 시스템(100)은 필요에 따라 또는 적절한 경우에 하나 이상의 프로세서(110)를 포함할 수 있다.
버스(140)는 컴퓨터 시스템(100)의 다양한 컴포넌트들 사이의 상호작용을 가능하게 하는 통신 기반 구조를 포함할 수 있다. 버스(140)는 예를 들어 컴퓨터 시스템(100)의 컴포넌트들 사이에, 예를 들어 프로세서(110)와 메모리(120) 사이에 데이터를 운반할 수 있다. 버스(140)는 컴퓨터 시스템(100)의 컴포넌트들 간의 무선 및/또는 유선 통신 매체를 포함할 수 있으며, 병렬, 직렬 또는 다른 토폴로지 배열들을 포함할 수 있다.
영구 저장 장치(130)는 (예를 들어, 메모리(120)에 비해) 소정의 연장된 기간 동안 데이터를 저장하기 위해 컴퓨터 시스템(100)에 의해 사용되는 바와 같은 메모리 또는 다른 영구 저장 장치와 같은 컴포넌트들을 포함할 수 있다. 영구 저장 장치(130)는 컴퓨터 시스템(100) 내의 프로세서(110)에 의해 사용되는 바와 같은 비휘발성 메인 메모리를 포함할 수 있다. 영구 저장 장치(130)는 예를 들어 플래시 메모리, 하드 디스크, 광 디스크 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있다.
입출력 인터페이스(150)는 키보드, 마우스, 음성 명령 입력, 디스플레이 또는 다른 입력 또는 출력 장치에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 가상 키보드와 관련된 입력이 입출력 인터페이스(150)를 통해 수신될 수 있다.
네트워크 인터페이스(160)는 근거리 네트워크 또는 인터넷과 같은 네트워크들에 대한 하나 이상의 인터페이스를 포함할 수 있다. 네트워크 인터페이스(160)는 유선 또는 무선 접속들에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 가상 키보드와 관련된 입력이 네트워크 인터페이스(160)를 통해 수신될 수 있다.
또한, 다른 실시예들에서 컴퓨터 시스템(100)은 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 시스템(100)은 상술한 입출력 인터페이스(150)와 연결되는 입출력 장치들 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
이하에서는 오타 분석 및 타점 분석 알고리즘과 기계 학습을 융합하여 가상 키보드의 오타를 보정할 수 있는 기술을 제공한다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 시스템의 프로세서가 포함할 수 있는 구성요소의 예를 도시한 도면이고, 도 3은 본 발명의 일실시예에 따른 컴퓨터 시스템이 수행할 수 있는 오타 보정 방법의 예를 도시한 순서도이다.
도 2에 도시된 바와 같이, 프로세서(110)는 컴퓨터 시스템(100)의 디스플레이에 가상 키보드를 표시할 수 있고, 가상 키보드의 오타를 보정하기 위한 구성요소로서 데이터 수집부(210), 타점 영역 결정부(220), 및 키 예측부(230)를 포함할 수 있다. 이러한 프로세서(110)의 구성요소들은 적어도 하나의 프로그램 코드에 의해 제공되는 제어 명령에 따라 프로세서(110)에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 예를 들어, 프로세서(110)가 터치에 따른 타점 데이터를 수집하도록 컴퓨터 시스템(100)을 제어하기 위해 동작하는 기능적 표현으로서 데이터 수집부(210)가 사용될 수 있다. 프로세서(110) 및 프로세서(110)의 구성요소들은 도 3의 오타 보정 방법이 포함하는 단계들(S310 내지 S340)을 수행할 수 있다. 예를 들어, 프로세서(110) 및 프로세서(110)의 구성요소들은 메모리(120)가 포함하는 운영체제의 코드와 상술한 적어도 하나의 프로그램 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 적어도 하나의 프로그램 코드는 오타 보정 방법을 처리하기 위해 구현된 프로그램의 코드에 대응될 수 있다.
오타 보정 방법은 도시된 순서대로 발생하지 않을 수 있으며, 단계들 중 일부가 생략되거나 추가의 과정이 더 포함될 수 있다.
단계(S310)에서 프로세서(110)는 오타 보정 방법을 위한 프로그램 파일에 저장된 프로그램 코드를 메모리(120)에 로딩할 수 있다. 예를 들어, 오타 보정 방법을 위한 프로그램 파일은 도 1을 통해 설명한 영구 저장 장치(130)에 저장되어 있을 수 있고, 프로세서(110)는 버스를 통해 영구 저장 장치(130)에 저장된 프로그램 파일로부터 프로그램 코드가 메모리(120)에 로딩되도록 컴퓨터 시스템(110)을 제어할 수 있다. 이때, 프로세서(110) 및 프로세서(110)가 포함하는 데이터 수집부(210), 타점 영역 결정부(220), 및 키 예측부(230) 각각은 메모리(120)에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(S320 내지 S340)을 실행하기 위한 프로세서(110)의 서로 다른 기능적 표현들일 수 있다. 단계들(S320 내지 S340)의 실행을 위해, 프로세서(110) 및 프로세서(110)의 구성요소들은 직접 제어 명령에 따른 연산을 처리하거나 또는 컴퓨터 시스템(100)을 제어할 수 있다.
단계(S320)에서 데이터 수집부(210)는 가상 키보드에서 순차적으로 입력된 키 리스트를 이용하여 해당 키 터치에 따른 타점 데이터로서 터치 좌표(이차, '타점 좌표'라 칭함)를 수집할 수 있다. 본 발명에서는 가상 키보드의 각 키 별로 사용자 개인의 타점 분포를 분석할 수 있고 이를 위해서는 각 키 별로 사용자의 키 터치에 따른 타점 좌표를 일정 개수 이상 필요로 한다. 데이터 수집부(210)는 순차적인 키 터치에 따른 키 리스트와 함께 키 리스트에 포함된 각 키 별로 키 터치에 따른 타점 좌표를 수집할 수 있다. 특히, 데이터 수집부(210)는 오타 분석 알고리즘에 기반하여 키 리스트에서 오타와 오타에 대응되는 정타를 판별할 수 있다. 만일 입력된 키가 오타로 판단되는 경우 해당 입력 좌표에 대한 키는 오타에 대응되는 정타로 매핑시켜 이용할 수 있다. 이와 같이 각 키의 타점 좌표를 이후 타점 분포를 분석하는 과정에서 이용 가능한 데이터로서 수집할 수 있다.
단계(S330)에서 타점 영역 결정부(220)는 가상 키보드의 각 키 별로 타점 좌표를 이용하여 해당 키에 대한 타점 분포를 분석함으로써 해당 키의 타점 영역을 결정할 수 있다. 다시 말해, 타점 영역 결정부(220)는 가상 키보드의 각 키 별로 정타로 입력된 타점 좌표는 물론이고, 오타로 입력되더라도 오타의 타점 좌표를 해당 오타에 대응되는 정타 키에 대한 타점으로 매핑하여 해당 키의 타점 분포를 분석할 수 있다. 사용자마다 다른 방법으로 타이핑을 하고 키 별로 터치 타점이 다를 수 있기 때문에 사용자의 키 터치에 따른 타점 좌표를 바탕으로 터치 타점 분포를 분석할 수 있고 이러한 터치 타점 분포에 기초하여 터치 타점의 형태를 근사하는 타원 영역을 찾아 이를 해당 키에 대한 사용자의 개인화된 타점 영역으로 결정할 수 있다. 손가락에 의한 터치 타점 분포가 대부분 타원 형태로 근사된다는 가정 하에 타점 영역 결정부(220)는 가상 키보드의 각 키 별로 사용자 개인의 타점 좌표를 이용하여 타원 형태의 타점 영역을 찾아낼 수 있다.
단계(S340)에서 키 예측부(230)는 가상 키보드에 터치가 인식되면 터치에 대응되는 키 정보, 터치 정보, 및 키 별 타점 영역을 이용한 기계 학습 모델을 통해 인식된 터치에 따른 입력 키를 예측할 수 있다. 이때, 키 정보는 터치된 키의 코드 값, 터치된 키의 면적(높이와 너비) 등을 포함할 수 있고, 터치 정보는 터치 좌표(x, y), 터치된 시점의 컴퓨터 시스템(100)의 기울기, 이전 터치와의 시간 간격, 터치 면적, 터치가 유지된 시간 등을 포함할 수 있다. 기울기는 컴퓨터 시스템(100)에 포함된 오실로스코프나 자이로 센서 등으로부터 획득한 기울기 값(x, y, z)을 의미할 수 있다.
본 발명에서는 DNN(deep Neural Network)을 이용한 기계 학습 모델을 구축할 수 있으며, 이때 키 정보와 터치 정보, 그리고 타점 영역을 피처(feature)로 하는 기계 학습을 통해 입력 키를 예측할 수 있다. 기계 학습 모델은 사전에 확보된 학습 데이터를 활용하여 미리 학습시킨 모델로, 키 예측부(230)는 현재 터치된 키에 대해 키 정보와 터치 정보, 그리고 타점 영역을 입력 벡터로 구성한 기계 학습 모델을 통해 가상 키보드의 각각의 키가 인식된 터치와 대응되는 키일 확률을 산출할 수 있고 산출된 확률이 가장 높은 키를 해당 터치와 대응되는 입력 키로 인식함으로써 해당 키를 가상 키보드의 실제 입력 키 값으로 반환할 수 있다. 한편, 키 예측부(230)는 현재 터치된 키에 대해 가장 높은 확률 값이 임계 값 미만이면 예측된 값이 정확하지 않다고 판단하여 기계 학습 모델에서 예측한 입력 키를 반환하지 않고 입력된 좌표를 기준으로 실제 입력 키 값을 반환할 수 있다. 또는, 이 경우에는 오타로 처리하여 오타 알림을 출력하거나 다른 키 입력을 추천할 수 있다.
도 4는 본 발명의 일실시예에 있어서 정타와 오타를 판별하는 과정을 설명하기 위한 순서도이다.
도 4를 참조하면, 프로세서(110)는 가상 키보드에서 순차적으로 입력된 키 리스트를 저장할 수 있다(S401).
가상 키보드에 포함된 각 키 별로 고유한 코드 값이 정해져 있으며, 키 리스트에는 터치를 통해 입력된 키의 코드 값이 차례로 저장될 수 있다. 예를 들어, 문자가 입력되는 경우 자소 단위의 키가 입력되므로 순차적으로 입력되는 각 자소의 키 코드가 저장될 수 있다.
프로세서(110)는 일정 시간을 주기로 키 리스트를 수집할 수 있고, 혹은 문장 또는 문단 단위로 키 리스트를 수집할 수 있다.
프로세서(110)는 단계(S401)에서 저장된 키 리스트에 삭제 키가 포함되어 있는지 여부를 판단한다(S402).
프로세서(110)는 단계(S402)에서의 판단 결과 키 리스트에 삭제 키가 포함되어 있으면 삭제 키가 두 번 이상 연속적으로 저장되어 있는지 여부를 판단한다(S403).
프로세서(110)는 단계(S403)에서의 판단 결과 삭제 키가 연속적으로 저장되지 않고 한번 저장되어 있는 경우 삭제 키를 기준으로 삭제 키 직전에 저장된 키(이전 키)와 삭제 키 직후에 저장된 키(이후 키)를 오타 후보로 분류한다(S404).
프로세서(110)는 단계(S403)에서의 판단 결과 삭제 키가 연속적으로 두 번 이상 저장되어 있는 경우 삭제 키를 기준으로 연속된 삭제 키의 개수만큼 이전에 저장된 키 리스트(이전 키 리스트)와 연속된 삭제 키의 개수만큼 이후에 저장된 키 리스트(이후 키 리스트)를 구성한다(S405).
프로세서(110)는 이전 키 리스트와 이후 키 리스트 간에 공통된 키 집합인 교집합이 존재하는지 판단한다(S406).
프로세서(110)는 단계(S406)에서의 판단 결과 이전 키 리스트와 이후 키 리스트 간에 교집합이 존재하면 교집합에 해당되는 키들을 제외하고 교집합 전후로 서로 대응되는 위치의 키 쌍을 오타 후보로 분류한다(S407).
프로세서(110)는 단계(S406)에서의 판단 결과 이전 키 리스트와 이후 키 리스트 간에 교집합이 존재하지 않으면 이전 키 리스트와 이후 키 리스트의 서로 대응되는 위치의 키 쌍을 오타 후보로 분류한다(S408). 교집합이 존재하지 않을 경우에는, 삭제 키의 개수만큼 이전에 저장된 키 리스트에서 가장 먼저 저장된 키(이전 키)와 삭제 키 직후에 저장된 키(이후 키)를 오타 후보로 분류한다.
프로세서(110)는 단계(S404, S407, S408)에서 오타 후보로 분류된, 서로 대응되는 위치의 키 쌍이 서로 다른 키인지 판단한다(S409).
프로세서(110)는 단계(S409)에서의 판단 결과 각 오타 후보의 두 키가 동일하면 두 키 모두 정타로 분류한다.
프로세서(110)는 단계(S409)에서의 판단 결과 각 오타 후보의 두 키가 다르면 해당 두 키가 가상 키보드 상에서 서로 인접한 위치에 배열된 키인지 판단한다(S410).
프로세서(110)는 단계(S410)에서의 판단 결과 각 오타 후보의 두 키가 인접해 있지 않은 경우 두 키 모두 정타로 분류한다.
프로세서(110)는 단계(S410)에서의 판단 결과 각 오타 후보의 두 키가 인접해 있으면 두 키 중 이전 키를 오타로 분류한다(S411). 이때, 프로세서(110)는 오타 후보의 두 키 중 이전 키가 오타로 분류되면 이후 키를 해당 오타에 대응되는 정타로 분류한다.
따라서, 프로세서(110)는 가상 키보드에서 인접한 키 간의 간섭으로 인해 다른 키를 잘못 입력했다가 이를 수정한 경우 해당 오타를 찾아낼 수 있다. 다시 말해, 프로세서(110)는 가상 키보드에서 순차적으로 입력된 키 리스트에서 삭제 키 이전에 입력된 키가 삭제 키 이후에 입력된 키와 다르고 이와 동시에 두 키가 키보드 상에서 서로 인접해 있는 경우 이전 키를 오타로 분류하고 이외에 나머지 키들은 정타로 분류할 수 있다.
도 5 내지 도 7은 본 발명의 일실시예에 있어서 정타와 오타를 판별하는 과정을 설명하기 위한 예시 도면이다.
가상 키보드에서 <해뷰셔서>로 입력했다가 입력된 문자열 중 '뷰셔서'를 삭제하고 "주셔서"로 수정 입력한 경우를 가정한다.
상기한 가정의 키 터치에 따라 도 5에 도시한 바와 같이 키가 순차적으로 입력된 키 리스트(500)를 수집할 수 있다.
이때, 삭제 키(51)의 경우 실제 키가 입력된 개수만큼 저장되거나 혹은 삭제된 문자의 자소 개수만큼 저장될 수 있다. 삭제 키가 한번 입력될 때 자소 단위로 삭제되거나 둘 이상의 자소로 이루어진 음절 단위로 삭제될 수 있고, 경우에 따라서는(삭제 키를 롱 터치하는 경우 등) 낱말 단위 이상으로 일괄 삭제될 수 있기 때문에 이러한 경우를 고려하여 삭제된 문자의 자소 개수만큼의 삭제 키(51)를 키 리스트(500)에 저장할 수 있다.
프로세서(110)는 도 5에 도시한 바와 같이 키 리스트(500)에서 삭제 키(51)를 기준으로 삭제 키(51) 개수만큼의 이전 키 리스트(510)와 삭제 키(51) 개수만큼의 이후 키 리스트(520)를 구성할 수 있다.
다음, 프로세서(110)는 도 6에 도시한 바와 같이 이전 키 리스트(510)와 이후 키 리스트(520)의 서로 대응되는 위치 간에 키가 동일한 교집합(601)을 탐색한 후 교집합(601) 전/후로 서로 대응되는 위치의 키 쌍들을 오타 후보(602)로 분류한다.
프로세서(110)는 각 오타 후보(602)의 두 키가 다른 자소이면서 동시에 가상 키보드 상에서 인접한 위치에 배열된 키인 경우 두 키 중 이전 키 리스트(510)에 속한 키를 오타로 분류한다.
도 7을 참조하면, 프로세서(110)는 상기한 오타 분석 과정을 이용하여 키 리스트(500)에서 정타(71)와 오타(72)를 판별하여 정타(71)와 오타(72)로 분류된 키의 타점 좌표를 타점 분포 분석에 활용할 수 있다. 이때, 오타(72)로 분류된 키의 타점 좌표는 오타(72)에 대응되는 정타의 타점 분포 분석에 활용할 수 있다.
도 8은 가상 키보드(800)를 구성하는 각 키(810)에 대하여 정타와 오타로 인식된 타점 좌표들(801)을 나타낸 것이다.
도 8에 도시한 바와 같이, 가상 키보드(800)를 이용하는 개인의 파지법이나 가상 키보드(800)가 표시되는 디스플레이의 크기 등에 따라 사용자마다 각 키(810)에 대한 타점 좌표(801)의 분포가 다를 수 있다.
가상 키보드(800)를 이용하는 사용자 개인의 터치 타점 분포를 분석하여 이를 오타 보정에 활용할 수 있다.
도 9는 본 발명의 일실시예에 있어서 가상 키보드의 키 별 타점 영역을 모델링하는 과정을 도시한 순서도이다.
프로세서(110)는 키 별 터치 타점 분포의 형태를 근사하는 타원 식을 찾아내는 알고리즘을 이용할 수 있다.
도 9의 타점 영역 모델링 과정은 가상 키보드의 각 키에 대해 동일하게 수행될 수 있으며, 이하에서는 도 10과 같은 형태로 타점 좌표(1001)가 분포된 키(1010)를 예로 하여 설명한다.
프로세서(110)는 가상 키보드의 키(1010)에 대해 정타와 오타로 분류된 타점 좌표(1001)를 수집할 수 있다(S901).
프로세서(110)는 가상 키보드의 키(1010)에 대해 수집된 타점 좌표(1001)를 이용하여 타점 중심(1020)을 계산할 수 있다(S902). 프로세서(110)는 키(1010)에 대한 정타와 오타의 타점 좌표(1001)를 평균함으로써 타점 중심(1020)을 계산할 수 있다.
[타점 중심 = (avgX, avgY)]
프로세서(110)는 타점 중심(1020)을 원점으로 하는 좌표 평면에서 각 사분면의 타점 좌표(1001)를 이용하여 각 사분면의 타점 표준편차를 계산할 수 있다(S903).
[1사분면 타점 표준편차 = (devX1, devY1), 2사분면 타점 표준편차 = (devX2, devY2), 3사분면 타점 표준편차 = (devX3, devY3), 4사분면 타점 표준편차 = (devX4, devY4)]
프로세서(110)는 타점 중심(1020)에서 각 사분면의 타점 표준편차 좌표까지의 거리를 계산할 수 있다(S904). 타점 중심(1020)에서 타점 표준편차 좌표까지의 거리는 타원의 장축 반지름과 단축 반지름의 후보가 될 수 있다.
[1사분면 거리(r1) = dist(avgX, avgY, avgX+σ×devX1, avgY-σ×devY1), 2사분면 거리(r2) = dist(avgX, avgY, avgX+σ×devX2, avgY-σ×devY2), 3사분면 거리(r3) = dist(avgX, avgY, avgX+σ×devX3, avgY-σ×devY3), 4사분면 거리(r4) = dist(avgX, avgY, avgX+σ×devX4, avgY-σ×devY4)] 여기서, 시그마(σ)는 타원의 크기를 타점들을 얼마나 포함시키도록 그릴 것인지에 대한 결정 변수로서, 통계적으로 대략 1.645이면, 90%, 1.96이면, 95%, 2.58이면, 99%의 타점을 포함하는 타원을 그리게 된다.
프로세서(110)는 각 사분면에 포함된 타점 좌표(1001)의 개수를 계산할 수 있다(S905).
[1사분면 타점 개수 = n1, 2사분면 타점 개수 = n2, 3사분면 타점 개수 = n3, 4사분면 타점 개수 = n4]
프로세서(110)는 타점 개수가 가장 많은 사분면의 타점 표준편차 좌표까지의 거리를 장축 반지름(1031)으로 결정할 수 있다(S906). 예를 들어, 4사분면의 타점 개수가 가장 많은 경우 타점 중심(1020)에서 4사분면의 타점 표준편차 좌표까지의 거리, 즉 r4가 장축 반지름(1031)으로 결정된다.
프로세서(110)는 타점 개수가 가장 많은 사분면에서의 기울기 각도(1032), 즉 장축 기울기를 계산할 수 있다(S907). 예를 들어, 4사분면의 타점 개수가 가장 많은 경우 기울기 각도(1032)는 다음과 같다: 기울기 각도(theta) = atan(devY4/devX4). 2사분면과 4사분면에서의 기울기 각도는 각각 atan(devY2/devX2), atan(devY4/devX4)와 같고, 1사분면과 3사분면에서의 기울기 각도는 각각 -atan(devY1/devX1), -atan(devY3/devX3)와 같다.
프로세서(110)는 타점 개수가 가장 많은 사분면과 인접한 두 사분면 중 타점 개수가 더 많은 사분면의 타점 표준편차 좌표까지의 거리를 단축 반지름(1033)으로 결정할 수 있다(S908). 예를 들어, 4사분면의 타점 개수가 가장 많고 4사분면과 인접한 1사분면과 3사분면 중 3사분면의 타점 개수가 더 많은 경우 타점 중심(1020)에서 3사분면의 타점 표준편차 좌표까지의 거리, 즉 r3이 단축 반지름(1033)으로 결정된다.
프로세서(110)는 타점 중심(1020)에서 장축 반지름(1031), 기울기 각도(1032), 단축 반지름(1033)으로 생성된 타원 영역을 해당 키(1010)에 대한 개인화된 타점 영역(1030)으로 결정할 수 있다(S909).
프로세서(110)는 키(1010)에 대한 타점 분포에 기초하여 터치 타점의 형태를 근사하는 타원 식을 찾아 해당 키(1010)의 타점 영역(1030)을 결정할 수 있다.
타원 방정식은 수학식 1과 같다.
[수학식 1]
여기서, avgX, avgY는 타점 중심(1020), A는 장축 반지름(1031), B는 단축 반지름(1033)을 의미한다.
프로세서(110)는 키(1010)에 대한 터치가 해당 키(1010)의 유효 영역을 벗어나더라도 사용자의 지난 터치 타점들의 분포로 모델링된 타원 형태의 타점 영역(1030) 이내에 속하면 정타로 인식하여 처리할 수 있다.
하나의 타점이 여러 타원에 겹쳐서 들어갈 경우(키 간에 타원이 중첩되고 중첩 영역에 타점이 있는 경우)에는 타점에서 타원의 중심까지의 거리가 더 가까운 타원에 해당하는 키를 입력할 수 있다.
이처럼 본 발명의 실시예들에 따르면, 정타와 오타를 판별하는 알고리즘과 키 별 타점 영역을 모델링하는 알고리즘을 이용하여 가상 키보드의 오타를 정확하게 보정할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (17)
- 컴퓨터 시스템에서 실행되는 방법에 있어서,
상기 컴퓨터 시스템은 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
상기 방법은,
상기 적어도 하나의 프로세서에 의해, 가상 키보드의 각 키 별로 키 터치에 따른 타점 좌표를 수집하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 키 별로 상기 타점 좌표를 이용하여 타점 분포를 분석함으로써 개인화된 타점 영역을 결정하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 가상 키보드에 터치가 인식되면 상기 키 별 개인화된 타점 영역에 기초하여 상기 인식된 터치에 따른 입력 키를 예측하는 단계
를 포함하고,
상기 예측하는 단계는,
상기 인식된 터치와 대응되는 키 정보와 터치 정보 및 상기 개인화된 타점 영역을 입력 벡터로 구성한 기계 학습 모델을 통해 상기 각 키가 상기 인식된 터치와 대응되는 키일 확률을 산출하는 단계;
상기 각 키 별 확률 중 가장 높은 확률 값이 임계 값 이상이면 상기 인식된 터치에 대해 상기 가장 높은 확률 값의 키를 상기 가상 키보드의 입력 키 값으로 반환하는 단계; 및
상기 가장 높은 확률 값이 임계 값 미만이면 상기 인식된 터치에 대해 상기 인식된 터치와 대응되는 좌표를 기준으로 상기 가상 키보드의 입력 키 값을 반환하거나 오타 알림을 출력하는 단계
를 포함하고,
상기 수집하는 단계는,
상기 가상 키보드의 순차적인 키 터치에 따른 키 리스트를 수집하는 단계;
상기 키 리스트에 포함된 삭제 키를 기준으로 상기 삭제 키의 개수만큼 이전에 저장된 이전 키 리스트와 상기 삭제 키의 개수만큼 이후에 저장된 이후 키 리스트를 구성하는 단계;
상기 이전 키 리스트와 상기 이후 키 리스트 간에 서로 대응되는 위치의 키 쌍을 오타 후보로 분류하여 상기 오타 후보로부터 오타와 상기 오타에 대응되는 정타를 판별하는 단계; 및
상기 오타와 상기 정타에 해당되는 각 키의 타점 좌표를 수집하는 단계
를 포함하고,
삭제된 문자의 자소 개수만큼의 상기 삭제 키가 상기 키 리스트에 저장되는 것
을 특징으로 하는 방법. - 제1항에 있어서,
상기 수집하는 단계는,
상기 가상 키보드의 순차적인 키 터치에 따른 키 리스트와 상기 키 리스트에 포함된 각 키 별로 키 터치에 따른 타점 좌표를 수집하는 단계
를 포함하는 방법. - 삭제
- 제1항에 있어서,
상기 판별하는 단계는,
상기 오타 후보의 두 키가 다르면 상기 두 키 중 이전 키를 오타로 분류하고 이후 키를 정타로 분류하는 단계; 및
상기 오타 후보의 두 키가 동일하면 상기 두 키 모두 정타로 분류하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 판별하는 단계는,
상기 오타 후보의 두 키가 다르고 상기 가상 키보드 상에서 인접한 위치에 배열된 키이면 상기 두 키 중 이전 키를 오타로 분류하고 이후 키를 정타로 분류하는 단계; 및
상기 오타 후보의 두 키가 동일하거나 상기 가상 키보드 상에서 인접한 위치에 배열된 키가 아니면 상기 두 키 모두 정타로 분류하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 결정하는 단계는,
상기 키 별로 상기 타점 분포에 기초하여 해당 키에 대한 터치 타점의 형태를 근사하는 타원 식을 찾아 상기 개인화된 타점 영역을 결정하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 결정하는 단계는,
상기 키에 대해 수집된 터치 좌표를 평균함으로써 타점 중심을 계산하는 단계;
상기 타점 중심을 원점으로 하는 좌표 평면에서 각 사분면에 포함된 타점 좌표의 개수인 타점 개수를 계산하는 단계;
상기 타점 중심에서 타점 개수가 가장 많은 사분면의 타점 표준편차 좌표까지의 거리를 장축 반지름으로 결정하는 단계;
상기 타점 중심에서 타점 개수가 가장 많은 사분면과 인접한 사분면 중 타점 개수가 많은 사분면의 타점 표준편차 좌표까지의 거리를 단축 반지름으로 결정하는 단계;
타점 개수가 가장 많은 사분면에서의 기울기 각도인 장축 기울기를 계산하는 단계; 및
상기 타점 중심, 상기 장축 반지름, 상기 단축 반지름, 및 상기 장축 기울기로 생성된 타원 영역을 해당 키의 개인화된 타점 영역으로 결정하는 단계
를 포함하는 방법. - 삭제
- 삭제
- 제1항, 제2항, 제4항 내지 제7항 중 어느 한 항의 방법을 컴퓨터에 실행시키기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체.
- 컴퓨터 시스템에 있어서,
메모리; 및
상기 메모리와 연결되고, 상기 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서
를 포함하고,
상기 적어도 하나의 프로세서는,
가상 키보드의 각 키 별로 키 터치에 따른 타점 좌표를 수집하는 데이터 수집부;
상기 키 별로 상기 타점 좌표를 이용하여 타점 분포를 분석함으로써 개인화된 타점 영역을 결정하는 타점 영역 결정부; 및
상기 가상 키보드에 터치가 인식되면 상기 키 별 개인화된 타점 영역에 기초하여 상기 인식된 터치에 따른 입력 키를 예측하는 키 예측부
를 포함하고,
상기 키 예측부는,
상기 인식된 터치와 대응되는 키 정보와 터치 정보 및 상기 개인화된 타점 영역을 입력 벡터로 구성한 기계 학습 모델을 통해 상기 각 키가 상기 인식된 터치와 대응되는 키일 확률을 산출하고,
상기 각 키 별 확률 중 가장 높은 확률 값이 임계 값 이상이면 상기 인식된 터치에 대해 상기 가장 높은 확률 값의 키를 상기 가상 키보드의 입력 키 값으로 반환하고,
상기 가장 높은 확률 값이 임계 값 미만이면 상기 인식된 터치에 대해 상기 인식된 터치와 대응되는 좌표를 기준으로 상기 가상 키보드의 입력 키 값을 반환하거나 오타 알림을 출력하고,
상기 데이터 수집부는,
상기 가상 키보드의 순차적인 키 터치에 따른 키 리스트를 수집하고,
상기 키 리스트에 포함된 삭제 키를 기준으로 상기 삭제 키의 개수만큼 이전에 저장된 이전 키 리스트와 상기 삭제 키의 개수만큼 이후에 저장된 이후 키 리스트를 구성하고,
상기 이전 키 리스트와 상기 이후 키 리스트 간에 서로 대응되는 위치의 키 쌍을 오타 후보로 분류하여 상기 오타 후보로부터 오타와 상기 오타에 대응되는 정타를 판별하고,
상기 오타와 상기 정타에 해당되는 각 키의 타점 좌표를 수집하고,
삭제된 문자의 자소 개수만큼의 상기 삭제 키가 상기 키 리스트에 저장되는 것
을 특징으로 하는 컴퓨터 시스템. - 삭제
- 제11항에 있어서,
상기 데이터 수집부는,
상기 오타 후보의 두 키가 다르면 상기 두 키 중 이전 키를 오타로 분류하고 이후 키를 정타로 분류하고,
상기 오타 후보의 두 키가 동일하면 상기 두 키 모두 정타로 분류하는 것
을 특징으로 하는 컴퓨터 시스템. - 제11항에 있어서,
상기 타점 영역 결정부는,
상기 키 별로 상기 타점 분포에 기초하여 해당 키에 대한 터치 타점의 형태를 근사하는 타원 식을 찾아 상기 개인화된 타점 영역을 결정하는 것
을 특징으로 하는 컴퓨터 시스템. - 제11항에 있어서,
상기 타점 영역 결정부는,
상기 키에 대해 수집된 터치 좌표를 평균함으로써 타점 중심을 계산하고,
상기 타점 중심을 원점으로 하는 좌표 평면에서 각 사분면에 포함된 타점 좌표의 개수인 타점 개수를 계산하고,
상기 타점 중심에서 타점 개수가 가장 많은 사분면의 타점 표준편차 좌표까지의 거리를 장축 반지름으로 결정하고,
상기 타점 중심에서 타점 개수가 가장 많은 사분면과 인접한 사분면 중 타점 개수가 많은 사분면의 타점 표준편차 좌표까지의 거리를 단축 반지름으로 결정하고,
타점 개수가 가장 많은 사분면에서의 기울기 각도인 장축 기울기를 계산하고,
상기 타점 중심, 상기 장축 반지름, 상기 단축 반지름, 및 상기 장축 기울기로 생성된 타원 영역을 해당 키의 개인화된 타점 영역으로 결정하는 것
을 특징으로 하는 컴퓨터 시스템. - 삭제
- 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180084837A KR102209076B1 (ko) | 2018-07-20 | 2018-07-20 | 가상 키보드 오타 보정을 위한 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체 |
JP2019133605A JP6821751B2 (ja) | 2018-07-20 | 2019-07-19 | 仮想キーボードの誤タイピングを補正するための方法、システム、およびコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180084837A KR102209076B1 (ko) | 2018-07-20 | 2018-07-20 | 가상 키보드 오타 보정을 위한 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200009858A KR20200009858A (ko) | 2020-01-30 |
KR102209076B1 true KR102209076B1 (ko) | 2021-01-28 |
Family
ID=69169679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180084837A KR102209076B1 (ko) | 2018-07-20 | 2018-07-20 | 가상 키보드 오타 보정을 위한 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6821751B2 (ko) |
KR (1) | KR102209076B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11720247B2 (en) | 2021-06-28 | 2023-08-08 | Samsung Display Co., Ltd. | Foldable display device providing virtual keyboard and method of driving the same |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102355890B1 (ko) * | 2019-11-28 | 2022-01-27 | 한국과학기술원 | 디코더 아키텍쳐, 그의 동작 방법 및 디코더를 이용하는 소프트 키보드 |
KR102566899B1 (ko) * | 2020-02-24 | 2023-08-14 | 주식회사 한글과컴퓨터 | 개인별 맞춤형 자동 오타 정정을 수행할 수 있는 전자 단말 장치 및 그 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011150489A (ja) | 2010-01-20 | 2011-08-04 | Sony Corp | 情報処理装置及びプログラム |
JP2017117002A (ja) * | 2015-12-21 | 2017-06-29 | レノボ・シンガポール・プライベート・リミテッド | 情報処理装置及びセンシングレイアウト更新方法並びにプログラム |
KR101858999B1 (ko) | 2016-11-28 | 2018-05-17 | (주)헤르메시스 | 가상 키보드의 입력 보정 장치, 및 그 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000066817A (ja) * | 1998-08-20 | 2000-03-03 | Nec Corp | キーボード装置 |
JP2011090356A (ja) * | 2009-10-20 | 2011-05-06 | Nec Corp | データ処理装置、そのコンピュータプログラムおよびデータ処理方法 |
KR101296145B1 (ko) * | 2010-10-29 | 2013-08-19 | 서울대학교산학협력단 | 문자 입력 방법 및 장치 |
JP2013073317A (ja) * | 2011-09-27 | 2013-04-22 | Nec Casio Mobile Communications Ltd | 入力装置、入力方法及びプログラム |
JP2013117916A (ja) * | 2011-12-05 | 2013-06-13 | Denso Corp | 入力表示装置 |
KR102145739B1 (ko) * | 2014-02-28 | 2020-08-19 | 엘지전자 주식회사 | 이동단말기 및 그 제어방법 |
-
2018
- 2018-07-20 KR KR1020180084837A patent/KR102209076B1/ko active IP Right Grant
-
2019
- 2019-07-19 JP JP2019133605A patent/JP6821751B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011150489A (ja) | 2010-01-20 | 2011-08-04 | Sony Corp | 情報処理装置及びプログラム |
JP2017117002A (ja) * | 2015-12-21 | 2017-06-29 | レノボ・シンガポール・プライベート・リミテッド | 情報処理装置及びセンシングレイアウト更新方法並びにプログラム |
KR101858999B1 (ko) | 2016-11-28 | 2018-05-17 | (주)헤르메시스 | 가상 키보드의 입력 보정 장치, 및 그 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11720247B2 (en) | 2021-06-28 | 2023-08-08 | Samsung Display Co., Ltd. | Foldable display device providing virtual keyboard and method of driving the same |
Also Published As
Publication number | Publication date |
---|---|
KR20200009858A (ko) | 2020-01-30 |
JP2020013577A (ja) | 2020-01-23 |
JP6821751B2 (ja) | 2021-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101345320B1 (ko) | 예측 가상 키보드 | |
CN110221600B (zh) | 路径规划方法、装置、计算机设备和存储介质 | |
KR102062931B1 (ko) | 텍스트 입력 시스템 및 방법 | |
KR102209076B1 (ko) | 가상 키보드 오타 보정을 위한 방법과 시스템 및 비-일시적인 컴퓨터 판독가능한 기록 매체 | |
US11461409B2 (en) | Digitization of technical documentation driven by machine learning | |
CN107273032A (zh) | 信息排版方法、装置、设备及计算机存储介质 | |
KR102438784B1 (ko) | 데이터를 난독화 및 복호화 하는 전자 장치 및 그의 제어 방법 | |
CN105229574A (zh) | 减少基于触摸的键盘的错误率 | |
KR20150109447A (ko) | 텍스트 입력 시스템 및 방법 | |
JPWO2016084336A1 (ja) | 追学習装置、追学習方法、および、追学習プログラム | |
CN104615262A (zh) | 一种用于虚拟键盘的输入方法和输入系统 | |
CN109656384A (zh) | 字符串输入方法和装置 | |
CN107967112B (zh) | 解码用于图形键盘的不准确手势 | |
KR102052606B1 (ko) | 주의 기반 인공 신경망 기계 번역의 상호작용 시각화와 조작을 위한 방법 및 시스템 | |
CN105302336A (zh) | 一种输入纠错方法和装置 | |
CN110728359B (zh) | 搜索模型结构的方法、装置、设备和存储介质 | |
KR102128415B1 (ko) | 딥러닝 모델 기반 키보드 오타 보정 방법 및 시스템 | |
KR20200078454A (ko) | 딥러닝 모델 기반 키보드 오타 보정 방법 및 시스템 | |
KR102074764B1 (ko) | 모바일 기기의 입력 인터페이스 내에서 맞춤법 검사를 지원하는 방법 및 시스템 | |
KR101919841B1 (ko) | 터치 오기 교정 방법 및 시스템 | |
CN115659900A (zh) | 用于呈现集成电路版图的方法、设备和介质 | |
KR102509343B1 (ko) | 이미지의 레이아웃 분석 방법 및 시스템 | |
US20150301733A1 (en) | Method and apparatus for providing state identification | |
CN117553801B (zh) | 拓扑路径图生成方法、装置、机器人及存储介质 | |
KR20200010144A (ko) | 모바일 기기의 입력 인터페이스 내에서 맞춤법 검사를 지원하는 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |