This application is a Submission Under 35 U.S.C. § 371 for a U.S. National Stage Patent Application of International Application Number PCT/EP2006/063289, filed 16 Jun. 2006, and entitled AUTOCOMPLETION METHOD AND SYSTEM, which is related to and claims priority to European Application No. EP20050112043, filed Dec. 13, 2005, the entirety of each of which is hereby incorporated by reference.
The present invention relates to auto-completion mechanisms.
The human interfaces of certain electronic devices or software environments offer an auto-completion function, where the interface attempts to identify a portion of information which might complete that already entered by a user, thereby saving the user the trouble of explicitly entering that remaining portion. This identification process is often carried out by reference to a list of possible complete entries, for example on the basis of past entries, or by reference to a standard library. Such mechanisms are often found for example in the interface of mobile telephones, where the interface is adapted to suggest a complete telephone number on the basis of a partially entered number or name, by reference to a list of contacts and previously dialled numbers. Another example is found in programming environments, where an auto-completion mechanism may suggest a substantial portion of standard code on the basis of the first few characters as entered by the user.
The method begins for example at step 101, according to which the time stamp at the start of data input is recorded. At step 103 it is determined whether a key has been pressed, which step is repeated until a key press event is in fact detected. When such an event is detected, the time stamp of the event is recorded at step 105, and the interval between the last two time stamps determined at step 107. At step 109 it is determined whether the interval calculated at step 107 exceeds a predetermined interval or not, and in a case where is determined that the predetermined interval is not exceeded, the new data symbol is added to a record of the data symbols input so far before looping back to step 103. In a case where is determined that the predetermined interval is exceeded however, the method proceeds to step 113, at which a comparison of the record of keys pressed since step 101 with a collection of possible data inputs is carried out, and at step 115 possible completion values are suggested to the user, which may or may not be accepted. In any case, the fact that the time limit has expired is taken as indicating that the end of the data entry sequence has been reached, so that at step 117 the record of keys pressed since step 101 is emptied before looping back to step 103.
The following pseudo code provides an exemplary partial implementation of this method:
According to the present invention there is provided a method for formulating a data input.
Further advantages of the present invention will become clear to the skilled person upon examination of the drawings and detailed description. It is intended that any additional advantages be incorporated herein.
Embodiments of the present invention will now be described by way of example with reference to the accompanying drawings in which like references denote similar elements, and in which:
A problem characteristic of auto-completion mechanisms as described above is that the time interval is either fixed or customizable by a configuration parameter, but once the interval has been read it is fixed. In fact however different users have differing data entry rates, and it could happen that either a user cannot make use of the auto-completion mechanism because he is too slow, can have some difficulty restarting the search because his data entries are too fast.
According to certain embodiments, the interval taken as reference may be varied, for example by learning from the user that is actually using the component. In other words, the time limit is a dynamically determined period. Two or more actual time interval values and the number of times the key has been pressed can be stored and used in calculating a time interval based on the present users actual data entry rate. In other words, there are provided the steps of:
The value of the Time Interval can be permanently stored when the application is closed, so that it will be possible to retrieve it when the application is restarted. This offers the advantage that an optimised value determined in a previous session can be taken as a starting point for a new session, which will likely shorten the average time required to tune the time limit value for the new session.
Preferably, the dynamically determined period is calculated by determining an average of the time intervals between a plurality of previous data symbol entries. An average can be determined using simple circuits or software routines, thereby restricting the costs or overheads of implementation. Still more preferably, the dynamically determined period is calculated by determining an average of the time intervals between a plurality of consecutive data symbol entries. This allows for further simplified circuitry or software routines, for example in terms of the size of the buffer or memory allocation required, thereby further restricting the costs or overheads of implementation. Still more preferably the dynamically determined period is calculated by determining an average of the time intervals between a plurality of immediately precedent consecutive data symbol entries. This allows for still further simplified circuitry or software routines, for example in terms of the size of the buffer or memory allocation required, thereby further restricting the costs or overheads of implementation. Still more preferably the dynamically determined period is calculated by determining an average of the time intervals between the three immediately precedent consecutive data symbol entries. This allows for still further simplified circuitry or software routines, for example in terms of the size of the buffer or memory allocation required, thereby further restricting the costs or overheads of implementation.
Preferably, the time interval includes a Margin or Delta quantity so as to allow for a degree of variation on the users data entry rate.
The margin or delta value may be for example a percentage of the time interval, an exponent of the time interval, a fixed quantity or a value determined by any other means. In a case where a percentage value is used, the delta value will vary with the time interval variation, increasing when the time interval increases and decreasing when the time interval decreases. Adopting a fixed delta value on the other hand would allow a large variation if the time interval is a small value, and allow smaller variation when time interval is large.
In this way the time interval within which two keys will be considered as belonging to the same text can be customized as a function of user typing frequency.
Thus the margin value may be for example a fixed value, a variable value, and may be a real multiple of the average value.
For example, each iteration the last two key press delays are averaged and added to a margin value Δ to determine a time limit 1. e.g.
1=((tn+tn−1)/2)+Δ
The following pseudo code provides a simple implementation.
The method as shown in
The method begins for example at step 301, according to which the time stamp at the start of data input is recorded. At step 303 it is determined whether a key has been pressed, which step is repeated until a key press event is in fact detected. When such an event is detected, the time stamp of the event is recorded at step 305, and the interval between the last two time stamps determined at step 307. At step 309 it is determined whether the interval calculated at step 307 exceeds a predetermined interval or not, and in a case where is determined that the predetermined interval is not exceeded, the new data symbol is added to a record of the data symbols input so far.
As this stage, the time limit as applied at step 309 is revised as a function of the interval between previous data symbol entries at step 319. Preferably, as discussed above, the new time limit is an average of preceding intervals between time stamps, plus a delta value.
Once the time limit value has been revised at step 319 the method loops back to step 303. In a case where is determined that the predetermined interval is exceeded however, the method proceeds to step 313, at which a comparison of the record of keys pressed since step 301 with a collection of possible data inputs is carried out, and at step 315 possible completion values are suggested to the user, which may or may not be accepted. In any case, the fact that the time limit has expired is taken as indicating that the end of the data entry sequence has been reached, so that at step 317 the record of keys pressed since step 301 is emptied before looping back to step 303.
The following is a worked example of the process of the second embodiment, according to which the text “oldt” is typed into the system. In table 1 below, the “n” column relates to the iteration of the process, and the “t” and “s” columns provide the corresponding time interval and symbol values.
In this worked example, a fixed value of Delta (Δ) of 10 is adopted.
Table 2 below shows the values at the nodes marked “a”, “b”, and “c” in
The Data input word “o” is retained in memory. In any case, the time limit 1 is revised as indicated at node c as follows:
1=(tn+tn−1)/2+Δ
1=(30+40)/2+10=45
The time limit 1 is revised as indicated at node c as follows:
1=(tn+tn−1)/2+Δ
1=(31+30)/2+10=40.5
The time limit 1 is revised as indicated at node c as follows:
1=(tn+tn−1)/2+Δ
1=(32+31)/2+10=41.5
In this case the time limit of 41.5 is exceeded, so the word “old” is looked up in the dictionary. Assuming no correction or completion is required, as is here the case, the word “old” will be accepted, and the data input buffer will be cleared for the next word. As can be seen at node “a” of the fifth iteration, the data input buffer has been initialised with the letter “t” as detected in this iteration.
According to this embodiment, the time limit is not revised during this iteration, as this would involve including an unduly large value due to a deliberate pause in the time limit. On the other hand, depending on the degree of variation in the users rate, or where a new user takes over having a significantly lower typing rate, i.e. greater than the margin allowed by the delta value, this approach may cause a deterioration in performance, in which case it may be desirable to include all delay values in time limit calculations. A still further approach would be to include time limits recorded at the end of short words, such as one letter words, which would mean that in a case where the time limit was set too low for a new user, all entries would be registered as one letter words, whose delays would be incorporated in the time limit average, thus leading to a rapid increase in the time limit value.
As discussed above, the number of key presses over which the delay value is averaged may be greater than two. According to a development of this, the process may be designed so at to disregard a first key press failing to meet the time limit for these purposes. Accordingly a long average may be determined spanning several words without the average being artificially made longer by taking into account the pause between words.
In order to implement the above described embodiments, the processor 420 executes an input processing module 422 which retrieves input symbols from the interface buffer 410, and adds the retrieved value 4321, 4322, 4323, 4324, 4325 to an area of said memory 430 designated as a data input buffer 434, along with a corresponding timestamp value which added to an associated area of said memory designated as timestamp memory 433. The input processing module 422 also performs the step of comparing time stamp values so as to determine the interval since the last character input, and retrieves a time limit value from a part of said memory 430 designated as time limit memory 432, for comparison with the interval. Finally, the Input processing unit performs a function of interrogating a collection of possible inputs 436 stored in the mass storage device 435, and presents possible correction or auto completion values to the user by means of the human interface output device 402.
The processor 420 further implements a time limit processing module 421, which performs the function of retrieving time stamp values 4311, 4312 from the time stamp memory 433 and if required a delta value from an area of the memory 430 designated as delta value memory 431, in order to re-evaluate the time limit value in accordance with the invention, and to store the new value in the time limit memory for retrieval by the input processing module 422.
Clearly, the order in which the respective tasks are implemented, and the manner in which they are carried out will vary as a function of the actual embodiment to be implemented.
Any element may be realised in terms of hardware, firmware, software or a combination of any or all of these. Where software components are provided, they may be placed temporarily or permanently on a carrier, such as an optical disc such as a CD or DVD, a magnetic disc such as a hard drive or floppy disc, a memory device such as a flash memory card, EPROM, volatile memory unit etc., or an optical, electrical, radio or other transmission channel, for example for the purposes of distribution.
According to one embodiment, the system may revert to a conventional fixed period recognition system after a predefined training period, or may only use certain delay values, for example every second, third, or fourth etc. delay value. These approaches offer the benefits of adaptability to actual users without the long term overhead in terms of continually recalculating the time limit.
The present invention applies equally to error detection or corrections mechanisms whereby entered text is compared to a list to identify errors, and flag these to a user and/or propose or impose corrections.
entered is looked up in a list of possible entries, for example based on a library of common code modules. A second window entitled “auto complete” 603 pops up containing the remaining part 607 of the code portion that the user has started, with the matched text 605 highlighted. Window 603 offers the user to accept or decline the proposed text by clicking an “accept” button 611 or a “decline” button 609.
According to a further embodiment there is provided an implementation of an auto-completion or auto-correction mechanism where a dictionary of entry list look-up is triggered by the expiry of a time limit between data entry events such as key-press events, where the value of the time limit is dynamically determined as a function of the entry rate. The time limit may be calculated for example on the basis of an average entry rate, and may include an extra margin value. The occurrence of look up triggering will therefore tend to be optimised to the present user's data entry rate.
The skilled person will appreciate that the present invention extends to all methods of data entry, including voice recognition, by means of a keyboard, a key pad, by means of a touch sensitive display or any other interface. The data symbols entered by this means my similarly be of any type consistent with auto completion, including symbols according to any character set whether derived from the roman or other alphabet, Arabic, roman or other numerals, mathematical symbols, musical notation, or indeed any arbitrary set of symbols for which an auto completion protocol can be defined. The entry may relate to individual glyphs such as letters, or pictograms forming part of larger ideograms, or otherwise deal with larger groups such as whole or partial words or phrases.
Correspondingly, a set of possible data inputs with reference to which auto complete or correction look-ups are made may comprise any set of data to which entered symbols may be compared, including dictionaries, compilations of frequently used texts, records of past entries, and indeed sources of data not specifically prepared for such a use such as databases, file storage systems or the internet.
Number | Date | Country | Kind |
---|---|---|---|
05112043 | Dec 2005 | EP | regional |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/EP2006/063289 | 6/16/2006 | WO | 00 | 3/8/2010 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2007/068505 | 6/21/2007 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
4330845 | Damerau | May 1982 | A |
4805222 | Young | Feb 1989 | A |
5557686 | Brown | Sep 1996 | A |
5761689 | Rayson et al. | Jun 1998 | A |
6151593 | Cho | Nov 2000 | A |
6286064 | King et al. | Sep 2001 | B1 |
6426843 | Lamberts | Jul 2002 | B1 |
6744422 | Schillings et al. | Jun 2004 | B1 |
7382359 | Griffin | Jun 2008 | B2 |
20040059950 | Bender | Mar 2004 | A1 |
20040163032 | Guo et al. | Aug 2004 | A1 |
20040187037 | Checco | Sep 2004 | A1 |
20050015176 | Harada | Jan 2005 | A1 |
20050192846 | De Zwart | Sep 2005 | A1 |
Number | Date | Country |
---|---|---|
55020539 | Feb 1980 | JP |
5119892 | May 1993 | JP |
8147282 | Jun 1996 | JP |
9325959 | Dec 1997 | JP |
11212705 | Aug 1999 | JP |
2002-007390 | Jan 2002 | JP |
Number | Date | Country | |
---|---|---|---|
20120159317 A1 | Jun 2012 | US |