Ümit Gündüz
update
dec18e5
import json
import logging
import threading
import gradio as gr
import uvicorn
from fastapi import FastAPI, Response
from inference import NewsInference
from train import NewsTrainer
UI_PATH = "/"
app = FastAPI()
inference = NewsInference()
logging.basicConfig(level=logging.INFO)
@app.get("/api/predict")
def predict(url: str):
"""
Haber makalelerine yönelik tahminler yapmak için kullanılan bir endpointdir.
Parametreler:
url (str): Haber makalesinin URL'i.
Dönen Değerler:
dict: Tarih, başlık, açıklama ve içerik gibi haber makalesine ilişkin tahmin edilen bilgiler.
"""
response = inference.predict(url)
return response
@app.get("/api/train")
async def train(name: str):
"""
Haber modelini asenkron olarak eğitmek için kullanılan bir endpointdir.
Parametreler:
name (str): Eğitim işleminin adı.
Dönen Değerler:
Response: Eğitim işleminin başladığını belirten bir mesaj içeren HTTP yanıtı.
"""
_train_data_path = "./data/dataset"
_model_output_path = "./models"
trainer = NewsTrainer()
thread = threading.Thread(target=trainer.run, args=(name, _train_data_path, _model_output_path))
thread.daemon = True
thread.start()
output = {"message": "Eğitim Başladı..."}
result = json.dumps(output, sort_keys=False, indent=4)
return Response(content=result, status_code=200, media_type="application/json")
def clear():
"""
Gradio arayüzündeki giriş ve çıkış alanlarını temizlemek için kullanılan bir fonksiyon.
Dönen Değerler:
tuple: Giriş ve çıkış alanları için boş değerler.
"""
return None, None, None, None, None, None, None, None, None
@app.get("/run/predict")
def gradio_predict(url: str):
"""
Gradio arayüzü üzerinden tahmin yapmak için kullanılan bir endpointdir.
Parametreler:
url (str): Haber makalesinin URL'i.
Dönen Değerler:
list: Tarih değeri, tarih skoru, başlık değeri, başlık skoru, açıklama değeri, açıklama skoru,
içerik değeri ve içerik skoru gibi tahmin edilen bilgiler.
"""
data = predict(url)
date_value = data["date"]["value"] if data["date"] is not None else None
date_score = data["date"]["score"] if data["date"] is not None else None
title_value = data["title"]["value"] if data["title"] is not None else None
title_score = data["title"]["score"] if data["title"] is not None else None
description_value = data["description"]["value"] if data["description"] is not None else None
description_score = data["description"]["score"] if data["description"] is not None else None
content_value = data["content"]["value"] if data["content"] is not None else None
content_score = data["content"]["score"] if data["content"] is not None else None
result = [date_value, date_score, title_value, title_score, description_value, description_score, content_value,
content_score]
return result
with gr.Blocks() as demo:
gr.Markdown(
"""
# Haber sitelerinin başlık, açıklama (spot), tarih ve içerik bilgilerinin Yapay Zeka modeli kullanılarak çıkarılması.
Bu çalışmada, belirli haber sitelerinden otomatik olarak başlık, açıklama (spot), tarih ve içerik bilgilerini çıkarabilen bir yapay zeka modeli geliştirilmeye odaklanılmıştır. Bu geliştirme sürecinde, modelin haber sitelerinin içeriklerini anlaması ve ilgili bilgileri doğru bir şekilde tanıması ve çıkarabilmesi için derinlemesine eğitimler gerçekleştirilmiştir. Bu kapsamlı çalışma, haber sitelerinin veri içeriklerinin otomatik çıkarılması ve analizi konusunda önemli bir adımı temsil etmektedir.
"""
)
with gr.Row():
with gr.Column():
input = gr.Textbox(label="Link")
with gr.Row():
with gr.Column():
translate_btn = gr.Button(value="Çalıştır", variant="primary")
clear_btn = gr.Button(value="Temizle")
with gr.Row():
examples = gr.Examples(examples=[
"https://www.aksam.com.tr/dunya/abdde-anketler-2024-secimlerinde-cumhuriyetcileri-onde-gosteriyor/haber-1369989",
"https://www.cumhuriyet.com.tr/bilim-teknoloji/bill-gates-uyardi-amazon-ve-google-gibi-sirketleri-yapay-zeka-bitirecek-2084726",
"https://www.ensonhaber.com/teknoloji/nasa-uranusun-kuzey-kutbundaki-siklonu-ilk-kez-goruntuledi",
"https://www.haber7.com/teknoloji/haber/3327933-olumcul-bakteriler-tarihe-karisabilir-yapay-zeka-ile-antibiyotik-gelistirdiler",
"https://haberglobal.com.tr/teknoloji/heyecan-yaratan-bulus-dunya-buyuklugunde-otegezegen-kesfedildi-251592"],
inputs=[input])
with gr.Column() as output:
with gr.Box():
date_value = gr.Textbox(label="Tarih")
date_score = gr.Textbox(label="Skor")
with gr.Box():
title_value = gr.Textbox(label="Başlık")
title_score = gr.Textbox(label="Skor")
with gr.Box():
description_value = gr.Textbox(label="Açıklama")
description_score = gr.Textbox(label="Skor")
with gr.Box():
content_value = gr.Textbox(label="İçerik")
content_score = gr.Textbox(label="Skor")
translate_btn.click(gradio_predict, inputs=input, outputs=[date_value, date_score,
title_value, title_score,
description_value, description_score,
content_value, content_score])
clear_btn.click(fn=clear, inputs=None, outputs=[input,
date_value, date_score,
title_value, title_score,
description_value, description_score,
content_value, content_score])
app = gr.mount_gradio_app(app, demo, "/", gradio_api_url="http://localhost:7860/")
def start():
"""
Sunucuyu başlatmak ve Gradio uygulamasını çalıştırmak için kullanılan bir fonksiyondur.
Bu fonksiyon belirtilen host ve portta sunucuyu başlatır ve Gradio uygulamasını çalıştırır.
"""
uvicorn.run(app, host="0.0.0.0", port=7860, log_level="info", workers=1)