Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -43,14 +43,17 @@ def refine_label_with_llm(entity_text, full_sentence, wiki_context, custom_label
|
|
| 43 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 44 |
llm_model.to(device)
|
| 45 |
|
| 46 |
-
# 1. Etiket Tanımları
|
| 47 |
label_rules = ""
|
| 48 |
for k, v in custom_label_definitions.items():
|
| 49 |
label_rules += f"### {k}\n- TANIM: {v['tanim']}\n- ANAHTARLAR: {', '.join(v['anahtar_kelimeler'])}\n\n"
|
| 50 |
|
| 51 |
-
# 2.
|
| 52 |
prompt = f"""Sen yüksek hassasiyetli bir semantik analiz uzmanısın.
|
| 53 |
-
Görevin, '[[{entity_text}]]' varlığını aşağıdaki
|
|
|
|
|
|
|
|
|
|
| 54 |
|
| 55 |
SİSTEMATİK CoT ADIMLARI:
|
| 56 |
1. **Sentaktik İnceleme:** Cümle içinde varlığın sağındaki ve solundaki kelimeleri (niteleyicileri) tespit et. Varlık bir fiille mi (yazıldı, vizyona girdi) yoksa bir isimle mi (yazılımı, ödülü) ilişkili?
|
|
@@ -58,19 +61,27 @@ SİSTEMATİK CoT ADIMLARI:
|
|
| 58 |
3. **Çelişki ve Hiyerarşi Denetimi:** Wikipedia bilgisi ile cümledeki kullanım amacı çelişiyor mu? (Örn: Wiki 'film' diyor ama cümle 'kitap' diyorsa, cümledeki kullanım esastır).
|
| 59 |
4. **Etiket Eşleşmesi:** Elde edilen nihai kanıtları, 'ETİKET TANIMLARI'ndaki en yakın kategoriyle eşleştir ve son kararı ver.
|
| 60 |
|
| 61 |
-
ETİKET TANIMLARI:
|
| 62 |
-
{label_rules}
|
| 63 |
-
|
| 64 |
REFERANS ANALİZLER (FEW-SHOT):
|
| 65 |
-
Örnek 1 (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
VARLIK: 'Gizli Bahçe'
|
| 67 |
CÜMLE: "Yazar son romanı 'Gizli Bahçe' ile ödül aldı."
|
| 68 |
WIKI: "Gizli Bahçe: 1993 yapımı bir dram filmidir."
|
| 69 |
ANALİZ:
|
| 70 |
-
- Adım 1: Cümlede 'roman' ve 'yazar' kelimeleri varlığı
|
| 71 |
-
- Adım 2: Wiki verisi bir
|
| 72 |
-
- Adım 3:
|
| 73 |
-
- Adım 4:
|
| 74 |
CEVAP: BOOK
|
| 75 |
|
| 76 |
GÜNCEL GÖREV:
|
|
@@ -91,16 +102,11 @@ Cevap: [SADECE_ETIKET_ADI]"""
|
|
| 91 |
model_inputs = tokenizer([text], return_tensors="pt").to(device)
|
| 92 |
|
| 93 |
try:
|
| 94 |
-
generated_ids = llm_model.generate(
|
| 95 |
-
model_inputs.input_ids,
|
| 96 |
-
max_new_tokens=400,
|
| 97 |
-
do_sample=False,
|
| 98 |
-
temperature=0.1
|
| 99 |
-
)
|
| 100 |
response_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]
|
| 101 |
full_output = tokenizer.batch_decode(response_ids, skip_special_tokens=True)[0].strip()
|
| 102 |
|
| 103 |
-
#
|
| 104 |
clean_output = full_output.replace("*", "")
|
| 105 |
final_label = "MISC"
|
| 106 |
valid_keys = list(custom_label_definitions.keys())
|
|
|
|
| 43 |
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 44 |
llm_model.to(device)
|
| 45 |
|
| 46 |
+
# 1. Etiket Tanımları (Bilgi Kaynağı)
|
| 47 |
label_rules = ""
|
| 48 |
for k, v in custom_label_definitions.items():
|
| 49 |
label_rules += f"### {k}\n- TANIM: {v['tanim']}\n- ANAHTARLAR: {', '.join(v['anahtar_kelimeler'])}\n\n"
|
| 50 |
|
| 51 |
+
# 2. Sistematik CoT ve Kuralların Tanımlanması
|
| 52 |
prompt = f"""Sen yüksek hassasiyetli bir semantik analiz uzmanısın.
|
| 53 |
+
Görevin, '[[{entity_text}]]' varlığını aşağıdaki 4 adımlı Sistematik CoT protokolüne göre sınıflandırmaktır.
|
| 54 |
+
|
| 55 |
+
ETİKET TANIMLARI:
|
| 56 |
+
{label_rules}
|
| 57 |
|
| 58 |
SİSTEMATİK CoT ADIMLARI:
|
| 59 |
1. **Sentaktik İnceleme:** Cümle içinde varlığın sağındaki ve solundaki kelimeleri (niteleyicileri) tespit et. Varlık bir fiille mi (yazıldı, vizyona girdi) yoksa bir isimle mi (yazılımı, ödülü) ilişkili?
|
|
|
|
| 61 |
3. **Çelişki ve Hiyerarşi Denetimi:** Wikipedia bilgisi ile cümledeki kullanım amacı çelişiyor mu? (Örn: Wiki 'film' diyor ama cümle 'kitap' diyorsa, cümledeki kullanım esastır).
|
| 62 |
4. **Etiket Eşleşmesi:** Elde edilen nihai kanıtları, 'ETİKET TANIMLARI'ndaki en yakın kategoriyle eşleştir ve son kararı ver.
|
| 63 |
|
|
|
|
|
|
|
|
|
|
| 64 |
REFERANS ANALİZLER (FEW-SHOT):
|
| 65 |
+
Örnek 1 (Tam Uyum):
|
| 66 |
+
VARLIK: 'Inception'
|
| 67 |
+
CÜMLE: "Dün gece Inception filmini tekrar izledim."
|
| 68 |
+
WIKI: "Inception, Christopher Nolan tarafından yönetilen 2010 yapımı bilimkurgu filmidir."
|
| 69 |
+
ANALİZ:
|
| 70 |
+
- Adım 1: Cümlede 'film' ve 'izlemek' kelimeleri görsel esere işaret ediyor.
|
| 71 |
+
- Adım 2: Wiki verisi varlığın bir film olduğunu doğruluyor.
|
| 72 |
+
- Adım 3: Kaynaklar arasında çelişki yok.
|
| 73 |
+
- Adım 4: MOVIE etiketi uygundur.
|
| 74 |
+
CEVAP: MOVIE
|
| 75 |
+
|
| 76 |
+
Örnek 2 (Kritik Çelişki):
|
| 77 |
VARLIK: 'Gizli Bahçe'
|
| 78 |
CÜMLE: "Yazar son romanı 'Gizli Bahçe' ile ödül aldı."
|
| 79 |
WIKI: "Gizli Bahçe: 1993 yapımı bir dram filmidir."
|
| 80 |
ANALİZ:
|
| 81 |
+
- Adım 1: Cümlede 'roman' ve 'yazar' kelimeleri varlığı doğrudan kitap olarak niteliyor.
|
| 82 |
+
- Adım 2: Wiki verisi bu ismi bir film (movie) olarak gösteriyor.
|
| 83 |
+
- Adım 3: ÇELİŞKİ TESPİT EDİLDİ. Kaynak hiyerarşisi gereği cümledeki 'roman' ifadesi Wikipedia'dan daha önceliklidir.
|
| 84 |
+
- Adım 4: BOOK etiketi uygundur.
|
| 85 |
CEVAP: BOOK
|
| 86 |
|
| 87 |
GÜNCEL GÖREV:
|
|
|
|
| 102 |
model_inputs = tokenizer([text], return_tensors="pt").to(device)
|
| 103 |
|
| 104 |
try:
|
| 105 |
+
generated_ids = llm_model.generate(model_inputs.input_ids, max_new_tokens=450, do_sample=False, temperature=0.1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
response_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]
|
| 107 |
full_output = tokenizer.batch_decode(response_ids, skip_special_tokens=True)[0].strip()
|
| 108 |
|
| 109 |
+
# Markdown temizliği ve Etiket Ayıklama
|
| 110 |
clean_output = full_output.replace("*", "")
|
| 111 |
final_label = "MISC"
|
| 112 |
valid_keys = list(custom_label_definitions.keys())
|