KR20130108619A - 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 또는 수정이 가능한 텍스트 기입 - Google Patents

공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 또는 수정이 가능한 텍스트 기입 Download PDF

Info

Publication number
KR20130108619A
KR20130108619A KR1020137014114A KR20137014114A KR20130108619A KR 20130108619 A KR20130108619 A KR 20130108619A KR 1020137014114 A KR1020137014114 A KR 1020137014114A KR 20137014114 A KR20137014114 A KR 20137014114A KR 20130108619 A KR20130108619 A KR 20130108619A
Authority
KR
South Korea
Prior art keywords
corpus
string
words
text input
search
Prior art date
Application number
KR1020137014114A
Other languages
English (en)
Other versions
KR101599826B1 (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 KR20130108619A publication Critical patent/KR20130108619A/ko
Application granted granted Critical
Publication of KR101599826B1 publication Critical patent/KR101599826B1/ko

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)
  • Machine Translation (AREA)

Abstract

공유된 말뭉치를 검색하는 것이 텍스트 입력의 단어 예측, 완성, 및/또는 수정을 보충하는데 이용된다. 클라이언트 장치에서 사용자 입력 장치는 기호들의 문자열을 포함하는 텍스트 입력의 사용자 기입을 수신한다. 클라이언트 장치는 근접 검색 용어로 상기 문자열을 이용하여 말뭉치의 검색을 수하기 위해 원격 사이트에 지시들을 무선으로 전송한다. 원격 사이트로부터, 클라이언트 장치는 검색의 결과들을 수신하며, 하나 또는 그 이상의 단어들의 다중 세트들을 포함하며, 각 세트는 상기 검색 용어 바로 후 말뭉치에 발생한다. 클라이언트 장치는 단어 예측, 완성, 및/또는 수정에서 수신된 세트들을 이용한다.

Description

