طبقه بندی و استخراج داده با پرامپت مثال محور

قسمت ۳ — مثال‌محور برای طبقه‌بندی و استخراج داده

⏱ زمان مطالعه: حدود ۹ دقیقه✏️ تمرین دارد
آموزش · پرامپت‌نویسی

قسمت سوم از سری «پرامپت مثال‌محور»: این قسمت فقط دربارهٔ یک کاربرد مشخص است؛ اینکه چطور با چند نمونه، متن خام را به برچسب و فیلد و خروجی ساختاریافته تبدیل کنی — همان کاری که می‌شود مستقیم در جدول ریخت.

چکیده. طبقه‌بندی و استخراج داده دقیقاً همان جایی است که نشان دادن چند نمونه بیشترین سود را می‌دهد، چون خروجی باید ماشین‌خوان و یکدست باشد. تعریف فهرست بستهٔ برچسب‌ها، طراحی قالب خروجی ساختاریافته، تفاوت طبقه‌بندی با استخراج فیلد، مدیریت فیلد خالی و ورودی نامربوط، یک پرامپت کامل و آمادهٔ کپی برای استخراج ساختاریافته، و روش سنجش دقت روی یک نمونهٔ کوچک. معیارهای انتخاب خود نمونه‌ها موضوع قسمت دوم بود و آموزش لحن در قسمت چهارم می‌آید.
طبقه بندی و استخراج داده با پرامپت مثال محور

۱. چرا این کار با نمونه بهتر از دستور پیش می‌رود

در طبقه‌بندی و استخراج، خروجی مقصد نهایی نیست؛ ورودی چیز دیگری است — یک جدول، یک پایگاه داده، یک کارتابل. یعنی خروجی باید شکل ثابت و قابل تجزیه داشته باشد وگرنه بی‌فایده است، هرچند محتوایش درست باشد.

توضیح دادن این شکل با کلمه سخت است. باید بگویی جداکننده چیست، ترتیب فیلدها چیست، فیلد خالی چطور نوشته می‌شود، فاصله‌ها کجا هستند و آیا مقدمه مجاز است یا نه. همهٔ این‌ها را دو نمونهٔ درست، بی‌آنکه یک کلمه بنویسی، منتقل می‌کنند.

سود دوم این است که نمونه‌ها مرز تصمیم را هم مشخص می‌کنند. در طبقه‌بندی، سخت‌ترین بخش تعریف برچسب‌ها نیست؛ تعیین این است که یک مورد مرزی به کدام برچسب می‌افتد. یک نمونهٔ مرزی، این تصمیم را روشن‌تر از یک پاراگراف تعریف منتقل می‌کند.

در قسمت دوم دیدیم چطور نمونه‌ها را انتخاب کنیم. اینجا فرض می‌کنیم مجموعه‌مثال سالمی داری و فقط دربارهٔ شکل دادن به خروجی تصمیم می‌گیریم.

۲. فهرست برچسب باید بسته باشد

اولین تصمیم در هر کار طبقه‌بندی این است: مدل از کجا برچسب بردارد. اگر فهرست را ندهی، مدل برچسب می‌سازد و در ده ورودی، هفت برچسب متفاوت با معنی نزدیک می‌گیری که هیچ‌کدام با هم قابل جمع زدن نیستند.

فهرست برچسب را صریح و کوتاه بنویس، ترجیحاً بین سه تا هفت مورد. اگر بیشتر از این شد، احتمالاً دو سطح دسته‌بندی را قاطی کرده‌ای و بهتر است کار را به دو مرحله بشکنی: اول دستهٔ اصلی، بعد زیردسته.

مهم‌تر از فهرست، نمونه‌هاست. برای هر برچسبی که مرز مبهمی دارد یک نمونه بگذار، حتی اگر مجبور شوی به چهار نمونه برسی. برچسب‌هایی که معنی‌شان بدیهی است نیازی به نمونه ندارند.

و یک برچسب گریز هم لازم داری. برچسبی مثل «نامشخص» یا «خارج از فهرست» که مدل بتواند وقتی مطمئن نیست به آن پناه ببرد. بدون این برچسب، مدل مجبور است حدس بزند و حدسش در گزارش نهایی به‌شکل داده‌ای مطمئن دیده می‌شود.

۳. قالب خروجی را با نمونه بساز، نه با توضیح

برای خروجی ساختاریافته سه انتخاب رایج داری و هر کدام جای خودش را دارد.

