Ezhil code-freeze | rc1 v0.99

cropped-failure_gpforeducation_8644430776.jpg

At Team Ezhil we proposed to declare code-freeze for Ezhil for reaching v1.0 stable builds on major platforms. In this regard today the release candidate 1 for v0.99 is ready. During this process we addressed some long standing interpreter (core) bugs and updated examples for aesthetic comments.

  1. Windows 64b package at  ezhillang.org, source forge.
  2. Linux (Ubuntu 64b amd/x86) package at ezhillang, source forge.
  3. People interested to build for other platforms (Mac OSX, Fedora and Win32) are requested to get in touch with ezhil team.

At this time I welcome:

  • contributors and reviewers to use and provide early feedback before final version is released.
  • Errors by omissions and additions or typos are requested to be brought to our attention.

For questions and comments: ezhillang@gmail.com.

San José, California.

சொல்வளம் – புதிர்

குறிப்பு : எப்படி விளையாடுவது ?

கீழ் உள்ள சொற்களை சதுரத்தில் கண்டெடுங்கள். சொற்கள் இடது->வலது, மேல்->கீழ் என்றும் அல்லது மாற்று வரிசையிலும் அமையும். விடைகளை அடுத்த வலை பதிவில் தருகிறேன். முடிந்தால் print அச்சிட்டு தாளில் செய்துபாருங்கள்.

சொற்கள்

எழில் தமிழ் கணிமை வெளியீடு நிரலாக்கம் நிரல்படுத்துதல் இயக்கு பட்டியல் அணி
கணம் வரிசைப்படுத்து திறமூலம் பொதுவெளி பயிற்சி தரவமைப்பு வழுதேடல் வாக்கியம் இலக்கணம்

புதிர்சதுரம்


க் மி நி ல் டு த் து ல்
து நி லா க் ம் க் தி வா
ழ் ம் யீ ம் க்
பொ தே டு ணி ட் மி மூ க் கி
து ம் வெ ம் க் மை டி
க் ல் வெ கு ம் ம்
ல் ளி ப் ரி மை ல் மை ம்
பு சை யி ப் ல் ப்
ம் ழி ம் வா ப் மை பு க்
பு ல் ல் ழு து ம் ம்
வெ வெ ளி யீ டு ம் தே டு யி
வெ ழி ணி மி ழ் த் ற்
ணி க் ம் பு து ல் ணி து சி

வலது சொடுக்கு “இயக்கு” – எழில் திருத்தியில்

கைவசம் வேகமாக எழில் திருத்தியில் இயக்கு என்று செய்வதற்கு ஒரு பட்டன் இல்லை இதுவரை. இதனால் நீங்கள் குறுகிய நிரலை எழுதினாலும், அல்லது “தமிழில் நிரல் எழுது” புத்தகத்தில் உள்ள உதாரணங்களை “உதவி” மெனுவில் இருந்து இயக்கிவருவதும் கொஞ்சம் கடினமாக அமையும்.

வருகை வேகமாக இயக்க,   வலது சொடுக்கு right-click மெனுவில் இயக்கு என்று பட்டனை இன்று சேர்த்தேன். இது கொஞ்சம் விறுவிறுப்பான வேலை. இது எப்படி செயல்படுகிறது என்று பாருங்களேன்,

 

  1. முதலில் எழில் திருத்தியான “எழுதி” திறக்கவும்.
    aug13_s0
  2. இரண்டாவதாக “இயக்கு” என்ற கருவி பட்டையில்  (toolbar) உள்ள பட்டனை சொடுக்குங்கள். இது பச்சை எழுத்துக்களில் உள்ள நிரல் வெளியீடை தரும். (வலது புரம் பார்க்கவும்.)aug13_s1
  3. மூன்றாவதாக, உதாரணத்துக்கு உங்களுக்கு “30-ன் அடுக்கு பெருக்கு  எவ்வளவு?” என்ற கேள்வியை விடைகாண இங்கு எழுதலாம். இடது பக்கம் எழுதியபின் இதனை “வலது சொடுக்கி இயக்கு” என்று சொல்லவும் – கீழ் கண்டது போல.aug13_s2
  4. அடுத்து “விரைவாக இயக்கு” என்பது விடையை உங்களுக்கு அளிக்கும்.aug13_s3

