Skip to content

تتبع السلوك

التقاط بيانات التفاعل التفصيلية لتحليل الجودة والبحث.

تتبع السلوك

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

نظرة عامة

يلتقط نظام تتبع السلوك:

  • كل إجراء تعليق توضيحي: اختيارات التسميات، تعليقات النطاق، مدخلات النص
  • طوابع زمنية دقيقة: طوابع زمنية من جانب الخادم والعميل
  • استخدام المساعدة بالذكاء الاصطناعي: متى تم عرض الاقتراحات وما إذا تم قبولها
  • بيانات التركيز والتوقيت: الوقت المستغرق على كل عنصر، عمق التمرير
  • سجل التنقل: المسار الكامل عبر العناصر

ما يتم تتبعه

أحداث التفاعل

يتم التقاط كل تفاعل للمستخدم مع واجهة التعليق التوضيحي:

نوع الحدثالوصفمثال على الهدف
clickنقرات الفأرة على العناصرlabel:positive, nav:next
focus_inالعنصر يتلقى التركيزtextbox:explanation
focus_outالعنصر يفقد التركيزlabel:negative
keypressاختصارات لوحة المفاتيحkey:1, nav:ArrowRight
navigationالتنقل بين العناصرnext, prev, instance_load
saveأحداث حفظ التعليق التوضيحيinstance:123
annotation_changeتعديلات التسمياتschema:sentiment

استخدام المساعدة بالذكاء الاصطناعي

تتبع دورة الحياة الكاملة للتعليق التوضيحي بمساعدة الذكاء الاصطناعي:

json
{
  "request_timestamp": 1706500010.0,
  "response_timestamp": 1706500012.5,
  "schema_name": "sentiment",
  "suggestions_shown": ["positive", "neutral"],
  "suggestion_accepted": "positive",
  "time_to_decision_ms": 3500
}

تغييرات التعليقات التوضيحية

سجل تغييرات مفصل لجميع التعليقات التوضيحية:

json
{
  "timestamp": 1706500002.5,
  "schema_name": "sentiment",
  "label_name": "positive",
  "action": "select",
  "old_value": null,
  "new_value": true,
  "source": "user"
}

أنواع المصادر:

  • user - تفاعل مباشر من المستخدم
  • ai_accept - قبل المستخدم اقتراح الذكاء الاصطناعي
  • keyboard - تم استخدام اختصار لوحة المفاتيح
  • prefill - ملء مسبق من الإعدادات

تنسيق البيانات

يتضمن كل عنصر تعليق توضيحي كائن behavioral_data:

json
{
  "id": "instance_123",
  "annotations": {
    "sentiment": {"positive": true}
  },
  "behavioral_data": {
    "instance_id": "instance_123",
    "session_start": 1706500000.0,
    "session_end": 1706500045.0,
    "total_time_ms": 45000,
    "interactions": [...],
    "ai_usage": [...],
    "annotation_changes": [...],
    "navigation_history": [...],
    "focus_time_by_element": {
      "label:positive": 2500,
      "textbox:explanation": 8000
    },
    "scroll_depth_max": 75.5
  }
}

الإعدادات

تتبع السلوك مفعّل افتراضياً. لا حاجة لإعدادات إضافية.

وضع التصحيح في الواجهة الأمامية

لتفعيل تسجيل التصحيح لمتتبع التفاعل:

javascript
// In browser console
window.interactionTracker.setDebugMode(true);

أمثلة التحليل

تحميل بيانات السلوك

python
import json
from pathlib import Path
 
def load_behavioral_data(annotation_dir: str) -> dict:
    data = {}
    for user_dir in Path(annotation_dir).iterdir():
        if not user_dir.is_dir():
            continue
        state_file = user_dir / 'user_state.json'
        if state_file.exists():
            with open(state_file) as f:
                user_state = json.load(f)
            user_id = user_state.get('user_id')
            behavioral = user_state.get('instance_id_to_behavioral_data', {})
            data[user_id] = behavioral
    return data

