A method of character recognition for a personal computing device comprising a user interface capable of receiving inputs that are to be recognised through data input means which are receptive to keyed, tapped or a stylus input, said device being adapted to facilitate a reduction in the number of physical keying actions, tapping actions or gestures required to create a data string to less than the number of characters within said data string, the method comprising the steps of: a. storing in two or more data dictionaries a set of data strings each with a priority indicator associated therewith wherein the priority indicator is a measure of a plurality of derivatives associated with the data string; storing associative maps being maintained to map the data strings in one of said data dictionary to data strings in the one or more other data dictionary, the associative maps dynamically inferring associations between data strings based on map statistics, probabilities and analytics; and storing a lookup chain being maintained between the two or more data dictionaries such that dynamic mapping can be made from one dictionary to another; b. recognising an event; c. looking up the most likely subsequent data string to follow the event from the set of data strings based on one or more of the plurality of derivatives, and using the associative maps to project and retrieve the n most closely associated data strings from the two or more data dictionaries; d. ordering the data strings for display based on the priority indicator of that data string; e. if the required subsequent data string is included in the list selecting the required subsequent data string; f. if the required subsequent data string is not included in the list entering an event and repeating steps b to e; g. updating the priority indicator of the selected data string; h. updating the set of data strings based on the updated priority indicator. a. storing in two or more data dictionaries a set of data strings each with a priority indicator associated therewith wherein the priority indicator is a measure of a plurality of derivatives associated with the data string; storing associative maps being maintained to map the data strings in one of said data dictionary to data strings in the one or more other data dictionary, the associative maps dynamically inferring associations between data strings based on map statistics, probabilities and analytics; and storing a lookup chain being maintained between the two or more data dictionaries such that dynamic mapping can be made from one dictionary to another; b. recognising an event; c. looking up the most likely subsequent data string to follow the event from the set of data strings based on one or more of the plurality of derivatives, and using the associative maps to project and retrieve the n most closely associated data strings from the two or more data dictionaries; d. ordering the data strings for display based on the priority indicator of that data string; e. if the required subsequent data string is included in the list selecting the required subsequent data string; f. if the required subsequent data string is not included in the list entering an event and repeating steps b to e; g. updating the priority indicator of the selected data string; h. updating the set of data strings based on the updated priority indicator.