Skip to content

ربط النطاقات

أنشئ علاقات موجّهة ومصنّفة بين نطاقين نصيين مُعلَّقين في Potato. اضبط أنواع الروابط والألوان والربط ثنائي الاتجاه لمهام استخراج العلاقات.

جديد في الإصدار 2.1.0

يتيح ربط النطاقات للمُعلّقين إنشاء علاقات مصنّفة بين نطاقات (مقاطع نصية) سبق تعليقها. وهذا مفيد في مهام استخراج العلاقات حين تحتاج إلى تحديد كيفية ارتباط الكيانات ببعضها، مثل "PERSON works_for ORGANIZATION" أو "PERSON collaborates_with PERSON".

نظرة عامة

توفّر ميزة ربط النطاقات:

  • علاقات مصنّفة: عرّف عدة أنواع روابط بألوان وقيود مختلفة
  • روابط موجّهة وغير موجّهة: دعم للعلاقات الاتجاهية والمتماثلة معًا
  • روابط متعددة الأطراف: أنشئ روابط بين عدة نطاقات (لا أزواج فقط)
  • عرض بصري بالأقواس: شاهد العلاقات مرسومة أقواسًا ملوّنة فوق النص
  • قيود التصنيفات: قيّد أي تصنيفات النطاقات يمكن أن تكون مصادر أو أهدافًا

الإعداد

لاستخدام ربط النطاقات تحتاج مخططَي تعليق:

  1. مخطط span لتعليق الكيانات
  2. مخطط span_link لتعليق العلاقات
yaml
annotation_schemes:
  # First, define the span schema for named entities
  - annotation_type: span
    name: entities
    description: "Highlight named entities"
    labels:
      - name: "PERSON"
        color: "#3b82f6"
      - name: "ORGANIZATION"
        color: "#22c55e"
      - name: "LOCATION"
        color: "#f59e0b"
    sequential_key_binding: true
 
  # Then, define the span_link schema for relationships
  - annotation_type: span_link
    name: relations
    description: "Annotate relationships between entities"
    span_schema: entities  # References the span schema above
    link_types:
      - name: "WORKS_FOR"
        directed: true
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["ORGANIZATION"]
        color: "#dc2626"
      - name: "COLLABORATES_WITH"
        directed: false
        allowed_source_labels: ["PERSON"]
        allowed_target_labels: ["PERSON"]
        color: "#06b6d4"

خيارات الإعداد

الحقول المطلوبة

الحقلالوصف
annotation_typeيجب أن يكون "span_link"
nameمعرّف فريد للمخطط
descriptionالوصف المعروض للمُعلّقين
span_schemaاسم مخطط تعليق النطاقات المراد ربطه
link_typesمصفوفة تعريفات أنواع الروابط

خيارات نوع الرابط

الحقلالنوعالوصف
namestringمطلوب. اسم/تسمية نوع الرابط
directedbooleanما إذا كان الرابط اتجاهيًّا. الافتراضي: false
colorstringرمز اللون بصيغة hex للرابط
allowed_source_labelsarrayتصنيفات النطاقات التي يمكن أن تكون المصدر
allowed_target_labelsarrayتصنيفات النطاقات التي يمكن أن تكون الهدف
max_spansintegerالحد الأقصى للنطاقات في نوع الرابط هذا (للروابط متعددة الأطراف)

خيارات العرض البصري

yaml
visual_display:
  enabled: true        # Show arc visualization
  arc_position: "above"  # Position of arcs
  show_labels: true    # Show link type labels on arcs

الاستخدام

إنشاء النطاقات

  1. أولًا، علّق النص باختيار تصنيفات النطاقات وتظليل النص
  2. يصبح كل نطاق مظلَّل متاحًا للربط

إنشاء الروابط

  1. اختر نوع رابط من الخيارات المتاحة
  2. انقر على النطاقات لإضافتها إلى الرابط الحالي (تُظلَّل النطاقات المحددة)
  3. انقر "Create Link" لإتمام الرابط
  4. في الروابط الموجّهة، يكون النطاق المحدد أولًا هو المصدر والأخير هو الهدف

عرض الروابط

  • تظهر الروابط المُنشأة في قسم "Existing Links"
  • إذا كان العرض البصري مفعّلًا، تُرسم أقواس فوق النص تصل بين النطاقات المرتبطة
  • الأقواس ملوّنة بحسب نوع الرابط

حذف الروابط

  • انقر زر الحذف (x) بجوار أي رابط في قسم "Existing Links"

صيغة البيانات

بيانات الإدخال

بيانات نصية قياسية بحقل معرّف وحقل نص:

json
[
  {
    "id": "item_1",
    "text": "John Smith works at Google as a senior engineer."
  }
]

صيغة المخرجات

تتضمن التعليقات تعليقات النطاقات وتعليقات الروابط معًا:

json
{
  "id": "item_1",
  "text": "John Smith works at Google as a senior engineer.",
  "entities": [
    {"start": 0, "end": 10, "label": "PERSON", "text": "John Smith"},
    {"start": 20, "end": 26, "label": "ORGANIZATION", "text": "Google"}
  ],
  "relations": [
    {
      "link_type": "WORKS_FOR",
      "span_ids": ["span_abc123", "span_def456"],
      "direction": "directed"
    }
  ]
}

قيود التصنيفات

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

yaml
link_types:
  - name: "WORKS_FOR"
    directed: true
    allowed_source_labels: ["PERSON"]      # Only PERSON can be source
    allowed_target_labels: ["ORGANIZATION"]  # Only ORGANIZATION can be target

عند مخالفة القيود، تعرض الواجهة رسالة خطأ وتمنع إنشاء الرابط.

الروابط متعددة الأطراف

افتراضيًّا، تصل الروابط بين نطاقين بالضبط. وللعلاقات التي تشمل كيانات أكثر:

yaml
link_types:
  - name: "MEETING"
    directed: false
    max_spans: 5  # Allow up to 5 participants
    allowed_source_labels: ["PERSON"]
    allowed_target_labels: ["PERSON"]

مثال

انظر المثال الكامل العامل في:

  • الإعداد: project-hub/simple_examples/simple-span-linking/config.yaml
  • البيانات: project-hub/simple_examples/simple-span-linking/data.json

للتشغيل:

bash
cd project-hub/simple_examples
python ../../potato/flask_server.py start simple-span-linking/config.yaml -p 9001

نصائح

  1. علّق النطاقات أولًا: تأكد من إنشاء تعليقات النطاقات قبل محاولة ربطها
  2. استخدم الألوان بفعالية: اختر ألوانًا متمايزة لأنواع الروابط المختلفة
  3. راعِ الاتجاه: استخدم الروابط الموجّهة حين يكون للعلاقة اتجاه واضح
  4. اختصارات لوحة المفاتيح: تدعم تصنيفات النطاقات اختصارات لوحة المفاتيح (1، 2، 3...) لتعليق أسرع

قراءات إضافية

للاطلاع على تفاصيل التنفيذ، انظر التوثيق المصدري.