Skip to content

تعليق النطاقات

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

يتيح تعليق النطاقات للمُعلّقين تحديد أجزاء من النص وتصنيفها، ويُستخدم عادةً في التعرّف على الكيانات المسماة (NER)، ووسم أقسام الكلام، ومهام تظليل النص.

واجهة تعليق النطاقات مع تظليل الكياناتتعليق النطاقات مع تصنيفات كيانات ملوّنة في Potato

الإعداد الأساسي

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight named entities in the text"
    labels:
      - PERSON
      - ORGANIZATION
      - LOCATION

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

تصنيفات الكيانات

حدّد أنواع النطاقات التي يمكن للمُعلّقين إنشاؤها:

yaml
labels:
  - PERSON
  - ORGANIZATION
  - LOCATION
  - DATE
  - EVENT

الألوان

خصّص الألوان لتمييز بصري أوضح:

yaml
colors:
  PERSON: "#3b82f6"
  ORGANIZATION: "#10b981"
  LOCATION: "#f59e0b"
  DATE: "#8b5cf6"
  EVENT: "#ec4899"

يمكن أن تكون الألوان بصيغة hex (#ff0000) أو RGB (rgb(255, 0, 0)).

اختصارات لوحة المفاتيح

سرّع التعليق بربط المفاتيح:

yaml
keyboard_shortcuts:
  PERSON: "1"
  ORGANIZATION: "2"
  LOCATION: "3"
  DATE: "4"

التلميحات

قدّم إرشادًا لكل تصنيف:

yaml
tooltips:
  PERSON: "Names of people, characters, or personas"
  ORGANIZATION: "Companies, agencies, institutions"
  LOCATION: "Physical locations, addresses, geographic regions"

النطاقات المتداخلة

السماح بالتداخل

فعّل النطاقات التي يمكن أن تتداخل:

yaml
- annotation_type: span
  name: entities
  labels:
    - PERSON
    - ROLE
  allow_discontinuous: true

هذا مفيد حين يمكن أن يحمل النص نفسه أكثر من تصنيف (مثلًا "Dr. Smith" هو PERSON وله ROLE في الوقت نفسه).

تعطيل التداخل (الافتراضي)

yaml
- annotation_type: span
  name: entities
  labels:
    - PERSON
    - ORGANIZATION
  allow_discontinuous: false  # Default behavior

أوضاع تحديد النطاق

التحديد على مستوى الكلمة

تحديد الكلمات الكاملة فقط:

yaml
- annotation_type: span
  name: entities
  labels:
    - ENTITY

التحديد على مستوى الحرف

السماح بتحديد أجزاء من الكلمات:

yaml
- annotation_type: span
  name: entities
  labels:
    - ENTITY

النطاقات المُعلّقة مسبقًا

حمّل تعليقات موجودة للمراجعة أو التصحيح:

json
{
  "id": "doc1",
  "text": "John Smith works at Microsoft in Seattle.",
  "spans": [
    {"start": 0, "end": 10, "label": "PERSON"},
    {"start": 20, "end": 29, "label": "ORGANIZATION"},
    {"start": 33, "end": 40, "label": "LOCATION"}
  ]
}

اضبط الإعداد لتحميل التعليقات المسبقة:

yaml
- annotation_type: span
  name: entities

إعدادات NER الشائعة

NER القياسي (4 أنواع)

yaml
- annotation_type: span
  name: ner
  description: "Label named entities"
  labels:
    - PER    # Person
    - ORG    # Organization
    - LOC    # Location
    - MISC   # Miscellaneous
  sequential_key_binding:
    PER: "1"
    ORG: "2"
    LOC: "3"
    MISC: "4"

NER الموسّع (بأسلوب OntoNotes)

yaml
- annotation_type: span
  name: ner_extended
  labels:
    - PERSON
    - NORP        # Nationalities, religious/political groups
    - FAC         # Facilities
    - ORG
    - GPE         # Geopolitical entities
    - LOC
    - PRODUCT
    - EVENT
    - WORK_OF_ART
    - LAW
    - LANGUAGE
    - DATE
    - TIME
    - PERCENT
    - MONEY
    - QUANTITY
    - ORDINAL
    - CARDINAL

NER الطبي الحيوي

yaml
- annotation_type: span
  name: bio_ner
  labels:
    - GENE
    - PROTEIN
    - DISEASE
    - DRUG
    - SPECIES

NER لوسائل التواصل الاجتماعي

yaml
- annotation_type: span
  name: social_ner
  labels:
    - PERSON
    - ORGANIZATION
    - LOCATION
    - PRODUCT
    - CREATIVE_WORK
    - GROUP

النطاق مع سمات إضافية

أضف سمات إلى النطاقات للحصول على تعليق أغنى:

yaml
annotation_schemes:
  - annotation_type: span
    name: entities
    labels:
      - PERSON
      - ORGANIZATION
 
  - annotation_type: radio
    name: entity_type
    description: "What type of entity is this?"
    labels:
      - Named
      - Nominal
      - Pronominal

مخططات نطاق متعددة

علّق جوانب مختلفة كلًّا على حدة:

yaml
annotation_schemes:
  # Named entities
  - annotation_type: span
    name: entities
    description: "Label named entities"
    labels:
      - PERSON
      - ORGANIZATION
      - LOCATION
 
  # Sentiment expressions
  - annotation_type: span
    name: sentiment_spans
    description: "Highlight sentiment expressions"
    labels:
      - POSITIVE
      - NEGATIVE

تعليق النطاقات متعدد الحقول

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

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

الإعداد

yaml
annotation_schemes:
  - annotation_type: span
    name: source_entities
    description: "Label entities in the source text"
    labels:
      - PERSON
      - ORGANIZATION
 
  - annotation_type: span
    name: summary_entities
    description: "Label entities in the summary"
    labels:
      - PERSON
      - ORGANIZATION

صيغة البيانات متعددة الحقول

يجب أن تتضمن بياناتك الحقول النصية المنفصلة:

json
{
  "id": "doc1",
  "source_text": "John Smith works at Microsoft in Seattle.",
  "summary": "Smith is employed by Microsoft."
}

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

عند استخدام target_field، تُفهرَس التعليقات حسب الحقل:

json
{
  "id": "doc1",
  "source_entities": {
    "source_text": [
      {"start": 0, "end": 10, "text": "John Smith", "label": "PERSON"},
      {"start": 20, "end": 29, "text": "Microsoft", "label": "ORGANIZATION"}
    ]
  },
  "summary_entities": {
    "summary": [
      {"start": 0, "end": 5, "text": "Smith", "label": "PERSON"},
      {"start": 22, "end": 31, "text": "Microsoft", "label": "ORGANIZATION"}
    ]
  }
}

للاطلاع على مثال كامل يعمل، انظر project-hub/simple_examples/simple-multi-span/ في مستودع Potato.

خيارات العرض

إظهار التصنيف داخل النطاق

اعرض نص التصنيف داخل النطاقات المظللة:

yaml
- annotation_type: span
  name: entities

نمط التسطير

استخدم التسطير بدلًا من تظليل الخلفية:

yaml
- annotation_type: span
  name: entities

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

تُحفَظ تعليقات النطاقات مع إزاحات الأحرف:

json
{
  "id": "doc1",
  "entities": [
    {
      "start": 0,
      "end": 10,
      "text": "John Smith",
      "label": "PERSON"
    },
    {
      "start": 20,
      "end": 29,
      "text": "Microsoft",
      "label": "ORGANIZATION"
    }
  ]
}

مثال كامل: مهمة NER

yaml
annotation_task_name: "Named Entity Recognition"
 
data_files:
  - path: data/documents.json
    text_field: text
 
annotation_schemes:
  - annotation_type: span
    name: entities
    description: "Highlight and label all named entities"
    labels:
      - PERSON
      - ORGANIZATION
      - LOCATION
      - DATE
      - MONEY
    sequential_key_binding:
      PERSON: "1"
      ORGANIZATION: "2"
      LOCATION: "3"
      DATE: "4"
      MONEY: "5"
    allow_discontinuous: false
 
  - annotation_type: radio
    name: difficulty
    description: "How difficult was this document to annotate?"
    labels:
      - Easy
      - Medium
      - Hard

النطاقات غير المتصلة

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

فعّل نطاقات النص غير المتجاورة عبر المعامل allow_discontinuous. يسمح هذا للمُعلّقين بتحديد عدة مقاطع نصية غير متجاورة بوصفها تعليق نطاق واحدًا، وهو مفيد للكيانات غير المتصلة أو التعبيرات المقسّمة.

yaml
- annotation_type: span
  name: entities
  labels:
    - PERSON
    - ORGANIZATION
  allow_discontinuous: true

عند تفعيله، يمكن للمُعلّقين الضغط على مفتاح تعديل أثناء تحديد مقاطع نصية إضافية لإضافتها إلى النطاق الحالي. تتضمن المخرجات أزواج بداية/نهاية متعددة لكل مقطع.

التكامل مع ربط الكيانات

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

يمكن ربط تعليقات النطاقات بقواعد معرفة خارجية (Wikidata أو UMLS أو واجهات REST مخصصة) بإضافة كتلة إعداد entity_linking إلى مخطط النطاق:

yaml
- annotation_type: span
  name: entities
  labels:
    - PERSON
    - ORGANIZATION
    - LOCATION
  entity_linking:
    enabled: true
    knowledge_bases:
      - name: wikidata
        type: wikidata
        language: en

عند تفعيل ربط الكيانات، تظهر أيقونة رابط في شريط تحكم كل نطاق. والنقر عليها يفتح نافذة بحث للعثور على كيانات قاعدة المعرفة المطابقة وربطها. انظر توثيق ربط الكيانات للتفاصيل الكاملة.

أفضل الممارسات

  1. استخدم ألوانًا متمايزة لتسهيل التمييز البصري
  2. قدّم تلميحات واضحة مع أمثلة لكل نوع كيان
  3. فعّل اختصارات لوحة المفاتيح لتعليق أسرع
  4. استخدم التحديد على مستوى الكلمة ما لم تكن بحاجة إلى دقة على مستوى الحرف
  5. فكّر في التعليق المسبق لتسريع سير عمل التصحيح
  6. اختبر إعدادات التداخل بناءً على إرشادات التعليق لديك

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

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