اردو متن کی نارملائزیشن - Urdu Text Normalization

الف نظامی

لائبریرین
اردو متن کی نارملائزیشن
Urdu Text Normalization
اردو لینگوئج پراسیسنگ یا مشین لرننگ میں فراہم کردہ متن کی بہت اہمیت ہے جس کو استعمال سے قبل مختلف مراحل سے گزارا جاتا ہے جن میں سے ایک مرحلہ ٹیکسٹ نارملائزیشن ہے۔
ٹیکسٹ نارملائزیشن کا عمل اردو متن پر مندرجہ ذیل کام کرتا ہے:
  • متن میں غلطیوں کو درست کرنا (پروف ریڈنگ)
  • غیر معیاری حروف کو معیاری حروف سے تبدیل کرنا
  • غیر ضروری الفاظ و حروف نکالنا
  • واوین کی یکسانیت
متن میں غلطیوں کو درست کرنا (پروف ریڈنگ)
مثلا :
انشاء اللہ کو ان شاء اللہ
آ نا کو آنا سے تبدیل کرنا
جا نا کو جانا سے تبدیل کرنا
وغیرہ وغیرہ​
غیر معیاری حروف کو معیاری حروف سے تبدیل کرنا
اکثر اوقات دئیے گئے متن میں عربی کی بورڈ کی مدد سے لکھا گیا متن موجود ہوتا ہے چند عربی حروف کی یونیکوڈ ویلیوز اور اردو حروف کی یونیکوڈ ویلیوز یکساں نہیں ہوتی جس کی وجہ سے سرچ کرنے میں مسائل آتے ہیں۔
اس لیے دئیے گئے اردو متن کے تمام حروف کو اردو یونیکوڈ ویلیوز میں منتقل کرنا ضروری ہوتا ہے۔

غیر ضروری الفاظ و حروف نکالنا
متن سے غیر ضروری الفاظ اور حروف نکال دئیے جاتے ہیں
مثلا:
بسا اوقات اردو متن کا ماخذ ایچ ٹی ایم ایل ، ایکس ایم ایل یا جے سون فائلز ہوتا ہے لہذا متن سے ایچ ٹی ایم ایل ، ایکس ایم ایل ٹیگز وغیرہ نکال لیے جاتے ہیں

اسی طرح زیر ، زبر ، پیش ، شد ، جزم وغیرہ کو متن سے نکال دیا جاتا ہے کیوں کہ لینگوئج پراسیسنگ / مشین لرننگ میں ان کی اہمیت نہیں ہوتی۔
اس کے ساتھ ساتھ لفظوں سے تطویل ختم کرنا بھی ضروری ہے کیوں کہ اس کی موجودگی میں لفظ سرچ نہیں ہوسکتا۔

واوین کی یکسانیت

اردو میں چار طرح کی واوین استعمال ہوتی ہیں
” “
’ ‘
" "
' '
بسا اوقات یوں ہوتا ہے کہ متن موجود الفاظ یا جملے کے کسی حصے پر لگائی گئی واوین میں ابتدائی واوین اور اختتامی واوین ایک جیسی نہیں ہوتی
مثلا:
"نگۂ ناز
صفحہ"
متن کی یکسانیت کے لیے تمام واوین کو ایک ہی قسم کے واوین سے تبدیل کر دیا جاتا ہے
مثلا یہ اصول طے کر لیا جائے کہ متن میں ہر جگہ واوین کے لیے ڈبل کوٹس استعمال ہوں گے
 
آخری تدوین:

الف عین

لائبریرین
انٹرنیٹ موبائل پر ہی ہے آج کل اس لیے میں اس سلسلے میں اپنی رائے اب تک نہیں دے سکا اس لیے کہ مجھے ہر قسم کے واوین کی یونیکوڈ قدریں یاد نہیں۔ بہر حال میرا ذاتی خیال یہ ہے کہ وہی علامت استعمال نہ کی جائے جو انگریزی میں موجود ہے۔ اور جو دوہرے واوین استعمال کیے جاتے ہیں، ان کو ٹیکسٹ انجن (شاید) ایک حرف ہی سمجھتا ہے کہ ورڈ اسے املا کی غلطی قرار دیتا ہے یعنی دو حرفی لفظ پر ہی واوین ہو، اور وہ لفظ پروگرام کی لغت میں ہو، تب بھی اسے تین یا چار حرفی قرار دے کے غلطی دکھاتا ہے۔ تین حروف اس لیے بھی ممکن ہیں کہ اگر ایک طرف واوین سے پہلے یا بعد میں سپیس بھی کبھی کبھی دے دی جاتی ہے۔
 