இது இன்றைய அக்கம்.

Aside

Tamil language model

TL;DR

Last week I collected letters (323 letter forms)  from open-tamil and estimated the unigram, bigrams and trigram frequencies in a given Tamil lexicon with about 65,0000 odd words. The interesting results are found in this Open-Office Calc spreadsheet.

This was somewhat of a enjoyable exercise to me, to revisit some of the hardwork I have done in Open-Tamil, particularly in the utf8 module, among other contributions to Open-Tamil library from a wider team.

However, whats in it for you, dear reader ? To cut to the chase, here is all the meat and potatoes of the results:

  1. Tamil word frequencies sorted by word-length for the 65k words show a mean wordlength (using weighted average) of 5.404; 5 is a beautiful Prime number and Indian mythology will also have some suitable references.
    • This word frequency distribution comes out like the following (y-axis log scale)

      tamil word frequency as function of word length

      Fig. 1. Tamil word frequency as function of word length

    • Word Length Frequency
      1 102
      2 1799
      3 6434
      4 13200
      5 14489
      6 11636
      7 8119
      8 4626
      9 2224
      10 817
      11 286
      12 104
      13 26
      14 24
      15 8
      18 1
      19 1
  2. Unigram data show Zipf’s law like distribution (e.g. from NLP course material); also we see only 100 of 323 possible letter forms in Tamil make up the text of the lexicon. One wonders of a Samuel Morse that sent his telegram’s for Tamil, if he would have chosen ‘.’ to represent the ‘ம்’ ? However Tamil reading or recitation of Morse code would be like jathi-reciting Barathanatyam dance teacher. Dit daa daa. The first 100 most frequent letters in lexicon are presented here.
    Letter Frequency
    ம் 18164
    17207
    14670
    ல் 14165
    த் 9540
    க் 8257
    ன் 8133
    7639
    7639
    7005
    தி 6625
    6402
    கு 6154
    5925
    ப் 5809
    ட் 5690
    டு 5566
    ர் 5503
    5049
    4683
    4563
    ரு 4536
    பு 4292
    கா 4262
    து 4162
    4046
    வி 3838
    டி 3798
    ண் 3773
    சி 3720
    3563
    ரி 3379
    ங் 3284
    ந் 3254
    ற் 3099
    2939
    று 2811
    ச் 2811
    சு 2751
    பா 2705
    கி 2625
    பி 2614
    வா 2569
    மு 2458
    ள் 2432
    லை 2212
    2185
    டை 2156
    தா 2154
    2134
    கை 2121
    2020
    மா 2015
    ய் 1916
    1902
    சா 1837
    1821
    லி 1744
    வு 1522
    கொ 1497
    1491
    நி 1465
    ஞ் 1461
    ரா 1452
    ணி 1450
    ளி 1432
    யா 1421
    நா 1303
    றி 1263
    கோ 1260
    செ 1236
    ழி 1234
    னி 1219
    ழு 1122
    மி 1117
    யி 1095
    பொ 1082
    ரை 1057
    வெ 1036
    1025
    மை 990
    றை 976
    பூ 949
    னை 937
    937
    லா 911
    சை 837
    வை 822
    போ 815
    கூ 802
    வே 797
    டா 793
    தை 786
    பெ 765
    ளை 764
    தே 674
    655
    ழ் 618
    லு 613
    நீ 581
    • Fitting the Zipf’s law to the Unigram data looks quite interesting too:
  3. Bigram data also has promising structure as Shannon would have imagined it would be from a human language; these things are known to have redundancy, structure and predictability.
    • First 2000 bigrams occupy more than 50% of all observed bigrams.
    • Lexicon contained only ~ 13.25% of all possible bigrams in the wild!
    • This sparseness of bigram data indicates mainly a limited data set or highly structured vocabulary in Tamil, but I’ll wager the former.
    • Zipf’s law fit is not as nice as for unigrams but here it goes: 
    • The top 100 bigrams, by frequency, are the following:
    • தல் 8670
      த்த 4645
      க்க 2844
      கம் 2824
      த்தி 2160
      ரம் 2023
      க்கு 2019
      தம் 1893
      ட்டு 1805
      ப்பு 1757
      டுத 1641
      ப்ப 1582
      யம் 1532
      த்து 1517
      ம்ப 1484
      னம் 1402
      ம்அ 1397
      ந்த 1305
      ங்க 1286
      டம் 1233
      லம் 1230
      ட்ட 1108
      க்கா 1082
      சம் 985
      ட்டி 976
      ம்பு 958
      கன் 904
      ம்க 904
      ல்க 882
      க்கி 869
      திர 852
      ந்தி 823
      ணம் 819
      ம்ச 799
      ங்கு 797
      ச்சி 789
      ண்ட 767
      ர்த் 757
      கட் 755
      குத 743
      ம்இ 729
      ப்பி 720
      கண் 716
      ரன் 712
      ல்அ 707
      கார 692
      ற்று 689
      ப்பா 688
      ம்ம 681
      வன் 672
      ம்பி 641
      ச்ச 632
      ம்ஆ 624
      தன் 617
      வம் 599
      கர 592
      பம் 587
      கல் 581
      ம்உ 534
      கரு 534
      ல்ப 530
      யன் 519
      றுத 517
      ல்வ 515
      ந்து 511
      த்தா 510
      ச்சு 502
      ம்பா 500
      ஞ்ச 495
      டுத் 492
      பிர 490
      ரிய 488
      டித் 480
      படு 477
      ல்த 475
      ல்கு 467
      ல்உ 467
      னல் 462
      ளம் 459
      ன்அ 456
      ற்ற 450
      ட்டை 443
      திரு 442
      ருத் 435
      ல்இ 431
      ங்கா 415
      ன்ன 414
      தலை 411
      வர் 406
      ம்த 403
      ன்ம 398
      ன்க 394
      க்கொ 392
      ண்டு 391
      ம்வி 388
      ல்வி 384
      மம் 384
      ர்க் 384
      டுக் 381
      ல்ம 379
  4. Moving on to trigrams we find, even more sparseness since the data is so limited – 65k words with total letter size of 345,315 letters only. Of the possible 323^3 = 33,698,267 ~ 34 million trigrams we have only 107,715 trigrams present in the Lexicon, about 2%, making this is the weakest dataset yet.

    • About 10,000 trigrams form more than 50% of the available trigrams from the data-set with rest of trigrams occurring sparsely.
    • The most frequently occurring 100 trigrams and their frequency in this lexicon are shown below:
      த்தல் 2992
      டுதல் 1573
      குதல் 674
      தல்க 575
      ட்டுத 557
      க்கம் 513
      த்திர 479
      தல்அ 476
      றுதல் 472
      ர்த்த 446
      ட்டம் 431
      டித்த 431
      த்தம் 382
      கட்டு 380
      தல்ப 374
      தல்த 353
      தல்உ 351
      துதல் 332
      டுத்த 331
      காரன் 325
      திரம் 322
      க்கட் 310
      தல்கு 309
      க்கார 298
      ந்தம் 295
      க்குத 293
      தல்வ 288
      ங்கம் 280
      தல்இ 271
      படுத 271
      ங்குத 256
      த்துத 250
      த்திய 250
      ந்திர 250
      தல்மு 246
      ளுதல் 245
      தல்ம 242
      தனம் 242
      சனம் 234
      ய்தல் 228
      ர்க்க 228
      ப்படு 227
      தல்வி 226
      கம்அ 222
      க்கல் 218
      காரம் 218
      ரித்த 208
      தல்ச 206
      ர்தல் 206
      பத்தி 202
      தம்அ 201
      ருத்த 196
      ள்ளுத 195
      தல்பு 193
      கம்ப 192
      ண்டம் 185
      ரம்அ 183
      த்துவ 180
      ம்பிர 174
      ட்டுக் 174
      வுதல் 171
      தல்கா 170
      ரணம் 170
      ற்றுத 168
      தல்ந 167
      யம்அ 165
      ரியம் 164
      கொள்ளு 164
      தல்சி 164
      லுதல் 162
      கரம் 162
      புதல் 160
      கம்க 159
      தல்ஒ 158
      சுதல் 157
      தல்நி 156
      ர்த்தி 156
      ப்பிர 155
      ணுதல் 154
      காட்டு 153
      தல்கை 150
      தல்பி 149
      போடுத 148
      தல்ஆ 147
      கண்ட 147
      க்கிர 146
      தியம் 146
      தல்எ 145
      சித்த 145
      தல்சு 144
      வைத்த 143
      க்கர 141
      ரம்க 140
      த்தன் 138
      தல்து 138
      காலம் 138
      மரம் 137
      ரம்ப 137
      விடுத 136
      சங்க 135

