همهٔ مقاله‌ها

· Casimiro Ferreira· 3 دقیقه مطالعه

یک مجموعه‌داده‌ی چندزبانه‌ی انواع جمله: پرسش‌ها، فرمان‌ها، گزاره‌ها

  • Datasets
  • Multilingual
  • NLP
  • Intent
  • Classification
  • FOSS

منطق مسیریابیِ یک دستیار صوتی پیش از آنکه بکوشد به چیزی پاسخ دهد، به دانستنِ اینکه چه نوع جمله‌ای دریافت کرده وابسته است. یک پرسش نیازمند پاسخ است. یک فرمان نیازمند اجرا است. یک گزاره ممکن است نیازمند تأیید یا ذخیره‌سازی باشد. درست انجام دادنِ آن دسته‌بندی، در هر زبانی که کاربر سخن می‌گوید، پیش‌شرطِ هر چیز دیگری است.

sentence-types-multilingual پیکره‌ی آموزشیِ پشتِ آن لایه است — ۶۹٬۳۰۰ جمله‌ی برچسب‌خورده، ۹٬۹۰۰ برای هر یک از هفت زبان: انگلیسی، اسپانیایی، فرانسوی، آلمانی، ایتالیایی، پرتغالی و هلندی.

معنای برچسب‌ها در عمل

مجموعه‌داده از یک مجموعهٔ تخت از شش برچسب بهره می‌برد — یک ستونِ label به ازای هر سطر، بدون تفکیکِ نوع/زیرنوع — که مستقیماً به شیوه‌ی مسیریابیِ گفته‌ها توسط little_questions (کتابخانه‌ی استنتاج که این داده را مصرف می‌کند) نگاشت می‌شوند:

  • wh_question — پرسش‌های ساخته‌شده حول یک واژهٔ پرسشی (چه، کجا، چه‌کسی و مانند این‌ها).
  • polar_question — پرسش‌های بله/خیر. تاکسونومیِ EAT درونِ little_questions ۵۳ برچسبِ ریزدانه‌ی نوع‌پاسخ را افزون بر برچسب‌های پرسشی می‌افزاید (شخص، مکان، کمیت، تعریف و مانند این‌ها)، اما دسته‌بندیِ نوع جمله نخستین دروازه است.
  • command — شکل‌های امری. فرمان‌ها انتظار پاسخ ندارند؛ آن‌ها انتظار عمل دارند.
  • request — درخواست‌های مؤدبانه یا غیرمستقیم برای عمل، متمایز از یک امرِ برهنه.
  • statement — خبری. گزاره‌ها در یک زمینه‌ی گفت‌وگو اغلب قطبیتی را حمل می‌کنند که در ادامه اهمیت دارد: یک دسته‌بندِ بله/خیر/شاید روی گزاره‌ها اجرا می‌شود تا پاسخ‌ها به پرسش‌های پیشین را تفسیر کند.
  • exclamation — گفته‌های دارای نشانِ عاطفی که به مدیریتی متفاوت از خبری‌های خنثی نیاز دارند.
{
  "language": "en",
  "label": "wh_question",
  "text": "What time is it?"
}

چرا پوشش میان‌زبانی بی‌اهمیت نیست

همان مقصود ارتباطی در دستورهای زبانیِ گوناگون به‌گونه‌ای متفاوت نمود می‌یابد:

  • انگلیسی پرسش‌ها را با وارونگیِ ترتیب واژه نشانه‌گذاری می‌کند؛ پرتغالی و اسپانیایی اغلب آن‌ها را تنها با نشانه‌گذاری و آهنگ نشانه‌گذاری می‌کنند و ترتیب واژه را دست‌نخورده باقی می‌گذارند.
  • آلمانی افعال را به‌گونه‌هایی به موضعِ پایان‌جمله جدا می‌کند که جایگاهِ سیگنالِ دسته‌بندی‌کننده را جابه‌جا می‌کند.
  • زبان‌های رومی برای فرمان‌ها از تصریفِ امریِ اختصاصی بهره می‌برند که انگلیسی آن را با فعلِ برهنه بیان می‌کند.

مدلی که تنها بر انگلیسی آموزش دیده باشد این‌ها را در همه‌جای دیگر اشتباه می‌کند. داده‌ی برچسب‌خورده‌ی موازی در هفت زبان، سیگنالِ میان‌زبانی‌ای را که دسته‌بندهای به‌ازای هر زبان نیاز دارند فراهم می‌کند — و همان خط لوله‌ی تولید با افزوده شدنِ زبان‌ها به زبان‌های بیشتری گسترش می‌یابد.

پشته‌ی پایین‌دستی

مدل‌های آموزش‌دیده بر این داده درونِ little_questions عرضه می‌شوند — یک کتابخانه‌ی برون‌خطِ بدونِ وابستگی (numpy + onnxruntime) با دسته‌بندهای ONNX به‌ازای هر زبان برای نوع جمله و یک مدل قطبیتِ بله/خیرِ ۴۳ زبانه. مدل‌ها برای انگلیسی درونِ wheel بسته‌بندی می‌شوند و برای زبان‌های دیگر با تنبلی بارگیری می‌شوند. دسته‌بندهای نوع جمله با نام TigreGotico/sentence-types روی HuggingFace منتشر شده‌اند؛ دسته‌بندهای نوع‌پاسخِ EAT به‌صورت داخلی آموزش دیده‌اند و به‌طور عمومی منتشر نشده‌اند.

from little_questions import Sentence

s = Sentence("What time is it?")
print(s.sentence_type)     # "question"
print(s.classification)    # e.g. "NUM:date"

little_questions لایه‌ی مسیریابیِ زبان طبیعی برای OVOS و LILACS است: دسته‌بندیِ اینکه یک گفته پرسش، فرمان یا گزاره است، نخستین تصمیمِ توزیعی است که یک خط لوله‌ی صوتی می‌گیرد.

sentence-types-multilingual روی HuggingFace · little_questions روی GitHub