Skip to content

साइकोमेट्रिक्स इंजन

एनोटेशन के लिए आइटम रिस्पॉन्स थ्योरी। हर लेबल को सादे बहुमत के बजाय एक पोस्टीरियर प्रायिकता और एक विश्वास अंतराल मिलता है, और मॉडल को फ़िट होने के लिए न गोल्ड लेबल चाहिए और न कोई LLM।

v2.7.0 में नया

Potato आपके एनोटेशन अध्ययन को वही मान सकता है जो वह असल में है: एक मापन उपकरण। साइकोमेट्रिक्स परत एनोटेशन आते-आते लाइव एक आइटम रिस्पॉन्स थ्योरी (IRT) मॉडल फ़िट करती है, और साथ-साथ अनुमान लगाती है हर आइटम के सही लेबल का, प्रायिकता के रूप में; हर एनोटेटर की क्षमता का, मानक त्रुटि सहित; हर आइटम की कठिनाई का; और प्रति-आइटम एक विभेदन निदान का, जो संभावित कोडबुक गड़बड़ियों को चिह्नित करता है।

इसके लिए न गोल्ड लेबल चाहिए, न कोई LLM शामिल होता है। मॉडल (GLAD का एक बहुवर्गीय सामान्यीकरण, Whitehill et al. 2009) सब कुछ सहमति के पैटर्न से ही खड़ा कर लेता है, ठीक वैसे ही जैसे कोई मानकीकृत परीक्षा बिना किसी के बताए सीख जाती है कि कौन-से सवाल कठिन हैं। फ़िट निर्धारक होते हैं और एनोटेशन-अध्ययन के पैमाने पर मिलीसेकंड लेते हैं।

एनोटेटर की क्षमता का लाइव अनुमान, विश्वास अंतरालों के साथ, ताकि हर लेबल को सादे वोट के बजाय एक पोस्टीरियर मिले।

कॉन्फ़िगरेशन

yaml
# Adaptive routing is opt-in via the standard assignment strategy key.
# Omit this line to keep your existing strategy and use psychometrics
# as a pure analytics layer.
assignment_strategy: psychometric
 
# Give items a redundancy target so early-stopped items translate into
# concrete saved judgments on the dashboard.
num_annotators_per_item: 4
 
psychometrics:
  enabled: true
  schema: sarcasm            # scheme to model; default: first radio/likert scheme
  refit_interval: 5          # refit after this many new labels (fits are ~ms)
  min_observations: 20       # cold-start gate before adaptive routing engages
  min_annotators_per_item: 2 # never early-stop an item below this many annotators
  confidence_threshold: 0.95 # posterior at which an item counts as resolved
  cost_per_judgment: 0.08    # optional: expresses savings in currency
  discrimination_flag_threshold: -0.2  # codebook-bug flag sensitivity

समर्थित योजनाएँ एकल-विकल्प श्रेणीगत हैं: radio और likert (likert बिंदुओं को नाममात्र श्रेणियों की तरह लिया जाता है)। बहु-चयन योजनाओं का मॉडल नहीं बनाया जाता।

एरर बार वाले लेबल

sarcastic (2 of 3 votes) के बजाय निर्यात में लिखा आता है sarcastic, p = 0.94 [0.88 – 0.97]। यह प्रायिकता मॉडल का पोस्टीरियर है, जो केवल कितनों ने वोट दिया इसके बजाय यह तौलता है कि किसने वोट दिया, और अंतराल क्षमता के अनुमानों पर ±1 मानक त्रुटि की संवेदनशीलता पट्टी है।

आगे की प्रक्रिया में आप सॉफ़्ट लेबल पर प्रशिक्षण कर सकते हैं, मूल्यांकन सेट को उच्च-विश्वास वाले आइटमों तक सीमित कर सकते हैं, या कम प्रायिकता वाले आइटमों को शोर मानने के बजाय सचमुच अस्पष्ट मान सकते हैं। एनोटेटरों से सीधे वितरण जुटाने के पूरक तरीक़े के लिए सॉफ़्ट लेबल देखें।

एनोटेटर की क्षमता, ईमानदारी से पेश की गई

क्षमता θ का अनुमान सहमति के पैटर्न से लगाया जाता है। 1.0 का मान नए एनोटेटर के लिए प्रायर है, 0 का मतलब है कि उनके लेबल कोई जानकारी नहीं देते, और ऋणात्मक मान बताते हैं कि वे व्यवस्थित रूप से ग़लत हैं। हर अनुमान अपनी मानक त्रुटि के साथ आता है: 12 लेबल वाले एनोटेटर की व्हिस्कर चौड़ी होती है, और डैशबोर्ड यह बात कहता भी है।

चौड़ी व्हिस्कर के आधार पर कर्मचारियों से जुड़े फ़ैसले न लें। मानक त्रुटियाँ अनुमानित हैं (मोड पर फ़िशर सूचना) और बनावट के चलते कुछ हद तक आशावादी हैं।

कोडबुक-गड़बड़ी पकड़ने वाला

आइटम की कठिनाई का अनुमान क्षमता के साथ-साथ लगता है, पर ज़्यादा काम का संकेत विभेदन है: हर आइटम पर एनोटेटर की क्षमता और उत्तर के सही होने के बीच का सहसंबंध।

जब विभेदन ख़ासा ऋणात्मक होता है, यानी भीड़ की आम राय से असहमत होने वाले लोग ही आपके सबसे अच्छे एनोटेटर हैं, तो उस आइटम के लिए आम तौर पर दिशानिर्देश ग़लत या अस्पष्ट होता है, एनोटेटर नहीं। डैशबोर्ड इन्हें “संभावित कोडबुक गड़बड़ियाँ” के नीचे दिखाता है। निर्देश ठीक करें, फिर दोबारा देखें। टीमें इन्हें सुलझाने आम तौर पर मल्टीप्लेयर रूम में जाती हैं।

अनुकूली रूटिंग

assignment_strategy: psychometric के साथ, जब कोई एनोटेटर काम माँगता है तो बचे हुए आइटम इस आधार पर क्रम में लगाए जाते हैं कि उस एनोटेटर के उस आइटम को लेबल करने से एक क़दम में ठीक कितनी सूचना मिलने की उम्मीद है। ज़्यादा अनिश्चितता वाले आइटम पहले ज़्यादा क्षमता वाले एनोटेटरों के पास जाते हैं, और जिन आइटमों का पोस्टीरियर पहले ही confidence_threshold से ऊपर है (और जिन पर कम से कम min_annotators_per_item एनोटेटर हैं) वे बजट खाना बंद कर देते हैं। प्रति आइटम तय N वाले डिज़ाइन की तुलना में बची हुई राय की गिनती डैशबोर्ड पर होती है, और cost_per_judgment सेट करने पर उसकी क़ीमत भी बताई जाती है।

संचालन से जुड़ी दो बातें:

  • कोल्ड स्टार्ट। जब तक min_observations लेबल जमा नहीं होते, असाइनमेंट यादृच्छिक पर लौट आता है, क्योंकि क्षमता को कठिनाई से अलग करने से पहले मॉडल को साझा एनोटेटर चाहिए। इस दौरान डैशबोर्ड एक वार्म-अप मीटर दिखाता है।
  • बैचिंग। असाइनमेंट तब होता है जब किसी उपयोगकर्ता की क़तार भरी जाती है। क़तारें छोटी हों तो क्रम सबसे ताज़ा रहता है; प्रति उपयोगकर्ता बहुत बड़े बैच अनुकूलन को पतला कर देते हैं।

ख़र्च करने से पहले पावर विश्लेषण

हर एनोटेशन परियोजना “प्रति आइटम कितने एनोटेटर?” का अंदाज़ा भर लगाती है। स्टडी डिज़ाइनर इसका जवाब एक सीड किए हुए मोंटे कार्लो सिमुलेशन से देता है:

bash
python -m potato.psychometrics.design --items 500 --accuracy 0.75 \
    --classes 3 --target-ci 0.10 --cost 0.08
text
ann/item   alpha     95% interval   width  majority acc  judgments       cost
       2   0.392 [ 0.330,  0.439]   0.109         0.751       1000      80.00
       3   0.388 [ 0.338,  0.431]   0.093         0.864       1500     120.00  <- recommended