Conclusion

It is quite easily possible to build a random word/text generation in Tamil with these statistical data and smoothing information for the missing 80% bigram, 98% trigram data using Monte Carlo techniques. Further word-level frequency, word-level bigram and trigram data will make a more relevant text generation at the sentential level.

More later. Adios amigo.

அம்மா இங்கே வாவா!

தமிழ் சொல்பேசி / கணினி வழி ஒலிப்பதுக்கான கட்டுமானம்

 

சொல்பேசி

தமிழ் உரைநடை, எழுத்து, செய்திகளை எந்திர வழி ஒலிப்பது பற்றி ஏற்கனவே நிறைய எழுதப்பட்டுள்ளது. நானும் அந்த வரிசையில் ஒரு பதிவு செயதேன்.

தற்போது இங்கு, பேராசிரியர் வாசு அவரது விட்ட இடத்தில் இருந்து அந்த ஒலி உச்சரிப்பு நிரலை  கொஞ்சம் மேம்பாடுகளை செய்து வருகிறேன் : github (Tamil-tts).

உரைவழி ஒலி – TTS

இதில் எனக்கு பிடித்த உரையில் இருந்து ஒலி தயாரிப்பு வழி (tts synthesis method) என்பது “unit selective synthesis by analysis method” எனப்படும். இதனை USS A/S என்றும் ஆராய்ச்சி வட்டங்களில் சொல்லப்படும். இதில் முக்கியமாக என்னவென்றால் இரு நிலைகள் உண்டு :உரை  பரிசோதனை, அடுத்து ஒலி தயாரிப்பு.

