۳.۱.۴ نمونههای بیشتر
در این زیربخش نمونههای بیشتری از prompting برای انجام وظایف مختلف NLP بررسی میشود. هدف ارائهٔ prompt استاندارد برای این وظایف نیست، بلکه با مثالهای ساده نشان داده میشود که چگونه میتوان LLMها را برای مسائل NLP هدایت کرد.
۳.۱.۴.۱ طبقهبندی متن
Text classification شاید یکی از رایجترین مسائل NLP باشد. بسیاری از وظایف را میتوان بهطور کلی «اختصاص برچسبهای ازپیشتعریفشده به یک متن» دانست. در اینجا مسئلهٔ polarity classification در sentiment analysis بررسی میشود، زیرا از محبوبترین و مشخصترین وظایف طبقهبندی متن است. در تنظیم عمومی polarity classification باید متن را در یکی از سه دستهٔ منفی، مثبت یا خنثی قرار دهیم. prompt سادهٔ زیر این کار را انجام میدهد؛ در نسخهٔ اصلی کتاب بخش task description برجسته شده است:
قطبیت متن زیر را تحلیل و آن را بهعنوان مثبت، منفی یا خنثی طبقهبندی کن.
متن:
The service at the restaurant was slower than expected, which was a bit frustrating.
قطبیت متن میتواند بهعنوان positive طبقهبندی شود.
برای کاملبودن مثال، پاسخ تولیدشده توسط LLM نیز در کتاب نشان داده شده است. طبق متن منبع، اگرچه پاسخ درست در نظر گرفته شده، LLM پاسخ را بهصورت label خالص ارائه نمیکند، بلکه با یک جملهٔ توضیحی نتیجه را بیان میکند. علت آن است که LLM اساساً برای تولید متن طراحی شده است، نه اختصاص مستقیم label به متن؛ بنابراین classification را بهعنوان text generation حل میکند. در نتیجه به سامانهای دیگر برای نگاشت خروجی LLM به فضای label نیاز داریم که میتوان آن را label mapping نامید؛ یعنی برای مثال واژهٔ positive از جملهٔ تولیدشده استخراج شود. این کار در بیشتر موارد با heuristic ساده ممکن است، اما گاهی LLM نتیجهٔ classification را با label wordهای دقیق بیان نمیکند و نگاشت متن تولیدی به labelهای ازپیشتعریفشده دشوارتر میشود.
یک روش برای واداشتن LLM به تولید label، بازصورتبندی مسئله به شکل cloze task است:
قطبیت متن زیر را تحلیل و آن را مثبت، منفی یا خنثی طبقهبندی کن.
Text:
The service at the restaurant was slower than expected, which was a bit frustrating.
The polarity of the text is ____
از LLM میخواهیم جای خالی را با مناسبترین واژه کامل کند. در حالت ایدهآل واژهٔ تولیدی یکی از positive، negative یا neutral است، اما تضمینی وجود ندارد. یک راه حل این است که پیشبینی را به مجموعهٔ label wordها محدود کنیم و گزینهٔ دارای بیشترین احتمال را انتخاب کنیم:
label = arg maxy∈Y Pr(y|x) (3.1)
در این معادله y واژهٔ پرکنندهٔ جای خالی و Y={positive, negative, neutral} مجموعهٔ label wordها است.
روش دیگر محدودکردن خروجی از طریق خود prompt است:
قطبیت متن زیر را تحلیل و آن را مثبت، منفی یا خنثی طبقهبندی کن.
Text:
The service at the restaurant was slower than expected, which was a bit frustrating.
قطبیت متن چیست؟
فقط یکی از این سه واژه را پاسخ بده: positive, negative, neutral.
Positive
Sentiment analysis مسئلهای رایج است و احتمالاً LLMها آن را طی pre-training یا fine-tuning بهخوبی فراگرفتهاند؛ از این رو دستورهای ساده معمولاً کافی است. اما در classificationهای جدید، ممکن است لازم باشد جزئیاتی مانند استانداردهای طبقهبندی به prompt افزوده شود. نمونهٔ مفصلتر:
قطبیت متن زیر را بهعنوان مثبت، منفی یا خنثی طبقهبندی کن. تعریف دستهها:
Positive: متن احساس یا نگرش مثبت مانند شادی، رضایت، هیجان یا تحسین دارد.
Negative: متن احساس یا نگرش منفی مانند ناراحتی، خشم، سرخوردگی یا انتقاد دارد.
Neutral: متن احساس روشن مثبت یا منفی ندارد و بیشتر اطلاعرسان، واقعگرا یا بیتفاوت است.
Text:
The service at the restaurant was slower than expected, which was a bit frustrating.
قطبیت متن چیست؟
Positive
با اینکه استفاده از LLM برای classification سرراست به نظر میرسد، برخی مسائل همچنان خوب حل نشدهاند؛ برای مثال، prompting مؤثر در مسئلهای با تعداد بسیار زیاد category دشوار است. اگر classification بسیار دشوار باشد و مقداری labeled data در اختیار داشته باشیم، fine-tuning LLM یا معماریهایی شبیه «BERT + classifier» نیز انتخاب مطلوبی است.
۳.۱.۴.۲ استخراج اطلاعات
بسیاری از مسائل NLP را میتوان information extraction دانست: شناسایی یا استخراج قطعات مشخص اطلاعات از متن بدون ساختار. این اطلاعات میتواند named entity، رابطه، event یا سایر data pointهای مرتبط باشد. هدف آن است که دادهٔ خام به قالبی تبدیل شود که تحلیل و استفادهٔ آن در downstream applicationها سادهتر باشد.
چون information extraction طیف بسیار بزرگی از مسائل را پوشش میدهد، همهٔ آنها بررسی نمیشوند. ابتدا Named Entity Recognition (NER) را در نظر میگیریم؛ وظیفهای قدیمی در NLP که اطلاعات کلیدی متن را شناسایی و در گروههای مشخص طبقهبندی میکند. named entityها معمولاً proper nameها هستند و در classهایی مانند person، location، organization، date، monetary value و percentage قرار میگیرند. نخست نمونهٔ سادهٔ استخراج نام اشخاص:
همهٔ نامهای اشخاص را در متن زیر شناسایی کن.
Text:
Is the UK really doing that badly or have travel trends shifted, post-pandemic?
For Tom Jenkins, CEO of the European Tourism Organisation, it’s the latter. “I think the UK is doing perfectly well but we’ll see more people going to Europe,” he says of 2024, adding that there’s “allegedly a slight plateau of American demand for the UK.”
نام شخص شناساییشده: Tom Jenkins
متن مثال از یک صفحهٔ خبری سفر گرفته شده است؛ نشانی منبع در نسخهٔ اصلی کتاب درج شده است. سپس میتوان همهٔ named entityها را استخراج کرد:
همهٔ named entityهای متن را شناسایی و در دستههایی مانند شخص، مکان، تاریخ و سازمان طبقهبندی کن. هر entity و نوع آن را در یک خط بنویس.
Text: [همان متن بالا]
1. Tom Jenkins - Person Name
2. European Tourism Organisation - Organization
3. UK - Location
4. Europe - Location
5. 2024 - Date
پس از شناسایی named entityها میتوان پردازش بیشتری انجام داد. برای مثال، رابطهٔ میان entityها را در relation extraction پیدا میکنیم:
یک متن و فهرستی از named entityهای آن به تو داده میشود. روابط میان entityها را تحلیل و توصیف کن و توضیح بده هر entity در context چگونه با دیگران مرتبط است.
Text: [متن مثال]
Named Entity: Tom Jenkins, European Tourism Organisation, UK, Europe, 2024
Tom Jenkins - European Tourism Organisation: Tom Jenkins مدیرعامل European Tourism Organisation است. این یک رابطهٔ حرفهای را نشان میدهد که در آن Tom Jenkins احتمالاً نقش مهمی در هدایت فعالیتهای سازمان، بهویژه در زمینهٔ گردشگری اروپا، دارد.
...
اگر LLM برای instruction following در information extraction fine-tune شده باشد، انجام انواع وظایف استخراج اطلاعات نسبتاً ساده است. template عمومی:
یک متن در اختیار تو قرار میگیرد. وظیفهٔ تو این است که {∗task-description∗}
Text: {∗text∗}
task-description دستور انجام وظیفه است. نمونهها:
- کلیدواژهها را از متن استخراج کن.
- رویدادهای کلیدی را از متن استخراج کن.
- پیوندهای coreference و anaphoric میان entityهای متن را تشخیص بده.
طبعاً هرچه توصیف وظیفه دقیقتر باشد، prompting نیز دقیقتر خواهد بود.
۳.۱.۴.۳ تولید متن
در NLP، اصطلاح text generation بهطور گسترده برای مسائل متنوعی به کار میرود که بسیاری از آنها بر تولید متن با توجه به متنی دیگر تمرکز دارند. میتوان این مسائل را تقریباً در دو گروه قرار داد: ۱) ادامهدادن نوشتن بر اساس متن ورودی، یعنی text completion، و ۲) تبدیل متن ورودی به متنی دیگر، یعنی text transformation. ابتدا text completion و سپس transformation بررسی میشود.
مثال سادهٔ completion، ادامهدادن یک داستان از چند جملهٔ آغازین است:
تو نویسندهای هستی که در داستاننویسی مهارت دارد. چند جملهٔ آغازین به تو داده میشود. داستان را از همانجا ادامه بده.
آغاز داستان:
یک بعدازظهر آفتابی، Lily کلید طلایی کوچکی زیر سنگی در حیاط پشتی پیدا کرد. کنجکاو شد و فکر کرد این کلید چه چیزی را باز میکند. همان لحظه گربهاش Whiskers با هیجان میو میو کرد و او را به سوی درخت بلوط پیر در لبهٔ باغ هدایت کرد.
Lily دنبال Whiskers رفت؛ قلبش از هیجان و کمی اضطراب تند میزد. درخت بلوط پیر همیشه برایش مرموز بود و شاخههای گرهخوردهاش حتی در روشنترین روزها سایههای بلند میانداختند. وقتی به درخت رسیدند، Whiskers جلو دوید و شروع کرد چیزی را زیر تودهای از برگهای پاییزی کنار زدن ...
به همین شکل میتوان با استفاده از context گفتوگو، ادامهٔ conversation را تولید کرد:
گفتوگویی میان یک گردشگر و رانندهٔ تاکسی در اختیار توست. آن را کامل کن.
گردشگر: لطفاً من را به موزهٔ مرکز شهر میبرید؟
راننده: حتماً! اولین بار است به شهر آمدهاید؟
گردشگر: بله، جای دیدنی ضروری اطراف هست؟
راننده: بعد از موزه حتماً باغ گیاهشناسی را ببینید. نزدیک است و خیلی زیباست.
گردشگر: عالی، ممنون از پیشنهادتان!
راننده: خواهش میکنم. از سفرتان لذت ببرید!
کاربرد دیگر completion تولید متن بر اساس requirement کاربر است. requirement میتواند سبک، لحن، طول و محتوای خاص را مشخص کند؛ مثلاً گزارش رسمی، داستان خلاق یا code. کتاب نمونهای برای تولید یک شعر سنتی چینی پنجهجایی با موضوع نوزایی بهار نشان میدهد:
تو شاعری هستی. یک شعر سنتی چینی بنویس.
موضوع: نوزایی بهار
ساختار: شعر منظم پنجنویسهای
احساس: با تصویرهای زندهٔ بهار، حس شادی و نوزایی را منتقل کن.
春意盎然
翠柳风中舞,
红花雨后新。
山明水又绿,
天宽鸟自频。
اگر LLM برای تولید زبان و code آموزش دیده باشد، میتوان code completion نیز انجام داد:
یک تابع Python بنویس که میانگین فهرستی از اعداد را محاسبه کند.
def calculate_average(numbers):
if numbers: # Check if the list is not empty
return sum(numbers) / len(numbers)
else:
return 0 # Return 0 if the list is empty
۳.۱.۴.۴ تبدیل متن
وظایف رایج text transformation شامل machine translation، summarization، text style transfer و موارد مشابهاند. promptهای این وظایف تفاوت بنیادی با نمونههای قبلی ندارند. چند مثال:
متن زیر را از انگلیسی به اسپانیایی ترجمه کن.
Text:
The quick brown fox jumps over the lazy dog.
El rápido zorro marrón salta sobre el perro perezoso.
مقالهٔ زیر را در حداکثر ۵۰ کلمه خلاصه کن:
Article:
در سالهای اخیر، نواحی شهری با چالشهای مهمی در پایداری و مدیریت محیط زیست روبهرو بودهاند. شهرها آلودگی بیشتر، تراکم بالاتر ترافیک و تقاضای افزون بر زیرساخت را تجربه میکنند. این رشد به مسائل محیطزیستی متعددی مانند افزایش آلودگی هوا و آب، تولید بیشتر پسماند و فشار بر خدمات عمومی منجر شده است ...
خلاصه: نواحی شهری با چالشهای پایداری مانند افزایش آلودگی، تراکم ترافیک و تقاضا برای زیرساخت روبهرو هستند ...
این متن را با لحن رسمی بازنویسی کن.
Text:
Hey, what’s up? Long time no see!
Hello, how have you been? It has been quite some time since we last met!
۳.۱.۴.۵ پرسشوپاسخ
قالب question answering ذاتاً ساده است: برای یک question، answer متناظر وجود دارد. در open-domain QA انتظار داریم سامانه در پاسخ به پرسش کاربر پاسخ مناسبی بازگرداند. template عمومی میتواند فقط {∗question∗} باشد یا:
Question: {∗question∗}
Answer:
Question answering در NLP مهم است، زیرا مسائل فراوانی را میتوان در قالب QA صورتبندی کرد؛ بهویژه بسیاری از وظایف reasoning جدید. برای نمونه، benchmark معروف MMLU [Hendrycks et al., 2021] شامل سؤالهای چندگزینهای است و LLM باید گزینهٔ درست را انتخاب کند. نمونهٔ کتاب:
(Z, ∗) is a group with a ∗ b = a + b + 1 for all a, b in Z. The inverse of a is
(A) 0
(B) −2
(C) a − 2
(D) (2 + a) ∗ −1
D
benchmark پرکاربرد دیگر GSM8K [Cobbe et al., 2021] است که هزاران مسئلهٔ کلامی ریاضی در سطح دبستان دارد. برای هر مسئله، LLM راهحلی به زبان طبیعی برمیگرداند. مثال منبع دو demonstration و سپس یک سؤال کاربر را نشان میدهد:
DEMO — سؤال ۱:
دو دختر Jerry در دو تیم مختلف softball بازی میکنند. هرکدام این فصل ۸ بازی دارند. هر تیم برای هر بازی ۴ ساعت تمرین میکند و هر بازی ۲ ساعت طول میکشد. Jerry در مجموع چند ساعت در زمین خواهد بود؟
پاسخ نمونه: برای بازیهای یک دختر 8×2=16 ساعت، برای دو دختر 32 ساعت؛ برای تمرین یک دختر 8×4=32 ساعت و برای دو دختر 64 ساعت؛ مجموع 32+64=96 ساعت. #### 96
DEMO — سؤال ۲:
Mary شش سیب خرید. برای هر سیبی که خورد، با سیبهای باقیمانده دو درخت کاشت. اگر هشت درخت کاشت، چند سیب خورد؟
پاسخ نمونه: برای ۸ درخت 8/2=4 سیب کاشته شده؛ از ۶ سیب، ۲ سیب باقی مانده و خورده شده است. #### 2
USER — سؤال:
Boris صد سیب دارد. Beck بیستوسه سیب کمتر از Boris دارد. اگر Boris ده سیب به Beck بدهد، اکنون Beck چند سیب کمتر از Boris دارد؟
پاسخ نمونه: Boris پس از دادن ۱۰ سیب، 90 دارد. Beck ابتدا 100−23=77 و بعد 77+10=87 دارد. اختلاف 90−87=3 است. #### 3