تحليل وقت التعليق التوضيحي

python
def analyze_annotation_time(behavioral_data: dict) -> dict:
    stats = {}
    for user_id, instances in behavioral_data.items():
        times = []
        for instance_id, bd in instances.items():
            if 'total_time_ms' in bd:
                times.append(bd['total_time_ms'] / 1000)
        if times:
            stats[user_id] = {
                'mean_time': sum(times) / len(times),
                'min_time': min(times),
                'max_time': max(times),
                'total_instances': len(times)
            }
    return stats

اكتشاف السلوك المشبوه

python
def detect_suspicious_annotators(behavioral_data: dict,
                                  min_time_threshold: float = 2.0) -> list:
    suspicious = []
    for user_id, instances in behavioral_data.items():
        fast_count = 0
        for instance_id, bd in instances.items():
            time_sec = bd.get('total_time_ms', 0) / 1000
            if time_sec < min_time_threshold:
                fast_count += 1
 
        total = len(instances)
        if total > 0:
            fast_rate = fast_count / total
            if fast_rate > 0.5:
                suspicious.append({
                    'user_id': user_id,
                    'fast_rate': fast_rate,
                    'total_instances': total
                })
    return suspicious

التكامل مع لوحة تحكم المشرف

تتضمن لوحة تحكم المشرف علامة تبويب تحليلات السلوك مع:

  1. خريطة حرارية لتفاعل المستخدم: تمثيل مرئي لأنماط التفاعل
  2. مقاييس المساعدة بالذكاء الاصطناعي: معدلات القبول/الرفض، أوقات القرار
  3. توزيع التوقيت: مدرج تكراري لأوقات التعليق التوضيحي
  4. تنبيهات النشاط المشبوه: المعلّقون المُعلَّمون الذين يحتاجون إلى مراجعة

نقاط نهاية API

تتبع التفاعلات

http
POST /api/track_interactions
Content-Type: application/json
 
{
  "instance_id": "instance_123",
  "events": [...],
  "focus_time": {"element": ms},
  "scroll_depth": 75.5
}

الحصول على بيانات السلوك

http
GET /api/behavioral_data/<instance_id>

يُرجع بيانات السلوك الكاملة لعنصر معين.

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

للباحثين

  1. تحديد خط الأساس: اجمع بيانات السلوك من معلّقين موثوقين لتحديد خطوط أساس
  2. مقاييس الجودة: استخدم بيانات السلوك جنباً إلى جنب مع اتفاق التعليقات التوضيحية لتقييم الجودة
  3. تقييم التدريب: قارن أنماط السلوك قبل وبعد التدريب
  4. تحليل تأثير الذكاء الاصطناعي: قِس كيف تؤثر المساعدة بالذكاء الاصطناعي على جودة وسرعة التعليق التوضيحي

لمشاريع التعليق التوضيحي

  1. المراقبة في الوقت الفعلي: استخدم لوحة تحكم المشرف لاكتشاف المشكلات مبكراً
  2. تحديد العتبات: حدد نطاقات مقبولة لمقاييس التوقيت والتفاعل
  3. تقديم الملاحظات: استخدم رؤى السلوك لتقديم ملاحظات مستهدفة للمعلّقين

استكشاف الأخطاء وإصلاحها

لا يتم جمع بيانات السلوك

  1. تحقق من تحميل interaction_tracker.js (تحقق من علامة تبويب الشبكة في المتصفح)
  2. تحقق من وحدة تحكم المتصفح بحثاً عن أخطاء JavaScript
  3. تأكد من إمكانية الوصول إلى نقاط نهاية API (/api/track_interactions)

البيانات لا تُحفظ

  1. تحقق من حفظ حالة المستخدم (ابحث عن user_state.json)
  2. تأكد من أن مجلد مخرجات التعليقات التوضيحية قابل للكتابة

قراءة إضافية

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