چیتشیت
NER، برچسبگذاری نقش دستوری (POS) و هممرجعی
NER, POS Tagging and Coreference
برچسبهای BIO، برچسبزنهای CRF و HMM، ویتربی، تجزیههای وابستگی، خوشههای هممرجعی و پیوند موجودیت به یک پایگاه دانش.
فهرست مطالب
پایپلاین استخراج
معماریایدههای اصلی
مفهومها- 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).
حلکنندهی مبتنی بر قاعدهی ضمایر
گامبهگام- extract_mentionsاسپنهای با حروف بزرگ، ضمایر بر اساس جستجو در جدول، عبارات معین «the X».
- resolveبرای هر ضمیر، اشارههای نامدار و اسمی پیشین را بردارید.
- agreement_score1+ برای تطابق شمار. تضاد جنسیت 2 هزینه دارد.
- recency_scoreکاندیداهای نزدیکتر امتیاز بالاتری میگیرند.
- resolveکاندیدای با بالاترین مجموع را پیوند دهید.
- clustersروش union-find روی پیوندها یک خوشه به ازای هر موجودیت میدهد.
وظایف در کد
کار و کد| وظیفه | کد |
|---|---|
| اسپنها به برچسبهای BIO | spans_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, PTB | 97% | بالاتر از 98٪ احتمالا بیشبرازش است |
Tagsets | 36 | مجموعه PTB دارای 36 برچسب و UD دارای 17 برچسب است |
Coref SOTA, CoNLL-2012 | ~83 F1 | میانگین MUC، B³، CEAF |
Candidates per mention | 10-30 | از نمایهی نامهای مستعار |
Classical NER latency | 50ms | زیر این مقدار، 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 خروجی نمونه بررسی کنید.