Design:
Random sample 500 articles from wikipedia and 500 articles from news
Prompt GPT to generate 500 yes questions and 500 no questions in BoolQ SuperGlue style.
Run Claude (Anthropic) to evaluate the results. Remove the samples that were not validated.
Use native speakers to validate the results (full or partial).
Using the newly created dataset, evaluate perfomance of the following LLMs:
Performance evaluation metrics: Accuracy, F1, P, R.
Results & Error analysis
Prompt for question and answers generation:
"Ты — лінгвіст і даследчык штучнага інтэлекту.
Твая задача — ствараць беларускія заданні тыпу BoolQ (Boolean Question Answering).
Я падам табе некалькі тэкстаў.
Для КОЖНАГА з іх ствары адно пытанне, на якое можна адказаць толькі "Так" або "Не",
і вызнач правільны адказ паводле зместу тэксту.
Патрабаванні:
- Мова: беларуская (наркамаўка).
- Пытанне павінна патрабаваць разумення і невялікага разважання, а не быць простым капіраваннем сказа.
- Пачынай пытанне з "Ці ..." або іншай натуральнай формы, якая патрабуе адказу Так/Не.
- Прыкладна палова павінна мець адказ "Так", палова — "Не".
- Не выкарыстоўвай адкрытыя пытанні (Дзе, Хто, Што, Калі і г.д.).
- Не паўтарай фармулёўкі або тэмы.
- Падтрымлівай лагічную сувязь паміж пытаннем і фактамі ў тэксце.
Вярні вынік У ВІДЗЕ ЧЫСТАГА JSON-СПІСУ з 5 элементаў:
[
{
"paragraph": "<тэкст 1>",
"question": "<пытанне 1>",
"answer": "Так" або "Не"
},
{
"paragraph": "<тэкст 2>",
"question": "<пытанне 2>",
"answer": "Так" або "Не"
},
...
]
Вось тэксты:
1. {{paragraph_1}}
2. {{paragraph_2}}
3. {{paragraph_3}}
4. {{paragraph_4}}
5. {{paragraph_5}}
"
API params:
temperature = 0.0 top_p = 1.0 max_output_tokens = 800
Loop idea for batch processing:
batch_size = 5
for i in range(0, len(paragraphs), batch_size):
filled = BOOLQ_BATCH_PROMPT \\
.replace("{{paragraph_1}}", paragraphs[i]) \\
.replace("{{paragraph_2}}", paragraphs[i+1]) \\
.replace("{{paragraph_3}}", paragraphs[i+2]) \\
.replace("{{paragraph_4}}", paragraphs[i+3]) \\
.replace("{{paragraph_5}}", paragraphs[i+4])
...
Prompt for validation (from step #4):
Ты атрымліваеш беларускі тэкст, пытанне і прапанаваны адказ ("Так" або "Не").
Твая задача — праверыць, ці сапраўды адказ адпавядае фактам з тэксту.
Калі адказ лагічна і дакладна вынікае з інфармацыі ў тэксце — адзнач яго як "Правільны".
Калі адказ няправільны, супярэчыць фактам або немагчыма зрабіць адназначную выснову — адзнач як "Няправільны".
Вярні вынік у фармаце JSON:
{
"paragraph": "<тэкст>",
"question": "<пытанне>",
"answer": "<адказ>",
"verdict": "Правільны" або "Няправільны",
"explanation": "<кароткае тлумачэнне чаму>"
}
Тэкст:
{{paragraph}}
Пытанне:
{{question}}
Адказ:
{{answer}}
Work so far