முதல் நிலை : உரை  பரிசோதனை

ஒரு உரை செய்தியாக இருக்கலாம், அல்லது உதவி கோரலாகவும் இருக்கலாம். இதன் இரண்டையும் கண்டறிவது உரை பரிசோதனையின் வேலை. அதாவது, “இந்திய அரசு சீன பூகம்ப அபாய நிலையில் உள்ள மக்களுக்கு உதவி அளிக்க முன்வந்தது” என்பது செய்தி வசிப்பவர்போல் ஒரே குரலில் சொல்லலாம். அனால் “காப்பாத்துங்க, வெள்ளம் நீர் கழுத்தை எட்டப்போகுது!” என்பதை உரத்த குரலில் மட்டும் தான் ஒரு எந்திர ஒலிப்பு சொல்லவேண்டும்.

மென்மேலும் தமிழில் homophones சமயோலி கொண்ட சொற்களை சரியாக உச்சரிப்பதற்கு தேவையான மொழியியல் திறனாய்வுகளும் இந்த நிலையில் மட்டுமே ஆகவேண்டும். இவற்றை சொர்கண்டு போன்ற wordnet திட்டங்கள் நமக்கு அளிக்க வாய்ப்பு undu. இதனை parts of speech tagger என்றும் சொல்வது வழக்கம். தமிழில் சமயோலி கொண்ட சொற்கள் எனக்கு சட்டென்று நினைவுக்கு வரவில்லை – இதனை உங்களுக்கு ஏதேனும் உதாரணங்கள் தெரிந்தால் சொல்லவும்.

