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
Download inference_example.py from angeldust007/tr-factbench-gemma-atomizer: direct link, hf CLI and curl.
- Browser
- Download file 3.3 kB
-
https://huggingface.co/angeldust007/tr-factbench-gemma-atomizer/resolve/main/inference_example.py
- Command line
-
hf download hf://angeldust007/tr-factbench-gemma-atomizer/inference_example.py
-
curl -L -o inference_example.py https://huggingface.co/angeldust007/tr-factbench-gemma-atomizer/resolve/main/inference_example.py
3.3 kB
| """Standalone inference example for angeldust007/tr-factbench-gemma-atomizer.""" | |
| 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' | |
| ) | |
| def main(): | |
| compute_dtype = torch.bfloat16 if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else torch.float16 | |
| quant_config = BitsAndBytesConfig( | |
| load_in_4bit=True, | |
| bnb_4bit_quant_type="nf4", | |
| bnb_4bit_use_double_quant=True, | |
| bnb_4bit_compute_dtype=compute_dtype, | |
| ) | |
| print(f"Loading tokenizer & adapter from {ADAPTER_REPO}...") | |
| tokenizer = AutoTokenizer.from_pretrained(ADAPTER_REPO) | |
| base_model = AutoModelForCausalLM.from_pretrained( | |
| BASE_MODEL, | |
| quantization_config=quant_config, | |
| device_map="auto", | |
| torch_dtype=compute_dtype, | |
| ) | |
| model = PeftModel.from_pretrained(base_model, ADAPTER_REPO) | |
| model.eval() | |
| sample_claims = [ | |
| "Alışverişte müşteri, işyerinin oluşturduğu karekodu mobil uygulamasından okutarak FAST ödemesi başlatabilir.", | |
| "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.", | |
| ] | |
| for claim in sample_claims: | |
| 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(f"\nCLAIM: {claim}") | |
| print(f"OUTPUT: {generated.strip()}") | |
| if __name__ == "__main__": | |
| main() | |