공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 또는 수정이 가능한 텍스트 기입{TEXT ENTRY WITH WORD PREDICTION, COMPLETION, OR CORRECTION SUPPLEMENTED BY SEARCH OF SHARED CORPUS}
이 출원은 여기에 첨부된 그 전체에 포함된, 2010. 11. 10에 출원된 미국 특허 출원 No. 12/943,856에 대한 우선권을 주장한다.
본 발명은 사용자 조작 텍스트 입력을 갖는 손바닥 크기의(휴대용) 컴퓨팅 장치와 관련되어 있다. 더 자세하게, 본 발명은 사용자가 입력 텍스트는 더 정확하고 효율적으로 예측 및/또는 수정하는 기능과 관련된다.
휴대용 디지털 장치들은 점차 넓게 퍼지고 있다. 텔레비젼 리모트 컨트롤 같은 경우처럼, 몇몇 디지털 장치들은 더 단순한 작업들을 위해 전용화된다. 다른 장치들은, 개인 데이터 보조(PDAs)의 경우처럼, 일반 목적 컴퓨팅 플랫폼을 제공한다. 다른 장치들은 이러한 조합을 제공하며, 많은 모바일 전화기들의 경우, 전화를 걸거나 받는 것 뿐만 아니라, 주소 관리, 웹서핑, 텍스트 메시징, 및 다른 컴퓨팅 기능들을 수행한다.
몇몇 휴대용 컴퓨터들은, 비록 상당히 감소된 크기라도, 완전한 키보드를 제공하며, 반면 많은 다른 것들은 그렇지 않다. 많은 모바일 폰들은 오직 12개 키의 간단한 키패드만을 제공한다. 완전한 키보드 또는 풀사이즈 키보드의 부족으로 인해, 사용자가 데이터를 입력하는 동안 사용자 에러의 기회가 더 많다. 또한 데이터 입력은 일반적으로 이러한 장치들로는 더 느리다.
따라서, 줄어든 키보드에 제한되는 것은 단순하고, 직관적이고, 빠르고, 강력한 텍스트 입력 사용자 인터페이스를 설계하는데 많은 도전을 제시한다.
공유된(shared) 말뭉치(코퍼스, corpus)를 검색하는 것이 텍스트 입력의 보충 단어 예측, 완성, 및/또는 수정에 이용된다. 클라이언트 장치에서 사용자 입력 장치는 기호들의 문자열을 포함하는 텍스트 입력의 유저 입력을 수신한다. 상기 클라이언트 장치는 인접 검색 용어에 따라 상기 문자열을 이용하여 말뭉치의 검색을 수행하기 위해 사이트를 원격 사이트(a remote site)에 지시를 무선으로 전송한다. 원격 사이트로부터, 클라이언트 장치는 검색의 결과를 수신하며, 이는 하나 또는 그 이상의 단어들의 다중 세트들을 포함하며, 각 세트는 검색 용어 바로 뒤의 말뭉치에서 발생한다. 클라이언트 장치는 단어 예측, 완성, 및/또는 수정에서 수신된 세트들을 이용한다. 본 발명은 하나 또는 그 이상의 하드웨어, 소프트웨어, 펌웨어, 회로의 모듈들, 또는 이들의 결합에 따라 실행될 수 있다.
본 발명의 하나의 관점은 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 및/또는 수정을 갖는 텍스트 입력을 실행하기 위해 이용하는 다양한 장비들에 관련된다. 도 1은 이 장비들이 실행될 수 있는 예시적인 환경이나 시스템(100)을 보여준다. 넓게는, 상기 시스템(100)은 (130) 같은 하나 또는 그 이상의 링크(연결, links)에 의해 (120)같은 하나 또는 그 이상의 서버들에 연동되는 클라이언트 장치(102)처럼 하나 또는 그 이상의 컴퓨팅 장치들을 포함한다.
이는 "단어들(words)"에 다양한 참조들을 만들지만, 이는 단지 어떠한 의도된 제한 없이 설명을 편의를 위함이다. 본 발명은 제한 없이 수치적 시퀀스들, 표어 문자, 및 어떠한 문자열 또는 다른 기호들의 세트에 적용될 수 있다.
하나의 실시예에서, 아래에서 더 자세히 설명되는 것처럼, 서버(120)는, 회사처럼, 하나의 개체에 의해 운영되는 장비를 포함할 수 있고, 클라이언트 장치(102)를 대표하여 운영 개체의 구독-고객일 수 있다. 이 실시예에서, 상기 서버(120)는 운영 개체와 그것의 클라이언트 장치(102)의 필요에 따라 커스터마이징 된다. 다른 실시예에서, 서버(120)의 몇몇 또는 모든 구성요소들은 클라이언트 장치들에 적합하게 커스터마이징 되거나 되지 않을 수 있는 GoogleTM, YahooTM, BingTM 같은, 공용으로 이용가능한 검색 엔진에 의해 충족될 수 있다.
묘사된 예에서, 상기 서버(120)는 엔진(132)와 연동된 관리자(매니저, 122)와 어휘 콜렉션(모음, 124)을 포함한다. 엔진(132)는 말뭉치(134)와 연동되며, 텍스트를 포함하는 문서들의 콜렉션을 포함한다. 아래에 설명되는 것처럼, 말뭉치(134)는 자주 업데이트 되는 경우 특정 이점들을 제공할 수 있다. 그래서, 서버(120)는 아래에서 더 자세히 설명되는 것처럼 반복적으로 말뭉치를 보충, 확장, 수정, 또는 다르게 업데이트 하도록 구성될 수 있다.
특정 예에서, 말뭉치의 각 구성 문서는 웹페이지, 웹사이트, 책, 문집, 읽을거리, 신문, 공보, 또는 앞서 설명한 것들의 어떠한 것들의 조합 또는 콜렉션 또는 제한없이 문서들의 다른 형태가 될 수 있다. 예에서, 말뭉치(134)는 전기적으로 저장된 그리고 처리된 텍스트들의 큰 세트이다. 아래에서 더 자세히 설명되겠지만, 특정 운영들의 효율성은 큰 말뭉치를 이용하는 것에 의해 향상될 수 있다. 그래서, 적합한 수단들은, 자동화된 색인기, 웹 크롤러(web crawler), 리더(reader), 스캐너(scanner), 또는 다른 소프트웨어를 이용하는 것처럼, 말뭉치(134)를 제공하도록 이용될 수 있다. 추가 예에서, 상기 말뭉치(134)는 GoogleTM 같은 공용으로 이용가능한 검색 엔진이 공용 사용을 위해 공개한 n-gram 말뭉치를 포함할 수 있다.
도 1은 본 발명의 일 실시예에 따른 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 및/또는 수정을 갖는 텍스트 입력을 위한 구성요소들 및 환경의 상호 연결의 블록도.
도 2는 본 발명의 일 실시예에 따른 디지털 데이터 처리 장치의 블록도.
도 3은 본 발명의 일 실시예에 따른 예시적 저장 매체를 보여주는 도면.
도 4는 본 발명의 일 실시예에 따른 예시적 논리 회로의 사시도.
도 5는 본 발명의 일 실시예에 따른 서버에서의 말뭉치 및 어휘들을 관리하기 위한 흐름도.
도 6은 본 발명의 일 실시예에 따른 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 및/또는 수정을 갖는 텍스트 입력을 묘사하는 흐름도.
본 발명의 특성, 목적, 및 이점들은 첨부된 도면들과 관련된 다음 자세한 설명들을 고려한 후에 해당 기술분야에서 통상의 기술을 가진 자에게 더 명확해질 것이다.
하드웨어 구성요소 및 상호연결
전체 구조( Overall Structure )
도입( Introduction )
본 발명의 하나의 관점은 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 및/또는 수정을 갖는 텍스트 입력을 실행하기 위해 이용하는 다양한 장비들에 관련된다. 도 1은 이 장비들이 실행될 수 있는 예시적인 환경이나 시스템(100)을 보여준다. 넓게는, 상기 시스템(100)은 (130) 같은 하나 또는 그 이상의 링크(연결, links)에 의해 (120)같은 하나 또는 그 이상의 서버들에 연동되는 클라이언트 장치(102)처럼 하나 또는 그 이상의 컴퓨팅 장치들을 포함한다.
이는 "단어들(words)"에 다양한 참조들을 만들지만, 이는 단지 어떠한 의도된 제한 없이 설명을 편의를 위함이다. 본 발명은 제한 없이 수치적 시퀀스들, 표어 문자, 및 어떠한 문자열 또는 다른 기호들의 세트에 적용될 수 있다.
모바일 컴퓨팅 장치( Mobile Computing Device )
클라이언트 장치(102)는, 휴대용 장치, 모바일 컴퓨터, 모바일 컴퓨팅 장치, 사용자 장치, 또는 어떤 의도적 제한없는 용어처럼, 다른 이름들에 의해 참조될 수도 있다. 시스템(100)의 실제 실시예에서, (102)같은 많은 장치들이 있지만, 설명의 편의를 위해, 오직 단일 클라이언트 장치(102)만이 묘사된다. 클라이언트 장치(102)는 PDA, 모바일 텔레폰, 라디오, 슬레이트 컴퓨팅 장치, GPS, 등등 같은 다양한 휴대용 컴퓨팅 장치들에서 실행될 수 있다.
클라이언트 장치(102)는 프로세서(108)을 포함하며, 그 구조는 아래에서 더 자세히 설명된다. 클라이언트 장치(102)는 또한 박막 트랜지스터 액체 크리스탈(thin film transistor liquid crystal) 또는 다른 LCD, 플라즈마, CRT, 또는 다른 적어도 텍스트 및 그래픽을 나타내는 시각적으로 기계적 판독가능한 입력을 나타내기 위한 다른 장치처럼 디스플레이(104)도 포함한다. 비록 이해의 편의를 위해 단수로 언급되었지만, 클라이언트 장치(102)가 적용되는 방법에 적절하다면 다중 디스플레이들(104)이 적용될 수도 있다. 하나의 예로, 상기 디스플레이(104)는 모바일 전화기에 일반적인 것처럼, 클라이언트 장치(102)에 통합될 수 있다.
클라이언트 장치(102)는 또한, 기호들을 나타내는 물리적 또는 가상 버튼들을 누르는 것에 의해 기호를 입력하는 사용자를 위한 타이핑 메커니즘을 포함하는 하나의 예를 갖는, 유저 입력 장치(106)을 포함한다. 몇몇 예들은 감소된 크기의 키보드, 9개의 키 또는 12개의 키 또는 다른 키패드, 전화기 키패드, 및 그 유사한 것들을 포함한다. 장치(106)의 또다른 예는 디스플레이(104)에서 제공되는 "소프트" 키보드 또는 키패드와 작동되는 터치-감응형 디스플레이 스크린이다. 게다가, 타이핑 입력 장치 외에도, 장치(106)은 손으로 쓰는 것, 소리, 목소리, 시선 추적, 뇌파, 또는 어떠한 다른 메커니즘에 의해 사용자 입력을 수신하는 장치를 포함할 수도 있다. 비록 이해의 편의를 위해 단수로 언급되었지만, 장치(106)은 동시에 다수의 사용자 입력 메커니즘들을 포함할 수 있다.
클라이언트 장치(102)는 저장소(110)을 포함하며, 이는 본 예에서 클라이언트 장치(102)에 지역적이며 프로세서(108)에 연동된다. 저장소(110)의 구조는 몇몇 예들의 문맥에서 아래에 설명된다. 설명된 예에서, 저장소(110)는 지역 어휘들(112, 114)를 포함한다. 이러한 지역 어휘들은, 다른 기능들 중에서, 단어 예측, 완성, 및/또는 수정을 수행하는 것을 보조하기 위해 이용된다. 다른 어휘들은 다른 기능적 목적 또는 컨텐츠 또는 토픽들, 또는 주제, 다른 언어들을 위해 존재할 수 있다.
링크( Link )
위에서 언급된대로, 클라이언트 장치(102)는 (130)처럼 하나 또는 그 이상의 링크들에 의해 서버(120)에 연동된다. 하나의 예에서, 상기 링크(130)은 공용 인터넷에 의해 내장되며, 추가적으로 : (1) 상기 클라이언트 장치(102)는 무선 로컬 영역 네트워크(WLAN), 무선 광대역, 모바일 광대역, 또는 다른 무선 고속 인터넷 엑세스처럼 무선 광대역 연결에 의해 공용인터넷에 연결되며, (2) 상기 서버(120)는 라우터들, 모뎀들, 및 그 유사한 하드웨어들에 의해 공용 인터넷에 연동된다. 상기 예는 어떠한 의도적 제한없이 주어지지만, 상기 링크(130)은 광 또는 전기 전도성 도선들 또는 케이블, 위성, 공용 스위치되는 전화기 네트워크, 지역 네트워크, 또는 다른 적합한 기술 또는 이들의 결합들 처럼, 컴퓨티 장치들 사이의 커뮤니케이션 링크를 형성하기 위한 가상적인 유선 또는 무선 기술에 의해 실행될 수 있다.
서버
상기 서버(120)는 상기 링크(130)을 통해 클라이언트 장치들(102)로부터 요청(requests)들을 수신하고, 다른 데이터 관리 업무들 검색을 수행하며, 클라이언트 장치들(102)에 요청된 데이터를 반환하도록 구성되는 컴퓨터를 포함한다. 이러한 점에서, 상기 서버(120)은 서버(120)로부터 먼 클라이언트 장치들을 대표하여 다양한 서비스들을 수행하는 하나 또는 그 이상의 컴퓨터들을 포함한다. 상기 서버(120)는 클라이언트들에 따라 클라이언트 장치들(102)에 서비스를 제공하기 위한 웹서버, 데이터베이스 서버, FTP 서버, 또는 다른 기계들에 의해 실행될 수 있다. 예를 들어, 상기 서버(120)는 메인프레임 컴퓨터, 워크스테이션, 데스크탑 컴퓨터, 노트북 컴퓨터, 분산 컴퓨팅 네트워크, 슈퍼컴퓨터, 또는 앞의 것들의 결합 또는 다수에 의해 실행될 수 있다. 다양한 서버들이 휴렛패커드TM, IBMTM, DELLTM, SunTM, AppleTM 같은 회사들로부터 상업적으로 이용가능할 수 있다.
하나의 실시예에서, 아래에서 더 자세히 설명되는 것처럼, 서버(120)는, 회사처럼, 하나의 개체에 의해 운영되는 장비를 포함할 수 있고, 클라이언트 장치(102)를 대표하여 운영 개체의 구독-고객일 수 있다. 이 실시예에서, 상기 서버(120)는 운영 개체와 그것의 클라이언트 장치(102)의 필요에 따라 커스터마이징 된다. 다른 실시예에서, 서버(120)의 몇몇 또는 모든 구성요소들은 클라이언트 장치들에 적합하게 커스터마이징 되거나 되지 않을 수 있는 GoogleTM, YahooTM, BingTM 같은, 공용으로 이용가능한 검색 엔진에 의해 충족될 수 있다.
묘사된 예에서, 상기 서버(120)는 엔진(132)와 연동된 관리자(매니저, 122)와 어휘 콜렉션(모음, 124)을 포함한다. 엔진(132)는 말뭉치(134)와 연동되며, 텍스트를 포함하는 문서들의 콜렉션을 포함한다. 아래에 설명되는 것처럼, 말뭉치(134)는 자주 업데이트 되는 경우 특정 이점들을 제공할 수 있다. 그래서, 서버(120)는 아래에서 더 자세히 설명되는 것처럼 반복적으로 말뭉치를 보충, 확장, 수정, 또는 다르게 업데이트 하도록 구성될 수 있다.
특정 예에서, 말뭉치의 각 구성 문서는 웹페이지, 웹사이트, 책, 문집, 읽을거리, 신문, 공보, 또는 앞서 설명한 것들의 어떠한 것들의 조합 또는 콜렉션 또는 제한없이 문서들의 다른 형태가 될 수 있다. 예에서, 말뭉치(134)는 전기적으로 저장된 그리고 처리된 텍스트들의 큰 세트이다. 아래에서 더 자세히 설명되겠지만, 특정 운영들의 효율성은 큰 말뭉치를 이용하는 것에 의해 향상될 수 있다. 그래서, 적합한 수단들은, 자동화된 색인기, 웹 크롤러(web crawler), 리더(reader), 스캐너(scanner), 또는 다른 소프트웨어를 이용하는 것처럼, 말뭉치(134)를 제공하도록 이용될 수 있다. 추가 예에서, 상기 말뭉치(134)는 GoogleTM 같은 공용으로 이용가능한 검색 엔진이 공용 사용을 위해 공개한 n-gram 말뭉치를 포함할 수 있다.
다른 예에서, 공개적으로 이용가능한 검색 엔진(140)은 엔진(132)에 추가적으로, 또는 대신하여 이용된다. 검색 엔진(140)은 인터넷-접근 가능한 문서들을 검색하기 위한 엔진을 포함하고, 이는 웹 접근가능한 하이퍼미디어(hypermedia) 문서들을 포함하나 이에 제한되지는 않는다. 이러한 실시예들에서, 외부 말뭉치(142)는 말뭉치(132)에 추가로, 또는 대신하여 이용되며; 여기서 상기 외부 말뭉치(142)는 상기 외부 검색 엔진(140)으로 검색가능한 문서들의 콜렉션을 포함한다. 이 동일한 예를 계속해보면, 외부 말뭉치(142)의 하나의 예는 GoogleTM 또는 다른 검색 엔진에 의해 접근가능한 문서들 전체이다. 이러한 예에서, 외부 말뭉치(142)는 서버(120)의 부분이 아니다. 여전히 또다른 예에서, 서버(120)는 기존의 외부 말뭉치(142)를 이용하며, 외부 엔진(140) 대신 말뭉치(142)를 검색하기 위한 엔진(132)를 이용한다.
말뭉치(134) 및/또는 말뭉치(142)는 서버가 장치(102)같은 다중 장치들을 대표하여 말뭉치(134) 및/또는 (142)에 접근하는 점에 있어서 공유되거나 일반적일 수 있다.
위에서 언급된대로, 어휘 콜렉션(124)은, 본 예에서 포함하는 어휘들(126, 128)인, 다중 어휘들을 포함한다. 각 어휘들은 언급된 주제들에 관계되며, 하나의 예에서 주제들에 대응하는 n-grams 또는 단어들의 목록들을 포함한다. 묘사된 예에서, 어휘(126)는 유럽 축구에 관련되며 어휘(128)은 추수감사절 요리에 관련된다. 비록 두개의 어휘들(126, 128)이 이 예에서 보여졌지만, 실시예들은 어휘의 한묶음 (12개) 또는 백개 또는 그 이상을 포함할 수 있다. 어휘들의 내용, 조직, 및 이용은 아래에서 더 자세히 설명될 것이다.
(124)의 어휘들은 비속어에 한정되거나 또는 포함하는 적어도 하나의 어휘를 더 포함할 수 있다. 어휘들(124)은 장치 사용자들의 이용되는 언어에 기반하여 클라이언트 장치들로 다운로드되기 때문에, 이 배치(arrangement)는 비속어 어휘들이 오직 이를 알아볼 유저들에게만 제공된다는 점에서 이점을 제공한다. 게다가, 서버(120)는 장치 사용자에게 원하지 않는 분배를 피하기 위해 비속어 어휘를 수신하기 위한 사전동의를 필요로 할수도 있다. 상이한 또는 추가적인 실시예에서, 장치(102)의 그러한 어휘의 수신은 장치, 장치상에서 운영되는 하나 또는 그 이상의 응용들, 기설정된 사용자 프로필(predefined user profile)의 나이 또는 또다른 특성들, 등등에 의존할 수 있다.
말뭉치(134)와 함께, 어휘 선택(124)은 반복적으로 보충, 확장, 수정, 또는 아래에서 더 자세히 설명되는 것처럼 서버(120)에 의해 그 외의 업데이트가 될 수 있다.
실시예에서, (아래 설명된 것처럼) 어휘 선택(124)의 이용은 특정 장치들(102)에 제한될 수 있고, 완전히 생략될 수도 있고, 어떤 경우에 영향받은 장치들(120)은 서버(120)로부터 어떠한 업데이트들 없이 (112, 114)같은 그것들의 온-보드(on-board) 어휘들을 이용할 것이다. 예를 들어, 서버(120)는 구독 동의와 함께 장치들에 어휘 선택(124)와 관련된 서비스들을 제한할 수 있다.
데이터 처리 개체들의 실시예( Implementation of Data Processing Entities )
프로세서(108), 관리자(매니저, 122), 엔진(132), 엔진(140), 및 유사한 것들처럼, 시스템(100)에는 다양한 데이터 처리 구성요소들이 있다. 게다가, 시스템(100)의 다른 구성요소들은 스마트 특징들을 포함할 수 있고, 이러한 관점에서, 몇몇 데이터 처리 특징들을 포함할 수 있다. 몇몇 예들은 콜렉션(모음, 124), 말뭉치(134), 말뭉치(142), 링크(130), 저장소(110), 유저 입력 장치(106), 및 디스플레이(104)를 포함한다. 이러한 경우들 중에서, 그런 데이터 처리 특징들은 하나 또는 그 이상의 하드웨어 장치들, 소프트웨어 장치들, 하나 또는 그 이상의 하드웨어 또는 소프트웨어 장치들, 또는 앞서말한 것들의 결합에 의해 실행될 수 있다. 이러한 하위구성요소들의 구성은, 도 2-4를 참조하여, 아래에서 더 자세히 설명된다.
예시적인 디지털 데이터 처리 장치( Exemplary Digital Data Processing Apparatus )
위에서 언급된 것처럼, 도 1의 다양한 데이터 처리 객체는 다양한 처리 엔진들에 의해 실행될 수 있다. 도 2는 디지털 데이터 처리 장치(200)의 형태에서, 하나의 예를 보여준다. 장치(200)는 개인용 컴퓨터, 커스터머 집적 회로(customer circuit board), 워크스테이션, 노트북 컴퓨터, 컨트롤러, 마이크로 컨트롤러, 스테이트 머신(state machine), 또는 여기에 설명된 업무 요구에 적합한 처리 머신에 의해 실행될 수 있다.
장치(200)는, 마이크로프로세서, 컨트롤러, 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 응용 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그래머블 논리 장치, 개별 게이트 또는 트랜지스터 로직(transistor logic), 개별 하드웨어 구성요소, 또는 여기에 설명된 기능들을 수행하도록 설계된 이들의 어떠한 결합 같은, 프로세서(processor, 202)를 포함한다.
프로세서(202)는 DSP 및 마이크로프로세서의 결합, 다수의 마이크로프로세서들, DSP 코어와 함께 하나 또는 그 이상의 마이크로프로세서들, 또는 그러한 다른 어떤 구성 같은, 컴퓨팅 장치들의 결합으로 실행될 수도 있다.
프로세서는 디지털 데이터 저장소(204)와 연동된다. 본 예에서, 저장소(204)는 속성-접근 저장소(패스트-액세스 저장소, 206)뿐만 아니라 비휘발성 저장소(208)도 포함한다. 속성-접근 저장소(206)는, 예를 들어, 프로세서(202)에 의해 실행된 프로그래밍 지시를 저장하기 위해 이용될 수 있다. 저장소(206 및 208)는, 도 3 및 4와 함께 더 자세히 설명되는, 다양한 장치들에 의해 실행될 수 있다. 다양한 대안들이 가능하다. 예를 들어, 구성요소들(206, 208) 중 하나는 제거될 수 있고, 게다가, 저장소(204, 206, 및/또는 208)는 온-보드 프로세서(202)로 제공되거나 장치(200)에 외부적으로 제공될 수도 있다.
장치(200)는, 프로세서(202)가 장치(200) 외부의 다른 하드웨어와 데이터를 교환하도록 하기 위한, 커넥터, 라인, 버스, 케이블, 버퍼, 전자기 링크, 네트워크, 모뎀, 변환기(transducer), IR 포트, 안테나 같은 입력/출력(210)도 포함한다.
저장소 미디어( Storage Media )
위에서 언급된대로, 디지털 데이터 저장소의 다양한 예들은, 예를 들어, 저장소(204 및 208)(도 2)를 포함하기 위해, 또는 특정적으로 논의되거나 묘사되지 않은 예들에서 저장소를 제공하기 위해, 시스템(100)(도 1)에 의해 이용되는 (110), (124) 또는 다른 저장소 같은 저장소를 제공하는데 이용될 수 있다. 그 응용에 의존하여, 이 디지털 데이터 저장소는, 데이터를 저장하는 것과 같은, 다양한 기능들을 위해, 또는 기계-판독가능한 지시들을 저장하기 위해 이용될 수 있다. 이러한 지시들은 그들 자체로 다양한 처리 기능들을 수행하는 것을 도울 수 있고, 또는 그들은 컴퓨터 상의 소프트웨어 프로그램을 설치하도록 기능할 수 있으며, 여기서 그러한 소프트웨어 프로그램은 이 공개에 관련된 다른 기능들을 수행하기 위해 실행가능하다. 어떠한 경우에, 저장 미디어는 디지털적으로 기계-판독가능한 신호들을 저장하도록 거의 어떠한 메커니즘에 의해 실행될 수 있다. 하나의 예는 CD-ROM, WORM, DVD, 디지털 옵티컬 테이프, 디스크 저장소(300)(도 3), 또는 다른 옵티컬 저장소처럼 옵티컬 저장소(광기억장치, optical storage)이다. 또다른 예는, 종래의 "하드 드라이브", 비싸지 않은 디스크들의 중복 배열("RAID"), 또는 또다른 직접 접근 기억 장치("DASD") 같은, 직접 접근 저장소이다. 또다른 예는, 자기 또는 광학 테이프 같은 시리얼 순차-접근 저장소이다. 여전히 디지털 데이터 저장소의 다른 예들은 ROM, EPROM, 플래쉬 PROM, EEPROM, 메모리 레지스터들, 배터리 백-업 램, 등등 같은 전자 메모리를 포함한다. 예시적 저장 매체는 프로세서에 연동되고 프로세서는 저장 매체로부터 정보를 읽고, 정보를 쓸 수 있다. 대안으로, 저장 매체는 프로세서에 필수적일 수 있다. 또다른 예에서, 프로세서 및 저장 매체는 ASIC 또는 다른 집적 회로에 상주할 수 있다.
논리 회로망( Logic Circuitry )
기계-실행가능한 지시들을 포함하는 저장 매체와 대조하여, 위에서 설명된대로, 다른 실시예는 도 1로부터 하나 또는 그 이상의 데이터 처리 개체들을 실행하도록 논리 회로망을 이용한다. 속도, 지출, 장비비(tooling costs), 및 유사한 것들의 영역에서 응용의 특정 요구들에 의존하여,, 이 논리(logic)는 작은 집적 트랜지스터들을 많이 갖는 주문형 집적회로(ASIC)를 구축하는 것에 의해 실행될 수 있다. 그러한 ASIC는 CMOS, TTL, VLSI, 또는 또다른 적합한 구축과 함께 실행될 수 있다. 다른 대안들은 디지털 신호 처리 칩(DSP), 개별 회로망(레지스터들, 커패시터들, 다이오드들, 인덕터들, 및 트랜지스터들 같은), 필드 프로그래머블 게이트 어레이(FPGA), 프로그래머블 로직 어레이(PLA) 프로그래머블 로직 장치(PLD), 및 유사한 것들을 포함한다. 도 4는 직접 회로(400)의 형태로 논리 회로망의 예를 보여준다.
작업(OPERATION)
본 공개의 구조적 특징들을 설명하고, 본 발명의 작업적 관점이 이제 설명될 것이다. 여기서 공개된 실시예들과 관련된 어떠한 단계, 프로세스, 또는 알고리즘의 단계들은 하드웨어에, 하드웨어에 의해 실행되는 소프트웨어 모듈에, 또는 두개의 결합에 바로 포함될 수도 있다.
서버에서의 데이터 관리( Data Management at Server )
도입( Introduction )
도 5는 본 공개의 방법 관점에서 하나의 예를 도시하는 오퍼레이션(작업, operation, 500)을 보여준다. 오퍼레이션(500)은 원격 모바일 컴퓨팅 장치들로부터 특정 요구들을 제공하는데 이용되기 위한 데이터들의 개체를 유지하고 구축하도록 기능한다. 설명의 편의를 위해, 그러나 아무런 의도적 제한 없이, 도 5의 예는 위에서 설명된 시스템(100)의 특정 컨텍스트에서 설명된다.
(502)단계에서, 서버(120)는 말뭉치(134)를 구축한다. 단계(510)에서, 서버(120)는 어휘 선택(124)을 구축한다. 단계(502, 510)는 설명되는 것과 다른 방식으로 수행될 수 있다.
(502)단계( Step 502)
(502)단계의 하나의 관점은 서버(120)에 의해 이용되는 어떤 말뭉치 및 엔진의 결합을 선택하는 것을 포함한다. 예에서, 이는 개인적 프로그래밍 또는, 초기 구성 또는 서버의 기동처럼, 적합한 때에 서버를 구성하는 것에 의해 수행되고, 어떠한 재구성의 요구에 따라 재-수행되는 등이다.
(502)단계의 또다른 관점은 말뭉치(134)에서 컴파일된 데이터를 저장하고 데이터를 수집하기 위한 인터넷-접근가능한 문서들을 검색하는 것을 포함한다. 이러한 소스들은 웹-접근가능한 소스들, 인터넷-접근가능한 비-웹 소스들, 또는 둘 다를 포함한다. 대안적으로, 또는 추가적으로, 인터넷-접근불가능한 소스들은 말뭉치(134)의 소스들로 이용될 수 있고, 여기서 엔진(132)은 CD-ROM 또는 DVD 또는 다른 저장 매체, 스캐닝 종이 문서, 등등에서 문서들에 접근하고 로딩(loading)하는 것에 의해 (502)단계를 수행한다. (502)단계의 이러한 구성요소는 자동화된 색인기, 크롤러(crawler), 리더(reader), 스캐너(scanner), 또는 엔진(132)의 다른 소프트웨어 구성요소에 의해 수행될 수 있다.
다른 예에서, (142)같은 기존 외부 말뭉치가 이용된다. 이러한 예에서, (502)단계에서 엔진(132)는 자동화된 색인기(automated indexer), 웹 크롤러, 또는 서버(120)에 의해 더 빠른 접근을 위한 기존 말뭉치(142)를 색인화하기 위한 다른 소프트웨어를 이용할 수 있다.
여전히 또다른 예에서, 말뭉치(134)는, GoogleTM 에 의해 공개된 n-gram 말뭉치처럼, 검색 엔진의 공개된 말뭉치를 포함하고, (502)단계는 (134)에 공개된 말뭉치를 복사한다.
다른 예에서, 엔진(132) 대신에, 관리자(122)는 외부 검색 엔진(140) 및 그것의 미리-색인화된 말뭉치(142)를 이용한다. 여기서, 말뭉치(142)는 특정 검색 엔진(140)에 접근가능한 인터넷-접근가능한 문서들의 개체를 포함하고, (502)단계에서의 관리자(122)는 검색 엔진(140)에 (아래에 설명되는) 미래 검색들을 언급하기 위한 메커니즘을 구축한다. 이러한 메커니즘은 포인터, 커뮤니케이션 링크, 서브루틴 콜(subroutine call), API, 또는 검색 엔진(140)에 대한 다른 레퍼런스를 포함한다.
(504)단계( Step 504)
아래에 더 자세히 설명되는 것처럼, 서버(120)는 장치(102)처럼 클라이언트를 위해 검색을 수행한다. 클라이언트 장치(102)의 경우에서, 이러한 검색들이, 적어도 부분적으로, 서버(120)에 의해 사용자 입력 장치들(106)에서 입력되는 텍스트 입력 문자열들의 복사본들을 수신하면서 착수된다. 이러한 문맥에서, (504)단계는 사용자의 텍스트 입력 문자열들에 컨텐츠를 추가하는 것에 의해 말뭉치를 업데이트하는 엔진(132)을 포함한다. 그래서, 시간이 흐르면서, 말뭉치(132)는 시스템(100)에서 많은 다른 모바일 컴퓨팅 장치들 및 클라이언트 장치(102) 상에 입력되는 텍스트의 증가하는 개체를 수집할 것이다. 그리고, 아래에서 더 자세히 설명되는 것처럼, 이는 현재 이벤트들, 트렌드들, 뉴스들, 유행들, 언어의 변화들, 새로운 어휘, 대중 문화, 및 유사한 것들에 말뭉치(134)를 빠르게 조정하는 것을 허용한다.
예에서, (504)단계는 오프-사이트 검색 엔진(140) 및 말뭉치(142)가 이용되는지 여부에 관계없이 수행되며 이는 (134)같은 로컬 말뭉치(local corpus)를 이용하는 것이 유리하기 때문이며, 이는 사용자의 텍스트 문자열들에 반복적으로 첨부된다. (504)단계는 (504a)에 의해 묘사되는 것처럼, 주기적으로 또는 이벤트-구동으로(event-driven) 또는 스케쥴-구동으로(schedule-driven) 또는 필요에 따른 간격으로 반복된다.
(506)단계( Step 506)
(506)단계는 로컬 말뭉치(134)를 이용하는 실시예에서 수행된다. 즉, 엔진(132), 관리자(122) 또는 서버(120)의 또다른 구성요소는 최신으로 유지하는 것을 보장하기 위해 말뭉치(134)를 생성하는 다른 소프트웨어 구성요소 또는 크롤러, 자동화된 색인기, 리더, 스캐너를 재-실행(re-execute)하는 데 이점이 있다. 이는 말뭉치(134)에 새로운 컨텐츠의 추가를 포함하고, 이벤트에서 오프-사이트 말뭉치(off-site corpus, 142)가 로컬 색인과 함께 이용되며, 그래서 (506)단계는 적절한 재-색인 작업들을 포함한다.
오프-사이트 말뭉치(142) 및 검색 엔진(140)이 이용되는 경우, 서버(120)에서 로컬 색인을 유지하기 위한 작업은 생략될 수 있고, 이는 말뭉치(142)가 검색 엔진(140)을 작동시키는 개체와 관련된 크롤러에 의해 자동적으로 업데이트 되기 때문이다.
(506)단계는, (506a)에 묘사되는 것처럼, 주기적으로 또는 이벤트-구동으로(event-driven) 또는 스케쥴-구동으로(schedule-driven) 또는 필요에 따른 간격으로 반복된다.
(510)단계( Step 510)
(510)단계에서, 서버(120)는 콜렉션(124)에서 어휘들의 하나 또는 그 이상을 구축한다. 위에서 언급된대로, 콜렉션(124)의 각 어휘는 특정 주제에 대응하는 n-gram들 또는 단어들의 리스팅(목록, listing)이다. 묘사된 예에서, 어휘(126)는 유럽 축구에 관련되어 있고 어휘(128)은 추수감사절 요리에 관련되어 있다. 아래의, 표 1은 어휘(126)의 예를 보여준다.
표 1
Manchester(맨체스터) international(국제) offside(오프사이드)
league(리그) game(게임) field(필드)
MLS(MLS) victory(승리) net(넷)
player(플레이어) defense(수비) mark(마크)
Balotelli(발로텔리) trailing(뒤쳐짐) bounds(바운드)
Fabregas(파브레가스) score(스코어) sidelines(사이드라인)
Casillas(카시야스) team(팀) referee(레퍼리)
premier(프리미어) decision(결정) midfielder(미드필더)
stadium(스타디움) penalty(페널티) line(라인)
home(홈) assist(어시스트) hook(훅)
squad(스쿼드) tackle(태클) head(헤드)
goal(골) football(풋볼) foul(파울)
club(클럽) clock(클락) official(공식)
coach(코치) offense(공격) period(기간)
하나의 예에서, 어휘들은 서버(120)을 작동시키는 개체와 연계된 준비된 매뉴얼들이다. 상이한 추가적인 실시예에서, 소셜 네트워킹, 온라인 게시판, 또는 다른 커뮤니티 그룹이 특정된 주제에 어휘 리스트를 총괄적으로 모으기 위해 생성되고 등록될 수 있다. 또다른 실시예에서, 뉴스같은 특정 주제들에 대해, 관련된 어휘들은 관련 소스들로부터 용어들을 컴파일링 하는 것을 포함하는 자동화된 작업들(오퍼레이션들)을 수행하는 관리자(122)에 의해 제공될 수 있다.
(512)단계( Step 512)
(512)단계에서, 서버(120)은 하나 또는 그 이상의 어휘들을 최신으로 유지하기 위해 업데이트한다. (512)단계는 어휘(124)의 하나 또는 그 이상을 보충 또는 수정 또는 정정하기 위해 수행될 수 있다. 이는 (510)단계에서 위에서 설명된 기술들 중 어느 것을 이용하여 수행될 수 있다. (512)단계는, (512a)에 의해 설명된 것처럼, 주기적으로 이벤트-구동 또는 스케쥴-구동 또는 필요에 따른 간격으로 반복된다.
(516)단계( Step 516)
(516)단계는 특정 환경 하에서 하나 또는 그 이상의 새로운 어휘들을 생성한다. 이는 (510) 단계에서 위에서 언급된 기술들 중 어떤 것을 이용하여 수행될 수 있다. 하나의 예에서, (516) 단계는 서버(120)와 관계된 사람이나 장비의 주의를 끄는, 또는 발생한, 관련이 있는, 새로운 주제에 관한 어휘를 생성하기 위해 수행된다. 다른 예들에서, 어휘들(124) 중 하나가 오류가 생기고, 손실되고, 또는 원래 의도로부터 만족할만큼 갈라져나오는 어휘가 생각만큼 효율적이지 않게 되면 (516)단계가 실행된다. (516)단계는 (516a)에 의해 묘사되는 것처럼, 주기적으로 또는 이벤트-구동으로(event-driven) 또는 스케쥴-구동으로(schedule-driven) 또는 필요에 따른 간격으로 반복된다.
단어 예측, 완성, 및/또는 수정( Word Prediction , Completion , and / or Correction )
도 6은 본 발명의 방법 관점의 하나의 예를 도시하는 시퀀스(600)를 보여준다. 이 시퀀스(600)은 모바일 컴퓨팅 장치 상의 텍스트 기입을 가능하게 하며, 여기서 단어 예측, 완성, 및/또는 수정은 공유된 말뭉치의 검색에 의해 보충된다. 설명의 편의를 위해, 그러나 어떠한 의도적 제한 없이, 도 6의 예는 위에서 설명된 시스텝(100)의 특정 컨텍스트에서 설명된다.
텍스트 입력 수신( Receiving Text Input )
(602)단계에서, 클라이언트 장치(102)는 사용자 입력 장치(106)을 통해 텍스트 입력을 수신한다. 묘사된 예에서, 이는 하나 또는 그 이상의 글자들 또는 다른 문자들 또는 심볼들, 하나 또는 그 이상의 단어들, 문장들, 숫자 문자열들, 문자숫자식 문자열들, 또는 또다른 텍스트 단위를 포함할 수 있다. (602a)에 보여지는 것처럼, (602)단계는, 진행중 기반으로, 즉, 사용자가 텍스트를 입력할 때마다, 수행된다. 하나의 예에서, (602)단계는 클라이언트 장치(102), 저장소(110)의 부분의 독립 저장소, 또는 다른 곳에서 장치(106) 또는 프로세서(108)로 통합되는 버퍼에서 수신된 텍스트 입력을 저장한다.
(602)단계 이후에, 장치(102)는, 아래 (604, 608)단계들에서 논의되는 것처럼, 예측 및 수정의 다양한 작업들을 수행한다. 또한, 다음에 따라 더 자세히 설명되는, (602)단계 후에 장치(102)는 서버(120)에 텍스트 입력을 전송한다.
서버로의 전송( Transmission to Server )
(608)단계에서, 클라이언트 장치(102)는 서버(120)의 버퍼링된(buffered) 텍스트의 몇몇 또는 전부를 전송한다. 전송된 텍스트는 도 1에서 부호(136)에 의해 도시된다. 하나의 예에서, 서버로의 각 전송(608)은, 사용자에 의해 입력된 마지막 다섯 단어들, 또는 이백 문자들, 또는 또다른 데이터의 크기처럼, 버퍼링된 텍스트(602)의 가장 최근 부분을 포함한다. 그래서, 이 예에서, (608)단계에서 일어나는 전송은 사용자에 의해 타이핑된 새로운 텍스트를 단지 포함하는 것보다는 포괄적이다. 다른 말로, 서로가 독립적인 것처럼 서버(120)가 전송을 다룰 수 있도록 하기 위해 서버(120)로의 각 전송(608)은 버퍼링된 텍스트(602)의 (가장 최근 부분같은) 완전한 부분을 포함한다. 실시예에서, 만약 사용자가 단어 입력과 관련되어 있다면, 전송된 텍스트는 여태까지 입력된 기호들을 포함한다.
하나의 예에서, (608)단계는, (608a)에서 보여지는 것처럼 반복적으로 수행된다. 예를 들어, 장치(102)는 각 키프레스(keypress), 완성된 단어, 공간 또는 다른 구획 문자(구분자, delimiter), 또는 다른 (602)단계로부터 입력된 사용자의 다른 단위 뒤에, 또는 또다른 시간 또는 주기 또는 스케쥴 또는 이벤트-구동 간격 상에서 단계(608)을 수행하도록 프로그래밍될 수 있다. 또다른 예에서, (608)단계는 각 키프레스 뒤에 수행되고, 그러나 만약 프로세서(108)이 사용자가 규정된 속도보다 더 빠른 타이핑을 하는 것을 감지하는 경우, 장치(102)는 오직 각 단어 또는 또다른 감소된 단위 뒤에 (608)단계를 수행한다. 사용자 타이핑 속도를 감지하는 것에 대안으로, 서버(120)는 클라이언트가 다중 요청(multiple requests)들을 대기시키는 경우 결정될 수 있고, 그렇다면, 가장 최근 것 외에 모든 것을 취소할 것이다.
전송(136)은 아래에서 설명된 것처럼 어휘 관리를 보조 및/또는 단어 예측, 완성, 및/또는 수정을 가능하게 하기 위해 서버(120)에 요청하는 지시를 내포하거나 명확히 언급할 수 있다.
하나의 실시예에서, (102)같은 다양한 클라이언트 장치들이 서버(120)로부터 서비스를 구독한다. 이러한 장치들은 프로그래밍되고, 하드웨어에 내장되고, 또는 그렇지않으면 서버(120)과 상호연동하도록 구성되며, (608)단계에서 서버에 텍스트 문자열들을 전송하는 앞서 말한 동작을 유도한다.
서버에서의 수신( Receipt at Server )
(608)단계의 각 예에 대응하여, (610)단계에서 서버(120)는 (608)단계에서 전송되는 문자열(136)을 수신한다. 문자열(136)을 수신하는 것에 대응하여, 서버(120)는 이러한 상이한 절차들을 시작한다 : (1) (612)-(616)단계들에서 어휘 관리를 지원, (2) (630)단계에서 말뭉치를 업데이트, 및 (3) (620)-(626)단계들에서 단어 완성 및/또는 예측을 지원.
장치(102)는 (608a)단계에서 보여지는 것처럼 텍스트 문자열들을 반복적으로 전송하고 있기 때문에, (610)단계 및 다음 (612)-(616), (630), 및 (620)-(626) 단계들은 유사하게 반복하는 단위로 발생할 수 있다. 따라서, (610)단계 및 이후 단계들은 클라이언트 장치(102)가 현재 텍스트 문자열의 확정에서 사용자로부터 텍스트 입력을 수신하는 것을 지속하는 동안 계속될 수 있다.
여기서 이용되는 것처럼, 단어 예측은 (만약 유효 단어가 입력되지 않는다면) 다음 단어를 예측하는 동작을, 만약 유효한 것이 입력되면 현재 단어의 완성을 예측하는 동작을 대략 언급하기 위해 이용된다. 단어가 유효하게 입력되는 경우에, 예를 들어, 결과 세트는 현재 입력에 기반하여 필터링될 수 있다.
어휘 관리( Vocabulary Management )
단계(612)-(616)은 어휘 관리의 동작을 수행한다. 이러한 단계들은, 구독(subscription)이 부족한 장치들같은, 몇몇 장치들에 대해, 또는 완전히 모든 장치들에 대해, 생략하거나 스킵될 수 있다.
(612)-(616)단계들이 적용되는 경우, 그 후 (612)단계에서 관리자(122) 또는 서버(120)에서의 또다른 적당한 구성요소가 (608)단계에서 클라이언트 장치(102)로부터 수신되는 텍스트 문자열에 관계되는 콜렉션(124)에 어떠한 어휘들이 있는지 여부를 결정한다.
이 분석은, 예를 들어, 수신된 텍스트 문자열에서 단어들이 어휘들(124) 중 어떠한 단어들을 상당히 중첩하는지 여부를 결정하는 관리자(122)에 의해 수행될 수 있다. (612)단계의 대안적인 또는 추가적인 실시예는 현재 텍스트 문자열 및 각 어휘 사이의 신뢰도 측정을 컴퓨팅(계산, computing)하는 것을 포함하고, 여기서 (612)단계는 설명된 규정된 한계점 상에서 신뢰도 측정과 함께 어떠한 어휘들을 식별한다. 대안적인 또는 추가적인 고려는 중요한 부족한 것들이 다른 어휘들 몇몇 또는 전부와 중첩되는 동안 텍스트 문자열이하나의 어휘와 상당히 중첩하는지 여부이다.
만약 이전 예에서 설명된대로 (124)의 주어진 어휘와 충분한 중첩이 있는 경우, (614)단계에서 서버(120)는 주어진 어휘가 이용가능한 장치(102)에 알림(notice)을 전송한다. (616)단계에서, 장치(102)는 서버(120)에 의해 전송된 알림을 수신하고, 저장소(110)가 어휘, 장치(102) 작업량, 이용가능한 대역폭, 사용자 확인, 이용가능한 저장소 등등을 이미 포함하는지 여부와 같은 장치별 고려들(device-local considerations)에 적합한 경우, 수동으로 또는 자동으로 서버(120)로부터 어휘를 다운로드한다. 전송된 어휘가 도 1에서 (138)에 의해 예시된다. 하나의 예에서, 장치(102)는 저장소(110)에서 새로운 어휘를 저장할 수 있고, 그후 단어 예측, 완성, 및/또는 단어 수정 같은 장래의 텍스트 기입 작업들 동안 기존 어휘들(112, 114)에 따라 그것을 이용하는 것을 시작한다. 비속어 어휘의 경우, (614)단계 또는 다른 이후 작업들은 서버가 그런 어휘를 전송하기 전에 클라이언트 장치(102)가 옵트-인(동의, opt-in) 또는 수락하는 것을 요구할 수 있다. 위에서 논의된 알림-및-다운로드 시나리오에 대안적으로, 서버(120)는 장치(102)에 (612)단계에서 식별된 어휘들을 자동적으로 전송할 수 있다. 여기에 어떻게 (612)-(616)단계들이 실제로 수행되는지에 대한 예가 있다. 먼저, 텍스트 문자열이 "스코어" 및 "스타디움" 및 "발로텔리"가 포함하였기 때문에, (612)단계는 (608)로부터 장치-제출된 텍스트 문자열이 유럽 축구에 관련된 기존 어휘(126)을 중첩(overlap)하는 것을 찾아낸다. 따라서, (614)단계에서 서버(120)는 어휘(126)가 이용가능하다는 알림(notification)을 장치(102)에 전송한다. (616)단계에서, 장치(102)는 알림을 수신하고, 적절한 때에 저장소(110)에 어휘(126)를 다운로드하며, 그 후 단어 예측, 완성, 및/또는 수정같은 장치-로컬 업무들(장치별 업무들, device-local tasks)을 수행함에 있어 상기 어휘를 이용하기 시작한다. 저장소(110)가 이제 사용자가 현재 타이핑하고 있는 주제에 특정적으로 적합한 로컬 어휘(local vocabulary)를 포함하기 때문에, 상기 어휘(126)는 장치(102)가 더 정확하고 빠르게 단어 예측, 완성, 및/또는 수정 제안들을 제공하는 것을 가능하게 한다.
검색( Searching )
위에서 언급된대로, (620)-(626)단계들은 장치(102)에서 단어 예측, 완성, 및/또는 수정을 지원하기 위한 작업들에 관련되어 있다. 텍스트 입력 문자열을 수신하는 단계(610)에 대응하여, 서버(120)는 말뭉치의 컨텍스트에서 문자열의 하나 또는 그 이상의 예들을 포함하는 결과는 낳기 위한 인접 검색 용어에 따라 텍스트 입력 문자열을 이용하여 적용된 말뭉치의 검색을 수행한다. 더 특히, 상기 검색은 엔진(132) 및 말뭉치(134) 및/또는 말뭉치(142)를 이용하여, 또는 말뭉치(142)와 엔진(140)을 이용하여 수행된다. 이는 위에서 논의된대로, 서버(120)이 적용되는 방법에 의존한다. 현재 예에 대해, 실시예는 서버 엔진(132)이 말뭉치(134)를 검색하는 곳에서 논의된다.
즉, 엔진(132)는 말뭉치(134)를 (608)단계에서 전송되는 문자열을 이용하여 검색한다. 이 검색은, 말뭉치의 컨텍스트에서 검색된 문자열의, 하나 또는 그 이상의 예들, 그 외 좀 더 다중 예들을 포함하는 결과를 낳는다. 더 특히, 상기 검색은 하나 또는 그 이상의 이후 단어들이 즉시 뒤따르는 검색된 문자열의 하나 또는 그 이상의 예들을 포함하는 결과를 낳는다. 예를 들어, "~이 뒤따르는 저압(low pressure followed by)" 문자열을 이용하여, 상기 검색 결과는 말뭉치에서, 아래 표 2에서 보여지는 것처럼, 즉시 하나 또는 그 이상의 추가적인 단어들이 뒤따르는, 문자열의 예를 포함할 수 있다.