الف نظامی

لائبریرین
اضافہ:
موبائل میں لکھا ہوا ڈھیٹ قسم کا متن جس پر کوئی فونٹ اپلائی نہیں ہوتا، اسےبھی نارملائز کرنا ضروری ہے
موبائل میں لکھا ہوا ڈھیٹ متن جو نستعلیق فونٹ میں درست نہیں دکھائی دیتا اور نسخ فونٹ میں بھی اس کی کھچڑی پکی ہوتی ہے
ﻭﻩ ﺟﻨﮕﻞ ﺑﯿﺎﺑﺎﻥ ﻣﯿﮟ ﺍﭘﻨﯽ ﺳﻮﺍﺭﯼ ﭘﺮ ﺳﻔﺮ ﮐﺮ ﺭﮨﺎ ﺗﮭﺎ ﺍﺱ ﭘﺮ ﺍﺱ ﮐﺎ ﮐﮭﺎﻧﺎ ﭘﯿﻨﺎ ﺑﮭﯽ ﺗﮭﺎ

اس قسم کے متن کو نارملائز کرنے کی مثال: پائتھون میں
کوڈ:
from urduhack.normalization import normalize
text =" ﻭﻩ ﺟﻨﮕﻞ ﺑﯿﺎﺑﺎﻥ ﻣﯿﮟ ﺍﭘﻨﯽ ﺳﻮﺍﺭﯼ ﭘﺮ ﺳﻔﺮ ﮐﺮ ﺭﮨﺎ ﺗﮭﺎ ﺍﺱ ﭘﺮ ﺍﺱ ﮐﺎ ﮐﮭﺎﻧﺎ ﭘﯿﻨﺎ ﺑﮭﯽ ﺗﮭﺎ"
normalized_text = normalize(text)
print(normalized_text)
اس کی آوٹ پٹ ہوگی:
وہ جنگل بیابان میں اپنی سواری پر سفر کر رہا تھا اس پر اس کا کھانا پینا بھی تھا
دوست
الف عین
 
آخری تدوین:

الف عین

لائبریرین
ایک اور قسم کا متن بھی پایا جاتا ہے جس میں حروف کی ابتدائی درمیانی یا آخری کیریکترس کی اپنی یونی کوڈ قدریں دی جاتی ہیں، اسے اردو پروف ریڈر نارملائز کر دیتا ہے
 

دوست

محفلین
یہ فنکشنیلٹی اردو ہیک میں شامل کروا دی جائے۔ ٹیکسٹ نارملائزیشن کا فنکشن تو ہو گا وہاں لازماً
 

الف نظامی

لائبریرین
کوئی نستعلیق فونٹ اپلائی نہیں ہوتا البتہ کچھ عربی/ نسخ فونٹس اس قسم کے متن پر بھی کام کرتے ہیں۔

اردو یا عربی میں نسخ لکھائی میں ایک ہی حرف کی مختلف اشکال ہوتی ہیں۔

70933861-847caf80-205e-11ea-8c9c-5755dc88bf9e.png


اکیلی شکل Isolated form
ابتدائی شکل Initial form
وسطی شکل Medial form
آخری شکل Final form
نسخ میں ایک حرف کی کل چار اشکال بنتی ہیں:
isolated
initial
medial
final
جب کہ نستعلیق میں ایسا نہیں ہے۔ یہاں ہر حرف کی چار سے زیادہ شکلیں بن سکتی ہیں اسی وجہ سے ایسے متن پر نستعلیق فونٹ اپلائی نہیں ہوتا
مثلا
نستعلیق میں ’’ب‘‘ کی 14 مختلف شکلیں اور نشستیں بنتی ہیں جو شان الحق حقی صاحب نے اپنے ایک شعر میں جمع کردی ہیں:
بل میں بلبل، بانس پہ بطخ، بوتل میں بیل، آب میں بندر
بمبئی میں سبحان اللہ مچھلی ڈوبی بیچ سمندر

