تتبع السلوك
التقاط بيانات التفاعل التفصيلية لتحليل الجودة والبحث.
تتبع السلوك
يلتقط نظام تتبع السلوك في 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التكامل مع لوحة تحكم المشرف
تتضمن لوحة تحكم المشرف علامة تبويب تحليلات السلوك مع:
- خريطة حرارية لتفاعل المستخدم: تمثيل مرئي لأنماط التفاعل
- مقاييس المساعدة بالذكاء الاصطناعي: معدلات القبول/الرفض، أوقات القرار
- توزيع التوقيت: مدرج تكراري لأوقات التعليق التوضيحي
- تنبيهات النشاط المشبوه: المعلّقون المُعلَّمون الذين يحتاجون إلى مراجعة
نقاط نهاية 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>يُرجع بيانات السلوك الكاملة لعنصر معين.
أفضل الممارسات
للباحثين
- تحديد خط الأساس: اجمع بيانات السلوك من معلّقين موثوقين لتحديد خطوط أساس
- مقاييس الجودة: استخدم بيانات السلوك جنباً إلى جنب مع اتفاق التعليقات التوضيحية لتقييم الجودة
- تقييم التدريب: قارن أنماط السلوك قبل وبعد التدريب
- تحليل تأثير الذكاء الاصطناعي: قِس كيف تؤثر المساعدة بالذكاء الاصطناعي على جودة وسرعة التعليق التوضيحي
لمشاريع التعليق التوضيحي
- المراقبة في الوقت الفعلي: استخدم لوحة تحكم المشرف لاكتشاف المشكلات مبكراً
- تحديد العتبات: حدد نطاقات مقبولة لمقاييس التوقيت والتفاعل
- تقديم الملاحظات: استخدم رؤى السلوك لتقديم ملاحظات مستهدفة للمعلّقين
استكشاف الأخطاء وإصلاحها
لا يتم جمع بيانات السلوك
- تحقق من تحميل
interaction_tracker.js(تحقق من علامة تبويب الشبكة في المتصفح) - تحقق من وحدة تحكم المتصفح بحثاً عن أخطاء JavaScript
- تأكد من إمكانية الوصول إلى نقاط نهاية API (
/api/track_interactions)
البيانات لا تُحفظ
- تحقق من حفظ حالة المستخدم (ابحث عن
user_state.json) - تأكد من أن مجلد مخرجات التعليقات التوضيحية قابل للكتابة
قراءة إضافية
- لوحة تحكم المشرف - المراقبة في الوقت الفعلي
- سجل التعليقات التوضيحية - تتبع التغييرات المفصل
- مراقبة الجودة - فحوصات الجودة الآلية
للاطلاع على تفاصيل التنفيذ، راجع الوثائق المصدرية.