सिफ़ारिश वह सबसे छोटा अतिरेक होता है जिसका Krippendorff's α पर 95% अंतराल --target-ci से सँकरा हो, यानी वह सबसे सस्ता डिज़ाइन जो फिर भी बचाव करने लायक परिशुद्ध सहमति अनुमान देता है। --accuracy इनपुट को एक छोटे पायलट से मापना सबसे अच्छा रहता है। यही विश्लेषण डैशबोर्ड पर और एक एडमिन API (GET /psychometrics/api/design) के रूप में भी उपलब्ध है।

आप इसे ब्राउज़र में इंटरैक्टिव तरीक़े से एनोटेशन पावर कैलकुलेटर से भी चला सकते हैं।

एंडपॉइंट

सभी एंडपॉइंट के लिए एडमिन एक्सेस चाहिए (RBAC VIEW_ADMIN_DASHBOARD; डिबग मोड और साझा एडमिन API की भी चलती है)।

एंडपॉइंटउद्देश्य
GET /psychometrics/dashboardलाइव डैशबोर्ड
GET /psychometrics/api/statsडैशबोर्ड समुच्चय (एक ताज़ा फ़िट करवाता है)
GET /psychometrics/api/exportसंवर्धित निर्यात: पोस्टीरियर, पट्टियाँ, क्षमताएँ
GET /psychometrics/api/designपावर विश्लेषण

इसका MACE से क्या रिश्ता है

Potato MACE भी देता है, जो एनोटेटर की दक्षता और अनुमानित लेबल का हिसाब बाद में चलने वाले विश्लेषण के रूप में लगाता है। दोनों एक ही साहित्य से निकले चचेरे भाई हैं, पर उनके काम अलग हैं।

MACEसाइकोमेट्रिक्स
एनोटेटर मॉडलजानने बनाम अंदाज़ा लगाने वाली दक्षतामानक त्रुटियों सहित सतत क्षमता
आइटम मॉडलकोई नहींकठिनाई + विभेदन (कोडबुक-गड़बड़ी के चिह्न)
कब चलता हैN एनोटेशन के बाद बैच विश्लेषणलाइव, असाइनमेंट लूप के भीतर
असाइनमेंट चलाता हैनहींहाँ, सूचना-लाभ रूटिंग और जल्दी रुकने के ज़रिए
लेबल पर अनिश्चितताएंट्रॉपीपोस्टीरियर प्रायिकता + संवेदनशीलता अंतराल
अध्ययन से पहले की योजनानहींमोंटे कार्लो पावर विश्लेषण

किसी भी श्रेणीगत योजना पर दक्षता का त्वरित हिसाब चाहिए तो MACE इस्तेमाल करें (वह multiselect भी संभालता है)। जब आपको ऐसा कठिनाई-सचेत मापन चाहिए जो अध्ययन के चलते-चलते उस पर असर डाले, तब साइकोमेट्रिक्स इस्तेमाल करें।

समस्या निवारण

  • डैशबोर्ड हमेशा “वार्म-अप” ही दिखाता रहता है। मॉडल को कम से कम दो अलग लेबल और साझा एनोटेटर चाहिए। एक ही एनोटेटर या सर्वसम्मत लेबल होने पर फ़िट बनावट से ही अपभ्रष्ट रहता है। एनोटेटर बढ़ाएँ या min_observations घटाएँ।
  • assignment_strategy: psychometric सेट है पर रूटिंग यादृच्छिक लग रही है। यह कोल्ड-स्टार्ट फ़ॉलबैक है। वार्म-अप मीटर और min_observations देखें।
  • सारी क्षमताएँ 1.0 के आसपास हैं और व्हिस्कर बड़ी हैं। अभी पर्याप्त ओवरलैप नहीं है। जैसे-जैसे एनोटेटरों के साझा आइटम बढ़ते हैं, क्षमताएँ अलग होती जाती हैं।
  • /psychometrics/... पर 404। कॉन्फ़िग में psychometrics.enabled: true ब्लॉक नहीं है।

आगे पढ़ें