الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

محلل النصوص

بدأه mohref في 4 أكتوبر 2008 · 9 رد · 1,533 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اسف جدا فانا وضعت الموضوع في هذا القسم لأني لم اجد قسما يعنى بأمور النمذجة لأضع به هذا الموضوع يرجى التفكير في فتح قسم للغات النمذجة و أفكار هندسة البرمجيات.

احب ان ابين هنا بعض الافكار التي تخدم موضوع انشاء محلل نظم بشكل آلي:

في البداية لدينا النص الذي يعبر عن توصيف للمشكلة التي نريد انشاء البرمجية او النظام لها

هذا النص يتألف من كلمات نقوم بتحليل هذه الكلمات و تحديد انواع هذه الكلمات هل هي اسماء افعال صفات ....

بعدها يتم الاعتماد على قواعد في ترشيح بعض الاسماء التي تم ايجادها لتمثل قائمة بالصفوف المقترحة لنمذجة النظام

ويتم ترشيح بعض الأفعال التي تم استخراجها من النص لتمثل العلاقات بين الصفوف فمثلا ليكن لدينا النص التالي:

شركة تحوي فروع , كل فرع يتألف من أقسام, وهذه الأقسام تحوي موظفين

إن الخطوة الأولى هي إدخال هذا النص على محلل يقوم بمعرفة نوع الكلمة أي أن مهمة هذا المحلل أن يحدد التالي:

شركة : اسم

تحوي : فعل

فروع : اسم جمع

.

.

.

من : حرف جر

.

.

.

و : حرف وصل

.

.

.

في المرحلة الثانية يتم ترشيح الاسماء على اعتبار انها يمكن ان تمثل صفوف في مخطط الصفوف و تخزن في بنية معينة ك ArrayList (الا ان الترشيح يعتمد على قواعد كثيرة و متعددة كالتكرار و غيره و لامجال هنا لسردها....)

وترشيح الأفعال لتمثل العلاقات بين هذه الصفوف و تخزن في بنية مشابهة للبنية السابقة و هنا يجب الاعتماد على السياق

في المرحلة الثالثة يتم ادخال هذه البنى الناتجة عن الخطوة السابقة إلى أداة للرسم حيث تقوم هذه الأداة بالمرور على البنى السابقة و رسم العناصر على الشاشة و يجب أن يكون الرسم ليس بصيغة صورة حتى يتمكن المحلل من تعديل هذه الرسمة يدوياُ.

المرحلة التي تلي تتمثل في إيجاد بعض الأدوات التي تعتمد على الرسم الناتج من المرحلة الثالثة:

الأداة الأولى: أداة تقوم بتوليد صفوف المجال اعتمادا على الرسمة الناتجة

الأداة الثانية: تقوم بتوليد السكريبت الخاص بانشاء جداول مخطط قاعدة البيانات SQL DDL

الأداة الثالثة: تقوم بتوليد الواجهات التي ستيتم ادخال البيانات اعتمادا على الرسمة السابقة ايضا.

من الممكن إضافة أدوات أخرى حسب الطلب فمثلا كنا قد أضفنا أداة تقوم بتوليد شيفرة يتم طلبها عن بعد اعتمادا على تقنية RMI.

هذه ببساطة الخطوات التي كنا قد قمنا بالعمل عليها في مشروع التخرج الذي قدمناه السنة قبل الفائتة بجامعتنا و أنا جاهز لأي استفسار أو مساعدة

#2

لمحة حول أفكار تحليل النصوص في اللغات NLP(Natural Language Processing) :

قد يكون هنالك تضارب في بعض الأفكار حول طريقة عمل محلل النصوص واليكم بعض التوضيحات عن طريقة عمل المحلل:

المحلل هو برنامج نمرر له جملة معينة فيعيد لنا نوع كل كلمة في الجملة (فعل , اسم , حرف , حرف وصل , حرف جر , صفة ......).

المحلل لايعتمد على أخذ الكلمة ومن ثم يقوم بالبحث عنها ضمن قاموس ثم يقوم بإعادة نوع الكلمة إن هذا الحل يعتبر حلاً غير عملي أبداً ( لعدم إمكانية حصر جميع الاشتقاقات و الكلمات في اللغة ) فالكثير من الكلمات تشتق من أصلها البسيط بإضافة حرف "s" مثلاً عند الحديث عن الكلمات التي تدل على الجمع في اللغة الإنكليزية و "ون" في اللغة العربية مثلاً ، فهنا سيكون من غير العملي أن نقوم بتخزين آلاف الكلمات التي تجري على نفس النمط في عملية الجمع.