خط جداشده با نویسه: ساده‌ترین حالت، مثل «دسته | فوریت | خلاصه». وقتی فیلدها کم‌اند و متن فیلدها کوتاه است، بهترین گزینه است چون کمترین احتمال خطا را دارد.

ساختار کلید و مقدار در چند خط: وقتی فیلدها بیشتر از سه تا هستند یا بعضی‌شان ممکن است خالی بمانند، این حالت خواناتر است و اشتباه در ترتیب پیش نمی‌آید.

ساختار تودرتوی داده‌ای: وقتی خروجی قرار است مستقیم وارد یک برنامه شود. در این حالت حتماً یک نمونه با فیلد خالی هم بگذار تا شکل مقدار تهی مشخص شود، و از مدل بخواه فقط همان ساختار را برگرداند بدون هیچ متن اطراف.

انتخاب هرکدام که باشد، قاعده یکسان است: قالب را در نمونه‌ها نشان بده و در بخش دستور فقط یک جمله دربارهٔ آن بنویس. اگر قالب را کامل توضیح بدهی و نمونه‌ها هم بگذاری، توضیح و نمونه با هم رقابت می‌کنند و در موارد اختلاف، مدل معمولاً نمونه را می‌برد.

ساخت قالب خروجی ساختاریافته با نمونه

۴. تفاوت طبقه‌بندی با استخراج فیلد

این دو کار شبیه به نظر می‌رسند ولی الگوی نمونه‌شان فرق دارد و قاطی کردنشان منبع خطای رایجی است.

در طبقه‌بندی، خروجی یک انتخاب از فهرست بسته است. کار مدل کاهش دادن است: از یک متن پر جزئیات به یک کلمه. نمونه‌ها باید مرز بین برچسب‌ها را نشان بدهند، پس بهترین نمونه‌ها آن‌هایی هستند که به مرز نزدیک‌اند نه آن‌هایی که کاملاً واضح‌اند.

در استخراج فیلد، خروجی برداشتن تکه‌هایی از خود متن است. کار مدل بریدن است نه تصمیم گرفتن. اینجا مهم‌ترین چیزی که نمونه‌ها باید منتقل کنند این است که چه چیزی برداشته نمی‌شود؛ یعنی مدل حق ندارد چیزی اضافه کند که در متن نبوده.

برای همین در نمونه‌های استخراج، حتماً یک مورد بگذار که یکی از فیلدهایش در متن اصلاً نیامده و در خروجی خالی مانده است. این تک نمونه بیشتر از هر دستوری جلوی ساختن اطلاعات را می‌گیرد.

اگر کارت هر دو را با هم لازم دارد — مثلاً هم دسته و هم چند فیلد — آن را در یک پرامپت نگه دار ولی در نمونه‌ها ترتیب ثابتی برای فیلدها رعایت کن و برچسب دسته را همیشه اول بگذار.

۵. پرامپت آمادهٔ کپی برای استخراج ساختاریافته

قالب زیر برای کار روزمرهٔ استخراج از متن خام نوشته شده و هر دو حالت طبقه‌بندی و استخراج را پوشش می‌دهد. فقط جاهای خالی را با کار خودت پر کن:

کار: برای هر ورودی، دقیقاً یک خط خروجی با ساختار نمونه‌ها بنویس.
دسته را فقط از این فهرست انتخاب کن: [دستهٔ یک] ، [دستهٔ دو] ، [دستهٔ سه] ، نامشخص.
قواعد: فقط خروجی را بنویس، بدون مقدمه و بدون توضیح. هیچ اطلاعاتی که در ورودی نیست اضافه نکن. اگر مقدار یک فیلد در متن نبود، همان‌جا خالی بگذار و چیزی حدس نزن.
ساختار خروجی: دسته | [فیلد یک] | [فیلد دو] | خلاصهٔ یک‌خطی
ورودی: [متن واقعی و نامرتب شمارهٔ یک]
خروجی: [دستهٔ یک] | [مقدار فیلد یک] | [مقدار فیلد دو] | [خلاصهٔ کوتاه]
ورودی: [متن واقعی شمارهٔ دو که یکی از فیلدهایش را ندارد]
خروجی: [دستهٔ دو] | [مقدار فیلد یک] | | [خلاصهٔ کوتاه]
ورودی: [متنی که به هیچ دسته‌ای نمی‌خورد]
خروجی: نامشخص | | | خارج از دامنهٔ این کار
ورودی: [کار واقعی خودت را اینجا بگذار]
خروجی:

