Design:

  1. Random sample 500 articles from wikipedia and 500 articles from news

    1. We take more samples than needed - anticipating some of them to be removed later.
  2. Prompt GPT to generate 500 yes questions and 500 no questions in BoolQ SuperGlue style.

  3. Run Claude (Anthropic) to evaluate the results. Remove the samples that were not validated.

  4. Use native speakers to validate the results (full or partial).

  5. Using the newly created dataset, evaluate perfomance of the following LLMs:

    1. Tier 1 - Frontier / Proprietary LLMs: GPT-4o, Claude 3.5 Sonnet, Claude 3.5 Opus, Gemini 1.5 Pro, Mistral Nemo 12x7B
    2. Tier 2 - Open-Weight Flagship Models: Llama-3.1-8B-Instruct, Llama-3.1-70B-Instruct, Gemma-2-9B-Instruct, Qwen-2.5-7B-Instruct, Qwen-2.5-72B-Instruct, Mistral-7B-Instruct-v0.3, Mixtral-8x7B-Instruct
    3. Tier 3 - Classic Multilingual Encoders / Seq2Seq: mDeBERTa-v3-base, mDeBERTa-v3-large, XLM-R-base, XLM-R-large, mT5-base, mT5-xl, mT5-xxl
    4. Tier 4 - Lightweight/Edge Models: Phi-3-mini, TinyLlama-1.1B, TinyLlama-2B, Gemma-2-2B

    Performance evaluation metrics: Accuracy, F1, P, R.

  6. 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