சொல் இடம் சார்ந்த , சொற்றொடர் சார்ந்த இலக்கண விவரங்களை இத்தகைய POS-கள் உச்சரிக்கும் உரையுடன் கோர்த்து annotations-களாக அடுத்த நிலைக்கு அனுப்பும்.

கடை நிலை : ஒலி உருவாக்குதல்

ஒலி உருவாக்குதல் என்பது ஏற்கனேவே நம்மால் சேமிக்க பட்ட உச்சரிப்புகளை database தரவில் இருந்து எடுத்து கோர்த்து இந்த syllable போன்ற தனிதுவமான உதிர்ப்பூக்களான ஒலிகளை ஒரு பூமாலை போன்று கோர்வையான சொற்றொடர் உச்சரிப்பாக எழுதிவிடலாம். இதை செய்வதில் சில graph optimization கேள்விகளை உருவாக்கி அதன் தீர்வுகளை கண்டெடுத்தால் மட்டுமே நல்ல உச்சரிப்பு கிடைக்கும் என்பது ஒரு தரப்பின் பொறியியல் கணிப்பு.

இப்படிபட்ட ஒன்று தான் கிழே பார்க்கலாம் : “அம்மா இங்கே வாவா” என்ற சொல்லை உச்சரிப்பது பற்றிய கடைநிலை பரிட்சயம். எப்படி கணினி உச்சரிக்கலாம்? 18 வழிகள் உள்ளது:

tts-twitter

ஆனால் எது சரியானது? மேலும் இந்த ஆராய்ச்சியின் தொடர்ச்சியை பற்றி எழுதுவேன்.

முத்து.

 

எழில் உதவி ஆவணம் காட்டி மேம்பாடு

எல்லா மென்பொருளிலுமே ஒரு “Help” (உதவி) மெனு கொடுப்பது IT துறையில் உள்ள ஒரு எழுதாத சட்டம் என்றே சொல்லலாம்.

இப்போது இந்த எழில் செயலி எழுதியில் ஒரு உதவி ஆவணம் கட்டியை முன்னாடியே இணைத்திட்டோம். ஆனால் அது மனசுக்கு பிடித்தமாதிரி இல்லை.

இப்போது இந்த window (சாளரத்தில்) எனக்கு மூன்று விஷயங்கள் பிடிக்கவில்லை; இதற்க்கு படம் 1 உதவியாக இருக்கும்:

  1. புத்தகத்து தலைப்பு “0” என்று சொல்லக்கூடாது; இது நீக்கப்படவேண்டும்.
  2. அடுத்து அத்தியாயங்களின் தலைப்பு இடது பக்கம் ஆரம்பித்து  இருக்கவேண்டும்.

    ezhil_book_screen_updates

    படம் 1:   எ ழுதி உதவி ஆவணம் காட்டி

  3. அடுத்து அத்தியாயத்தின் தலைப்பை பெரிய எழுத்துக்களில் இருக்க செய்யவேண்டும்.

இவற்றை github வழு பட்டியலில் issue என்று பதிவு செய்தேன்

 

 

இதனை GTK3+ documentation கைவசம் வைத்து நிரலை மாத்தி எழுதலாம். இதற்க்கு முன்னும் பின்னும் ஒரு மணி நேரம் மேல் ஆனது.

ஒவ்வொரு முறையும் ezhil-lang/editor/DocView.py என்ற நிரலை மாற்றிய பின் python ezhuthi.py என்று இயக்கி “உதவி > புத்தகம்” என்ற மெனுவில் இருந்து சுடக்கி இதன் தோற்றத்தை சரிபார்க்கவேண்டும்.

எல்லாம் சரியானதும் இது போன்று காட்சி அளித்தது:

ezhil_book_screen_updated

படம் 2: திருத்தம் செய்த நிரலில் “உதவி > புத்தகம்” தோற்றம்

இதனை github-இல் உடனே சேர்த்துவிட்டேன். இப்போது எழில் ஆவணம் காட்டி மேம்பாடு செய்தாச்சு ! மீன்டும் பார்க்கலாம்.

-முத்து