سه تصمیم در همین قالب هست که ارزش توجه دارند. نمونهٔ دوم عمداً یک فیلد خالی دارد تا شکل مقدار تهی روشن شود. نمونهٔ سوم یک لبه است و راه فرار سالم را نشان می‌دهد. و ساختار خروجی در هر چهار بلوک دقیقاً یکسان است، حتی وقتی مقدارها خالی‌اند.

سنجش دقت پرامپت روی نمونه کوچک

۶. سنجش دقت روی یک نمونهٔ کوچک

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

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

اگر خطاها در قالب‌اند — فیلد جابه‌جا، جداکنندهٔ غلط، مقدمهٔ اضافه — مشکل از نمونه‌هاست و باید یک نمونهٔ دیگر با همان قالب دقیق اضافه کنی. اگر خطاها در تصمیم‌اند — برچسب اشتباه در موارد مرزی — مشکل از فهرست برچسب یا نبود نمونهٔ مرزی است.

و اگر خطا در ساختن اطلاعات است — مقداری در خروجی هست که در ورودی نبود — نمونهٔ فیلد خالی را اضافه کن یا پررنگ‌ترش کن. این سه دستهٔ خطا سه راه‌حل کاملاً متفاوت دارند و شمردن کلی خطا هیچ‌کدام را نشان نمی‌دهد.

۷. پرسش‌های پرتکرار

خروجی گاهی مقدمه دارد و گاهی ندارد، چه کنم؟ این نشانهٔ آن است که یکی از نمونه‌ها با بقیه فرق دارد یا ورودی واقعی آخرین چیز در پرامپت نیست. ساختار پایه و جای درست ورودی واقعی در قسمت اول توضیح داده شده است.

برای بیست فیلد هم همین روش کار می‌کند؟ نه به‌خوبی. بالای شش هفت فیلد، کار را به دو پرامپت جدا بشکن و هر کدام را روی گروهی از فیلدهای مرتبط اجرا کن. دقت هر دو بالاتر از یک پرامپت شلوغ می‌شود.

چند نمونه برای طبقه‌بندی لازم است؟ به تعداد برچسب‌های مرزی، نه به تعداد کل برچسب‌ها. اثر تعداد و ترتیب نمونه‌ها موضوع قسمت پنجم است.

خروجی گاهی عیناً یکی از نمونه‌ها را تکرار می‌کند. این نشت الگو است و معمولاً از شباهت زیاد نمونه‌ها می‌آید؛ در قسمت ششم راه‌های جلوگیری‌اش را می‌بینیم. برای شروع از صفر هم راهنمای نوشتن پرامپت برای مبتدی‌ها و نمونه‌های آموزش‌های ChatGPT کمک می‌کنند.

✏️ تمرین

در یک پرامپت استخراج فیلد، کدام نمونه بیشترین اثر را در جلوگیری از ساختن اطلاعات توسط مدل دارد؟

🔒

این تمرین ویژهٔ اعضاست

برای دیدن این بخش باید عضو ویژه (VIP) باشی. با شمارهٔ موبایلت وارد شو تا ۱۴ روز دسترسی رایگان فعال شود.

🎁 ورود / ثبت‌نام و شروع ۱۴ روز رایگان
قبلاً عضو شده‌ای؟ فقط کافی است وارد شوی. اشتراک: از ۱۹۹٬۰۰۰ تومان / ماه
جمع‌بندی. در طبقه‌بندی و استخراج، ارزش پرامپت مثال‌محور در ماشین‌خوان کردن خروجی است. فهرست برچسب را بسته نگه دار و یک برچسب گریز بگذار، قالب خروجی را با نمونه منتقل کن نه با توضیح، و حتماً یک نمونه با فیلد خالی و یک نمونه خارج از دامنه داشته باش. پیش از اجرای انبوه، روی بیست ورودی بسنج و خطاها را در سه دستهٔ قالب، تصمیم و ساختن اطلاعات جدا کن. در قسمت چهارم سراغ کاربردی می‌رویم که قالب در آن نامرئی است: آموزش لحن و سبک نوشتار به مدل. فهرست کامل قسمت‌ها را در صفحهٔ سری پرامپت‌نویسی ببین. برای آموزش‌ها و پرامپت‌های تازه، ما را در تلگرام دنبال کن: @MrChatGPT_IR
(0 رأی)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *