چیت‌شیت

NER، برچسب‌گذاری نقش دستوری (POS) و هم‌مرجعی

NER, POS Tagging and Coreference

برچسب‌های BIO، برچسب‌زن‌های CRF و HMM، ویتربی، تجزیه‌های وابستگی، خوشه‌های هم‌مرجعی و پیوند موجودیت به یک پایگاه دانش.

  • ۱۱ بخش
  • ۴ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. پایپ‌لاین استخراج
  2. ایده‌های اصلی
  3. حل‌کننده‌ی مبتنی بر قاعده‌ی ضمایر
  4. وظایف در کد
  5. NER با CRF و ترنسفورمر
  6. spaCy: برچسب‌ها، تجزیه، موجودیت‌ها، خوشه‌ها
  7. ارقام مورد انتظار
  8. عیب‌یابی
  9. چه زمانی استفاده کنیم؟
  10. مخفف‌ها
  11. نکات

پایپ‌لاین استخراج

معماری
توکن‌هااشاره‌هاهر اشارهکاندیداهابرترین گزینه (top-1)سندNERبرچسب‌های توکن BIO به اسپن‌هاهم‌مرجعیخوشه‌های اشارهتولید کاندیداهانمایه‌ی نام‌های مستعار، 10 تا 30 به ازای هر اشارهابهام‌زداییپیشین + زمینه یا امبدینگ‌هاشناسه پایگاه دانش برای هر موجودیتیا NIL

ایده‌های اصلی

مفهوم‌ها
BIO
برچسب B-X شروع، I-X ادامه و O بیرون است. New B-GPE، York I-GPE.
BILOU
برچسب‌های L-X (آخر) و U-X (تکی) را برای مرزهای تمیزتر اضافه می‌کند.
HMM
$P = \prod_i P(t_i \mid t_{i-1}) \, P(w_i \mid t_i)$. احتمال انتقال ضربدر انتشار.
CRF
تفکیک‌پذیر است. ویژگی‌های شکل کلمه، بزرگی/کوچکی حروف و همسایه‌ها را ترکیب می‌کند. توالی برچسب‌های معتبر را اعمال می‌نماید.
ویتربی
برنامه‌ریزی پویا برای یافتن بهترین توالی برچسب روی مشبکه برچسب‌ها.
تجزیه وابستگی
هر کلمه یک هد و یک برچسب رابطه دارد.
انواع اشاره
موجودیت نام‌دار، اسمی، ضمیری، بدلی.
پیشین + زمینه
P(entity | mention) × context-similarity(entity, text).

حل‌کننده‌ی مبتنی بر قاعده‌ی ضمایر

گام‌به‌گام
  1. extract_mentionsاسپن‌های با حروف بزرگ، ضمایر بر اساس جستجو در جدول، عبارات معین «the X».
  2. resolveبرای هر ضمیر، اشاره‌های نام‌دار و اسمی پیشین را بردارید.
  3. agreement_score1+ برای تطابق شمار. تضاد جنسیت 2 هزینه دارد.
  4. recency_scoreکاندیداهای نزدیک‌تر امتیاز بالاتری می‌گیرند.
  5. resolveکاندیدای با بالاترین مجموع را پیوند دهید.
  6. clustersروش union-find روی پیوندها یک خوشه به ازای هر موجودیت می‌دهد.

وظایف در کد

کار و کد
وظیفهکد
اسپن‌ها به برچسب‌های BIOspans_to_bio(tokens, spans)
برچسب‌های BIO به اسپن‌هاbio_to_spans(tokens, labels)
شکل بزرگی/کوچکی حروفword_shape(word)
خط مبنای واژه‌نامه‌ی اسامی خاصrule_based_ner(tokens)
خط مبنای پرتکرارترین برچسبpredict_mft(tokens, word_best, default_tag)
آموزش HMM دوتایی (bigram)train_hmm(examples, alpha=0.01)
رمزگشایی برچسب‌هاviterbi(tokens, transitions, emissions, tags, vocab, alpha=0.01)
پیوند یک اشارهdisambiguate(mention, context, use_prior=True)

NER با CRF و ترنسفورمر

کد
python
crf = sklearn_crfsuite.CRF(algorithm="lbfgs",
    c1=0.1, c2=0.1,                            # منظم‌سازی L1 و L2
    max_iterations=100,
    all_possible_transitions=True)             # یاد می‌گیرد که I-ORG پس از O غیرمحتمل است
X_train = [to_features(s) for s in sentences_tokenized]
crf.fit(X_train, bio_labels_train)             # حدود 84 F1 روی CoNLL-2003
ner = pipeline("ner", model="dslim/bert-base-NER",
               aggregation_strategy="simple")  # ادغام B-X و I-X در اسپن‌ها
print(ner("Apple sued Google over its iPhone in the US."))

spaCy: برچسب‌ها، تجزیه، موجودیت‌ها، خوشه‌ها

کد
python
nlp = spacy.load("en_core_web_sm")
doc = nlp("The cats were running at 3pm.")
for token in doc:
    print(token.tag_, token.pos_, token.dep_, token.head.text)  # Penn، UD، رابطه
for ent in doc.ents:
    print(f"{ent.text:20s} {ent.label_}")                       # کلمه iPhone در مدل sm به صورت ORG تشخیص داده می‌شود
