Sulekha: Transliteration Based Indic Texteditor

Learning how to type in our own Mother tongue is always a problem for newbies. Usually we will just use English as “yeh kya hey” while chatting/mailing. It is because of this reason the transliteration based input methods are more popular than the Inscript in some languages. Google recently released their Indic transliterate service, a web based text editor which will take English words and convert to Indic languages with the help of some machine learning.
But as far as a normal user is concerned there are many things missing there. It works only if you are online, the suggestions it is listing for English words are often wrong words with spelling mistakes, not a free software etc..
It is in this context, I tried to develop a Desktop application which will act as transliteration based text editor with almost all features of Google transliterate and with some extra features. The project is called as ‘Sulekha”, meaning “one who writes well”
What is Sulekha
Sulekha is a GTK based text editor. It transliterated the English words to Malayalam (It is not only designed for Malayalam. but I started it for Malayalam) when user types space/newline. If the transliterated word is an actual Malayalam word , Sulekha will replace the English word with the Malayalam word. Other wise we will try to get an exact match from the dictionary we have. If there are multiple words which matches the transliterated word, we will show it as an option list, just like a spell checker. If there is no suggestions, there is a onscreen keyboard, using that user can type using mouse and we will add that new word to the dictionary. Thereby Sulekha learns new words.

If one experienced user wants to use type some words using any input methods, we can disable the sulekha algorithm as well. Then it works as a normal text editor. Sulekha uses Aspell for word learning and suggestions. There is a transliteration engine which transliterated the word to a particular language.
So it is possible to extend Sulekha to any language having Aspell word list. Just need to write one transliteration engine which it language specific. Sulekha editor is a hack on the gtkspell library code which works as a basis for GEDIT text editor. If possible, we can think about a web based sync of word lists also.

The project is not complete, but the code is available in the GIT repository of Swathanthra Malayalam Computing at Savannah
To build the code;
./configure
make

To run:
For editor :
sulekha
For commandline transliterator
sulekha englishword_to_transliterate

This is the TODO list of Sulekha as of now
1. Onscreen keyboard- Coding and Integration
2. Session dictionary/System dictionary Handling
3. Fixing some bugs in Transliteration system, especially the letters after Chillu.- need a small correction in the algorithm
4. Implementing the Editor Menu functions, File Handling
5. Tuning Aspell configuration for the Edit distance optimization for the best suggestions, Currently the suggestion list is too big and suggestion words include words with more than 2 edit distance.
6. Handling the edit inside the word
7. Web Integration

If you are interested in this project/adding new language support please contact santhosh00 at gmail.com

Happy Hacking!!!

ഇതാ വരുന്നൂ, സുലേഖ

ഗൂഗിള്‍ ഈയിടെ പുറത്തിറക്കിയ ഗൂഗിള്‍ ട്രാന്‍സ്ലിറ്ററേറ്റ് എന്ന സേവനത്തില്‍ നിന്ന് പ്രചോദനമുള്‍‌ക്കൊണ്ട് സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് അവതരിപ്പിയ്ക്കുന്നു, പുതിയ സ്വതന്ത്ര സോഫ്റ്റ്‌വെയര്‍ സംരംഭം: “സുലേഖ ”

എന്താണ് സുലേഖ?

സുലേഖ gtk യില്‍ തീര്‍ത്ത ഒരു GUI ടെക്സ്റ്റ് എഡിറ്ററാണ്. വരമൊഴി, സ്വനലേഖ തുടങ്ങിയവ ഓരോ അക്ഷരത്തിനെയും ലിപ്യന്തരണം ചെയ്യുമ്പോള്‍ പദാനുപദ ലിപ്യന്തരണമാണ് സുലേഖ ചെയ്യുന്നത്. ഓരോ വാക്കും കഴിഞ്ഞ് സ്പേസ് അടിയ്ക്കുമ്പോള്‍ തൊട്ടുമുമ്പ് ടൈപ്പ് ചെയ്ത മംഗ്ലീഷ് മലയാളമായി മാറുന്നു. എഴുതിയ മംഗ്ലീഷ് ആശയക്കുഴപ്പമില്ലാതെ ഒരു മലയാളം വാക്കിന് തത്തുല്യമാണെങ്കില്‍ ആ മലയാളം വാക്ക് വരുന്നു. അല്ലെങ്കില്‍ മംഗ്ലീഷിന്റെ ഏകദേശ ലിപ്യന്തരണം നടത്തി, ആ വാക്ക് ഒരു ചുവപ്പ് അടിവരയോടു കൂടി കാണിയ്ക്കുന്നു. റൈറ്റ് ക്ലിക്ക് ചെയ്യുമ്പോള്‍ ഏറ്റവും യോജിച്ച മലയാളം വാക്കുകള്‍ മെനുവില്‍ കാണിയ്ക്കുന്നു. എന്നിട്ടും ഉദ്ദേശിച്ച വാക്ക് വന്നില്ലെങ്കില്‍ ഒരു ഓണ്‍സ്ക്രീന്‍ കീബോര്‍ഡിന്റെ സഹായത്തോടെ മൗസ് ഉപയോഗിച്ച് വാക്ക് ടൈപ്പ് ചെയ്യാം. ഇങ്ങനെ ചേര്‍ക്കുന്ന പുതിയ വാക്കുകള്‍ സുലേഖ പഠിയ്ക്കുന്നു.