표 2( TABLE 2)
선택적 증류가 뒤따르는 저압(low pressure followed by a selective distillation)
강력한 북서쪽 강풍이 뒤따르는 저압(low pressure followed by heavy northwest gales)
경사진 또는 단계진 압력이 뒤따르는 저압(low pressure followed by ramped or staged pressure)
고압이 뒤따르는 저압(low pressure followed by high pressure)
감소하는 구름이 뒤따르는 저압(low pressure followed by decreasing clouds)
. . .
다른 예는, 아래 표 3에서 보여지는 것처럼, 관련 텍스트 문자열이 현재 오직 "low pressure fo" 만을 포함하도록, 사용자가 아직 완성되지 않은 단어 "followed" 를 능동적으로 입력하는 것에 관여하는 경우를 보여준다.

표 3( TABLE 3)
저압 안개 노즐들(low pressure fog nozzles)
저압 분무 시스템(low pressure fogging system)
저압 예측(low pressure forecast)
저압 음식(low pressure food)
저압 형성 머신(low pressure foaming machine)
. . .
결과를 향상시키기 위하여, (620)단계는 결과를 도출하는 가능한 가장 긴 인접 문자열을 이용할 수 있다. (620)단계는, 예를 들어, 동시에 상이한 문자열 길이들의 단일 맥락 이진 검색(single thread binary search) 또는 최빈 가능 길이의 다중 맥락 검색(multi thread search of the most likely lengths)을 이용하여 수행될 수 있다. 후자는 향상된 장치 응답 시간을 도출할 수 있다.
(620)단계의 하나의 예에서, 서버(120)는 인접 검색 문자열의 리딩 엣지(가장 앞, leading egde)로부터 단어를 자동적으로 드랍(drop)할 수 있고 검색 결과들이 결과를 도출하지 못하거나 결과들의 충분한 수를 도출하지 못하는 경우 검색을 반복할 수 있다. 예를 들어, 만약 "~이 뒤따르는 증가하는 저압을 갖는 분명한 앞면 대역(distinct frontal band with increasing low pressure followed by)" 에 대한 검색 결과가 없다면, 그러면 서버(120)는 자동적으로 ""~이 뒤따르는 증가하는 저압을 갖는 앞면 대역(frontal band with increasing low pressure followed by)"을 자동적으로 검색할 것이다. 하나의 예에서, 서버(120)는 검색이 의미있는 결과를 도출할 때까지 리딩-엣지(가장 앞) 단어들을 드랍(drop)하는 동작을 반복할 수 있다.
(622)단계에서, 엔진(132)은 말뭉치에서 다음 단어들을 따르는 문자열 예들의 몇몇 또는 전체를 선택하고 식별하며, 이는 이러한 것들을 클라이언트 장치에 보내기 위함이다. 표 3에서처럼, 불완전한 단어에서 텍스트 문자열이 끝난다면, 이러한 (622)단계에서 식별된 "다음(next)" 단어 또한 현재 단어의 완성을 포함한다.
다음 단어들의 각 그룹은 "세트"로 언급될 수 있다. 표 2의 예에서, 서버(120)는 "선택적 증류...(a selective distillation...)"을 포함하는 다음 단어들의 제1세트 및 "강력한 북서쪽 강풍...(heavy northwest gales...)"를 포함하는 제2세트 및 "경사진 또는 단계진 압력...(ramped or staged pressure...)"를 포함하는 제3세트 등등을 식별한다. 표 3의 예에서, 서버(120)는 "g nozzels"을 포함하는 다음 단어들의 제1세트, "gging system", "recast"를 포함하는 제3세트, 등등을 식별한다. 그래서, 각 세트은 검색 용어에 따라 이용되는 인접 텍스트 문자열 다음에 말뭉치에서 즉시 발생한다.
검색 결과가 많은 수라면, 서버(120)는 랜덤 선택 또는 아래에 설명될 순위 전략들 (ranking strategies) 중 하나 같은 더 구조적 접근에 따라 선택을 제한할 수도 있다.
(624)단계에서, 서버(120)는 클라이언트 장치(102)에 선택된 세트들을 전송한다. 이것들은 도 1에서 (139)에 의해 예시화된다. 다른 말로, 서버(120)는 아래에서 더 자세히 설명되는 것처럼 장치(120) 상에 지역적(로컬) 이용을 위한 링크(130)를 통해 식별된 다음 단어들을 전송한다. 하나의 예에서, 관리자(122)는 4(four) 같은, 다음 단어들의 고정된 숫자에 대한 각 세트들의 전송된 단어들을 제한할 수 있다.
(626)단계에서, 장치(102)는 전송된 세트들을 수신하고, 아래에서 논의된 것처럼 (604)단계의 다음 구현 동안 그것들을 지역적으로 실행한다. 예를 들어, 장치(102)는 세트들 몇몇 또는 전부의 사용자-선택가능한 목록, 현재 단어의 완성 및/또는 하나 또는 그 이상의 다음 단어들의 예측의 각 형성을 즉시 보여줄 수 있다. 더 특히, 장치(120)는 사용자 입력 장치를 통해 현재 입력된 단어들의 완성같은, 또는 사용자 입력 장치를 통해 입력될 하나 또는 그 이상의 다음 단어들의 예측들같은, 하나 또는 그 이상의 세트들을 보여줄 수 있다.
(624)단계에서 검색 결과들의 자동 전송의 대안으로, 서버(120)는 장치가 다운로드하는 것이 가능한 검색 결과들의 알림을 전송할 수 있다.
순위( 랭킹 , Ranking )
(622)단계의 하나의 예에서, 서버(120)는, 검색 결과들에서, 검색 결과 목록의 위에 세트의 근접함, 각 세트의 출현 숫자 등등처럼, 다양한 기준에 따라 검색 결과들로부터 발견되는 단어 세트들을 순서를 매길 수 있다. 이 순위는, 예를 들어 검색 결과들의 숫자가 큰 경우, 세트들이 클라이언트 장치(102)로 전송되는 것을 선택하도록 이용될 수 있다. 추가로, 또는 대안적인 예로, 서버(120)는 클라이언트 장치(102)에 순위의 알림을 전송할 수 있고, 그래서 클라이언트 장치(102)는 다음 단어 예측, 완성, 및/또는 이러한 순위들에 기반한 현재 단어 완성을 정리(명령, order)한다. 그런 순위 기술들에 대한 추가 대안 또는 개선안으로, (622)단계는 검색 결과들을 더 순위를 매기기 위한 다음 접근을 이용할 수 있다. 이 예에서, (608)단계는 장치(102)로부터 서버(120)로의 각 전송은 사용자에 의해 쳐졌을 법한 다양한 키들의 표현같은 아이템들, 각 키가 쳐졌을(struck) 가능성, 문자 인접들, 대체 문자들, 및 유사한 것들을 더 포함한다. 이는 소프트 및 하드 키보드들 양쪽에 대해 소프트 키보드를 수용하고 또한 키입력 에러 키입력 에러를 수용한다. 이러한 가능성들을 결정하기 위한 몇몇 예들은, Erland Unruh의 이름으로 2010.11.4에 출원된, "SPELL-CHECK FOR A KEYBOARD SYSTEM WITH AUTOMATIC CORRECTION"라는 명칭의 미국 특허 출원 No. 12/939,918에서 공개된다. 앞서 말한 특허 출원 전체는 레퍼런스에 의해 여기에 첨부된다. 앞선 예에 대조하여, 단계(608)의 전송은 키 누름들의 위치 또는 소프트 키보드에 추적된 경로를 정의할 수 있고, 그래서 서버(120)는 다양한 키입력 가능성을 해결한다.
이 예를 계속 들면, (622)단계의 검색 결과들로부터 세트-편집-거리에 대한 어휘들이 단어 세트들이 되는 것과 함께, 서버(120)는 현재 사용자에 의해 입력되는 단어에 대해 '938 특허에서 설명되는 출원 세트-편집-거리(set-edit-distance) 계산을 수행한다. 검색 결과들에서의 단어들은, 그래서, 그들의 세트-편집-거리에 따라 순위가 매겨진다. 자유로운 추가 및 삭제, 키입력 가능성, 및 유사한 것들처럼 다른 비교 특성들은 검색 결과들을 개선하기 위해 이용될 수 있다.
말뭉치 업데이트( Updating Corpus )
상기 언급된 것처럼, (610)단계는 (612)-(616)단계들, (630)단계, 및 (620)-(626)단계들이 뒤따른다. (612)-(616) 단계들 및 (620)-(626)단계들은 위에서 논의되었다.
(630)단계에서, 서버(120)는 말뭉치(134)를 업데이트한다. 즉, 관리자(122)는 단계(608)에서 수신된 문자열을 취하고 이 문자열을 갖는 말뭉치(134)를 첨부한다. 그 후에, 저장된 문자열은 이 장치(102) 및 다른 것들에 의해 장래 검색을 위해 말뭉치로서 기능하게 된다. 추가로, 장치(102) 및 다른 장치들은 (604)단계에서 (아래에서 논의되는 것처럼) 단어 예측, 완성, 및/또는 수정을 보여주며, 이는 다른 것들의 장치들로부터 말뭉치에 추가되는 단어들을 표시(display)하는 것을 포함한다. 이는 사람들이 그들의 장치들로 무엇을 타이핑하는지에 기반하여, 현재 이벤트들, 트렌드들, 뉴스들, 유행들, 언어의 변화들, 대중 문화, 및 유사한 것들에 대해 빠르게 조정하는 것을 허용한다.
단어 예측( Word Prediction )
위에서 언급된 것처럼, (602)단계에서 수신된 텍스트 입력을 포함하는 정보에 기반하여, 클라이언트 장치(102)는 (604)단계에서 단어 예측 및/또는 완성을 수행한다. 즉, 클라이언트(102)는 입력된 현재 및/또는 다음 단어를 위한 제안들로서 하나 또는 그 이상의 목록들에서 서버(602)로부터 수신된 텍스트 입력을 표시한다. 장치(102)는 리스트로부터 단어(및/또는 단어 완성)을 선택하는 장치(102)의 오퍼레이터(operator)를 이용가능하게 하는 사용자 인터페이스에서 제안된 텍스트를 제시하며, 그래서 단어는 사용자의 텍스트로 입력된다.
(604)단계에서 현재 및/또는 다음 단어 예측은 다음 공개들에서 설명된 것같은 기술들을 이용할 수 있다. (1) 1998.10.6에 발행된 "KEYBOARD DISAMBIGUATING COMPUTER"의 명칭을 갖는 미국 특허 No. 5,818,437, (2) 2010.3.16에 발행된 "CONTEXTUAL PREDICTION OF USER WORDS AND USER ACTIONS"의 명칭을 갖는 미국 특허 No. 7,679,534, (3) Radiology Report Entry with Automatic Phrase Completion Driven by Language Modeling, by Eng and Eisner, Radiographics, 24, 1493-1501 (9월, 2004). 앞서 말한 공개들의 전체는 레퍼런스에 의해 여기에 첨부된다.
(604)단계는 (604a)에 의해 보여지는대로 반복될 수 있다. 하나의 예에서, (604)단계는 새로운 키입력, 심볼, 캐릭터, 단어, 간격(space), 기설정된 구획 문자(predefined delimiter), 또는 다른 텍스트의 유닛을 수신하는 각 시간마다 반복된다. 게다가, (604)단계는 (616)단계에 따른, 서버(120)로부터 장치(102)가 어휘를 수신할 때마다 반복되거나 업데이트 될 수 있다. (604)단계는 서버(120)로부터 장치(102)가 검색 결과들을 수신하는 때마다 더 반복될 수 있다.
하나의 예에서, 프로세서(108)는 프로세서(108)가 사용자가 설명된 속도보다 더 빠른 타이핑을 하고 있는 것을 감지하는 경우 단어 예측/완성 후보들의 표시를 제한할 수 있고, 이 경우 장치(102)는 각 단어 또는 또다른 감소된 간격 후에 오직 (604)단계를 수행한다. 상이한 예에서, 사용자가 스페이스(space) 또는 구획 문자 또는 문장을 끝마치는 구두점을 입력하는 것처럼, 유효(active) 키입력이 없는 경우마다 장치(102)는 단어 예측/완성을 적용한다. 설명된 속도 접근에 대안 또는 추가로서, 클라이언트가 대기되는 다중 요청들을 갖는 경우, 그렇다면, 가장 최근 것을 제외한 것을 취소하도록 서버(120)가 결정될 수 있다. 상이한 예에서, 장치는 최근의 알려진 결과를 유지할 수 있고 그것을 다음 결과가 도착하기 전까지 가능한 많이 적용할 수 있고 대체할 수도 있다. 사용자가 더 많은 텍스트를 추가하는 것을 계속하는 것에 따라, 장치(102)는 사용자의 계속된 텍스트 입력과 더 이상 일관되지 않는 후보들을 제거하는 것에 의해 사용자에게 제시되는 단어 예측/완성 후보들을 개선한다.
서버(120)로부터 수신된 텍스트를 추가하는 것에 의해, (604)단계의 단어 예측/완성은 (112), (114)같은 하나 또는 그 이상의 로컬 어휘들을 이용할 수도 있다. 어휘들(112, 114)로부터의 제안들(proposals)은 ((626)단계를 통해) 서버(120)로부터 텍스트와 결합될 수 있다. 하나의 예에서, 장치(102)는 대부분의 단어 예측/완성 업무들 중 주요한 것(primary one)에 의존한다. 주요 어휘는, 예를 들어, 장치(102)에 자동-설치되거나 빌트-인될 수 있다. 서버(120)로부터 다운로드된 어휘들 같은, 어떠한 보충 어휘들에 대해, 장치(120)는 단어들의 근접 모음(contiguous body)에 따른 주요 어휘들과 이것들의 결합을 고려할 수 있고, 다운로드된 어휘들은 사용자에게 단어 완성 제안들 및 다음 단어의 순위를 정하기 위한 그러한 개별 목적을 위해 이용될 수 있다. 예를 들어, 만약 장치(102)가 축구 논의에 대한 사용자들의 애호 때문에 유럽 축구와 관련된 어휘를 다운로드하였다면, 장치(102)는 축구 관련 단어들을 인식하고 사용자에게 제안된 단어 예측/완성에서 그들을 포함하고 증진하는 것에 있어 이 어휘들을 이용할 수 있다.
실시간으로 새로운 어휘들을 다운로딩하는 많은 이점 중의 하나는, 위에서 (614)-(616)단계들에서 논의되었던 것처럼, 사용자가 타이핑하는 주제에 기반하여 실시간으로 사용자의 어휘가 업데이트 될 수 있다는 것이다.
(626)단계에서 서버(120)로부터 수신된 단어 세트들이 순위가 매겨지는 곳에서, (604)단계는 이러한 순위들에 기반하여 장치(102)가 사용자에게 표시되는 다음 단어 예측들 또는 현재 단어 완성들을 정리하는 것처럼 수행될 수 있다.
(630)단계에서 말뭉치에 대해 사용자의 검색 용어들을 추가하는 것의 많은 이점들 중 하나는, 위에서 설명된대로, 서버가 (620)단계에서 말뭉치(620)을 검색하는 때에, 상기 검색이 검색 결과들에 이러한 추가들도 포함한다는 것이다.
그래서, 만약 많은 사용자들이 "tsunami" 또는 "Obama" 같은 특이한 단어 또는 새로운 제품들 같은 조어(coined word)를 논의하기 시작하는 경우, 이러한 단어들은 거의 즉시 검색 결과들(622)에 나타나기 시작할 것이다. 결과적으로, 이러한 단어들은 (624), (626)단계들에서 장치(102)에 대해 이용가능하도록 만들어지고, (604)단계에서 수행되는 단어 예측/완성에 포함된다.
하나의 예에서, 상기 장치는 사용자로부터 새로운 키 입력 후에 단어 예측/완성 후보들의 표시를 업데이트 할 수 있다. 추가적 또는 대안적 예에서, 상기 장치는 (626)단계에 따라 서버(120)으로부터 결과가 도착할 때마다 단어 예측/완성의 표시를 업데이트 할 수 있다.
입력 수정(Input Correction )
단어 예측/완성에 더하여, 또는 그 대신에, 장치(102)는 수정의 다른 형태들을 적용할 수 있다. 예를 들어, (606)단계는 예측에 기반하여 이미-입력된 텍스트의 수정(correction) 또는 재정리(재명령, reordering)를 수행할 수 있다. 예를 들어, 다중 단어들을 포함하는 문자열에서, 수정 기반 컨텍스트(context)는 , 단지 이전에 입력된 단어들이 아닌, 수정된 단어 이후 단어들(words subsequent to the corrected word)을 포함하는 컨텍스트(context)에 기반하여 하나 또는 그 이상의 단어들에 대한 수정을 포함한다. 이 예에서, 장치(102)는 사용자가 여전히 타이핑하는 동안 사용자가 입력하는 것 주위의 단어들을 변경할 수 있다. 이는 많은 목적들에 유용하며, 문자 S가 전치되는 곳에서 수정 예들을 포함하며, 이는, 다음 단어의 시작에 잘못 입력되고 한 단어의 끝에서 소실된 것이다. 예를 들어, 12-키 기입 "4663" 로 시작하는 문장은 애매모호하며 이는 "good"과 "home"을 모두 나타내기 때문이며, 그래서 메시지에서 제1단어인 경우 일반 n-gram 예측에 기반하여 해결(결정, resolved)될 수 없다. 그러나, 이후 입력된 사용자 입력은 이전에 입력된 사용자 입력을 결정하기 위해 이용가능하기 때문에 그러한 입력들은 (606)단계 하에서 결정될 수 있다. 이 실시예에서, 더 많은 정보/컨텍스트가 이용가능한 경우 장치(102)는 예비적인 단어들과 통신하기 위해 사용자 입력의 더 큰 "영역(area)"을 유지하고 가시화하며(visualizes) 그들을 변경하는 것을 가능케한다. 예에서, 텍스트에서 고정(록킹, locking)을 위해 자동 및/또는 수동 선택들이 있기 때문에, 장치(102)는 모든 입력된 텍스트를 변경하는 것을 허용하는 것은 아니다. 제한들(limitations)은 이미 쓰여진 텍스트들 "내에서(inside)" 사용자가 추가하거나 편집할 때 적용할 수 있다. 그리고 비록 텍스트가 더 이전 것으로부터 아마 "고정(locked)"될 수 있지만, 모든 새로운 입력 및 편집들은 쓰여진 그리고 쓰여지고 있는 것의 "지연된/늦은"(delayed/lazy) 예측의 대상이 될 수 있다.
다른 실시예들(OTHER EMBODIMENTS)
앞서 말한 발명들이 다수의 설명적인 실시예들을 보여주고 있지만, 첨부된 청구항에 의해 정의되는 발명의 범위에서 벗어나지 않는 다양한 변경 및 수정들이 여기서 만들어질 수 있다는 것은 해당 기술 분야에서 통상의 기술을 가진 자에게 명백할 것이다. 따라서, 공개된 실시예들은 본 발명에 의해 넓게 고려되는 주제들의 표현을 대표하는 것이고, 발명의 범위는 기술 분야에서 통상의 지식을 가진 자에게 명백할 다른 실시예들을 완전히 아우르는 것이며, 따라서 발명의 범위는 단지 첨부된 클레임에 의해 제한될 것이다.
해당 기술 분야의 통상의 기술자에게 알려진 또는 나중에 알려지게 될 위에서 설명된 실시예들의 구성요소들에 대한 모든 구조적이고 기능적인 균등물들은 여기서 레퍼런스에 의해 분명히 포함되며 현재 클레임들에 의해 포함되기 위함이다. 게다가, 현재 클레임들에 의해 포함될 것에 대해, 본 발명에 의해 해결될 각각 및 모든 문제들을 다룰 장치 또는 방법을 필요로 하지는 않는다. 게다가, 본 발명의 요소, 구성, 또는 방법 단계는 요소, 구성, 또는 방법 단계들이 청구항들에서 명쾌하게 언급되었는지 여부에 무관하게 공개만을 위한 의도는 아니다. 여기의 청구항 구성요소는, 상기 구성요소가 "~을 위한 수단" 구절, 방법 클레임의 경우, "~을 위한 단계." 구절을 이용하여 명확히 언급되기 전까지, 35 USC. 112, 6번째 단락의 조건에 의거하여 이해된다.
게다가, 비록 본 발명의 구성요소들이 단수로 설명되거나 청구되었더라도, 단수인 구성요소에 대한 레퍼런스는 명백히 그렇게 언급되지 않는 한, "하나 또는 단지 하나"를 의미하기 위한 의도가 아니며, "하나 또는 그 이상"을 의미할 것이다. 추가적으로, 일반적으로 숙련된 기술자들은 작업적 순서들이 설명 및 청구(claiming)의 목적을 위해 몇몇 특정 순서로 설명되어야 하는 것을 인식할 것이나, 본 발명은 그러한 특정 순서를 넘어 다양한 변경을 고려할 수 있다. 추가로, 관련 기술에서 일반적인 기술을 가진 자들은 정보 및 신호들이 다양한 상이한 기술들 및 테크닉들을 이용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 여기에 첨부된 어떠한 데이터, 지시, 정리, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기적 파동들, 자기장 또는 입자들, 광학 필드들 또는 입자들, 다른 아이템들, 또는 앞서 말한 것들의 결합에 의해 표현될 수 있다.
게다가, 일반적으로 숙련된 기술자들은 여기에서 설명된 어떠한 도시적인 논리 블록들, 모듈들, 회로들, 및 진행 단계들이 전기 하드웨어, 컴퓨터 소프트웨어, 또는 양쪽의 결합에 의해 실행될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이 상호교환성을 명확히 설명하기 위해, 다양한 설명적인 구성요소들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능성의 관점에서 일반적으로 위에서 설명되었다. 그러한 기능성이 하드웨어 또는 소프트웨어로 실행되는지 여부는 전체적인 시스템 상에 부과되는 설계 제한 및 특정 응용상에 달려있다. 숙련된 기술자들은 각 특정 응용들을 위한 다양한 방법으로 설명된 기능들을 실행할 수 있으나, 그러한 실시 결정이 본 발명의 범위로부터 벗어나는 것으로 해석되어서는 안된다.
이 명세서는 다양한 제목들 및 서브제목들과 함께 설명되었다. 이러한 것들은 명세서에서 자료 참조 및 검색 프로세스를 쉽게 하고 이해도를 향상시키는 것에 포함된다. 이러한 제목들 및 서브제목들, 어떠한 방식으로도 청구범위를 제한하거나 청구항들의 해석에 영향을 주기 위해 의도된 것을 아니며, 그렇게 사용되어서는 안된다.

