IRI2070's picture
Update README.md
9d90d11 verified
metadata
language:
  - fa
tags:
  - sentence-transformers
  - cross-encoder
  - generated_from_trainer
  - dataset_size:74175
  - loss:CrossEntropyLoss
base_model: PartAI/TookaBERT-Large
datasets:
  - IRI2070/legal-entity-name-validation
pipeline_tag: text-classification
library_name: sentence-transformers
metrics:
  - f1_macro
  - f1_micro
  - f1_weighted
model-index:
  - name: CrossEncoder based on PartAI/TookaBERT-Large
    results:
      - task:
          type: cross-encoder-classification
          name: Cross Encoder Classification
        dataset:
          name: legal entity name validation dev
          type: legal-entity-name-validation-dev
        metrics:
          - type: f1_macro
            value: 0.7852258332086219
            name: F1 Macro
          - type: f1_micro
            value: 0.7844401461422738
            name: F1 Micro
          - type: f1_weighted
            value: 0.7845793554746281
            name: F1 Weighted
      - task:
          type: cross-encoder-classification
          name: Cross Encoder Classification
        dataset:
          name: legal entity name validation test
          type: legal-entity-name-validation-test
        metrics:
          - type: f1_macro
            value: 0.7896516023007826
            name: F1 Macro
          - type: f1_micro
            value: 0.7892745161639096
            name: F1 Micro
          - type: f1_weighted
            value: 0.7895610677834681
            name: F1 Weighted
license: apache-2.0

🧩 مدل CrossEncoder مبتنی بر مدل پایه PartAI/TookaBERT-Large

این مدل یک Cross Encoder است که از پایه‌ی PartAI/TookaBERT-Large گرفته شده و بر روی دیتاست legal-names-cross-encoder-dataset با استفاده از کتابخانه‌ی Sentence Transformers آموزش داده شده است. مدل برای طبقه‌بندی زوج‌های متنی طراحی شده و امتیاز شباهت یا ارتباط میان دو متن را محاسبه می‌کند. CrossEncoder ها مدلی از خانواده‌ی Sentence Transformers هستند که برای مقایسه و طبقه‌بندی زوج‌های متنی به کار می‌روند. در این روش، برخلاف مدل‌های دو‌مسیره (Bi-Encoder) که هر متن را جداگانه به بردار تبدیل می‌کنند، هر دو متن به صورت همزمان وارد یک شبکه‌ی زبانی می‌شوند و خروجی مدل مستقیماً یک امتیاز یا برچسب برای آن زوج تولید می‌کند. این کار باعث می‌شود مدل بتواند وابستگی‌ها و ظرافت‌های معنایی میان دو متن را دقیق‌تر درک کند و برای وظایفی مثل تشخیص شباهت، اعتبارسنجی نام‌ها، یا طبقه‌بندی روابط متنی بسیار کارآمد باشد. به بیان ساده، CrossEncoder مثل یک داور است که هر بار دو متن را کنار هم می‌گذارد و با دقت بالا تصمیم می‌گیرد این دو چقدر به هم مرتبط یا متفاوت هستند.


📌 جزئیات مدل

  • نوع مدل: Cross Encoder
  • مدل پایه: PartAI/TookaBERT-Large
  • حداکثر طول توالی: 512 توکن
  • تعداد برچسب‌ها: 13 کلاس
  • زبان: فارسی
  • دیتاست آموزشی: legal-names-cross-encoder-dataset

🚀 نحوه نصب و استفاده

pip install -U sentence-transformers
from sentence_transformers import CrossEncoder

model = CrossEncoder("IRI2070/legal-entity-name-validation-rules-classifier")

pairs = [
    ('خدماتی بهار گستر گله', 'خدماتی بهار گستر کشاورزی'),
    ('پوینده دانش نوید', 'پوینده دانش نویدان'),
    ('بازرگانی ماه نسیم پایدار گیل منطقه آزاد انزلی', 'نسیم بازرگانی خزر'),
    ('صنایع پیچ لوتوس', 'شرکت پیچ لوتوس'),
]

scores = model.predict(pairs)
label_mapping = ['abbreviation_shortening', 'activity_change', 'adjective_removal', 'domain_similarity', 'generic_word', 'minor_spelling_variations', 'morphological_variation', 'no_rule', 'prefix_suffix', 'singular_plural', 'synonym', 'word_order', 'word_removal']
lebels = [label_mapping[score_max] for score_max in scores.argmax(axis=1)]
print(lebels)
#['activity_change', 'singular_plural', 'no_rule', 'synonym']

📊 ارزیابی مدل

مدل بر روی مجموعه‌های dev و test ارزیابی شده است.

معیار dev test
f1_macro 0.785 0.790
f1_micro 0.784 0.789
f1_weighted 0.785 0.790

امتیازهای F1 معیارهایی هستند برای سنجش کیفیت یک مدل در طبقه‌بندی داده‌ها، به‌ویژه زمانی که داده‌ها چندکلاسه یا نامتوازن باشند.

  • در F1-macro ابتدا برای هر کلاس جداگانه امتیاز F1 محاسبه می‌شود و سپس میانگین ساده‌ی همه‌ی کلاس‌ها گرفته می‌شود؛ بنابراین همه‌ی کلاس‌ها وزن برابر دارند، حتی اگر تعداد نمونه‌هایشان کم باشد.
  • در F1-micro همه‌ی پیش‌بینی‌ها در سطح کلی جمع می‌شوند و سپس بر اساس مجموع درست‌ها و غلط‌ها امتیاز F1 محاسبه می‌شود؛ این معیار بیشتر تحت تأثیر کلاس‌های پرنمونه است.
  • در F1-weighted مشابه F1-macro است، اما میانگین با توجه به تعداد نمونه‌های هر کلاس وزن‌دهی می‌شود؛ یعنی کلاس‌های بزرگ‌تر سهم بیشتری در نتیجه دارند.
    به زبان ساده، macro عدالت را میان همه‌ی کلاس‌ها رعایت می‌کند، micro بیشتر به عملکرد کلی روی داده‌های پرشمار توجه دارد، و weighted تعادلی میان این دو برقرار می‌کند تا هم کلاس‌های بزرگ و هم کوچک در نظر گرفته شوند.

📂 دیتاست آموزشی

  • حجم: 87,673 نمونه آموزشی
  • ویژگی‌ها:
    • ستون‌ها: candidate، registered، label
    • میانگین طول رشته‌ها: حدود 22 کاراکتر
    • توزیع برچسب‌ها: متوازن میان 13 کلاس

🙌 تشکر

این پروژه بخشی از فعالیت‌های آموزشی و پژوهشی در آکادمی همراه اول است و با هدف ارتقای دانش در حوزه‌ی NLP و یادگیری عمیق منتشر شده است.