ഉപയോക്താവിന് വേണമെങ്കില്‍ സുലേഖ എഡിറ്ററിനെ ഒരു സാദാ ടെക്സ്റ്റ് എഡിറ്ററായും ഉപയോഗിയ്ക്കാം. സുലേഖ അല്‍ഗോരിതം ഉപയോഗിയ്ക്കാതെ ഇന്‍സ്ക്രിപ്റ്റ്, സ്വനലേഖ, മൊഴി, ലളിത എന്നിവ ഏതെങ്കിലും ഉപയോഗിച്ച് ടൈപ്പ് ചെയ്യാം
സ്ക്രീന്‍ഷോട്ട് കാണുക

മലയാളത്തിന് വേണ്ടി മാത്രമല്ല ഇത് രൂപകല്പന ചെയ്തിരിയ്ക്കുന്നത്. ഏകദേശം അറുപതോളം ഭാഷകള്‍ (അതായത് ഗ്നു ആസ്പെല്‍ പദാവലി ലഭ്യമായ ഏതൊരു ഭാഷയും)സുലേഖയില്‍ ചേര്‍ക്കാവുന്നതാണ്. സുലേഖയില്‍ ചേര്‍ക്കുന്ന ഓരോ വാക്കും സത്യത്തില്‍ പഠിയ്ക്കുന്നത് ആസ്പെല്‍ ആണ്. ആസ്പെല്‍ പദാവലികള്‍ (പുതിയ വാക്കുകള്‍ ഹോം ഫോള്‍ഡറില്‍ ഒരു .dot file ആയി‌ ശേഖരിയ്ക്കപ്പെടും)പരസ്പരം പങ്ക് വെയ്ക്കുകയാണെങ്കില്‍, ഒരാളുടെ കമ്പ്യൂട്ടറില്‍ പഠിച്ച് വാക്കുകള്‍ മറ്റൊരാള്‍ക്ക് അയാളുടെ കമ്പ്യൂട്ടറില്‍ ഉപയോഗിയ്ക്കാം. ഒരു വെബ് ഇന്റര്‍ഫേസ് വഴി ഈ പദസഞ്ചയങ്ങളെ സിങ്ക് ചെയ്താല്‍ നമ്മുടെ കോര്‍പ്പസ് പ്രൊജക്റ്റിന് അതൊരു മുതല്‍ക്കൂട്ടാകും. അറിയാതെ ഏതെങ്കിലും തെറ്റിപഠിപ്പിച്ചാല്‍ ഒരു manual edit ലൂടെ പരിഹരിയ്ക്കാവുന്നതുമാണ്.

പാംഗോ, ജിടികെ, ആസ്പെല്‍ എന്നി സ്വതന്ത്ര സോഫ്റ്റ്‌വെയര്‍ ലൈബ്രറികളാണ് സുലേഖയുടെ അടിത്തറ. ആസ്പെല്‍ സ്പെല്ലിങ്ങ് തിരുത്തലിനും നിര്‍ദ്ദേശങ്ങള്‍ക്കും, പദപഠനത്തിനും ഉപയോഗിയ്ക്കുമ്പോള്‍, പാംഗോ, വാക്കുകള്‍ കൈകാര്യം ചെയ്യാന്‍ ഉപയോഗിയ്ക്കുന്നു. ജിടികെ UI യ്ക്കും. ഇതിനു പുറമേ ഇന്റലിജന്റ് ട്രാന്‍സ്ലിറ്ററേഷന് വേണ്ടി C യില്‍ സ്വന്തമായി വികസിപ്പിച്ചെടുത്ത ഒരു മലയാളം word level transliteration engine ഉം
ഉണ്ട്. അത് ഒരു സ്വതന്ത്ര API ആക്കി മാറ്റുവാന്‍ ശ്രദ്ധിയ്ക്കുന്നുണ്ട്. പ്രശസ്ത ടെക്സ്റ്റ് എഡിറ്ററായ gedit ന്റെ കോഡിലെ ചില ഭാഗങ്ങള്‍ ഹാക്ക് ചെയ്താണ് എഡിറ്ററിന്റെ അടിത്തറ ഇട്ടിരിയ്ക്കുന്നത്. അതുകൊണ്ട് തന്നെ gedit നെ സുലേഖ കോഡ് ഉപയോഗിച്ച് കമ്പൈല്‍ ചെയ്ത് പൂര്‍ണ്ണമായും ഉപയോഗപ്പെടുത്തുകയും ആവാം എന്നൊരു സ്വപ്നവും ഉണ്ട്.

