Autocomplete, or word completion, is a feature in which an application predicts the rest of a word a user is typing. In graphical user interfaces, users can typically press the tab key to accept a suggestion or the down arrow key to accept one of several.
Autocomplete speeds up human-computer interactions when it correctly predicts words being typed. It works best in domains with a limited number of possible words (such as in command line interpreters), when some words are much more common (such as when addressing an e-mail), or writing structured and predictable text (as in source code editors).
Many autocomplete algorithms learn new words after the user has written them a few times, and can suggest alternatives based on the learned habits of the individual user.
- 1 Definition
- 2 Standalone tools
- 3 Usage by software
- 4 The efficiency of word completion
- 5 See also
- 6 References
- 7 External links
The original purpose of word prediction software was to help people with physical disabilities increase their typing speed, as well as to help them decrease the number of keystrokes needed in order to complete a word or a sentence. The need to increase speed is noted by the fact that people who use speech generating devices generally produce speech at a rate that is less than 10% as fast as people who use oral speech. But the function is also very useful for anybody who writes text, and especially useful for people who often use long and hard to spell technical or medical terms, like medical doctors.
Autocomplete or word completion works so that when the writer writes the first letter or letters of a word, the program predicts one or more possible words as choices. If the word he intends to write is included in the list he can select it, for example by using the number keys. If the word that the user wants is not predicted, the writer must enter the next letter of the word. At this time, the word choice(s) is altered so that the words provided begin with the same letters as those that have been selected. When the word that the user wants appears it is selected, and the word is inserted into the text. In another form of word prediction, words most likely to follow the just written one are predicted, based on recent word pairs used. Word prediction uses language modeling, where within a set vocabulary the words are most likely to occur are calculated. Along with language modeling, basic word prediction on AAC devices is often coupled with a recency model, where words that are used more frequently by the AAC user are more likely to be predicted. Word prediction software often also allows the user to enter their own words into the word prediction dictionaries either directly, or by "learning" words that have been written.
There are standalone tools that add autocomplete functionality to existing applications. These programs monitor user keystrokes and suggests a list of words based on first typed letter(s). Examples are Typingaid and Letmetype. LetMeType, freeware, is no longer developed, the author has published the source code and allows anybody to continue development. Typingaid, also freeware, is actively developed. Intellicomplete, both a freeware and payware version, works only in certain programs which hook into the intellicomplete server program. Many Autocomplete programs can also be used to create a Shorthand list.
Shorthand, also called Autoreplace, is a related feature that involves automatic replacement of a particular string with another one, usually one that is longer and harder to type, as "myname" with "Lee John Nikolai François Al Rahman". This can also quietly fix simple typing errors, such as turning "teh" into "the". Several Autocomplete programs, standalone or integrated in text editors, based on word lists, also include a shorthand function for often used phrases.
Context completion is a text editor feature, similar to word completion, which completes words (or entire phrases) based on the current context and context of other similar words within the same document, or within some training data set. The main advantage of context completion is the ability to predict anticipated words more precisely and even with no initial letters. The main disadvantage is the need of a training data set, which is typically larger for context completion than for simpler word completion. Most common use of context completion is seen in advanced programming language editors and IDEs, where training data set is inherently available and context completion makes more sense to the user than broad word completion would.
Line completion is a type of context completion, first introduced by Juraj Simlovic in TED Notepad, in July 2006. The context in line completion is the current line, while current document poses as training data set. When user begins a line which starts with a frequently used phrase, the editor automatically completes it, up to the position where similar lines differ, or proposes a list of common continuations.
Usage by software
In web browsers
In web browsers, autocomplete is done in the address bar (using items from the browser's history) and in text boxes on frequently used pages, such as a search engine's search box. Autocomplete for web addresses is particularly convenient because the full addresses are often long and difficult to type correctly. HTML5 has an autocomplete form attribute.
In e-mail programs
In e-mail programs autocomplete is typically used to fill in the e-mail addresses of the intended recipients. Generally, there are a small number of frequently used e-mail addresses, hence it is relatively easy to use autocomplete to select among them. Like web addresses, e-mail addresses are often long, hence typing them completely is inconvenient.
For instance, Microsoft Outlook Express will find addresses based on the name that is used in the address book. Google's Gmail will find addresses by any string that occurs in the address or stored name.
In search engines
In search engines, autocomplete user interface features provide users with suggested queries or results as they type their query in the search box. This is also commonly called autosuggest or incremental search. This type of search often relies on matching algorithms that forgive entry errors such as phonetic Soundex algorithms or the language independent Levenshtein algorithm. The challenge remains to search large indices or popular query lists in under a few milliseconds so that the user sees results pop up while typing.
In source code editors
Autocomplete of source code is also known as code completion. In a source code editor autocomplete is greatly simplified by the regular structure of the programming languages. There are usually only a limited number of words meaningful in the current context or namespace, such as names of variables and functions. An example of code completion is Microsoft's IntelliSense design. It involves showing a pop-up list of possible completions for the current input prefix to allow the user to choose the right one. This is particularly useful in object-oriented programming because often the programmer will not know exactly what members a particular class has. Therefore, autocomplete then serves as a form of convenient documentation as well as an input method. Another beneficial feature of autocomplete for source code is that it encourages the programmers to use longer, more descriptive variable names incorporating both lower and upper case letters (CamelCase), hence making the source code more readable. Typing large words with many mixed cases like "numberOfWordsPerParagraph" can be difficult, but Autocomplete allows one to complete typing the word using a fraction of the keystrokes.
In database query tools
Autocompletion in database query tools allows the user to autocomplete the table names in an SQL statement and column names of the tables referenced in the SQL statement. As text is typed into the editor, the context of the cursor within the SQL statement provides an indication of whether the user needs a table completion or a table column completion. The table completion provides a list of tables available in the database server the user is connected to. The column completion provides a list of columns for only tables referenced in the SQL statement. SQL Server Management Studio provides autocomplete in query tools.
In word processors
In many word processing programs, autocompletion decreases the amount of time spent typing repetitive words and phrases. The source material for autocompletion is either gathered from the rest of the current document or from a list of common words defined by the user. Currently Apache OpenOffice, Calligra Suite, KOffice, LibreOffice and Microsoft Office include support for this kind of autocompletion, as do advanced text editors such as Emacs and Vim.
- Apache OpenOffice Writer and LibreOffice Writer have a working word completion program that proposes words previously typed in the text, rather than from the whole dictionary
- Microsoft Excel spreadsheet application has a working word completion program that proposes words previously typed in upper cells
In command-line interpreters
In a command-line interpreter, such as Unix's sh or bash, or Windows's cmd.exe or PowerShell, or in similar command line interfaces, autocomplete of command names and file names may be accomplished by keeping track of all the possible names of things the user may access. Here autocomplete is usually done by pressing the Tab ↹ key after typing the first several letters of the word. For example, if the only file in the current directory that starts with x is xLongFileName, the user may prefer to type x and autocomplete to the complete name. If there were another file name or command starting with x in the same scope, the user would type more letters or press the Tab key repeatedly to select the appropriate text. ↔≃
The efficiency of word completion
Parameters for efficiency
The efficiency of word completion is based on the average length of the words typed. If, for example, the text consists of programming languages which often have longNamesForSpecialFunctions(), completion is both useful and generally applied in editors specially geared towards programmer such as Vim.
In different languages, word lengths can differ dramatically. Picking up on the above example, a soccer player in German is translated as a "Fussballspieler", with a length of 15 characters. This example illustrates that English is not the most efficient language for WC; this study  shows an average length for English words in a corpus of over 100,000 words to be 8.93, for Czech to be 10.55 and for German to be 13.24. In addition, in some languages like German called fusional languages as well as agglutinative languages, words can be combined, creating even longer words.
Authors who often use very long words, like medical doctors and chemists, obviously have even more use for Autocomplete (Word completion) software than other authors.
Although research has shown that word prediction software does decrease the number of keystrokes needed and improves the written productivity of children with disabilities, there are mixed results as to whether or not word prediction actually increases speed of output. It is thought that the reason why word prediction does not always increase the rate of text entry is because of the increased cognitive load and requirement to move eye gaze from the keyboard to the monitor.
In order to reduce this cognitive load, parameters such as reducing the list to five likely words, and having a vertical layout of those words may be used. The vertical layout is meant to keep head and eye movements to a minimum, and also gives additional visual cues because the word length becomes apparent. Although many software developers believe that if the word prediction list follows the cursor, that this will reduce eye movements, in a study of children with Spina Bifida by Tam, Reid, O'Keefe & Nauman (2002) it was shown that typing was more accurate, and that the children also preferred when the list appeared at the bottom edge of the screen, at the midline. Several studies have found that word prediction performance and satisfaction increases when the word list is closer to the keyboard, because of the decreased amount of eye-movements needed.
Software with word prediction is produced by multiple manufacturers. The software can be bought as an add-on to common programs such as Microsoft Word (for example, WordQ+SpeakQ, Typing Assistant, Co:Writer, Wivik, Ghotit Dyslexia), or as one of many features on an AAC device (PRC's Pathfinder, Dynavox Systems, Saltillo’s ChatPC products). Some well known programs: Intellicomplete, which is available in both a freeware and a payware version, but works only with programs which are made to work with it. Letmetype and Typingaid are both freeware programs which work in any text editor.
An early version of autocompletion was described in 1967 by H. Christopher Longuet-Higgins in his Computer-Assisted Typewriter (CAT), “such words as ‘BEGIN’ or ‘PROCEDURE’ or identifiers introduced by the programmer, would be automatically completed by the CAT after the programmer had typed only one or two symbols.”
|Wikimedia Commons has media related to Software autocompletion.|
- Autocorrect, automatic correction of misspelled words.
- Predictive text
- Incremental search
- Context sensitive user interface
- Combo box
- Search suggest drop-down list
- OpenSearch contains a specification of Search suggestions Web services
- Tam, C. & Wells, D. (2009). Evaluating the Benefits of Displaying Word Prediction Lists on a Personal Digital Assistant at the Keyboard Level. Assistive Technology, 21, 105-114.
- Anson, D., Moist, P., Przywara, M., Wells, H., Saylor, H. & Maxime, H. (2006). The Effects of Word Completion and Word Prediction on Typing Rates Using On-Screen Keyboards. Assistive Technology, 18, 146-154.
- Trnka, K., Yarrington, J.M. & McCoy, K.F. (2007). The Effects of Word Prediction on Communication Rate for AAC. Proceedings of NAACL HLT 2007, Companion Volume, 173-176.
- Beukelman, D.R. & Mirenda, P. (2008). Augmentative and Alternative Communication: Supporting Children and Adults with Complex Communication Needs. (3rd Ed.) Baltimore, MD: Brookes Publishing, p. 77.
- Witten, I. H.; Darragh, John J. (1992). The reactive keyboard. Cambridge, UK: Cambridge University Press. pp. 43–44. ISBN 0-521-40375-8.
- Jelinek, F. (1990). Self-Organized Language Modeling for Speech Recognition. In Waibel, A. & Kai-Fulee, Ed. Morgan, M.B. Readings in Speech Recognition (pp. 450). San Mateo, California: Morgan Kaufmann Publishers, Inc.
- http://www.autohotkey.com/community/viewtopic.php?f=2&t=53630 TypingAid
- http://www.clasohm.com/lmt/en/ LetMeType
- http://www.intellicomplete.com/ Autocomplete program with wordlist for medicine
- Dabbagh, H. H. & Damper, R. I. (1985). Average Selection Length and Time as Predictors of Communication Rate. Proceedings of the RESNA 1985 Annual Conference, RESNA Press, 104-106.
- Goodenough-Trepagnier, C., & Rosen, M.J. (1988). Predictive Assessment for Communication Aid Prescription: Motor-Determined Maximum Communication Rate. In L.E. Bernstein (Ed.), The vocally impaired: Clinical Practice and Research (pp. 165-185).Philadelphia: Grune & Stratton.; as cited in Tam & Wells (2009), pp. 105-114.
- Swiffin, A. L., Arnott, J. L., Pickering, J. A., & Newell, A. F. (1987). Adaptive and predictive techniques in a communication prosthesis. Augmentative and Alternative Communication, 3, 181–191; as cited in Tam & Wells (2009).
- Tam, C., Reid, D., Naumann, S., & O’ Keefe, B. (2002). Perceived benefits of word prediction intervention on written productivity in children with Spina Bifida and hydrocephalus. Occupational Therapy International, 9, 237–255; as cited in Tam & Wells (2009).
- http://www.prlog.org/10519217-typing-assistant-new-generation-of-word-prediction-software.html Typing Assistant
- Longuet-Higgins, H.C., Ortony, A., The Adaptive Memorization of Sequences, In Machine Intelligence 3, Proceedings of the Third Annual Machine Intelligence Workshop, University of Edinburgh, September 1967. 311-322, Publisher: Edinburgh University Press, 1968
|Look up autocomplete in Wiktionary, the free dictionary.|
- Live Search Explained—Examples and explanations of working web examples plus a discussion of the usability benefits compared to traditional search