كيف يمكنني إضافة شرط مخصص إلى مشروع RUTA موجود؟بدأت، ولكن أنا عالقة

StackOverflow https://stackoverflow.com//questions/22056617

  •  22-12-2019
  •  | 
  •  

سؤال

أريد إضافة شرط قاعدة UIMA RUTA مخصص.لدي مشروع UIMA Ruta موجود في Eclipse.لقد قمت حتى الآن بإنشاء ملف مصدر في نفس المشروع باستخدام كعب تعليق أساسي:

package mynamespace.extensions;

[imports]

public class MyNewCondition extends AbstractRutaCondition {

private final String para1;

public MyNewCondition(String para1) {
    super();
    this.para1 = para1;
}

@Override
public EvaluatedCondition eval(AnnotationFS annotation,
        RuleElement element, RutaStream stream, InferenceCrowd crowd) {
    // TODO Auto-generated method stub
    if (para1 == "hfoo")
        return new EvaluatedCondition(this, true);
    else 
        return new EvaluatedCondition(this, false);
}

public String getPara() {
    return para1;
}
}

يتم تجميع الملف إلى الهدف/الفئات/...المجلد، ولكن عندما أقوم بإنشاء برنامج نصي RUTA:

DECLARE Test;
SW{MyNewCondition("foo") -> MARK(Test)};

...يخبرني Eclipse أن "MyNewCondition" لم يتم تعريفه وعندما أقوم بتشغيله أحصل على:"خطأ في السطر 40، "(":لم يتم العثور على بديل قابل للتطبيق" على وحدة التحكم.أفترض أنني بحاجة إلى القيام ببعض الاستيراد الإضافي، لكن لا أعرف كيف.لقد حاولت العمل من مشروع مثال الامتداد في مستودع Github، لكنني لا أعرف من أين أبدأ هناك لأن ملف البرنامج النصي لا يحتوي على أي عمليات استيراد أخرى، ولكن ملفات واصف XML المرتبطة بها تحتوي على ذلك.ولكن نظرًا لأن هذه العناصر يتم إنشاؤها تلقائيًا، فلا أعرف ما إذا كان هذا هو ما يجب أن أغيره أم أنه شيء آخر.

لقد حاولت أيضًا استيراد نفس نوع الشرط الجديد من مشروع ثانٍ عبر خيارات مسار البناء في Eclipse، ولكن لم يحالفني الحظ أيضًا.

يمكن للشخص أن يساعد؟شكرًا.

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

المحلول

أنت بحاجة إلى ثلاث فئات على الأقل لإضافة شرط جديد تم حله أيضًا في UIMA Ruta Workbench:

  1. تنفيذ الشرط كما فعلت في سؤالك
  2. تطبيق IRutaConditionExtension، الذي يوفر تنفيذ الشرط للمحرك
  3. تطبيق IIDEConditionExtension، الذي يوفر الشرط لـ UIMA Ruta Workench

يحتوي الشرط نفسه فقط على الوظيفة التي يجب إضافتها إلى اللغة.محرك التحليل لا يعرف بالطبع شيئًا عن أي تطبيقات خارجية تؤدي إلى استثناء تحليل غريب مثل "(" غير موجود.وينبغي تحسين ذلك في بعض الأحيان.يوفر محرك التحليل معلمة التكوين additionalExtensions الذي يسرد جميع الامتدادات المعروفة للغة.إذا كنت لا تستخدم UIMA Ruta Workbench، فأنت بحاجة إلى إضافة تطبيق IRutaConditionExtension إلى هذه المعلمة.يوفر تطبيق IIDEConditionExtension الوظائف الضرورية لـ UIMA Ruta Workbench وهي التحقق من بناء الجملة وتمييز بناء الجملة وما إلى ذلك.بالإضافة إلى ذلك، فإنه يمكّن Workbench من إنشاء الواصفات الصحيحة.فهو يضيف تطبيق IRutaConditionExtension إلى المعلمة المعنية.يحتاج هذا الامتداد الخاص بـ Workbench بالطبع إلى تنفيذه في مكون Eclipse الإضافي المثبت في مثيل UIMA Ruta Workbench Eclipse الخاص بك، حتى يكون متاحًا في Workbench.توجد نقطة امتداد تحتاج إلى توسيعها لتعرف كلاً من تطبيق IRutaConditionExtension وIIDEConditionExtension.

يوجد مشروع مثالي يوفر تنفيذ جميع العناصر اللغوية الممكنة.يحتوي هذا المشروع على تطبيقات محرك التحليل وأيضًا تطبيق UIMA Ruta Workbench، وبالتالي فهو مكون إضافي لـ Eclipse (ضع في اعتبارك ملف pom).

فيما يتعلق بامتداد شرط exampleCondition، هناك ثلاث نقاط/فئات مهمة:

  1. ExampleCondition.java يوفر تنفيذ الشرط الجديد، الذي يقيم التواريخ
  2. ExampleConditionExtension.java يوفر الامتداد لمحرك التحليل.فهو يعرف اسم الشرط، وتنفيذه، ويمكنه إنشاء أمثلة جديدة لهذا الشرط، ويكون قادرًا على التعبير عن الشرط لفظيًا لمكونات الشرح.
  3. ExampleConditionIDEExtension يوفر التحقق من بناء الجملة للمحرر والكلمة الأساسية لتلوين بناء الجملة.
  4. plugin.xml يحدد امتداد Workbench:

    <extension point="org.apache.uima.ruta.ide.conditionExtension">
      <condition
        class="org.apache.uima.ruta.example.extensions.ExampleConditionIDEExtension"
        engine="org.apache.uima.ruta.example.extensions.ExampleConditionExtension">
      </condition>
    </extension>
    

إذا كنت لا تستخدم UIMA Ruta Workbench أو كنت تريد فقط تطبيق القواعد في مسارات UIMA، فأنت بحاجة فقط إلى ExampleCondition و ExampleConditionExtension, ، وتحتاج إلى إضافة org.apache.uima.ruta.example.extensions.ExampleConditionExtension إلى additionalExtensions معلمة محرك تحليل UIMA Ruta (الواصف).

لم يتم اختبار إضافة شروط جديدة باستخدام مشاريع Java في نفس مساحة العمل بعد، ولكن على الأقل سيكون دعم Workbench مفقودًا بسبب تضمين الامتدادات باستخدام آلية نقطة الامتداد الخاصة بـ Eclipse.

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