File size: 1,809 Bytes
7355fc4
 
1613beb
3ab3af5
 
7355fc4
 
 
 
 
 
 
1613beb
7355fc4
1613beb
 
 
7355fc4
41632ff
 
 
 
 
 
 
1613beb
 
7355fc4
41632ff
 
 
 
 
7355fc4
 
 
 
 
 
 
 
 
 
 
 
 
1613beb
3845016
7355fc4
 
 
1613beb
7355fc4
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import gradio as gr
import pandas as pd
import json
from transformers import pipeline

# Modeli yükle
model = pipeline("question-answering", model="savasy/bert-base-turkish-squad")

# Soru-cevap fonksiyonu
def answer_question(file, question):
    try:
        if file is None:
            return "Lütfen önce bir JSON dosyası yükleyin."

        # Dosyayı aç ve JSON olarak yükle
        with open(file.name, "r", encoding="utf-8") as f:
            data = json.load(f)

        # JSON verisindeki kişi sayısını al
        # Örnek varsayım: JSON'da her kişi bir nesne (örneğin 'name' gibi) içeriyor
        if isinstance(data, list):  # Eğer JSON bir liste içeriyorsa
            people_count = len(data)
        else:
            people_count = 0

        # JSON verisini bir metin olarak oluştur
        context = json.dumps(data, ensure_ascii=False)

        # Cevapları anlamak için
        if "kaç kişi" in question.lower():
            return f"JSON verisinde {people_count} kişi var."

        # Diğer sorular için Hugging Face pipeline kullanarak soru-cevap yap
        result = model(question=question, context=context)
        answer = result["answer"]
        score = result["score"]

        return f"Yanıt: {answer}\n(Güven skoru: {score:.2f})"

    except Exception as e:
        return f"Hata: {e}"

# Gradio arayüzü
demo = gr.Interface(
    fn=answer_question,
    inputs=[
        gr.File(label="📂 JSON Dosyası", file_types=[".json"]),
        gr.Textbox(label="💬 Soru", placeholder="Örn: Kişinin yaşı nedir?")
    ],
    outputs="text",
    title="🧠 Türkçe Soru-Cevap Chatbot",
    description="Yüklediğiniz JSON dosyasına göre sorular sorabilirsiniz. Model: savasy/bert-base-turkish-squad"
)

if __name__ == "__main__":
    demo.launch()