Claims (17)

  1. 사용자 입력 장치를 통해, 기호들의 문자열을 포함하는 텍스트 입력(text input)의 사용자 기입(user entry)을 수신하는 단계;
    근접 검색 용어로서 상기 문자열의 적어도 끝 부분을 이용하여 말뭉치의 검색을 수행하는 원격 사이트에 지시(instructions)들을 무선으로 전송하는 단계;
    각 세트(set)는 상기 검색 용어 직후 상기 말뭉치에서 발생하며, 하나 또는 그 이상의 단어들의 다중 세트들을 포함하는 상기 원격 사이트로부터 상기 검색의 결과를 무선으로 수신하는 단계; 및
    표시된 텍스트 입력의 수정, 표시된 텍스트 입력의 완성, 장래 텍스트 입력의 예측 중 하나 또는 그 이상을 수행하기 위해 상기 세트들을 이용하는 단계;의 작업들을 포함하는 방법.
  2. 제1항의 작업들을 포함하는 작업들을 수행하기 위한 프로그램의 비-일시적 저장을 포함하는 컴퓨터 판독가능한 저장 매체.
  3. 제1항의 작업들을 포함하는 작업들을 수행하도록 구성된 제2프로그램, 컴퓨터 상에 제2프로그램을 설치하기 위한 컴퓨터에 의해 실행가능한 제1프로그램의 비-일시적 저장을 포함하는 컴퓨터 판독가능한 저장 매체.
  4. 제1항의 작업들을 포함하는 작업들을 수행하도록 구성된 다중 상호연결된 전기적 전도성 원소들의 회로망을 포함하는 장치.
  5. 표시장치(display);
    적어도 하나의 사용자 입력 장치; 및
    상기 사용자 입력 장치 및 표시장치와 연동된 적어도 하나의 프로세서를 포함하며,
    상기 프로세서는 제1항의 작업들을 포함하는 작업들을 수행하도록 프로그램된 것을 특징으로 하는 휴대용 컴퓨팅 장치.
  6. 제1항 또는 제2항 또는 제4항 또는 제5항에 있어서,
    상기 이용 작업은,
    상기 사용자 입력 장치를 통해 현재 입력되고 있는 단어의 완성으로 상기 세트들 중 하나 또는 그 이상을 표시하는 단계;
    상기 사용자 입력 장치를 통해 입력될 하나 또는 그 이상의 다음 단어들의 예측으로 상기 세트들 중 하나 또는 그 이상을 표시하는 단계;
    중 어느 하나 또는 그 이상을 포함하는 것을 특징으로 하는 발명.
  7. 제1항 또는 제2항 또는 제4항 또는 제5항에 있어서,
    상기 작업들은, 상기 검색 결과들에서 상기 세트들의 출현 숫자를 포함하는 기준에 따른 세트들의 순위에 기반하여, 상기 순위들에 따른 표시된 세트들을 정리하는 단계;를 더 포함하는 것을 특징으로 하는 발명.
  8. 제1항 또는 제2항 또는 제4항 또는 제5항에 있어서,
    상기 작업들은,
    상기 문자열의 사용자 기입 동안,
    상기 문자열에서 각 기호의 기입, 상기 문자열에서 기설정된 구획 문자 또는 스페이스(space)의 기입, 상기 문자열에서 단어의 완성 : 중 어떤 것에 대응하는 전송, 수신 및 이용하는 작업들을 반복하는 작업;을 더 포함하는 것을 특징으로 하는 발명.
  9. 제1항 또는 제2항 또는 제4항 또는 제5항에 있어서,
    상기 문자열은 다중 단어들을 포함하며,
    상기 작업들은 하나 또는 그 이상의 단어들에 대한 수정을 제안하는 단계를 더 포함하며, 수정된 단어 이후 단어들을 포함하는 컨텍스트에 기반하여 상기 단어들 중 적어도 하나에 대한 수정이 이루어지는 것을 특징으로 하는 발명.
  10. 제1휴대용 컴퓨팅 장치의 하나 또는 그 이상의 사용자 입력 장치들을 통해, 기호들의 문자열을 포함하는 텍스트 입력의 기입(entry)을 수신하고;
    상기 제1휴대용 컴퓨팅 장치는 원격 사이트에 상기 문자열을 무선으로 전송하며;
    상기 원격 사이트는 말뭉치의 문자열의 하나 또는 그 이상의 예들을 포함하는 결과들을 도출하기 위해 근접 검색 용어로 적어도 상기 문자열의 끝 부분을 이용하여 말뭉치의 검색을 수행하며,
    상기 원격 사이트는 상기 말뭉치에서 문자열 중 하나 또는 그 이상의 예들을 따르는 하나 또는 그 이상의 단어들을 식별하며, 상기 제1휴대용 컴퓨팅 장치에 대해 식별된 단어들을 무선으로 전송하고,
    상기 제1휴대용 컴퓨팅 장치는,
    수신된 텍스트 입력의 완성의 예측, 상기 사용자 입력 장치를 통한 추가 텍스트 입력의 예측, 상기 사용자 입력 장치를 통해 수신된 텍스트 입력에 대한 수정 중 어느 하나 또는 그 이상과 관련된 식별된 단어들 중 하나 또는 그 이상의 목록을 표시하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 전송 작업은,
    텍스트 입력이 입력되는 동안 각 다중 시간들에서, 상기 시간에서 적어도 상기 문자열의 끝 분분의 컨텐츠를 이용하여 상기 말뭉치의 검색을 수행하기 위한 상기 원격 사이트에 대한 지시들을 전송하는 단계를 포함하며,
    상기 작업들은 상기 각 다중 시간들에서 상기 문자열의 컨텐츠들에 대한 수행, 식별, 및 표시 작업들을 반복하는 것을 더 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 다중 시간들은,
    상기 텍스트 입력에서 각 기호들의 기입 후, 상기 텍스트 입력에서 다른 기설정된 구획 문자 또는 스페이스(space)의 기입 후, 상기 텍스트 입력에서 단어의 완성 후, 중 어느 것에 대응하는 것을 특징으로 하는 방법.
  13. 제10항에 있어서, 상기 작업들은
    (a) 원격 사이트가 상이한 주제들과 관련된 다중 기설정된 어휘들을 구축하는 단계,
    (b) 상기 제1휴대용 컴퓨팅 장치로부터 문자열을 수신하는 것에 반응하여, 상기 원격 사이트가 관련 주제들이 상기 문자열의 컨텐츠에 가장 가까이 관련된 어휘들 중 하나 또는 그 이상을 식별하는 단계,
    (c) 상기 원격 사이트가 상기 제1휴대용 컴퓨팅 장치에 대해 식별된 어휘들의 하나 또는 그 이상을 무선으로 전송하는 단계,
    (d) 상기 제1휴대용 컴퓨팅 장치가, 수신된 텍스트 입력의 완성을 예측, 수신된 텍스트 입력을 따르는 다음 단어들의 예측, 또는 수신된 텍스트 입력의 수정 중 어느 것을 수행하는데 있어 전송된 하나 또는 그 이상의 어휘들을 수신하고 저장하며 상기 저장된 어휘들을 이용하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    (b) 내지 (d) 의 작업들은 상기 장치가 상기 문자열의 확장에 있어 추가 텍스트 입력을 수신하는 동안 수행되는 것을 특징으로 하는 방법.
  15. 제10항에 있어서,
    상기 작업들은,
    원격 사이트가 상기 말뭉치에 대해 상기 문자열을 추가하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  16. 제10항에 있어서,
    상기 말뭉치에 상기 제1휴대용 컴퓨팅 장치 외에 하나 또는 그 이상의 제2휴대용 컴퓨팅 장치로부터도 문자열들을 추가하는, 상기 말뭉치에 상기 문자열을 추가하는 원격 사이트;를 더 포함하며,
    상기 식별된 단어들의 하나 또는 그 이상의 목록을 표시하는 상기 제1휴대용 컴퓨팅 장치의 작업은 하나 또는 그 이상의 제2휴대용 컴퓨팅 장치들의 문자열로부터 상기 말뭉치에 추가되는 하나 또는 그 이상의 단어들의 표시를 포함하는 것을 특징으로 하는 방법.
  17. 제10항에 있어서,
    규정된 기준을 초과하는 상기 제1휴대용 컴퓨팅 장치의 사용자의 타이핑 속도, 아직 완성되지 않은 전송 작업에 대해 상기 제1휴대용 컴퓨팅 장치로부터 수신된 다중 문자열들을 가지는 상기 원격 사이트 중 어느 것에 대응하는 전송, 수행, 식별, 또는 표시 작업들의 어느 하나 또는 그 이상을 중단하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020137014114A 2010-11-10 2011-11-10 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 또는 수정이 가능한 텍스트 기입 KR101599826B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/943,856 2010-11-10
