Abstract: Systems and methods for generating text suggestions are described. The computing system (106) includes a processor (108), and a memory (110) coupled to the processor (108). The computing system (106) further includes an initiation module (112) configured to initiate a text input. A syllable updating module (114) of the computing system (106) includes a transliteration engine (206) configured to map the text input in a secondary language to a list of text suggestions in a primary language based on the text input in the secondary language. The syllable updating module (114) further includes a syllable rendering module (114) configured to map the text input in the primary language with corresponding syllable suggestions in the primary language. A list display module (116) of the computing system (106) displays the list of text suggestions and the syllable suggestions in response to the received text input.
TECHNICAL FIELD
The subject matter described herein, in general, relates to systems and methods for generating text suggestions and, in particular, relates to systems and methods for generating text suggestions on text entry.
BACKGROUND
English has become the universally accepted language, not only for day-to-day communication, but also for working on computers. Generally, computer keyboards provide an English language interface for data entry. With the advent of technology, keyboards have been designed for various regional and vernacular languages, for example Hindi, Chinese, Korean, etc., as well. Nevertheless, such keyboards are not popular with users even though the users are comfortable with working in the regional language because they are comfortable with typing in English. Hence, the keyboards designed for different languages are not perceived to be user friendly.
One way to avoid using keyboards of different languages is to provide users with a virtual keyboard. A user may use a pointing device, such as a mouse, to select the desired characters in a particular language. However, in some languages, for example Hindi, the combinations of vowels and consonants in the language script are so varied that it may be time consuming for the users to implement these combinations effectively using the virtual keyboard. To overcome these problems, other methods of entering different language text, such as transliteration, have been devised.
Transliteration is a process employed to convert a character or symbol, as used in one language, to a character or symbol in another language. Transliteration is distinct from translation in that during transliteration only the sound of the source character or word is reproduced in the target script to the extent possible, not the meaning. Transliteration is usually achieved by using a mapping scheme, defined in a transliteration table, which shows a correspondence between the texts, including characters, symbols, and words, of various languages.
Generally, when a user enters a text in a particular language, the characters/symbols are read by a system. The system selects a mapping scheme in the transliteration table depending on the language in which the character/symbol has to be transliterated into. Based on the
mapping scheme, a transliterated character or symbol corresponding to the entered character or symbol is identified and subsequently displayed.
To use current transliteration applications, a user has to either extensively use combinations of keys, for example, a character key along with the "shift" key or a combination of small and capital alphabets, in one language for correct entry of another language text. This is so because different languages have different characters in their scripts, and various combinations of consonants and vowels and various region-specific linguistic attributes may need to be entered. These factors often make typing cumbersome from the user's point of view. Moreover, if transliteration occurs during text entry, the user may also need to verify or select the appropriate transliterated character corresponding to each entered character, thus making the process even more cumbersome and time-inefficient.
SUMMARY
The present subject matter describes a system and method for generating text suggestions associated with a text input. The system includes an initiation module, a syllable updating module, and a list display module.
The initiation module is configured to initiate a text input. The text input may be in the form of one or more characters. The syllable updating module receives the text input and maps the text input with text suggestions in a primary language. The primary language is, for example, a phonetic-script based language. The system can provide the user with multiple options of entering the text input. For example, in one option, the user can directly enter a text input in the primary language using a virtual keyboard. In a second option, the user can enter a text input in a secondary language, such as English, using various input interfaces, such as a virtual keyboard, a physical keyboard, or a stylus, in the working environment.
Once the text input is received, the syllable updating module maps the text input with the text suggestions in the primary language based on a mapping scheme. In one implementation, when the syllable updating module receives the text input in the primary language, the syllable updating module maps the text input to the corresponding syllable suggestions based on a virtual key mapping scheme. In another implementation, when the syllable updating module receives the text input in the secondary language, the syllable updating module maps the text input based on a transliteration mapping scheme.
The list display module then automatically displays the mapped text suggestions in the primary language. For example, when the user enters the character in the primary language, the text suggestions are displayed in the primary language in a floating row of the virtual keyboard. On the other hand, when the user enters the text input in the secondary language, the text suggestions are displayed in the primary language.
The user can then select any of the displayed syllable suggestions by, for example, typing a next character or clicking on any of the displayed syllable suggestions. The text display module identifies the selected syllable and displays the selected syllable in a text accepting area.
These and other features, aspects, and advantages of the present subject matter will be better understood with reference to the following description and appended claims. This Summary is provided to introduce a selection of concepts in a simplified form. This summary is not intended to identify key features or essential features of the claimed subject matter, nor it is intended to be used to limit the scope of the claimed subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
The above and other features, aspects and advantages of the subject matter will be better understood with regard to the following description, appended claims, and accompanying drawings where:
Fig. 1 shows an exemplary computing system environment implemented for generating text suggestions, according to one embodiment of the present subject matter.
Fig. 2 shows an exemplary system implemented for generating text suggestions, according to one embodiment of the present subject matter.
Fig. 3 illustrates an exemplary architecture of a transliteration engine, according to one embodiment of the present subject matter.
Fig. 4 shows a series of snapshots of a working environment showing how a user interface automatically displays transliterated syllable suggestions as a user enters character(s), according to one embodiment of the present subject matter.
Fig. 5 shows an exemplary user interface for generating text suggestions, according to one embodiment of the present subject matter.
Fig. 6 shows an exemplary method implemented for generating text suggestions, according to one embodiment of the present subject matter.
Fig. 7 shows an exemplary method for generating text suggestions when an input is received in a primary language, according to one embodiment of the present subject matter.
Fig. 8 shows an exemplary method for generating a list of syllables in a primary language script when an input is received in a secondary language, according to one embodiment of the present subject matter.
DETAILED DESCRIPTION
The subject matter disclosed herein is related to systems and methods for generating text suggestions, for example, in phonetic-script based languages. Phonetic-script based languages, also referred to as phonetic languages, are languages that include sounds of human speech in their script. Generally, a syllable is a unit of organization for a sequence of speech sounds. For example, the word 'water' is composed of two syllables: wa and ter. However, it will be understood that text suggestions can also be generated for non phonetic-script based languages. The method, as described herein, can be used in various working environments, such as web-based as well as stand-alone working environments.
When used with a web-based working environment, the method may be initiated through a bookmarklet. Typically, a bookmarklet is a JavaScript program that can be stored in a web browser as a bookmark referenced by a URL or within a hyperlink on a webpage. In an implementation, one or more languages are associated with respective bookmarklets. On selection of a bookmarklet by a user, the JavaScript associated with the bookmarklet is executed. The executed bookmarklet then identifies controls on the webpage that accept text for display in the selected language or primary language.
On the other hand, when used with a stand-alone working environment, the method may be initiated through a selection option available in the working environment. The selection option is used to provide the user with a list of language options to select from. The user can select the primary language in which the syllable or word suggestions are to be displayed using the selection option. The computing system then identifies controls on the working environment that accept text for display in the selected primary language.
The bookmarklet and the selection option can be displayed in the working environment as icons in a toolbar or in any other location, such as a drop down menu, or can be selected by pressing a hotkey. Once the text-accepting controls are identified, the user can be presented with options for selecting a method of entering characters for display of text in the selected primary language.
In an embodiment, the user can directly enter a text input in the primary language in the working environment using a virtual keyboard that provides text suggestions. In an implementation, the text suggestions may be syllable suggestions. The text input may be in the form of a character entered in the primary language. In one implementation, the virtual keyboard has one or more rows of vowels and rows of consonants. Further, the virtual keyboard can have floating rows that may be shared between multiple rows of consonants.
When the user hovers the cursor over a desired consonant, all the possible syllable suggestions for that consonant are automatically displayed in a floating row shared by a consonant row. The user can select a desired syllable from the syllable suggestions, and the selected syllable is displayed in a text accepting area in the working environment. Such a virtual keyboard occupies little space in the working environment as it includes floating rows for automatically displaying the syllable suggestions for the selected characters. Further, as the syllable suggestions are displayed directly in the working environment, the user need not move between different working environments to enter text in the primary language.
In another embodiment, the user can enter a text input in a secondary language in the working environment using various input interfaces, for example a virtual keyboard, a physical keyboard, a stylus, etc. The text input may be a character or a group of characters to form a word. Thus, the user may enter the text input in any language other than the primary language whose associated bookmarklet or selection option was selected. The text input in the secondary language is then transliterated into a list of text suggestions in the primary language. The list of text suggestions are then automatically displayed in the working environment.
The text suggestions may be syllable suggestions or word suggestions. The user can select any of the transliterated syllable or word suggestions from the list of text suggestions, and the selected syllable or word is entered in a text accepting area in the working environment. Thus, the user is automatically provided with transliterated suggestions in the same working environment. Further, the input of the text input in the secondary language may be case
insensitive, where the user is not required to remember a combination of keys for the display of text suggestions.
While aspects of described systems and methods for generating text suggestions can be implemented in any number of different computing systems, environments, and/or configurations, certain embodiments for generation of text suggestions are described in the context of the following exemplary system(s) and method(s).
Fig. 1 shows an exemplary computing system environment 100 implemented for generating text suggestions, according to one embodiment of the present subject matter. The computing system environment 100 includes a network 102, a web server 104, and a computing system 106. The network 102 may be a wireless or a wired network, or a combination thereof. The network 102 can be a collection of individual networks, interconnected with each other and functioning as a single large network (e.g., the Internet or an intranet). Examples of the network 102 include, but are not limited to, Local Area Network (LAN), Wide Area Network (WAN), and so on.
The computing system 106 may be, for example, a general purpose computing device, a laptop, a mobile computing device, and so on. The computing system 106 includes a processor 108 and a memory 110. The processor 108 may be a microprocessor, a microcomputer, a microcontroller, a digital signal processor, a dual core processor, and so forth. The memory 110 used may include, for example, volatile random access memory (e.g., RAM) or non-volatile read-only memory (e.g., ROM, flash memory, etc). Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the computing system 106 either directly or through intervening I/O controllers. Network adapters may also be coupled to the computing system 106 to couple it to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.
The memory 110 includes an initiation module 112, a syllable updating module 114, a list display module 116, and a text display module 118. The initiation module 112 initiates the input of characters) as a text input. The initiation module 112 can be used to initiate input of the text input in web-based as well as stand-alone working environments. When selected by a user, the initiation module 112 identifies all controls on a working environment that accept text.
The initiation module 112 may be displayed as an icon in a toolbar or in any other location, such as a drop down menu, or may be associated with a hotkey. Once the controls are identified, the computing system 106 allows the user to enter a text input. In an implementation, the user can enter a text input in a primary language in the working environment using a virtual keyboard. The primary language is a language selected by the user while selecting the initiation module 112. In another embodiment, the user can enter a text input in a secondary language in the working environment using any input interfaces known in the art. The secondary language is a language other than the user selected primary language.
The syllable updating module 114 receives the text input entered by the user and maps the text input with text suggestions in the primary language based on a mapping scheme. The text suggestions include corresponding syllable or word suggestions in the primary language. The mapped syllable or word suggestions are then sent to the list display module 116. The list display module 116 automatically displays the syllable or word suggestions in the primary language in the working environment. The user can select any of the syllable or word suggestions by, for example, entering a next character to select the top-most suggestion by default or by clicking on any of the syllable or word suggestions. In an implementation, a syllable or word suggestion may be automatically selected based on its usage. In such a case, a syllable or word suggestion that is more frequently used is more likely to be selected. The text display module 118 identifies the selected syllable suggestion and displays the syllable in a text accepting area in the working environment.
Fig. 2 shows the exemplary computing system 106 implemented for dynamically updating syllables, according to one embodiment of the present subject matter. The computing system 106 can be implemented in various working environments, such as web-based as well as stand-alone working environments.
In one implementation, the memory 110 includes program modules 202 and program data 204. The program modules 202 further includes the initiation module 112, the syllable updating module 114, the list display module 116, the text display module 118, and other modules 210. Other modules 210 includes an operating system and modules required for the functioning of the program modules 202. The program data 204 includes a transliteration mapping scheme 212, a virtual key mapping scheme 214, and other data 216. The other data 216 comprises various data upon which the program modules 202 act. The other data 216
includes all types of data such as user input data, intermediate data to be processed by the program modules 202, and the data obtained as output. Though various modules of the program modules 202 are illustrated as a part of the computing system 106 it will be understood that some of these modules may be hosted on a separate computing device that works in tandem with the computing system 106.
When used with a web-based working environment, the initiation module 112 is a bookmarklet. A bookmarklet can be, for example, a JavaScript program and one or more languages can be associated with respective bookmarklets. When selected by the user, the bookmarklet is executed, and the executed bookmarklet identifies all the controls on the webpage that accept text for display in the associated language, also referred to as a primary language. Following identification of the controls, the computing system 106 presents the user with options for selecting a method of entering character(s), also referred to as a text input, for display of text in the selected primary language.
When used with a stand-alone working environment, the initiation module 112 is a selection option available in the working environment. The user can use the selection option, such as a list of languages, to select the primary language in which the text suggestions are to be displayed. The selection option may also provide a list of text mapping schemes, such as virtual keyboards by different publishers for each language. In this case, along with selecting a primary language, the user can also select an input mechanism provider from a particular publisher. Once the primary language is selected, the computing system 106 identifies all controls in the working environment that accept text. Following identification of the controls, the computing system 106 presents the user with options for selecting a method of entering character(s) as a text input for display of text in the selected primary language.
The computing system 106 can provide the user with multiple options of entering the text input. As mentioned previously, the text input may be a character or a group of characters. In one case, the user can directly enter a text input in the primary language in the working environment. In this case, when the user selects the option to enter the text input in the primary language, a virtual keyboard having characters in the primary language is automatically displayed in the working environment. The virtual keyboard includes a number of rows of vowels and consonants. The virtual keyboard further includes a number of floating rows. Each of the floating rows is shared by at least two rows of consonants. In another case, the user can
enter a text input in a secondary language in the working environment. In this case, the user can enter the text input using various input interfaces such as a virtual keyboard, a physical keyboard, or a stylus. When the user selects the option to enter a text input in the secondary language, the user can directly enter the text input in a text-accepting area in the working environment using the desired input interface. After receiving the character, the computing system 106 provides the entered character to the syllable updating module 114.
The syllable updating module 114 includes a transliteration engine 206 and a syllable rendering module 208. The syllable updating module 114 maps the entered text input with the text suggestions, which may be corresponding syllable or word suggestions, in the primary language. Based on whether the text input is entered in the secondary language or in the primary language, the syllable updating module 114 either selects the transliteration engine 206 or the syllable rendering module 208.
The transliteration engine 206 performs transliteration of the entered text input. As mentioned before, transliteration is a process of mapping the words or sentences of one language to the letters and special symbols of another language. Basically, the process involves mapping the sounds of one language to the best matching script of another language. Thus transliteration is meant to preserve the sounds of the syllables, in the primary language, when the syllables are written in scripts of different languages, for example, where one does not know the script of the primary language but knows how to speak and understand the primary language.
For this purpose, the transliteration engine 206 includes various components, such as a definitive dictionary, an abbreviation handler, a phonetic similarity matcher, a foreign word dictionary, and a rule based generator, which simultaneously process the text input either at a character level or a word level. The transliteration engine 206 uses the transliteration mapping scheme 212 to map the entered text input with a list of text suggestions in the primary language. The architecture and functioning of the transliteration engine 206 will be explained in detail with reference to Fig. 3. The respective outputs of the various components of the transliteration engine 206 are merged and de-duplicated to generate the list of text suggestions in the primary language. In an implementation, the list of text suggestions may be ranked based on their relevance.
In case the text input is entered in the primary language, the syllable updating module 114 selects the syllable rendering module 208. The syllable rendering module 208 uses a virtual key mapping scheme 214 to map the text input with the corresponding syllable suggestions. The virtual key mapping scheme 214 includes pre-defined mapping of each character with corresponding syllable suggestions. The pre-defined mapping includes mapping to Unicode of characters in a language in a manner so that all possible consonant-vowel and consonant-vowel-vowel extender suggestions are provided for an entered character in the text input. In this case, the text input is entered in the primary language and the syllable suggestions are also mapped in the primary language.
Once the syllable suggestions corresponding to the entered character are determined, the syllable updating module 114 sends the syllable suggestions to the list display module 116. The list display module 116 automatically displays the received syllable suggestions in the working environment so that the syllable suggestions can be viewed by the user. When the user enters the text input in the primary language, the syllable suggestions are displayed in a floating row present on the virtual keyboard. In one embodiment, as the text input is entered, the syllable updating module 114 can predict, where possible, possible words and send the possible words to the display module 116 for display.
Similarly, in case the user enters the text input in the secondary language, the list of text suggestions are displayed in the working environment itself in a text accepting/display area. The text suggestions may be the syllable or word suggestions, as mentioned previously. The user can select any of the syllable or word suggestions displayed in the list. The text display module 118 identifies the selected syllable or word and displays the syllable or word in a text accepting area in the working environment. In the web-based working environment, the text accepting area can be a textbox on the webpage, whereas in the stand-alone working environment, the text accepting area can be a region in the working environment itself.
Fig. 3 illustrates an exemplary architecture of the transliteration engine 206, according to one embodiment of the present subject matter. In an implementation, the transliteration engine 206 includes an alphanumeric splitter 302, a numeric generator 304, and content processing components 306.
In operation, the text, also referred to as an alphanumeric text input, received by the transliteration engine 206 is processed by the alphanumeric splitter 302. The alphanumeric
splitter 302 separates out the alphabetical and numeric parts of the alphanumeric text input for separate transliteration. The alphabetical part of the text input is hereinafter referred to as a text input and the numeric part of the alphanumeric text input is referred to as a numeric text input For example, the alphanumeric text input abcdl23efgh gets separated into abed, 123, and efgh, which get separately transliterated. The numeric text input, i.e., 123, is transliterated by the numeric generator 304, while the alphabetic parts abed and efgh are processed by the content processing components 306.
The numeric generator 304 can generate multiple transliterated numeric string candidates for the numeric text input. For example, the numeric generator 304 can generate one numeric string using International Hindu-Arabic digits, i.e., English numbers, and another using digits in the primary language script, etc. Thus, given the numeric text input 1234 and considering Hindi is
the primary language, two candidates may be generated viz. 1234 and 1234'.
The text input, containing the alphabetic part of the alphanumeric text input as generated by the alphanumeric splitter 302, is processed by one or more modules of the content processing components 306. The content processing components 306 use a transliteration mapping scheme 212 to map the text input with a list of text suggestions in the primary language. The list of text suggestions includes all possible corresponding syllable or word suggestions in the primary language. The transliteration mapping scheme 212 includes a predefined mapping, such as a mapping between the Unicode of a character in the secondary language with the Unicode of a character in the primary language for transliterating the text input entered in the secondary language into the list of text suggestions in the primary language. The Unicode can be mapped in such a manner that all possible consonant, consonant-vowel, and consonant-vowel-vowel extender suggestions are provided for the entered character.
The content processing components 306 include a definitive dictionary 308, an abbreviation handler 310, a phonetic similarity matcher 312, a foreign word dictionary 314, and a rule based generator 316. It will be understood that the described components can be combined in any order to implement the transliteration engine 206. Additionally, individual components may be deleted from the transliteration engine 206 without departing from the spirit and scope of the subject matter described herein. In one implementation, each of the modules in the content processing components 306 can process the text input individually and independently to provide multiple results. In another implementation, each of the modules in
the content processing components 306 may return a preset number of results. In yet another implementation, the modules in the content processing components 306 may process the text input in a sequential manner to provide multiple results. The results of the modules are merged and de-duplicated using a sorter module 318 to generate the list of text suggestions. The list of text suggestions may be sent to the list display module 116 in a ranked order, with the first text suggestion being the one that has the highest rank, for presentation to the user.
The definitive dictionary 308 contains a set of frequently used words and proper nouns of the primary language. The definitive dictionary 308 returns all those word suggestions whose transliteration to the secondary language would precisely match the text input. Moreover, the words of the definitive dictionary 308 may be stored in a dictionary known as a definite dictionary. In an implementation, the definite dictionary may be stored in the program data 204. The definite dictionary may contain proper nouns of the primary language whose popular secondary language spellings depart from their known transliteration in the secondary language. Therefore, a text input containing these proper noun words may not be produced on transliteration by any other component of the transliteration engine 206. For illustration purpose, when the primary language is Hindi and the secondary language is English, the frequently used spelling in English of the proper noun is "Hyderabad", whereas ;
would be more correctly be spelt as "haidarabad" or "haidaraabaad" when using transliteration. The definitive dictionary 308 may further include an affixer module that contains a set of popular prefixes and suffixes. When the text input does not precisely match the secondary language transliteration of any word in the definite dictionary, the affixer module returns results by matching the text input to a combination of words from the definite dictionary and the suffixes or prefixes present in the affixer module. As an example, for the word "Hyderabadi", the definite dictionary contains a corresponding closest match Hyderabad. The affixer module
contains a suffix f which when added to the definite dictionary word Hyderabad forms the Hindi
word Hyderabad.
The definitive dictionary 308 may also contain words for which convention or user feedback has established a different top candidate than what would otherwise be generated by the transliteration engine 206. In an implementation, user feedback may be accepted from the list of text suggestions displayed in the list display module 116. For example, the Hindi words
and may both be spelt as "kam", but the general expectation is that "kam" should return and "kaam" should return .
The abbreviation handler 310 returns all those abbreviations whose secondary language transliteration precisely matches the text input. The abbreviation handler 310 includes an initialism generator 320 and an acronym generator 322. The abbreviation handler 310 has a list of popular abbreviations stored in the secondary language in an abbreviations dictionary. The abbreviations in the abbreviations dictionary are marked as an acronym or as an initialism. In an implementation, the abbreviations dictionary may be stored in the program data 204 in the memory 110.
The abbreviations in the abbreviations dictionary are mapped to the text input in the secondary language to return matching abbreviations. For this, the abbreviation handler 310 maps the text input to the abbreviations in the abbreviation dictionary. If a matching abbreviation is found, the abbreviation handler 310 determines whether the abbreviation is an initialism or an acronym. Accordingly, the initialism generator 320 or the acronym generator 322 generate the transliterated initialism or acronym, respectively. In one implementation, in response to matching the text input to an initialism, the pronunciation of letters in the text input are converted to the primary language script. For example, when the secondary language is English and the primary language is Hindi, for the text input "BBC" if there is a corresponding entry of the acronym BBC in the abbreviations dictionary, the initialism generator 320 may
return . In another implementation, in response to matching the text input to an acronym,
the acronym generator 322 returns results in the primary language script whose secondary language transliteration precisely matches the text input. For example, for the text input
"NASA", the acronym generator 322 may return as the result if the text input is present in
the abbreviations dictionary.
The phonetic similarity matcher 312 returns a preset number of words, for example, two words, in the primary language script. The phonetic similarity matcher 312 returns those words whose secondary language transliterations are similar to the text input. The phonetic similarity matcher 312 captures minor variations in spelling the words of the primary language when they are transliterated to the secondary language. For instance, the Hindi word may be
transliterated to English as "karmachari" or "karmchari" or "karmachaari" or "karmacharee" or "karmachaaree" or "karmcharee" or "karmchaaree", and so on. The phonetic similarity matcher 312 allows all these queries to return the correct word.
For this, the phonetic similarity matcher 312 includes a phonetic signature generator 324, a similarity scorer ranker 326, and a language dictionary 328. Given a text input, the phonetic signature generator 324 tries to captures the phonetic essence of the text input. The phonetic signature generator 324 performs a number of transformations, such as vowel removal, consonant grouping and substitution, and repetition reduction on the text input to generate a phonetic signature. In an implementation, the phonetic signature generator 324 performs the transformations of consonant grouping and substitution, repetition reduction, vowel removal, and repetition removal in a sequential order. It will be understood that the phonetic signature generator 324 may perform the transformations in any order to generate the phonetic signature.
The language dictionary 328 searches for words, from a word collection, having the same phonetic signature as the text input. The words returned by the search from the word collection are hereinafter referred to as candidate phonetic words. The word collection may be a set of words gathered from a wordlist in the primary language or a web index. The word collection may be stored in the program data 204 in the memory 110. The language dictionary 328 includes the phonetic signature for each word in the word collection. Further, the language dictionary 328 also includes a frequency score for each word. The frequency score for the word may be based on the frequency of occurrence of the primary language word in a user interaction environment, for example, a web-search engine. The frequency score allows capture of variations in the spelling of the text input entered in the secondary language. An example of such a frequency score may be based on a web crawler index.
The similarity scorer ranker 326 automatically generates secondary language spellings for the candidate phonetic words and compares a similarity for each of the candidate phonetic words with the text input based on a similarity measure. In an implementation, the similarity measure may be based on an edit distance. An edit distance between two words is the number of substitutions, insertions, or deletions to be made to transform one word to the other. For example, an edit distance between "stable" and "staple" is one as one letter needs to be changed to arrive at "staple" from "stable". In one implementation, the substitutions, insertions, and
deletions may be weighted differently. An edit distance matrix may be computed to calculate the edit distance between two words. The edit distance matrix may be adjusted to differently weigh the substitutions, insertions, and deletions. In another implementation, the edit distance matrix may also be case sensitive and may have different weights for a capital letter and a small letter.
The candidate phonetic words are ranked based on a ranking score after computing the similarity using the similarity measure. The ranking score may be based on a combined score of the similarity measure and the frequency score. The candidate phonetic words may be ranked based on the combined score, and the preset number of words may be returned by the phonetic similarity matcher 312.
The foreign word dictionary 314 returns all foreign words in the primary language script whose secondary language spellings precisely match the text input. The foreign word dictionary 314 contains a set of foreign words that are commonly used in the primary language. For example, a text input for the English word "computer" may return the Hindi word
In an implementation, the rule based generator 316 returns a specified number of words in the primary language script. The rule based generator 316includes a language syllable constructor 330, a scorer primer ranker 332, and a language Ngram corpus 334. The language syllable constructor 330 parses the text input into syllables of the primary language based on various rules. The rules may be used to identify the parsed syllables as consonants, vowels, half consonants, and vowel extenders. Separate rules may be used to select valid syllable sequences based on the syllable grammar of the primary language. Further, there may be rules to map each of the valid syllable sequences to graphemes of the primary language script. A grapheme is typically the smallest part of a written language. The language syllable constructor 330 may recursively repeat the above process to generate a list of words in the primary language script, which are hereinafter referred to as candidate rule based words
The scorer pruner ranker 332 generates a score for the candidate rule based words. This score is then used to rank the candidate rule based words in order of a likelihood that the text input could have been used to spell the candidate rule based word. The scorer pruner ranker 332 may be used to control the combinatorial explosion or highly ambiguous queries of candidate rule based words by discarding unlikely candidate rule based words during their generation by the language syllable constructor 330. The unlikely candidate rule based words
may be those having the score less than a threshold value. The threshold value of the score may be based on a number of the candidate rule based words that have to be returned by the rule based generator 316.
The score generated by the scorer pruner ranker 332 may be based on Ngram frequencies from the language Ngram corpus 334. An Ngram is a sequence of n consecutive graphemes that occur in a word. For example, for the word , the 3-grams (n=3) are
and . There may be two additional 3-grams, which are the beginning of the word
and end of the word Different Ngram scores may be used for ranking and for pruning
of the candidate rule based words. In an implementation, bi-grams may be used for pruning and a combination of bi-grams and tri-grams for ranking of the candidate rule based words. Further, the language Ngram corpus 334 contains a set of Ngrams of the primary language. In an implementation, the Ngrams of the primary language may be gathered from the language dictionary 328 of the phonetic similarity matcher 312.
As mentioned earlier, the list of text suggestions generated by the content processing components 306: including the candidate words such as the candidate phonetic words and the candidate rule based words, the foreign words, the abbreviations, and the word suggestions; and the numeric string candidates from the numeric generator 304 are received by the sorter module 318. The sorter module 318 forms the union of all the text suggestions returned by the modules, such as the content processing modules 306 and the numeric generator 304, of the transliteration engine 206 and returns a specified number of text suggestions, preserving the order in which the text suggestions were returned by the respective modules. In an another implementation the sorter module 318 returns all the text suggestions returned by the modules of the transliteration engine 206 after forming the union of the text suggestions. The sorter module 318 may also merge the suggestions returned by the component processing components 306 with the numeric string candidates generated by the numeric generator 304. The sorter module 318 ensures that no text suggestion appears more than once in the list of text suggestions finally coming out of the transliteration engine 206. In one implementation, if a text suggestion appears more than once in the merged list, the one at the better (i.e. numerically lower) rank is retained and all duplicates are discarded. In other implementations, a ranking of the text suggestions may be carried out based on a frequency of usage. The list of text
suggestions is, therefore, ranked based on an overall likelihood that the text input could be used to spell them.
In an implementation, the modules in the content processing components 306 provide the text suggestions for the text input in a sequential manner. The text input is processed by the definitive dictionary 308 to generate the word suggestions. The text input is then processed by the abbreviation handler 310 to generate common abbreviations that are similar to the text input. The phonetic similarity matcher 312, the foreign word dictionary 314, and the rule based generator 316 process the text input after the definitive dictionary 308 and the abbreviation handler 310 have generated the word suggestions and the abbreviations respectively, to generate the candidate phonetic words and the candidate rule based words in the primary language script.
The results from the modules of the content processing components 306 are merged together and de-duplicated by the sorter module 318. The sorter module 318 merges and ranks the results in the order of the modules in the content processing components 306. In an another implementation, the modules in the content processing components 306 may process the text input simultaneously to generate the text suggestions. The sorter module 318 may process the text suggestions from the numeric generator 304 and the content processing components 306 and order the text suggestions in a pre-defined order.
Additionally, the transliteration engine 206 can include a learning module to update dictionaries and the Ngram scores based on user corrections and user edits done as a part of their text entry process. The learning module helps in better transliteration for other users and also helps the system adapt better to a particular user's style of writing. Thus, for example, if a user selected the fourth option as the correct option for a particular secondary language word, then the next time the user enters the same secondary language word, the suggestion that was previously shown as the fourth option would now be presented as the first option.
Fig. 4 shows a series of snapshots 400 of a working environment showing how a user interface automatically displays transliterated text suggestions as the user enters a text input in the secondary language, according to one embodiment of the present subject matter. In one implementation, the series of snapshots 400 may correspond to transliteration in a stand-alone working environment. In another implementation, in a web-based working environment, the transliteration may happen for each character that is input as the text input, as shown in the
series of snapshots 400. In yet another implementation, in a web-based working environment, the transliteration may occur only when a user has entered a complete word followed by a separator as the text input. The separator may be entered, for example by hitting the space bar, enter key, or a comma. In one more implementation, the transliteration may be done in a predictive manner to predict possible words or best-fit words based on the characters entered as the text input. The user has the option to select one of the predicted words without entering the remaining characters of the word, if the predicted matches with the word that the user intends to enter.
The snapshot 4a shows a textbox 402 and a display area 404 below the textbox 402. The user interface allows the user to input character(s) as the text input in the secondary language in the textbox 402. As the text input is entered in the textbox 402, the corresponding transliterated text suggestions are displayed automatically in the display area 404. For example, as shown in 4a, when the user enters 'D' in the textbox 402 as a text input, the corresponding list of text suggestions are automatically displayed in the display area 404. The user can then either select any of the displayed suggestions or continue with entering more characters in the textbox 402 as the text input As more characters are added, the list of text suggestions are correspondingly generated. For example, as shown in 4b and 4c, the list of text suggestions are correspondingly generated with the number of times 'e' is entered by the user. The same process follows when the user enters more characters, like 'p', 'a', and 'k' as shown in 4d-4f.
The user can select one of the options displayed in the display area 404. If an option is selected, the text of the selected option remains in the display area 404; otherwise, the system automatically selects the text suggestion displayed at the top of the list of text suggestions. In one implementation, the list of text suggestions is provided by the transliteration engine 206 and is arranged by the sorter module 318 based on the various modules of the transliteration engine 206. In another implementation, the list of text suggestions can be arranged based upon a frequency of syllable or word usage, with the most commonly used syllable or word displayed at the top. In a yet another embodiment, the list of text suggestions may also be arranged based on a pre-defined sequence. For example, the list of text suggestions may be displayed in a sequence based on the mapping defined between the Unicode of characters of various languages.
Once a text suggestion is selected, by using either user selection or automatic selection, a syllable or word boundary is enforced, and the text suggestion process begins again for the next character. Once the entire text as desired by the user is displayed in the working environment, the user can enter a line separator character, such as a space bar, a full stop, or any punctuation mark. After the user enters the line separator character, the entire text is displayed in the same textbox 402 where the user was entering the text input in the secondary language.
Fig. 5 shows an exemplary user interface 500 for generating text suggestions, according to one embodiment of the present subject matter. The user interface 500 includes a textbox 502 and a virtual keyboard 504. The virtual keyboard 504 is shown with reference to the characters of Hindi language. However, it will be appreciated that similar virtual keyboards can be designed for any language. In one implementation, the virtual keyboard 504 includes a row of vowels 506; rows of consonants 508-1, 508-2, 508-3, and 508-4; and a floating row 510. The floating row 510 is shared between the rows of consonants 508-1 and 508-2, and is used to display the text suggestions in the form of syllable suggestions corresponding to a user-entered consonant displayed in either of the rows of the consonants 508-1 or 508-2, as shown in exemplary user interface 500.
The virtual keyboard 504 also includes a space for a second floating row 512. The floating row 512 is shared between the rows of consonants 508-3 and 508-4. Similar to the floating row 510, the floating row 512 is shown when the user hovers the cursor over any one of the consonants displayed in the rows of the consonants 508-3 or 508-4. The virtual keyboard 504 also includes a row of preview buttons 514 for displaying extended syllables for an entered character. In another implementation, the virtual keyboard 504 can have multiple rows of vowels and consonants and can have multiple floating rows. The rows can be arranged in any manner based on the language in which the virtual keyboard 504 is to be displayed.
In operation, for example, when the user hovers the cursor over the character displayed in the button 516, the character is received by the syllable updating module 114 as a text input, which in turn determines the text suggestions in the form of syllable suggestions using the syllable rendering module 208. The list display module 116 then automatically displays the syllable suggestions in the floating row 510. In addition, the extended syllables associated with the character are also displayed in the preview buttons 514. Based on the requirement, the user
can either select one of the syllable suggestions displayed in the floating row 510 or can select the character itself. The selected syllable or character is then displayed in the textbox 502.
Figs. 6-8 illustrate various methods for displaying text suggestions on text entry. The order in which the methods are described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement that method, or an alternate method. Additionally, individual blocks may be deleted from the methods without departing from the spirit and scope of the subject matter described herein. The methods may be implemented by the aforementioned computing system 106 and are described with reference to Figs. 1-5 for illustration purposes.
Fig. 6 is a flow chart showing an exemplary method 600 implemented for generating text suggestions, according to one embodiment of the present subject matter.
At block 602, the method is initiated by a user in a working environment such as a web environment or a stand-alone environment. For example, the user can select the initiation module 112 such as a bookmarklet or a selection option. At block 604, all the controls that accept text in the working environment are identified, for example, by the initiation module 112.
At block 606, a language selection input is received from the user. The language selection input may be used to select a primary language or a secondary language in which a text input will be received. At block 608, the computing system determines whether the language selection input entered is for the primary language or for the secondary language. If the language selection input is for the primary language, the process proceeds to block 610 where syllable suggestions for the text input are provided without transliteration, as described in detail with reference to Fig. 7. Otherwise, the process proceeds to block 612 where a list of text suggestions for the text input are provided after transliteration, as described in detail with reference to Fig. 8.
Fig. 7 shows an exemplary method 700 for generating text suggestions when a text input is received in a primary language, according to one embodiment of the present subject matter.
At block 702, when a character as a text input is received in the primary language, the received text input is mapped with corresponding syllable suggestions. For example, the syllable updating module 114 maps the received text input with corresponding syllable
suggestions based on the virtual key mapping scheme 214. When the mapping process is complete, the syllable updating module 114 sends the syllable suggestions to the list display module 116.
At block 704, the syllable suggestions are displayed in a floating row of a virtual keyboard. For example, the list display module 116 automatically displays the syllable suggestions in a floating row 510 of the virtual keyboard 504 so that they can be viewed by the user. The user then selects one of the options displayed by the list display module 116.
At block 706, a user selected syllable suggestion is identified, which is then displayed at block 708. For example, the text display module 118 identifies the selected syllable and displays the syllable in a text accepting area in the working environment. The process continues till the entire text input as required by the user is displayed in the working environment.
Fig. 8 shows an exemplary method 800 for generating a list of text suggestions in a primary language script when a text input is received in a secondary language, according to one embodiment of the present subject matter.
At block 802, when a text input in the secondary language is received, the text input is split into numeric and alphabetic parts. For example, the alphanumeric splitter 302 splits the alphanumeric text input into the numeric text input and the text input, as discussed. At block 804, following the splitting the alphabetic part and the numeric part are sent to block 806 and 808respectively. At block 806, a list of text suggestions in the primary language is generated based on the alphabetic part. The list of text suggestions may be generated by a direct match, an abbreviation match, a phonetic signature match, a foreign word match, or a rule based match of the alphabetic part. The word suggestions are also ranked based on the type of match. For example, the content processing components 306 map the text input to a list of text suggestion in the form of syllable and word suggestions in the primary language script. The content processing components 306 includes the definitive dictionary 308, the abbreviation handler 310, the phonetic similarity matcher 312, the foreign word dictionary 314, and the rule based generator 316, to generate a list of text suggestions corresponding to the text input.
At block 808 the numeric part of the text input is used to generate corresponding characters in the primary language script. The generation of the corresponding characters can be either based on the International Hindu-Arabic digits, i.e., the English language, or on the
primary language. For example, the numeric generator 304 generates mapping for the numeric text input, as discussed in Fig. 3.
At block 812 the results from blocks 808 and 810 are merged and duplicate results are removed. When there are duplicate text suggestions, the text suggestion with a lower rank (numerically higher rank) is removed. For example, the sorter module 318 merges the results from the modules of the content processing components 306 and the numeric generator 304 to give a list of text suggestions based on the text input, as discussed in Fig. 3.
As will be understood, the subject matter disclosed above can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. In an embodiment, the subject matter is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. Furthermore, the subject matter can take the form of a computer program product accessible from a computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of description, a computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk.
I/We claim:
1. A system (106) comprising:
a processor (108);
a memory (110) coupled to the processor (108);
an initiation module (112) configured to initiate a text input;
a syllable updating module (114) comprising,
a transliteration engine (206) configured to receive the text input in a secondary language and, in response to the text input, generate a list of text suggestions in a primary language, and
a syllable rendering module (114) configured to receive the text input in the primary language, wherein the syllable rendering module (114) maps the text input with corresponding syllable suggestions in the primary language; and a list display module (116) configured to display the list of text suggestions and the syllable suggestions in response to the received text input.
2. The system (106) as claimed in claim 1, wherein the text input is received in a web-based working environment.
3. The system (106) as claimed in claim 1, wherein the text input is received in a standalone working environment.
4. The system (106) as claimed in claim 1, wherein the initiation module (112) is a bookmarklet.
5. The system (106) as claimed in claim 1, further comprising a text display module (118) configured to identify a selected suggestion and display the selected suggestion in a text accepting area.
6. The system (106) as claimed in claim 5, wherein the selected suggestion is identified from amongst one of the list of text suggestions and the syllable suggestions.
7. The system (106) as claimed in claim 5, wherein the syllable updating module (114) identifies the selected suggestion based on at least one of a new character input, an ordinarily used word selection, and a user selection.
8. A system (106) comprising:
a processor (108);
a memory (110) coupled to the processor (108);
a transliteration engine (206) configured to receive a text input in a secondary language, the transliteration engine (206) comprising:
a phonetic similarity matcher (312) configured to map the text input, based on a phonetic signature of the text input, to candidate phonetic words in the primary language, and
a rule based generator (316) configured to map the text input, based on rules, to candidate rule based words in the primary language; and a list display module (116) configured to display the candidate phonetic words and the candidate rule based words in response to the received text input.
9. The system (106) as claimed in claim 8, the system comprising:
an initiation module (112) configured to initiate the text input; and a text display module (118) configured to identify a selected word and display the selected word in a text accepting area, wherein the selected word is identified from amongst the candidate rule based words and the candidate phonetic based words.
10. The system (106) as claimed in claim 8, wherein the transliteration engine (206) further comprises an alphanumeric splitter (302) configured to generate the text input from an alphanumeric text input by removing a numeric part in the alphanumeric text input.
11. The system (106) as claimed in claim 8, wherein the transliteration engine (206) further comprises a definitive dictionary (308) configured to map the text input, based on a definite dictionary, to corresponding word suggestions in the primary language.
12. The system (106) as claimed in claim 8, wherein the transliteration engine (206) further comprises an abbreviation handler (310) configured to return an abbreviation in the primary language based on mapping, in the secondary language, the abbreviation to the text input.
13. The system (106) as claimed in claim 12, wherein the abbreviation handler (310) further comprises:
an initialism generator (320) configured to generate an initialism by transliterating each letter of a mapped text input into the primary language; and
an acronym generator (322) configured to generate an acronym by transliteration of the mapped text input into the primary language.
14. The system (106) as claimed in claim 8, wherein the phonetic similarity matcher (312)
comprises:
a phonetic signature generator (324) configured to generate the phonetic signature for the text input;
a language dictionary (328) comprising a set of words and corresponding phonetic signatures, the language dictionary (328) being configured to return the candidate phonetic words having the same phonetic signature as the text input; and
a similarity scorer ranker (326) configured to compare a similarity of secondary language spellings of the candidate phonetic words with the text input, wherein the similarity scorer ranker is further configured to rank the candidate phonetic words based on a ranking score.
15. The system (106) as claimed in claim 14, wherein the similarity scorer ranker (326) compares the similarity based on a similarity measure.
16. The system (106) as claimed in claim 14, wherein the ranking score is based on a frequency of occurrence of secondary language transliterations of the body of words.
17. The system (106) as claimed in claim 8, wherein the rule based generator (316) comprises:
a language syllable constructor (330) configured to return the candidate rule based words, in the primary language, based on the text input and the rules; and
a scorer pruner ranker (332) configured to compute a score of the candidate rule based words based on Ngram frequencies as the candidate rule based words are being generated, the scorer pruner ranker further configured to remove the candidate rule based words having the score less than a threshold value.
18. A system (106) comprising:
a processor (108);
a memory (110) coupled to the processor (108);
a syllable updating module (114) configured to receive a text input in a primary language from a virtual keyboard, wherein the syllable updating module (114) maps the text input with corresponding syllable suggestions in the primary language; and
a list display module (116) configured to display the syllable suggestions in a floating row in the virtual keyboard in response to the received text input.
19. The system (106) as claimed in claim 18, the system further comprising:
an initiation module (112) configured to initiate an input of the text input from the virtual keyboard; and
a text display module (118) configured to identify a selected syllable and display the selected syllable in a text accepting area, wherein the selected syllable is identified from amongst the syllable suggestions.
20. The system (106) as claimed in claim 18, wherein the syllable updating module (114) comprises a syllable rendering module (208) to map the text input in the primary language to the syllable suggestions.
21. The system (106) as claimed in claim 18, wherein the virtual keyboard has at least two floating rows for displaying the syllable suggestions for the text input.
22. The system (106) as claimed in claim 18, wherein the virtual keyboard has one or more floating rows that are shared between at least two rows of consonants.
23. A method comprising:
receiving a language selection input for a text input;
mapping the text input to corresponding syllable suggestions in a primary language when the language selection input corresponds to a primary language input;
mapping the text input to a list of text suggestions in the primary language when the language selection input corresponds to a secondary language input; and
displaying at least one of the list of text suggestions and the syllable suggestions.
24. The method as claimed in claim 23, further comprising:
identifying a selected suggestion from amongst the syllable suggestions and the list of text suggestions; and
displaying the selected suggestion in a text accepting area.
25. A method comprising:
initiating a text input;
receiving the text input in a primary language from a virtual keyboard; mapping the text input in the primary language with corresponding syllable suggestions in the primary language; and
displaying the syllable suggestions in a floating row in the virtual keyboard.
26. The method as claimed in claim 25, further comprising:
identifying a selected syllable from the syllable suggestions; and displaying the selected syllable in a text accepting area.
27. The method as claimed in claim 25, wherein the mapping comprises determining the syllable suggestions from a virtual key mapping scheme.
28. A method comprising:
receiving a text input in a secondary language;
mapping the text input, based on a phonetic signature match, to candidate phonetic words in a primary language;
mapping the text input, based on a rule based match, to candidate rule based words in the primary language; and
displaying the candidate phonetic words and the candidate rule based words.
29. The method as claimed in claim 28, further comprising:
identifying a selected word from the displayed words; and displaying the selected word in a text accepting area .
30. The method as claimed in claim 28, further comprising mapping the text input, based on a definite match, to a word suggestion in the primary language.
31. The method as claimed in claim 28, wherein the mapping based on the phonetic signature match further comprises:
generating a phonetic signature for the text input;
mapping the text input to candidate phonetic words that have the same phonetic signature;
generating corresponding secondary language transliteration of the candidate phonetic words; and
scoring the candidate phonetic words based on a similarity measure.
32. The method as claimed in claim 28, wherein mapping the text input based on rule based
match comprises:
generating syllables of the primary language based on the text input and on the rules to identify the syllables as one of a consonant, a half-consonant, a vowel, and a vowel extender;
generating at least one candidate rule based word based on generating the syllables and on rules of grammar of the primary language;
scoring the at least one candidate rule based word based on an Ngram frequencies of the syllables; and
removing a sequence of the syllables having the score less than a threshold value.
33. The method as claimed in claim 28, further comprising:
mapping the text input, based on an abbreviations match, to an abbreviations word suggestion; and
mapping the text input, based on a foreign word match, to a foreign word in the primary language.
34. The method as claimed in claim 28, further comprising generating the text input from
an alphanumeric text input by removing a numeric part from the alphanumeric text
input.
| Section | Controller | Decision Date |
|---|---|---|
| # | Name | Date |
|---|---|---|
| 1 | 2391-DEL-2009-Form-5-(25-02-2010).pdf | 2010-02-25 |
| 1 | 2391-DEL-2009-IntimationOfGrant19-01-2023.pdf | 2023-01-19 |
| 2 | 2391-DEL-2009-Form-3-(25-02-2010).pdf | 2010-02-25 |
| 2 | 2391-DEL-2009-PatentCertificate19-01-2023.pdf | 2023-01-19 |
| 3 | 2391-DEL-2009-Written submissions and relevant documents [18-01-2023(online)].pdf | 2023-01-18 |
| 3 | 2391-DEL-2009-Form-2-(25-02-2010).pdf | 2010-02-25 |
| 4 | 2391-DEL-2009-Form-1-(25-02-2010).pdf | 2010-02-25 |
| 4 | 2391-DEL-2009-Correspondence to notify the Controller [12-12-2022(online)].pdf | 2022-12-12 |
| 5 | 2391-DEL-2009-US(14)-HearingNotice-(HearingDate-03-01-2023).pdf | 2022-12-08 |
| 5 | 2391-DEL-2009-Drawings-(25-02-2010).pdf | 2010-02-25 |
| 6 | 2391-DEL-2009-Description (Complete)-(25-02-2010).pdf | 2010-02-25 |
| 6 | 2391-DEL-2009-CLAIMS [27-03-2020(online)].pdf | 2020-03-27 |
| 7 | 2391-DEL-2009-DRAWING [27-03-2020(online)].pdf | 2020-03-27 |
| 7 | 2391-DEL-2009-Correspondence-Others-(25-02-2010).pdf | 2010-02-25 |
| 8 | 2391-DEL-2009-FER_SER_REPLY [27-03-2020(online)].pdf | 2020-03-27 |
| 8 | 2391-DEL-2009-Claims-(25-02-2010).pdf | 2010-02-25 |
| 9 | 2391-DEL-2009-Abstract-(25-02-2010).pdf | 2010-02-25 |
| 9 | 2391-DEL-2009-OTHERS [27-03-2020(online)].pdf | 2020-03-27 |
| 10 | 2391-DEL-2009-Correspondence-170320.pdf | 2020-03-20 |
| 10 | 2391-del-2009-gpa.pdf | 2011-08-21 |
| 11 | 2391-del-2009-form-3.pdf | 2011-08-21 |
| 11 | 2391-DEL-2009-Power of Attorney-170320.pdf | 2020-03-20 |
| 12 | 2391-DEL-2009-FORM 4(ii) [28-02-2020(online)].pdf | 2020-02-28 |
| 12 | 2391-del-2009-form-2.pdf | 2011-08-21 |
| 13 | 2391-DEL-2009-FER.pdf | 2019-08-30 |
| 13 | 2391-del-2009-form-1.pdf | 2011-08-21 |
| 14 | 2391-del-2009-drawings.pdf | 2011-08-21 |
| 14 | FORM-6-1001-1100(JAYA).1.pdf | 2015-03-13 |
| 15 | 2391-del-2009-description (provisional).pdf | 2011-08-21 |
| 15 | MS to MTL Assignment.pdf | 2015-03-13 |
| 16 | 2391-del-2009-correspondence-others.pdf | 2011-08-21 |
| 16 | MTL-GPOA - JAYA.pdf | 2015-03-13 |
| 17 | FORM-6-1001-1100(JAYA).1.pdf ONLINE | 2015-03-05 |
| 17 | 2391-del-2009-abstract.pdf | 2011-08-21 |
| 18 | MS to MTL Assignment.pdf ONLINE | 2015-03-05 |
| 18 | MTL-GPOA - JAYA.pdf ONLINE | 2015-03-05 |
| 19 | MS to MTL Assignment.pdf ONLINE | 2015-03-05 |
| 19 | MTL-GPOA - JAYA.pdf ONLINE | 2015-03-05 |
| 20 | 2391-del-2009-abstract.pdf | 2011-08-21 |
| 20 | FORM-6-1001-1100(JAYA).1.pdf ONLINE | 2015-03-05 |
| 21 | 2391-del-2009-correspondence-others.pdf | 2011-08-21 |
| 21 | MTL-GPOA - JAYA.pdf | 2015-03-13 |
| 22 | 2391-del-2009-description (provisional).pdf | 2011-08-21 |
| 22 | MS to MTL Assignment.pdf | 2015-03-13 |
| 23 | FORM-6-1001-1100(JAYA).1.pdf | 2015-03-13 |
| 23 | 2391-del-2009-drawings.pdf | 2011-08-21 |
| 24 | 2391-DEL-2009-FER.pdf | 2019-08-30 |
| 24 | 2391-del-2009-form-1.pdf | 2011-08-21 |
| 25 | 2391-DEL-2009-FORM 4(ii) [28-02-2020(online)].pdf | 2020-02-28 |
| 25 | 2391-del-2009-form-2.pdf | 2011-08-21 |
| 26 | 2391-del-2009-form-3.pdf | 2011-08-21 |
| 26 | 2391-DEL-2009-Power of Attorney-170320.pdf | 2020-03-20 |
| 27 | 2391-DEL-2009-Correspondence-170320.pdf | 2020-03-20 |
| 27 | 2391-del-2009-gpa.pdf | 2011-08-21 |
| 28 | 2391-DEL-2009-Abstract-(25-02-2010).pdf | 2010-02-25 |
| 28 | 2391-DEL-2009-OTHERS [27-03-2020(online)].pdf | 2020-03-27 |
| 29 | 2391-DEL-2009-Claims-(25-02-2010).pdf | 2010-02-25 |
| 29 | 2391-DEL-2009-FER_SER_REPLY [27-03-2020(online)].pdf | 2020-03-27 |
| 30 | 2391-DEL-2009-DRAWING [27-03-2020(online)].pdf | 2020-03-27 |
| 30 | 2391-DEL-2009-Correspondence-Others-(25-02-2010).pdf | 2010-02-25 |
| 31 | 2391-DEL-2009-Description (Complete)-(25-02-2010).pdf | 2010-02-25 |
| 31 | 2391-DEL-2009-CLAIMS [27-03-2020(online)].pdf | 2020-03-27 |
| 32 | 2391-DEL-2009-US(14)-HearingNotice-(HearingDate-03-01-2023).pdf | 2022-12-08 |
| 32 | 2391-DEL-2009-Drawings-(25-02-2010).pdf | 2010-02-25 |
| 33 | 2391-DEL-2009-Form-1-(25-02-2010).pdf | 2010-02-25 |
| 33 | 2391-DEL-2009-Correspondence to notify the Controller [12-12-2022(online)].pdf | 2022-12-12 |
| 34 | 2391-DEL-2009-Written submissions and relevant documents [18-01-2023(online)].pdf | 2023-01-18 |
| 34 | 2391-DEL-2009-Form-2-(25-02-2010).pdf | 2010-02-25 |
| 35 | 2391-DEL-2009-PatentCertificate19-01-2023.pdf | 2023-01-19 |
| 35 | 2391-DEL-2009-Form-3-(25-02-2010).pdf | 2010-02-25 |
| 36 | 2391-DEL-2009-Form-5-(25-02-2010).pdf | 2010-02-25 |
| 36 | 2391-DEL-2009-IntimationOfGrant19-01-2023.pdf | 2023-01-19 |
| 37 | 2391-DEL-2009-FORM-27 [11-09-2025(online)].pdf | 2025-09-11 |
| 1 | 2019-08-2914-49-50_29-08-2019.pdf |