جاسم محمد علوی امجد

یونیکوڈ میں حرف کی اکیلی شکل ، ابتدائی شکل ، وسطی شکل اور آخری شکل کی علیحدہ علیحدہ یونیکوڈ ویلیوز ہیں۔

کی بورڈ سے لکھتے ہوئے عموما حرف کی اکیلی شکل ہی لکھی جاتی ہے اور لے آوٹ انجن فونٹ سے حرف کے کانٹیکسٹ کے مطابق مطلوبہ شکل مہیا کرتا ہے
اشکال کو تبدیل کرنے کا یہ عمل
reshaping engine
کی ذمہ داری ہوتی ہے۔

جن سسٹمز میں رائٹ ٹو لیفٹ زبان کی لے آوٹ اور ری شیپنگ کی صلاحیت نہیں ہوتی وہاں ایک جگاڑ یہ بنا لیا جاتا ہے کہ حرف کی اکیلی شکل یا آسولیٹیڈ فارم کے بجائے
context
کے مطابق حرف کی بننے والی شکل کی یونیکوڈ ویلیو لے آوٹ انجن کو فراہم کی جاتی ہیں اور اس طرح درست ڈسپلے ممکن ہوتا ہے۔

لیکن سرچ کرتے ہوئے اس طرح کے متن کی تلاش مشکل ہوتی ہے۔
لہذا نارملائزیشن کے عمل میں یہ ضروری ہوتا ہے کہ حرف کی ابتدائی ، وسطی اور آخری شکل کو آسولیٹیڈ فارم سے تبدیل کر دیا جائے۔
 
آخری تدوین:

الف نظامی

لائبریرین
جن سسٹمز میں رائٹ ٹو لیفٹ زبان کی لے آوٹ اور ری شیپنگ کی صلاحیت نہیں ہوتی وہاں ایک جگاڑ یہ بنا لیا جاتا ہے کہ حرف کی اکیلی شکل یا آسولیٹیڈ فارم کے بجائے
context
کے مطابق حرف کی بننے والی شکل کی یونیکوڈ ویلیو لے آوٹ انجن کو فراہم کی جاتی ہیں اور اس طرح درست ڈسپلے ممکن ہوتا ہے۔

محمد سعد دوست علوی امجد

اس جگاڑ کی ایک مثال:
pip install --upgrade arabic-reshaper
کوڈ:
import arabic_reshaper
text_to_be_reshaped = 'نسخ نستعلیق'
reshaped_text = arabic_reshaper.reshape(text_to_be_reshaped)
print(reshaped_text)
ان پٹ متن:
نسخ نستعلیق
آوٹ پٹ متن:
ﻧﺴﺦ ﻧﺴﺘﻌﻠﯿﻖ
آوٹ پٹ متن کے حروف کے درمیان سپیس شامل کرنے سے آپ کو معلوم ہوگا کہ ہر حرف کی context کے مطابق شکل تبدیل ہوگئی ہے
ﻧ ﺴ ﺦ ﻧ ﺴ ﺘ ﻌ ﻠ ﯿ ﻖ

نوٹ: اینڈرائیڈ میں حرف باز کی شمولیت کے بعد اس جگاڑ کی ضرورت نہیں رہی
 
آخری تدوین:

الف عین

لائبریرین
اردو یا عربی میں نسخ لکھائی میں ایک ہی حرف کی مختلف اشکال ہوتی ہیں۔

70933861-847caf80-205e-11ea-8c9c-5755dc88bf9e.png


اکیلی شکل Isolated form
ابتدائی شکل Initial form
وسطی شکل Medial form
آخری شکل Final form
نسخ میں ایک حرف کی کل چار اشکال بنتی ہیں:
isolated
initial
medial
final
جب کہ نستعلیق میں ایسا نہیں ہے۔ یہاں ہر حرف کی چار سے زیادہ شکلیں بن سکتی ہیں اسی وجہ سے ایسے متن پر نستعلیق فونٹ اپلائی نہیں ہوتا
مثلا
نستعلیق میں ’’ب‘‘ کی 14 مختلف شکلیں اور نشستیں بنتی ہیں جو شان الحق حقی صاحب نے اپنے ایک شعر میں جمع کردی ہیں:
بل میں بلبل، بانس پہ بطخ، بوتل میں بیل، آب میں بندر
بمبئی میں سبحان اللہ مچھلی ڈوبی بیچ سمندر