US12/943,856 US9626429B2 (en) 2010-11-10 2010-11-10 Text entry with word prediction, completion, or correction supplemented by search of shared corpus
PCT/US2011/060192 WO2012064959A1 (en) 2010-11-10 2011-11-10 Text entry with word prediction, completion, or correction supplemented by search of shared corpus

Publications (2)

Publication Number Publication Date
KR20130108619A true KR20130108619A (ko) 2013-10-04
KR101599826B1 KR101599826B1 (ko) 2016-03-07

Family

ID=46020621

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137014114A KR101599826B1 (ko) 2010-11-10 2011-11-10 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 또는 수정이 가능한 텍스트 기입

Country Status (5)

Country Link
US (1) US9626429B2 (ko)
EP (1) EP2638486A4 (ko)
KR (1) KR101599826B1 (ko)
CN (1) CN103262073B (ko)
WO (1) WO2012064959A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022025410A1 (ko) * 2020-07-29 2022-02-03 삼성전자주식회사 제공되는 컨텐츠를 기반으로 검색어를 추천하는 전자 장치 및 그 제어 방법

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065624B2 (en) * 2007-06-28 2011-11-22 Panasonic Corporation Virtual keypad systems and methods
KR101542136B1 (ko) 2009-03-31 2015-08-05 삼성전자 주식회사 문자 메시지 작성 방법 및 이를 이용한 휴대 단말기
EP2557183A1 (de) 2011-08-12 2013-02-13 Siemens Aktiengesellschaft Verfahren zum Betrieb einer Konti-Glühe für die Verarbeitung eines Walzguts
CN102629160B (zh) 2012-03-16 2016-08-03 华为终端有限公司 一种输入法、输入装置及终端
US20130253908A1 (en) * 2012-03-23 2013-09-26 Google Inc. Method and System For Predicting Words In A Message
US10354650B2 (en) * 2012-06-26 2019-07-16 Google Llc Recognizing speech with mixed speech recognition models to generate transcriptions
KR20140011073A (ko) * 2012-07-17 2014-01-28 삼성전자주식회사 텍스트 추천 방법 및 장치
US9081482B1 (en) 2012-09-18 2015-07-14 Google Inc. Text input suggestion ranking
CA2862955C (en) 2014-09-10 2023-08-15 Ibm Canada Limited - Ibm Canada Limitee Kernel based string descriptors
US9519688B2 (en) * 2014-10-18 2016-12-13 International Business Machines Corporation Collection and storage of a personalized, searchable, unstructured corpora
US20160110327A1 (en) * 2014-10-20 2016-04-21 Lenovo (Singapore) Pte. Ltd. Text correction based on context
US9898455B2 (en) * 2014-12-01 2018-02-20 Nuance Communications, Inc. Natural language understanding cache
CN105869631B (zh) * 2015-01-21 2019-08-23 上海羽扇智信息科技有限公司 语音预测的方法和装置
CN104615591B (zh) * 2015-03-10 2019-02-05 上海触乐信息科技有限公司 基于上下文的前向输入纠错方法和装置
US9922647B2 (en) 2016-01-29 2018-03-20 International Business Machines Corporation Approach to reducing the response time of a speech interface
US11334800B2 (en) * 2016-05-12 2022-05-17 International Business Machines Corporation Altering input search terms
US20180101599A1 (en) * 2016-10-08 2018-04-12 Microsoft Technology Licensing, Llc Interactive context-based text completions
US11520412B2 (en) * 2017-03-06 2022-12-06 Microsoft Technology Licensing, Llc Data input system/example generator
US11263399B2 (en) * 2017-07-31 2022-03-01 Apple Inc. Correcting input based on user context
KR102424514B1 (ko) * 2017-12-04 2022-07-25 삼성전자주식회사 언어 처리 방법 및 장치
US10642939B2 (en) * 2018-02-24 2020-05-05 Twenty Lane Media, LLC Systems and methods for generating jokes
US11080485B2 (en) 2018-02-24 2021-08-03 Twenty Lane Media, LLC Systems and methods for generating and recognizing jokes
US10878817B2 (en) * 2018-02-24 2020-12-29 Twenty Lane Media, LLC Systems and methods for generating comedy
US10685180B2 (en) * 2018-05-10 2020-06-16 International Business Machines Corporation Using remote words in data streams from remote devices to autocorrect input text
KR20200103236A (ko) 2019-02-22 2020-09-02 삼성전자주식회사 수기에 기반한 입력을 디스플레이하기 위한 방법 및 장치
US11816422B1 (en) 2022-08-12 2023-11-14 Capital One Services, Llc System for suggesting words, phrases, or entities to complete sequences in risk control documents

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289141A1 (en) * 2004-06-25 2005-12-29 Shumeet Baluja Nonstandard text entry
KR20070072844A (ko) * 2007-06-18 2007-07-06 엔에이치엔(주) 자동완성 컨텐츠 제공 시스템, 방법 및 상기 방법을실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한기록 매체

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7679534B2 (en) * 1998-12-04 2010-03-16 Tegic Communications, Inc. Contextual prediction of user words and user actions
US7286115B2 (en) 2000-05-26 2007-10-23 Tegic Communications, Inc. Directional input system with automatic correction
US7113950B2 (en) * 2002-06-27 2006-09-26 Microsoft Corporation Automated error checking system and method
US6983280B2 (en) * 2002-09-13 2006-01-03 Overture Services Inc. Automated processing of appropriateness determination of content for search listings in wide area network searches
JP2006526818A (ja) * 2003-04-24 2006-11-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ コンテンツのピアツーピア転送方法及び装置
US20050114114A1 (en) * 2003-11-26 2005-05-26 Ariel Rudolph System and method for providing a translational dictionary
US7757074B2 (en) * 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US20070016559A1 (en) 2005-07-14 2007-01-18 Yahoo! Inc. User entertainment and engagement enhancements to search system
US7461059B2 (en) * 2005-02-23 2008-12-02 Microsoft Corporation Dynamically updated search results based upon continuously-evolving search query that is based at least in part upon phrase suggestion, search engine uses previous result sets performing additional search tasks
US20060195435A1 (en) 2005-02-28 2006-08-31 Microsoft Corporation System and method for providing query assistance
US20060294050A1 (en) 2005-06-28 2006-12-28 Microsoft Corporation Retrieving server-based help content
US8156135B2 (en) * 2006-12-22 2012-04-10 Yahoo! Inc. Method and system for progressive disclosure of search results
CN101645065B (zh) 2008-08-05 2016-02-24 北京搜狗科技发展有限公司 确定需要加载的辅助词库的方法、装置及输入法系统
US20100114887A1 (en) 2008-10-17 2010-05-06 Google Inc. Textual Disambiguation Using Social Connections
EP2438540A1 (en) * 2009-06-01 2012-04-11 AOL Inc. Providing suggested web search queries based on click data of stored search queries

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050289141A1 (en) * 2004-06-25 2005-12-29 Shumeet Baluja Nonstandard text entry
KR20070072844A (ko) * 2007-06-18 2007-07-06 엔에이치엔(주) 자동완성 컨텐츠 제공 시스템, 방법 및 상기 방법을실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한기록 매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022025410A1 (ko) * 2020-07-29 2022-02-03 삼성전자주식회사 제공되는 컨텐츠를 기반으로 검색어를 추천하는 전자 장치 및 그 제어 방법

