Text Generation
PEFT
Safetensors
Turkish
lora
qlora
proposition-decomposition
claim-atomization
fact-verification
turkish
nli
conversational
Instructions to use angeldust007/tr-factbench-gemma-atomizer with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use angeldust007/tr-factbench-gemma-atomizer with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("google/gemma-4-e2b-it") model = PeftModel.from_pretrained(base_model, "angeldust007/tr-factbench-gemma-atomizer") - Notebooks
- Google Colab
- Kaggle
tr-factbench-gemma-atomizer
Turkish proposition decomposition (claim atomization) QLoRA adapter for google/gemma-4-E2B-it.
This adapter serves as Component 0 (Propositional Atomizer) in the TR-FactBench cascading hybrid factuality verification architecture. It decomposes complex, multi-clause Turkish claims into independent, self-contained atomic propositions while restoring elided subjects and modifiers (subject elision restoration).
Model Details
| Property | Value |
|---|---|
| Base model | google/gemma-4-E2B-it |
| Method | QLoRA (4-bit NF4 + PEFT LoRA) |
| LoRA rank ($r$) | 16 |
| LoRA alpha ($\alpha$) | 32 |
| LoRA dropout | 0.05 |
| Task type | CAUSAL_LM (Structured JSON Proposition Generation) |
| Output format | {"atoms": ["...", "..."]} |
| Coverage on Gold-480 | 480 / 480 (100.0%) valid JSON decompositions |
| Total atoms on Gold-480 | 998 atomic propositions (Mean: 2.08 atoms/claim) |
Key Capabilities
- Coordinative Splitting: Splits compound Turkish claims along conjunction boundaries (
ve,ancak,fakat,ayrıca,;,.). - Subject & Noun-Phrase Restoration (Özne ve Tamlayıcı Restorasyonu): Reconstructs dropped subjects or shared genitive modifiers in subsequent clauses without hallucinating external facts.
- Over-Segmentation Prevention: Preserves relative clauses (sıfat-fiil) and conditional clauses (şart kipi) intact so that predicate semantics remain undistorted.
Performance in the TR-FactBench Pipeline
| Evaluation Metric / Stage | Score / Result |
|---|---|
| JSON Validity & Coverage (TR-FactBench Gold-480) | 100.0% (480/480) |
Standalone K2 Atomic NLI (mDeBERTa-v3 + Soft-Prob Avg) |
80.42% Accuracy (0.8038 Macro-F1) |
| Cascading Hybrid Pipeline (K1 + K2 + Llama-3.3-70B V4 Judge) | 93.13% Accuracy (0.9315 Macro-F1, 0.9092 MCC) |
| Out-of-Domain (OOD) Generalizability (Medical, Legal, Finance - 48 cases) | 100.0% (48/48) |
Usage
import json
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import PeftModel
BASE_MODEL = "google/gemma-4-E2B-it"
ADAPTER_REPO = "angeldust007/tr-factbench-gemma-atomizer"
SYSTEM_PROMPT = (
"Türkçe bir iddiayı bağımsız doğrulanabilir atomik önermelere ayır. "
"Her atom tek başına anlaşılır olmalı. Ortak özne, nesne veya tamlayıcı "
"ikinci bir önermede düşürülmüşse, onu iddianın kendi içindeki bilgiden yeniden kur. "
"Özneleri veya baş ögeleri yeniden kurarken kelime eksiltme, kısaltma veya kırpma yapma; "
"iddiadaki isim ve sıfat tamlamalarını tam olarak koru. "
"Her atom dilbilgisel olarak eksiksiz ve öznesi açık bir cümle olmalıdır. "
"Yeni bilgi ekleme. Olumsuzluk, koşul, modalite, sayı, zaman, karşılaştırma ve "
"kapsam ifadelerini koru. Koşullu tek bir önerme sırf birden fazla fiil içeriyor diye "
"bölünmemelidir. İddia zaten atomikse değiştirmeden tek atom döndür. "
"BİR cümlenin içindeki yan cümleler veya sıfat tamlamaları ayrı atom YAPILMAZ; "
"yalnızca 've', 'ayrıca', 'öte yandan', 'bununla birlikte', 'ancak', 'fakat', "
"noktalı virgül veya açık nokta gibi koordinasyon sınırlarında böl. "
'Yalnızca {"atoms": ["..."]} biçiminde geçerli JSON üret. /no_think'
)
quant_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
tokenizer = AutoTokenizer.from_pretrained(ADAPTER_REPO)
base_model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
quantization_config=quant_config,
device_map="auto",
torch_dtype=torch.bfloat16,
)
model = PeftModel.from_pretrained(base_model, ADAPTER_REPO)
model.eval()
claim = (
"Kasko sigortasında Dar Kasko teminat gruplarının yalnız bir bölümünü, "
"Kasko ise tamamını kapsar; zorunlu trafik sigortası üçüncü kişilere "
"verilen maddi ve bedensel zararları güvence altına alır."
)
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": json.dumps({"claim": claim}, ensure_ascii=False)},
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
output_ids = model.generate(**inputs, max_new_tokens=256, do_sample=False)
generated = tokenizer.decode(output_ids[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(generated)
# -> {"atoms": ["Kasko sigortasında Dar Kasko teminat gruplarının yalnız bir bölümünü kapsar.", "Kasko sigortası tamamını kapsar.", "Zorunlu trafik sigortası üçüncü kişilere verilen maddi ve bedensel zararları güvence altına alır."]}
Citation
@misc{dalga2026trfactbench,
author = {Dalga, Engin and Ball{\i}, Serkan},
title = {{TR-FactBench}: A Turkish Source-Grounded Factuality Benchmark and Cascading Hybrid Verification Architecture},
year = {2026},
url = {https://github.com/EngindalgaMaku/tr-factbench-k2-nli}
}
- Downloads last month
- 20