جاسم محمد علوی امجد

یونیکوڈ میں حرف کی اکیلی شکل ، ابتدائی شکل ، وسطی شکل اور آخری شکل کی علیحدہ علیحدہ یونیکوڈ ویلیوز ہیں۔

کی بورڈ سے لکھتے ہوئے عموما حرف کی اکیلی شکل ہی لکھی جاتی ہے اور لے آوٹ انجن فونٹ سے حرف کے کانٹیکسٹ کے مطابق مطلوبہ شکل مہیا کرتا ہے
اشکال کو تبدیل کرنے کا یہ عمل
reshaping engine
کی ذمہ داری ہوتی ہے۔

جن سسٹمز میں رائٹ ٹو لیفٹ زبان کی لے آوٹ اور ری شیپنگ کی صلاحیت نہیں ہوتی وہاں ایک جگاڑ یہ بنا لیا جاتا ہے کہ حرف کی اکیلی شکل یا آسولیٹیڈ فارم کے بجائے
context
کے مطابق حرف کی بننے والی شکل کی یونیکوڈ ویلیو لے آوٹ انجن کو فراہم کی جاتی ہیں اور اس طرح درست ڈسپلے ممکن ہوتا ہے۔

لیکن سرچ کرتے ہوئے اس طرح کے متن کی تلاش مشکل ہوتی ہے۔
لہذا نارملائزیشن کے عمل میں یہ ضروری ہوتا ہے کہ حرف کی ابتدائی ، وسطی اور آخری شکل کو آسولیٹیڈ فارم سے تبدیل کر دیا جائے۔
اردو پروف ریڈر یہ عمل بھی کر دیتا ہے۔ میں نے کئی قسم کے متون کا عظیم فلسفی سے کہا تھا، جس میں یونیکوڈ کا یہ سیٹ بھی شامل تھا
 

علوی امجد

محفلین
جن سسٹمز میں رائٹ ٹو لیفٹ زبان کی لے آوٹ اور ری شیپنگ کی صلاحیت نہیں ہوتی وہاں ایک جگاڑ یہ بنا لیا جاتا ہے کہ حرف کی اکیلی شکل یا آسولیٹیڈ فارم کے بجائے
context
کے مطابق حرف کی بننے والی شکل کی یونیکوڈ ویلیو لے آوٹ انجن کو فراہم کی جاتی ہیں اور اس طرح درست ڈسپلے ممکن ہوتا ہے۔

لیکن سرچ کرتے ہوئے اس طرح کے متن کی تلاش مشکل ہوتی ہے۔
لہذا نارملائزیشن کے عمل میں یہ ضروری ہوتا ہے کہ حرف کی ابتدائی ، وسطی اور آخری شکل کو آسولیٹیڈ فارم سے تبدیل کر دیا جائے۔

لے آؤٹ انجنوں کی موجودہ دور میں ترقی کے بعد اب ضرورت ہے کہ عربیک یونی کوڈ کی بہت سی ویلیوز کو ختم کردینا چاہیئے۔ خصوصا عربیک پریزینٹیشن فارمز میں موجود حروف کی بننے والی اشکال کی ویلیوز کو اب انفرادی کوڈ کرنا ضروری نہیں رہا۔ اسی طرح اردو حروف کا نام دے کر "ک، ہ، ۃ اور ھ" کو علیحدہ ویلیوز دے دینا بھی غلط ہے۔ جس کے باعث اردو ٹیکسٹ کو نارملائز کرنا کافی دشوار ہوگیا ہے۔ پتہ نہیں یونی کوڈ والوں کو کس نے مشورہ دیا تھا کہ ان حروف کو اردو ویلیوز کا نام دے کر عربی سے مختلف قرار دے دیا جائے۔
 

دوست

محفلین
لینگوئج ماڈلنگ میں زبان کا سراغ لگانا یونی کوڈ ویلیوز کی رینج کے ذریعے ذرا آسان ہو جاتا ہے۔
 
Top