വികസന പ്രക്രിയയുടെ പകുതിയോളം പൂര്‍ത്തിയായ സുലേഖയുടെ കോഡ് സ്വ.മ.കയുടെ സാവന്നയിലെ ജിറ്റില്‍ (GIT : Source Code Control System)നിന്നെടുത്ത് പരിശോധിയ്ക്കാവുന്നതാണ്. പൂര്‍ണ്ണമായും ഉപയോഗയോഗ്യമാവണമെങ്കില്‍ കുറച്ചു കൂടി കാത്തിരിയ്ക്കേണ്ടി വരും.

Project Idea, Design : Praveen A (Inspired by Google Transliterate)
Design, Algorithm, Development: Santhosh Thottingal
License: GPL v3 or later version

നിര്‍ദ്ദേശങ്ങളും അഭിപ്രായങ്ങളും അറിയിക്കുക. പെട്ടെന്ന് സംരംഭം പൂര്‍ത്തിയാക്കാന്‍ ഇതിന്റെ വികസനപ്രക്രിയയില്‍ പങ്കെടുക്കാന്‍ താത്പര്യമുള്ള ഡെവലപ്പേഴ്സിനെ സ്വാഗതം ചെയ്യുന്നു.

സുലേഖയില്‍ ഇനി ചെയ്യാനുള്ളത്:
1. ഓണ്‍സ്ക്രീന്‍ കീബോര്‍ഡ്- Coding and Integration
2. Session dictionary/System dictionary Handling
3. Fixing some bugs in Transliteration system, especially the letters after Chillu.- need a small correction in the algorithm
4. Implementing the Editor Menu functions, File Handling
5. Tuning Aspell configuration for the Edit distance optimization for the best suggestions, Currently the suggestion list is too big and suggestion words include words with more than 2 edit distance. I think using the Ultra Mode of Aspell will solve this problem
6. Handling the edit inside the word
7. Web Integration

To build the code;
./configure
make

To run:
For editor :
sulekha
For standalone transliterator
sulekha manglishword

എന്റെ കമ്പ്യൂട്ടറിന് എന്റെ ഭാഷ – ഒരു സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് സംരംഭം

Hacking the GLMatrix screensaver

I am sure that many of you are fans of “The Matrix” series. And many of you might be using the Matrix Screensavers in your system.
But did you ever think like this: “Why cant that glowing green glyphs that rains in black screen be Indic ?”
Well, Not a bad Idea. Right?
Ok, Shall we try to hack the glmatrix screen saver? Here you go!

1. Download the xscreensaver sourcecode from http://www.jwz.org/xscreensaver/download.html

2. Configure and make it(just to ensure that you have required libraries in your machine)

3. Goto hacks/images folder of that source code. You will see matrix3.xpm file there. Backup it , it is valuable:)

4. I am going to use Hindi glyphs(You can use the glyphs from your mother tongue).Now we need to create one xpm image file with same dimension and size of the original one. Write one html page with table and arrange the alphabets there. Note the table should be a 512*598 pixels 13 rows, 16 columns.

5. Refer the following Hindi table. Take a screenshot of the html and get the table alone. You may use the source code of the below table for your language.

! @ # $ % ^ & * ( ) _ + , / .
कु नु रु चु पु
र‍ कू
धा
क्ष @ ( ) _ + , / .
* ! @ # $ ​​​​~ ÷ ¾ , ¼ ½
क्ष पो नु
रू भू जुु गुु सु मु नि षि वी
क्ष ळ‍
& ज्ञ श्र


6. Open GIMP and create a new image with image with 512*598 pixel size. paste the table screenshot on the blank image. You can save it as matrix3.xpm file.

7. From my experiments I found that the image should be the mirror copy of the the table image.So flip the image horizontally to get the mirror image and save

8. You can see that the size of the image around 601 KB. But the actual image should be around 301 KB file. Go to Layers-> Colours->posterize. And give the number of colours as 91 (some value around 90). Save it.

9. Now you have the matrix glyph image ready.

10. goto hacks/glx folder. Apply the below patch to glmatrix.c

1079c1079
< XSCREENSAVER_MODULE_2 ("GLMatrix", glmatrix, matrix) --- > XSCREENSAVER_MODULE_2 (“Hindi Matrix”, glmatrix, matrix)

11. Recompile it! Done? No, wait. We need to add this as a screensaver to Gnome-screensaver
12. Create one Hindi Matrix.desktop file in usr/share/applications/screensavers folder. Here is my file

[Desktop Entry]
Encoding=UTF-8
Name=Hindi Matrix
Comment=Draws 3D dropping characters similar to what is seen in the title sequence of “The Matrix”, written by Jamie Zawinski. This is a Hindi glyph version written by Santhosh Thottingal.
TryExec=himatrix
Exec=himatrix -root -speed 5.0 -density 50
StartupNotify=false
Terminal=false
Type=Application
Categories=Screensaver
X-Ubuntu-Gettext-Domain=xscreensaver

13. Copy the glmatrix binary to usr/lib/xscreensaver/himatrix.

14. Now go to System-> preferences -> Screensave. Your screensaver should be listed there. See my screenshot

You can download Hindi and Malayalam matrix deb package from here

Happy Hacking!!!