Also Published As

Publication number Publication date
KR101599826B1 (ko) 2016-03-07
US9626429B2 (en) 2017-04-18
CN103262073A (zh) 2013-08-21
US20120117101A1 (en) 2012-05-10
WO2012064959A1 (en) 2012-05-18
EP2638486A1 (en) 2013-09-18
EP2638486A4 (en) 2018-03-14
CN103262073B (zh) 2017-12-22

Similar Documents

Publication Publication Date Title
KR101599826B1 (ko) 공유된 말뭉치의 검색에 의해 보충되는 단어 예측, 완성, 또는 수정이 가능한 텍스트 기입
CN102301358B (zh) 使用社交联系的文本消歧
CN102144228B (zh) 根据输入字符序列的资源定位符建议
US9167070B2 (en) Widget discovery in computing devices
CA2633959C (en) Mobile device retrieval and navigation
CN100483416C (zh) 一种字符输入的方法、输入法系统及词库更新的方法
JP5328149B2 (ja) あいまいなキャラクタの明確化
US8326829B2 (en) System and method for displaying publication dates for search results
AU2005259925B2 (en) Nonstandard text entry
US10929603B2 (en) Context-based text auto completion
US20060259479A1 (en) System and method for automatic generation of suggested inline search terms
US8612879B2 (en) Displaying and inputting symbols
CN101876878A (zh) 单词预测输入系统及方法
CN102426511A (zh) 系统级搜索的用户界面
CN102314439A (zh) 与应用接口相结合的输入方法和设备
JP6507541B2 (ja) 情報表示機器、情報表示プログラムおよび情報表示方法
CN101571874A (zh) 一种手机信息搜索排序系统
CN103106214A (zh) 一种候选词组输出方法和电子设备
JP2012058987A (ja) ユーザにアプリケーションを推薦する配信サーバ及び配信方法
JP3548955B2 (ja) 問題解決データベース検索システム及び問題解決データベース検索プログラムを記録したコンピュータ読み取り可能な記憶媒体
JP2003157257A (ja) 辞書装置及び自然言語処理システム
Buyukkokten Wireless Web access on handheld devices

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
X701 Decision to grant (after re-examination)
LAPS Lapse due to unpaid annual fee