apak commited on
Commit
e6e5b0f
·
verified ·
1 Parent(s): 768b56e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -18
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. Tam Sistematik CoT ve Kurallar
52
  prompt = f"""Sen yüksek hassasiyetli bir semantik analiz uzmanısın.
53
- Görevin, '[[{entity_text}]]' varlığını aşağıdaki protokollere göre sınıflandırmaktır.
 
 
 
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 (Çelişki Durumu):
 
 
 
 
 
 
 
 
 
 
 
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ığı nitelemektedir.
71
- - Adım 2: Wiki verisi bir filmden bahsetmektedir.
72
- - Adım 3: Wiki ve Cümle çelişiyor; cümledeki 'roman' ifadesi birincil kanıttır.
73
- - Adım 4: Yazılı eser olduğu için BOOK etiketi uygundur.
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
- # Temizlik ve Ayıklama
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())