سؤال

أنا أسعى إلى اتجاه ومحاولة ضع الكلمة المناسبة هذه المشكلة:

أحاول بناء محرك الاستدلال البسيط (هل هناك اسم أفضل؟) في بيثون الذي سوف يأخذ سلسلة و -

1 - إنشاء قائمة الرموز ببساطة عن طريق إنشاء قائمة من القيم المنفصلة المساحة البيضاء

2 - تصنيف هذه الرموز، باستخدام التعبيرات العادية

3 - استخدم مجموعة أعلى مستوى من القواعد لاتخاذ القرارات بناء على التصنيفات

مثال:

"90001" - رمز واحد، يطابق zipcode Regex، وهي قاعدة موجودة سلسلة تحتوي فقط على الرمز البريدي يسبب حدوث سلوك معين

"30 + 14" - ثلاثة رموز رموز، Regexs للقيمة العددية ومطابقة المشغلين الرياضيات، هناك قاعدة موجودة قيمة رقمية تليها مشغل رياضي تليها قيمة رقمية أخرى يسبب حدوث سلوك معين

أنا تكافح مع أفضل طريقة للقيام بخطوة رقم 3، مجموعة المستوى الأعلى للقواعد. أنا متأكد من أن بعض الإطار يجب أن يكون موجودا. أيه أفكار؟ أيضا، كيف يمكنك وصف هذه المشكلة؟ النظام القائم على القاعدة، نظام الخبراء، محرك الاستدلال، شيء آخر؟

شكرا!

هل كانت مفيدة؟

المحلول

أنا مندهش جدا أن الخطوة رقم 3 هو الذي يمنحك مشكلة ...

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

<SimpleMathOperation> ::= <NumericalValue><Operator><NumericalValue>

ربما قلقك هو أنه عندما تصبح الأمور معقدة، سيصبح من الصعب التعبير عن المتطلبات بأكملها من حيث قواعد القواعد غير المتضاربة. أو ربما قلقك هو أن المرء يمكن أن يضيف قواعد ديناميكيا، وبالتالي فرض منطق "تجميع" قواعد النحوية التي سيتم دمجها مع البرنامج؟ مهما كانت القلق، أعتقد أن هذه الخطوة الثالثة ستكون تافهة نسبيا.

من ناحية أخرى، وما لم تكن الفئات المختلفة (ونص المدخلات الأساسي) بحيث يمكن وصفها بلغة منتظمة أيضا (كما يبدو أن تلميح في السؤال)، ومحلل نصوص ونصوص (خطوات رقم 1 و # 2 ...) عادة ما تكون أقل من علاقة تافهة ..

بعض المثال مثال لمكتبات Python التي تبسط كتابات وتقييم النحات:

نصائح أخرى

يبدو أنك تبحث عن مكتبة "Grammar Inference" (Grammar Induction).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top