nlp = spacy.load("en_coreference_web_trf")                      # مدل آزمایشی
doc = nlp("<text>")                                             # اجرای مجدد با مدل هم‌مرجعی
for cluster in doc._.coref_clusters:
    print(cluster, "->", [m.text for m in cluster])

ارقام مورد انتظار

پیش‌فرض‌ها
تنظیمپیش‌فرضنکته
Most-frequent-tag on Brown~85%حداقل کف عملکرد برای هر برچسب‌زن
Bigram HMM on Brown~93%بهبود ناشی از احتمالات انتقال است
CRF with features~97%مدل BiLSTM-CRF یا ترنسفورمر بیش از ~98٪
Annotator agreement, PTB97%بالاتر از 98٪ احتمالا بیش‌برازش است
Tagsets36مجموعه PTB دارای 36 برچسب و UD دارای 17 برچسب است
Coref SOTA, CoNLL-2012~83 F1میانگین MUC، B³، CEAF
Candidates per mention10-30از نمایه‌ی نام‌های مستعار
Classical NER latency50msزیر این مقدار، NER سنتی برنده می‌شود

عیب‌یابی

عیب‌یابی
  • شکست مدل CoNLL روی قراردادها

    علت
    تغییر دامنه داده‌ها
    راه‌حل
    فاین‌تیون روی دامنه اختصاصی خودتان
  • همپوشانی ORG و FACILITY

    علت
    طرح BIO نمی‌تواند اسپن‌ها را تودرتو کند
    راه‌حل
    استفاده از NER مبتنی بر اسپن یا چندمرحله‌ای
  • تقسیم موجودیت طولانی به دو بخش

    علت
    برچسب‌ها در سطح توکن
    راه‌حل
    aggregation_strategy یا پس‌پردازش
  • معیار F1 بسیار بالا به نظر می‌رسد

    علت
    معیار F1 در سطح توکن
    راه‌حل
    معیار F1 در سطح موجودیت با seqeval
  • هر اشاره یک خوشه‌ی مستقل شده است

    علت
    انفجار خوشه‌های تک‌عضوی (singleton)
    راه‌حل
    بررسی همزمان MUC، B³ و CEAF
  • افت هم‌مرجعی در اسناد طولانی

    علت
    حدود 15 نمره افت F1 در بیش از 2000 توکن
    راه‌حل
    پنجره‌ی لغزان به همراه merge
  • انتخاب موجودیت سرشناس اشتباه

    علت
    سوگیری بر اساس محبوبیت
    راه‌حل
    فاین‌تیون روی دامنه، بررسی NIL
  • افت بازخوانی در EL

    علت
    مدل NER اسپن را کوتاه‌تر برش داده است
    راه‌حل
    اصلاح مرزهای اشاره در مراحل ابتدایی پایپ‌لاین

چه زمانی استفاده کنیم؟

پرسش و پاسخ
NER سنتی یا یک LLM؟
روش سنتی برای زیر 50 میلی‌ثانیه، F1 بالای 98٪ یا محیط‌های محلی (on-prem). در غیر این صورت با خط مبنای zero-shot مدل‌های زبانی شروع کنید.
PTB یا UD؟
مجموعه PTB برای پایپ‌لاین‌های قدیمی صرفاً انگلیسی. UD برای پروژه‌های چندزبانه.
کدام پارسر؟
برای اکثر محیط‌های عملیاتی spaCy، برای چندزبانه stanza و برای بالاترین دقت در UD از trankit.
کدام روش EL؟
روش‌های BLINK یا REL برای ویکی‌پدیای انگلیسی. پیشین با تطابق دقیق برای کمترین تاخیر.
هم‌مرجعی با LLM؟
فقط موارد ساده. این مدل‌ها بیش‌ازحد ادغام می‌کنند و اشاره‌ها را در متون طولانی جا می‌اندازند.

مخفف‌ها

اصطلاح‌ها
NER
بازشناسی موجودیت‌های نام‌دار. برچسب‌گذاری اسپن‌های توکن با نوع مربوطه.
CRF
میدان تصادفی شرطی. انتقال میان برچسب‌ها را مدل‌سازی می‌کند.
PTB / UD
مجموعه‌برچسب‌های Penn Treebank و Universal Dependencies.
EL
پیوند موجودیت. نگاشت یک اشاره به یک مدخل پایگاه دانش.
NIL
هیچ مدخلی در پایگاه دانش با اشاره تطابق ندارد.
CoNLL F1
میانگین F1 معیارهای MUC، B³ و CEAF-φ4.
پیش‌مرجعی
ضمیر پیش از مرجع خود می‌آید.

نکات

نکته‌ها
  • بازخوانی اشاره‌ها و دقت ابهام‌زدایی را گزارش کنید. دقت 99٪ روی بازخوانی 80٪ یعنی پایپ‌لاین شما 80٪ کارایی دارد.
  • خوشه‌های هم‌مرجعی را درون موجودیت‌های NER ادغام کنید. برای هر موجودیت یک شناسه پایگاه دانش بدهید، نه به ازای هر اشاره.
  • پیوند موجودیت در LLM را به شناسه‌های معتبر پایگاه دانش محدود کنید.
  • ابهام اسم-فعل (مثل saw، book، can) را روی 20 خروجی نمونه بررسی کنید.