سید ذیشان آپ جو لغت استعمال کر رہے ہیں اس میں الفاظ کی کیا تعداد ہے؟
اگر آپ الگورتھم کو pseudocode کی شکل میں کچھ بیان کر سکیں تو اس سے دوسری زبانوں میں اس پر تجربات میں کافی مدد مل سکتی ہے اور آپ بھی الگورتھم کی تفصیلات کو عام قاری کے لیے واضح کر سکیں گے جس سے کئی نکات پر بات ممکن ہو سکے گی۔
آپ کی کاوش قابل قدر ہے ، بہت عمدہ پیش رفت ہے اور بہت سے شاعری سے دلچسپی رکھنے والوں کے لیے ایک انتہائی روشن در کھول دیا ہے ۔
محب بھائی، لغت تو وہی ہے جو ہیکر بھائی استعمال کر رہے ہیں۔ یعنی اردو انسائیکلوپیڈیا (
www.urduencyclopedia.org) والی۔ اس میں کل الفاظ تو 80000 کے قریب ہیں مگر، مفرد الفاظ کی تعداد 30000 ہے۔ اس میں بھی کافی سارے انگریزی کے الفاظ شامل ہیں۔ تو اردو کے الفاظ کی تعداد اور بھی کم ہو جاتی ہے۔ اس کے علاوہ ایک اور لسٹ بنائی ہے جو کہ 500 کے قریب الفاظ پر مشتمل ہے، جن میں سے اکثر الفاظ
یہاں سے لئے گئے ہیں۔ یہ الفاظ ایسے ہیں جو کئی اشکال میں مستعمل ہیں۔ اور یہ استعمال بھی کافی زیادہ ہوتے ہیں۔ مثلاً آئینہ کا لفظ چار طریقوں سے باندھا جاتا ہے =--(آئِنَ)، =-=(آئِنہ)، ===(آئینہ)، ==-(آئینَ)۔ ٍکولمبیا یونیورسٹی کی پروفیسر فرانسس پریچیٹ کی ویبسائٹ پر تقطیع پر ایک کتابچہ ہے (
Urdu meter: A practical Handbook)۔ یہ کتابچہ ان لوگوں کے لئے لکھا گیا ہے جو کہ اردو زبان نہیں بولتے اور ان کو تلفظ کا بھی کچھ زیادہ اندازہ نہیں ہوتا۔ اس کا انداز بہت ہی پریکٹیکل ہے۔ مثلاؐ آئینہ کی مثال میں چار کوڈ استعمال کرنے کی جگہ ایک کوڈ (=xx) استعمال کیا جا سکتا ہے۔ x کا مطلب ہے کہ یہ - بھی ہو سکتا ہے اور = بھی۔ اس سے کمپیوٹر میں تین آپریشنز کی بچت ہو جاتی ہے۔ کئی الفاظ ایسے ہیں جن کی کئی طرح سے تقطیع ہو سکتی ہے مثلاً نَذَر (-=) اور نذر (=-)۔ یہاں پر ڈونٹ کئر کنڈیشن کا استعمال نہیں کیا جا سکتا۔
ہر ایک مصراع کئی الفاظ پر مشتمل ہوتا ہے اور اگر ہر ایک لفظ کئی طریقوں سے تقطیع ہو (اگر ہم وصال الف، عطف، اضافت وغیرہ بھی خیال رکھیں) تو یہ کوڈ ہزاروں نہیں تو سینکڑوں ضرور بن جاتے ہیں۔ لیکن کمپیوٹر کے لئے اتنی پروسیسنگ کرنا کوئی خاص مسئلہ نہیں ہے۔ آپ سارے کوڈ کمبینشن بنا کر بحور کے کوڈ کیساتھ میچ کر سکتے ہیں، لیکن یہ طریقہ مجھے ذاتی طور پر پسند نہیں ہے۔ میں نے اس سافٹوئر میں ایک ٹری ڈیٹا سٹرکچر بنایا ہے، جو کہ تمام کے تمام کوڈ کومبینیشنز کو اپنے پاس رکھتا ہے۔ جب تلاش کرنے کی باری آتی ہے تو روٹ نوڈ کو تمام کے تمام بحور فرہم کئے جاتے ہیں، جوں جوں تلاش آگے شاخوں تک جاتی رہتی ہے تو ہر لیول پر جو بھی شاخ کسی بھی بحر پر نہ اترتی ہو، اس میں تلاش کو منقطع کر دیا جاتا ہے۔ اور جب تلاش لیف نوڈ (یعنی آخری لفظ یا کوڈ) تک پہنچتی ہے تو صرف وہی بحور باقی رہ جاتی ہیں جو کہ اس کوڈ پر پوری طرح منطبق ہوتی ہیں۔ یہ طریقہ سٹرنگ میچینگ سے زیادہ پر اثر ہے، اور اس میں میر کی بحر اور آزاد نظموں کی capability بھی نسبتاً آسانی سے ڈالی جا سکتی ہے۔
یہ بات تو ہو گئی کوڈ میچنگ کی۔ جو الفاظ ڈکشنری میں موجود نہ ہوں (بہت سارے ایسے ہیں) تو ان کے لئے الفاظ کی مختلف اشکال کو جانچ کر ممکنہ کوڈ بنایا جاتا ہے۔ یہ اس الگورتھم کا وہ حصہ ہے جہاں غلطی کے امکانات موجود ہیں۔ میں اس طریقے کے متبادل پر کام کر رہا ہوں، اگر اس میں کامیابی ہوتی ہے تو وہ بھی یہاں شیئر کر دوں گا۔
یہ الگورتھم پر اثر اس لئے ہے کہ اس میں تین اپروچز لگائی گئی ہیں۔ ایک تو چھوٹی ڈکشنری ہے جو کہ 100 فی صد مستند ہے، ایک بڑی ڈکشنری ہے جو کہ 90 فی صد سے زیادہ مستند ہے۔ اور ایک رولز کی بنیاد پر کوڈ بنانے کا کام ہے جو کہ 70 فی صد کے قریب مستند ہے۔ یہ اس کا ویک پوائنٹ ہے اور اگر اس کو بہتر بنایا جائے تو پھر یہ الگورتھم بہت بہتر پرفارمنس دے سکے گا۔ اس پر میں ابھی کام کر رہا ہوں اور بہتر نتائج کی کافی امید رکھتا ہوں۔
اگر کہیں پر مزید وضاحت کی ضرورت ہو تو میں اور بھی تفصیل بیان کر دوں گا۔
(سوڈو کوڈ نہ لکھنے کے لئے معذرت، کہ پہلے ہی کوڈ لکھ لکھ کر اپنا کباڑہ کر چکا ہوں
، لیکن امید ہے آپ کو کافی حد اس کے بیسک سٹرکچر کا اندازہ ہو گیا ہو گا
)