Goals of TypeThai
Click a goal for more details.
- ☑ - Basic Conversion
- ☑ - List of Candidates
- ☑ - Tones
- ☐ - Automatic Reduplication Recognition
- ☑ - Vowel Circumfixation
- ☒ - Intelligent Guessing and Sorting
- ☒ - Word Parsing
- ☒ - Dictionary Integration
- ☒ - Windows and UNIX Compatibility
- ☒ - Preference Pane
- ☐ - Auto-update
- ☒ - User Dictionary
The main goal is, obviously, to convert between romanized Thai and Thai alphabet. So converting 'k' to 'ก', 'ข', 'ค', or 'ฆ', regardless of context. This basic task has been completed, but it's not as pleasant an experience as it could be. That's why we have more goals, below.
List of Candidates
In the cases where there are multiple correct Thai words that all correspond to a single (or multiple) English words, we want to provide a list of options. For example when you type 'krap' you might want 'กรับ' or 'ครับ' or maybe something else. Who am I to dictate what you are trying to type? When you type, you are given the option to choose which Thai spelling is appropriate for what you've typed.
Tones are currently supported. If the word can be found in the program's internal dictionary you do not need to write with tones.
However, if you want a more accurate result, we encourage using tones. To write tones you can use ',' for 'mai eek' (อ่), '>' for 'mai too' (อ้), "'" for 'mai dtrii' (อ๊), and '<' for 'mai jat-da-wa' (อ๋). A variety of other special symbols and characters are also supported, check the documentation page for more details!
Automatic Reduplication Recognition
Status: Partially Complete / In Development
Reduplication is a process where a word or part of a word (eg: syllable) is repeated to add some grammatical meaning. In Thai the character 'ๆ' is used to avoid re-writing reduplicated syllables for words like 'สิ่งใดๆ' (singdaidai - 'anything') where the syllable 'dai' is repeated.
Currently, you can type an upper-case 'R' to tell TypeThai that you want to use the reduplication character, but it would be easier for the program to recognize it automatically so you can just type what you hear.
In Thai, vowels can go before a consonant, above, below or after despite being pronounced after that consonant. For example, 'ไป' ('bpai' - 'to go') is spelled in Thai with the vowel (ไ) before the consonant. In english, on the other hand, the vowel comes after.
Solving this problem is non-trivial, but, we've done it!
Intelligent Guessing and Sorting
Currently your choices are picked from the dictionary, based upon what you typed, and based on a very loose guess by the program about what it thinks you are trying to say. Then, all the results are ordered randomly and shown to your as options.
Not so helpful, eh?
The plan is to switch over to weighted FSTs (WFST) rather than the current simple FSTs which should provide more options for the ranking of candidates. We're just looking for a good WFST framework that will mesh well with the current work
At the moment, you need to type one word at a time, and then transliterate it to Thai. It would be nice to be able to type a whole sentence and then hit enter and see it all separated into words and transliterated.
This depends on the quality of the guessing that the program can do as well as on the ability to split up a sentence into words (since Thai doesn't use spaces to mark the ends of words).
This one might take a while.
I think it would be cool to have a dictionary included that showed you the definitions of different words you are typing to help make sure you aren't making silly mistakes.
Windows and UNIX Compatibility
I haven't finished writing this for Mac OS yet, but would like help from experienced UNIX or Windows developers. If you're interested contact me. Otherwise, this may take some time.
I want to have a preference pane to configure options such as transliteration scheme (what letter combinations convert to what Thai letters), dictionary options, update options, etc...
Status: Partially Complete / In Development
Auto-update has been tentatively added. Please let me know if you have any trouble with it.
The program should save your past choices and use them to help rank future typing. It would also be very helpful if words that weren't in the base dictionary were sent to a central server to be added to the main program in future updates. This option could be enabled/disabled in the preferences.