اردو سورٹنگ کیسےکی جائے؟

نبیل نے 'نوری نستعلیق پراجیکٹ' کی ذیل میں اس موضوع کا آغاز کیا، ‏جون 15, 2008

  1. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    السلام علیکم،
    محسن ذکر کر چکے ہیں کہ تمام ترسیمہ جات کو اردو حروف تہجی کے اعتبار سے ترتیب دینے کی ضرورت پیش آئے گی۔ اس میں مسئلہ یہ پیش آئے گا کہ کمپیوٹر لینگویجز میں اردو الفاظ کے لیے عام استعمال سے قدرے مختلف سورٹنگ کی جاتی ہے جس کی وجہ سے پ سے شروع ہونے والے الفاظ ی اور ے کے بعد ظاہر ہوتے ہیں۔ اس کا حل معلوم کرنے کی ضرورت ہے۔ کرلپ کی سائٹ پر اردو کولیشن یوٹیلیٹی دستیاب ہے، کیا اس کے استعمال سے کوئی فائدہ ہو سکتا ہے؟
     
  2. شاکرالقادری

    شاکرالقادری لائبریرین

    مراسلے:
    2,696
    موڈ:
    Cheerful
    نبیل ۔۔۔ یہ ہم نے جو ری نیمنگ میں مشقت کی ہے اسی سارٹنگ کے لیے ہی تو تھی

    مثلا
    nbil
    xakr
    mHsn
    earf
    jwad
    amjd
    نبیل
    شاکر
    محسن
    عارف
    جواد
    امجد

    جب ہم انہیں سارٹ آوٹ کریں گے تو یہ بالکل اردو حروف تہجی کے مطابق سارٹ آئوٹ ہو جائیں گے
    اگر کوئی ایسا پروگرام ہو جو ان انگریزی حروف کو متبادل اردو حروف میں بدل دے تو آپ کو یہی نام اردو رسم الخط میں لکھے ہوئے بھی مل جائیں گے لیکن شاید اس کی ضرورت ہی نہیں ہو گی کیونکہ وولٹ یا گونٹ لیب میں نام اردو سکرپٹ میں تو نہیں لکھے جائیں گے
    ری نیمنگ کا بنیادی فلسفہ ہی یہی تھا کہ اردو کے حروف تہجی کے مطابق ری نیمنگ کی جائے اور فونیٹک کی بورڈ کو معیار مانا جائے تاکہ سارٹنگ درست ہو سکے
     
    • پسندیدہ پسندیدہ × 1
  3. arifkarim

    arifkarim معطل

    مراسلے:
    29,828
    جھنڈا:
    Norway
    موڈ:
    Happy
    فانٹ لیب اور فانٹ کریٹر دونوں می سورٹنگ کی سہولت ہے، لیکن وہ تو انگریزی الفابیٹس کے حساب سے کرتے ہیں۔ ہمیں پائتھون یا کسی اور لینگوئج میں رینیم شدہ گلفس کو الفبائی انداذ میں سارٹ کرنا ہے۔ اس سلسلہ میں محسن بھائی نے کسی پروگرام کا ذکر کیا تھا جو پاک نوری نستعلیق کی تیاری میں‌ استعمال ہوا تھا۔
     
  4. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    شاکرالقادری صاحب، یہ محسن بہتر بتا سکیں گے کہ صرف ترسیمہ جات کے رومن نوٹیشن میں لکھے گئے نام ہی سورٹ کیے جا سکتے ہیں یا پھر ان کے اردو متبادل کے لحاظ سے انہیں سورٹ کرنے کی ضرورت پیش آئے گی۔
     
    • پسندیدہ پسندیدہ × 1
  5. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    آج محسن سے اردو سورٹنگ کے بارے میں کافی مفید گفتگو ہوئی۔ محسن کا کہنا تھا کہ کرلپ کی اردو کولیشن لائبریری کو امپورٹ کرنے کی مشقت کرنے کی بجائے کیوں نہ خود سے ایک فنکشن لکھ لیا جائے جو ترسیمہ جات کے ناموں کو اردو حروف تہجی کے مطابق ترتیب دے دے۔ میں نے ان کی تجویز پر غور کیا ہے اور اس کا الگورتھم واقعی کافی سیدھا ہے۔
    یہ دراصل مجھے سارا دن اس پرابلم کا انتہائی دقت آمیز حل دریافت کرنے کے بعد معلوم ہوا ہے کہ یہ کام آسانی سے بھی ہو سکتا ہے۔ :) میں پائتھون میں یونیکوڈ اردو سٹرنگز کا weight نکالنے کا فنکشن لکھ رہا تھا، حالانکہ اس کی ضرورت ہی نہیں ہے۔ :)
     
    • پسندیدہ پسندیدہ × 2
  6. زیک

    زیک محفلین

    مراسلے:
    38,670
    جھنڈا:
    UnitedStates
    موڈ:
    Bookworm
    سارٹنگ سے پہلے نارملائزیشن کی ضرورت نہیں ہو گی؟
     
  7. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    زیک، مجھے نارملائزیشن کے بارے میں علم نہیں ہے۔ میں نے جو الگورتھم سوچا ہے وہ کافی سادہ ہے۔ اس میں اردو صوتی کی بورڈ کے مطابق حروف کو ترتیب وار نمبر دے دیا جائے گا جو کہ ذیل کی طرح نظر آئے گا:

    کوڈ:
    weights['a']=1
    weights['b']=2
    weights['p']=3
    weights['t']=4
    weights['C']=5
    weights['j']=6
    ...
    کسی بھی اردو لفظ کی قدر معلوم کرنے کے لیے ذیل کا فنکشن استعمال کیا جا سکے گا:

    کوڈ:
    def weight(strWord):
    	count=len(strWord)
    	exp=1
    	w=0
    	
    	for i in range(0, count):
    		w=w+exp*weight[strWord[i]]
    		exp*=10
    	return w
    اس طرح ایک کسٹم lexicographic سورٹنگ کرنا ممکن ہو جائے گا۔
     
    • پسندیدہ پسندیدہ × 2
  8. محسن حجازی

    محسن حجازی محفلین

    مراسلے:
    2,513
    موڈ:
    Breezy
    بالکل! یہی طریقہ کام تو کرنا چاہیے میرے خیال میں۔
     
  9. محسن حجازی

    محسن حجازی محفلین

    مراسلے:
    2,513
    موڈ:
    Breezy
    زکریا بھائی نارملائزیشن کیا کہہ رہے ہیں؟
    اگر یونی کوڈ والی کہہ رہے ہیں تو وہ یہاں پر لاگو نہیں ہوگی ہم سیدھا سادا انگریزی کو ترتیب دے رہے ہیں لیکن weights مختلف ہیں جیسے کہ نبیل بھائی نے کہا۔
     
  10. زیک

    زیک محفلین

    مراسلے:
    38,670
    جھنڈا:
    UnitedStates
    موڈ:
    Bookworm
    جی یونیکوڈ والی ہی نارملائزیشن کی بات کر رہا ہوں۔ کیا decomposition کی ضرورت نہیں ہو گی؟ مثال کے طور پر ئ کو ایک حرف سمجھیں گے یا ء + ی؟ اور اگر ایک حرف تو پھر اس کا ویٹ کیا ہو گا؟

    نبیل: آپ کے کوڈ میں کسی سٹرنگ کو ویٹ دینے کی ترتیب الٹی نہیں؟
     
  11. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    زیک، اس سوال کا تو محسن ہی جواب دیں گے۔ جہاں تک ویٹ اسائن کرنے کا تعلق ہے تو اس طرح بھی کام صحیح چل سکتا ہے۔ اصل میں دو comparator فنکشن ڈیفائن کرنے کی ضرورت ہوگی جوکہ اس کمپیریزن کے نتیجے میں زیادہ یا کم ویٹ والی سٹرنگ بتائیں گے۔ اسی کمپیریٹر فنکشن کو پائتھون کے sort فنکشن میں بطور پیرامیٹر استعمال کر لیا جائے گا۔
     
  12. محسن حجازی

    محسن حجازی محفلین

    مراسلے:
    2,513
    موڈ:
    Breezy
    یہ ناملائزیشن پر تو خوب بحث ہوئی تھی یونی کوڈ والوں سے۔
    نہیں اس کی قطعی ضرورت نہیں،
    اصل میں یوں ہے کہ جو ہمیں ترتیب دینا ہے وہ سب کا سب ASCII میں ہے۔ اب اگرکسی بھی Programming LANGUAGE میں سارٹ الگورتھم چلایا جائے تو انگریزی کا lexical order حاصل ہوگا۔ لیکن وہ ہمیں درکار نہیں۔ سو اس واسطے ہم کریں گے یہ کہ ہر ASCII حرف کو ایک وزن دیں گے (وژن لکھنے لگا تھا، اس کی زرداری اینڈ کمپنی کو ضرورت ہے :grin: ) اور جو الگورتھم چلے گا وہ اس وزن کو consider کرے گا نہ کہ اصل حروف کو۔ اب چونکہ وزن ہم خود دیں گے ہر حرف کا، نظری طور پر، میری ناقص رائے میں، سارٹ آرڈر کنٹرول کیا جا سکتا ہے۔

    کیا فرماتے ہیں باقی کے علما دین و مفتیان شرع متین بیچ اس مسئلے کے؟ :grin:
     
  13. محسن حجازی

    محسن حجازی محفلین

    مراسلے:
    2,513
    موڈ:
    Breezy
    نبیل بھائی پروگرام کل تک پہنچ جائے گا آج میں دفتر میں بھی نہیں بڑھا سکا اسے آگے۔ کچھ اوپر کی لیپا پوتی باقی ہے۔ آج اسی لیے جلدی گھر جا رہا ہوں۔ یہ اور بات کہ ہمارے جلدی جانے پر بجلی بھی جلدی چلی جائے اور حساب برابر ہو جائے۔ :grin:
     
  14. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    محسن، پائتھون کے sort فنکشن میں اپنی مرضی کا compare فنکشن سپسیفائی کیا جا سکتا ہے، اور اس طرح ہم بآسانی کسٹم lexicographic سورٹنگ کر سکیں گے۔ لیکن اس سے پہلے ہمیں دیکھنا ہوگا کہ انگریزی حروف کو درست ترتیب میں وزن دیا جائے۔ یہ بھی دیکھنا پڑے گا کہ آ اور ئ کو کس ترتیب میں رکھا جائے۔ اور کیا ترسیمہ جات کی لمبائی میں اعراب شمار ہوتے ہیں؟ اور کیا اعراب کو وزن دینے کی ضرورت پیش آئے گی؟
     
  15. محسن حجازی

    محسن حجازی محفلین

    مراسلے:
    2,513
    موڈ:
    Breezy
    یہ سوچنا پڑے گا راستے میں یہی کام کروں گا دس کلومیٹر کی ڈرائیو ہے اسی کام کے لیے۔
    کل اپنی رائے دوں گا آپ لوگ بھی سوچئے۔
     
  16. زیک

    زیک محفلین

    مراسلے:
    38,670
    جھنڈا:
    UnitedStates
    موڈ:
    Bookworm
    exp کو ہر بار 10 کی بجائے کسی ایسے نمبر سے ضرب دینی ہو گی جو حروف کی تعداد سے زیادہ یا برابر ہو۔
     
  17. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    زیک، یہ الگورتھم اس طرح کام کرتا ہے کہ سٹرنگ میں موجود ہر حرف کے ویٹ کو اس حرف کی پوزیشن سے مطابقت رکھنے والی 10 کی پاور سے ضرب دیتا ہے۔ مثال کے طور پر اب کے لیے یہ اس طرح ویٹ نکالے گا:

    1+2*10=21

    اور ابپ کے لیے ویٹ اس طرح نکلے گا:

    1+2*10+3*100=321

    کیا اس طرح ٹھیک نہیں رہے گا؟
     
  18. زیک

    زیک محفلین

    مراسلے:
    38,670
    جھنڈا:
    UnitedStates
    موڈ:
    Bookworm
    مگر اگر حروف کی تعداد 10 سے زیادہ ہے تو پھر کیا ہو گا؟ کیا حرف کا ویٹ پھر بھی 0 سے 9 ہی تک محدود رکھنا پڑے گا؟
     
  19. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    نہیں، یہ الگورتھم کام نہیں دے گا۔ کسٹم سٹرنگ سورٹنگ آسان کام نہیں ہے۔
     
  20. نبیل

    نبیل محفلین

    مراسلے:
    16,742
    جھنڈا:
    Germany
    موڈ:
    Depressed
    میں نے عام سٹرنگز کو پائتھون میں سورٹ کرنے کی کوشش کی ہے اور وہ بھی غلط سورٹ‌ ہو رہی ہیں۔ اس سلسلے میں کچھ پڑھنا پڑے گا۔
     

اس صفحے کی تشہیر