وبعضها الآخر يعتمد على إيجاد الجذر الأولي للكلمة فمثلاً في الكلمات العربية تعود إلى الفعل الثلاثي أو الرباعي أو الخماسي الذي تتشكل منه الكلمة، وهذه الجذور تكون مخزنة ضمن قاعدة بيانات، فهي بهذه الحالة اختصرت عدد الكلمات المخزنة لكن بالتالي هذا سيؤدي إلى تعقيد كبير في خوارزمية استخلاص الجذر.

والخوارزميات الباقية استخدمت ما يسمى بالتجذير الخفيف (Light Stemming) وهو فعال جداً، يعتمد على معلومات إحصائية حول أكثر الأحرف المزيدة تكراراً ، تقوم الخوارزمية على حذف هذه الأحرف من كلمات النص، وتصل إلى الكلمات البسيطة .

إن هذه الخوارزميات تعتبر أسرع الخوارزميات في الحصول على الكلمة الأصلية، حيث أنها لا تعتمد إطلاقاً على أي قاموس، لكن من الواضح أنها بهذه الحالة ستفتقد إلى الدقة.

طريقة التجذير Stemming بشكل عام : تقوم فكرة التجذير على رد الكلمة إلى أصلها في اللغة و من ثم تحديد نوعها فمثلاً :

-كلمة طالب حتى يردها المحلل إلى اصلها يجد أنه الفعل طلب.

بالإضافة إلى هذه الفكرة فإن المحلل قد يواجه مشكلة مثل كلمة (الحافظون) ففي هذه الحالة تتألف الكلمة من بادئة تمثل في (ال) التعريف فيصبح (حافظون) و لاحقة وهي (ون) علامة جمع المذكر السالم فتصبح (حافظ) في هذه الحالة يقوم المحلل برد الكلمة إلى اصلها فتصبح (حفظ).

المحلل لا يقوم فقط بأخذ الكلمات و تحديد نوعها حسب الكلمة مفصولة عن باقي النص بل يجب أن يتم تحديد نوع الكلمة حسب موقعها في النص أي حسب سياق الكلام وسأورد هنا مثالاً على هذه الجزئية و أعتذر عن ركاكة الجمل لكن أوردها كمثال فقط لإيضاح نقطة معينة :

1- عندما وصلت الى المنزل كان قد ذهب إلى الحديقة.

2- ولما فتح الصندوق قال ماهذا ذهب.

في المثالين السابقين إذا أردنا أن نحدد نوع الكلمة ذهب لايمكن ان نحدد أن الكلمة الأولى تعني ( ذهب ) أي فعل الخروج في حين أن الثانية ( ذهب ) تعني المعدن النفيس المعروف إلا بالنظر إلى ماقبل الكلمتين فهنالك قواعد يمكن أن نعتمد عليها و هي كثيرة لكن يمكن حصرها فلا يمكن أن تأتي كلمة ( ذهب ) المعنى النفيس بعد الحرف ( قد ) بأي شكل من الأشكال , و يمكن أن نستقرأ الكثير من القواعد مثلا لايمكن أن يأتي فعلان بعد بعضهما البعض دون أن يأتي بينهما أي فاصل , كما لا يمكن أن يأتي بعد حرف الجر فعل و قس على ذلك العديد من القواعد الأخرى التي تساعد في معرفة نوع الكلمة في حال الاشكال اعتمادا على سياق الكلام.

هذا بشكل عام مقدمة سريعة عن أفكار تحليل اللغات و قد كنت أريد طرح هذا الموضوع منذ مدة طويلة لكن ماحفزني في هذه الفترة هو مشروع ( كيان و زميلتها مشروع تخرج ) الذي طرحتاه في المنتدى و سأحاول إرفاق توثيق المشروع وهو على صيغة PDF يقع في 75 صفحة لكن أريد أن ألفت انتباه ( كيان و زميلتها ) إلى البحث عن الكلمات المفتاحية التالية:

- NLP ( Natural Language Processing) : معالجة اللغات الطبيعية.

- Stemming Or Light Stemming : التجذير و التجذير الخفيف.

حيث يوجد خوارزميات لعمليات التجذير و معرفة نوع الكلمة في اللغة الإنكليزية و على ماأذكر توجد خوارزمية جاهزة وكان اسمها على ماأذكر TCM و سأتأكد من ذلك إن شاء الله

كما سأقوم بإدراج توثيق المشروع على صيغة pdf في المرفقات و سأحاول الحصول على مشروع قام رفاق لي بالعمل عليه و لكن يعتمد اللغة الانكليزية في التحليل و انا مستعد لأي تساؤلات و الله من وراء القصد.

#3

أخي ماذا تعني كلمة اتمتة

ثانياً هل هذا برنامج مولد للبرمجيات

كلمني زميل أكبر في برنامج كهذا ولكن لم يكن لدي الخبرة الكافية للدخول فيه

هل قومت بتصميمه بالجافا

وأيهما أفضل من حيث الدقة في مثل هذا البرنامج الجافا أم السي++ وكذلك لبرنامج محلل النصوص

سؤال خارج الموضوع من أي جامعة أنت

آسف للأطالة ولكنها لقلة الخبرة

طالب في الفرقة الثانية

دمتم في رعاية الله

مدونتي

برمجة وما يتبعها

#4

كلما كانت الحاجة أقل إلى تدخل العنصر البشري في عملية معينة كلما كانت درجة الأتمتة أكبر

أي أن عملية الأتمتة في توليد البرمجيات تعني محاولة عدم اشراك (أو التقليل قدر الإمكان) من عملية تتدخل المحلل أو المصمم في مراحل تطوير البرمجية

نعم كانت هذه محاولة لإنجاز مولد للبرمجيات يقوم بجميع المراحل الخاصة بتطوير البرمجية من تحليل متطلبات النظام إلى رسم مخطط الصفوف إلى توليد الشيفرة البرمجية و السكربت الخاص بقواعد البيانات و الواجهات حتى

إلا أنني أعترف أن العمل لايرقى أبدا إلى مستوى الطموح فهو قد فشل إلا في حال تطبيق نصوص محددة عليه

ولكنه خطوة على سبيل التقدم في هذا المجال و يكفينا شرف السبق و استكشاف بداية الطريق

لأرى أن هنالك تبايناً في مثل هذه البرامج بين لغات البرمجة مع الميل إلى أن C++ هي الاسرع إلا أنني أميل إلى الجافا لتألفي معها

أنا من مدينة حمص في سورية من جامعة البعث

#5

إرتأيت من المفيد وضع هذا التوثيق للمشروع الذي قمنا بالعمل عليه في سنة التخرج

حتى يعم النفع و هو توثيق جيد على ماأرى و الله من وراء القصد

Arabic_CASE_Tool.pdf

#6

بارك الله فيك وزادك من علمه ،،

مشروع ممتاز أخي الكريم ، وفكرته رائعه أيضا .. أطلعت عليه بشكل سريع لكن حقيقه شغل أحترافي ومعروض بشكل جيد،،

لي طلب بسيط أخي الكريم ، وهو أن تقوم بالكتابه في موضوع واحد ولا تضع كل فقره في موضوع جديد ، حتى يكون المشروع بالكامل في موضوع واحد وبالتالي يكون مرتب وسهل الوصول اليه ..

يمكنك ابلاغ المشرف (عيسى ، رامي) بدمج المواضيع في موضوع واحد "اذا أردت" ...

مع التحيه ،،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#7

سأحاول قراءته في أقرب فرصة ممكنة

أؤيد فكرة الأخ وجدي

على الأقل لكي لا يتشتت جهدك على أكثر من موضوع

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#8

شكراً

ووفقكم الله

دمتم في رعاية الله

مدونتي

برمجة وما يتبعها

#9

اطلعت على الملف بسرعة

بارك الله بك أخي

مجهود كبير واضح

وفقك الله

Haytham A. Mahmoud

PhSoft

When No Others

#10

جزاك الله خيرا اخى الكريم

وشكرا على مجهودك الوفير

يزيد الله فى علمنا وعلمك

مواضيع مشابهة