xde-space / app.py
remox01's picture
Upload app.py with huggingface_hub
4a654dd verified
Raw
History Blame Contribute Delete
5.14 kB
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
print("Modeller yukleniyor...")
tr_to_en_tok = AutoTokenizer.from_pretrained("remox01/opus-mt-tc-big-tr-en")
tr_to_en_model = AutoModelForSeq2SeqLM.from_pretrained("remox01/opus-mt-tc-big-tr-en")
en_to_tr_tok = AutoTokenizer.from_pretrained("remox01/opus-mt-tc-big-en-tr")
en_to_tr_model = AutoModelForSeq2SeqLM.from_pretrained("remox01/opus-mt-tc-big-en-tr")
print("Zemberek yukleniyor...")
from zemberek import TurkishMorphology
morphology = TurkishMorphology.create_with_defaults()
print("spaCy yukleniyor...")
import spacy
nlp = spacy.load("en_core_web_sm")
def translate(text, direction):
if not text.strip():
return ""
if direction == "TR -> EN":
tokenizer, model = tr_to_en_tok, tr_to_en_model
else:
tokenizer, model = en_to_tr_tok, en_to_tr_model
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True, max_length=128)
outputs = model.generate(**inputs, max_length=128)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
def zemberek_analyze(text):
if not text.strip():
return "Cumle bos."
words = text.split()
results = []
for word in words:
clean = word.strip(".,!?;:()")
try:
wa = morphology.analyze(clean)
if wa.analysis_results:
sa = wa.analysis_results[0]
morphemes = sa.get_morphemes()
suffix_list = [str(m) for m in morphemes[1:]] if len(morphemes) > 1 else []
pos = morphemes[0].pos.name if morphemes else "Unknown"
suffix_str = " + ".join(suffix_list) if suffix_list else "-"
results.append(f"Kelime: {word}\n Kok: {sa.get_stem()}\n Ekler: {suffix_str}\n POS: {pos}\n Analiz: {sa.format_string()}")
else:
results.append(f"Kelime: {word}\n Analiz bulunamadi")
except Exception as e:
results.append(f"Kelime: {word}\n Hata: {str(e)}")
return "\n\n".join(results)
def spacy_analyze(text):
if not text.strip():
return "Cumle bos."
doc = nlp(text)
results = []
for token in doc:
results.append(f"Kelime: {token.text}\n Lemma: {token.lemma_}\n POS: {token.pos_} ({token.tag_})\n Dep: {token.dep_}\n Shape: {token.shape_}\n Stopword: {token.is_stop}")
entities = [(ent.text, ent.label_) for ent in doc.ents]
entity_str = "\n".join([f" {text} -> {label}" for text, label in entities]) if entities else " Varlik bulunamadi"
return "\n\n".join(results) + "\n\nVARLIKLAR (NER):\n" + entity_str
def comprehensive_analysis(turkish, english):
results = []
if turkish.strip():
results.append("=== TURKCE ZEMBEREK ANALIZI ===")
results.append(zemberek_analyze(turkish))
results.append("")
results.append("=== TURKCE -> INGILIZCE (Helsinki-NLP) ===")
results.append(translate(turkish, "TR -> EN"))
results.append("")
if english.strip():
results.append("=== INGILIZCE SPACY ANALIZI ===")
results.append(spacy_analyze(english))
results.append("")
results.append("=== INGILIZCE -> TURKCE (Helsinki-NLP) ===")
results.append(translate(english, "EN -> TR"))
return "\n".join(results) if results else "Lutfen bir cumle girin."
with gr.Blocks(title="XDE - Turkce-Ingilizce Dil Araci") as demo:
gr.Markdown("# XDE - Turkce-Ingilizce Dil Araci")
gr.Markdown("Helsinki-NLP, Zemberek ve spaCy ile dil analizi")
with gr.Tab("Ceviri"):
with gr.Row():
direction = gr.Dropdown(["TR -> EN", "EN -> TR"], value="TR -> EN", label="Yon")
input_text = gr.Textbox(label="Cumle", placeholder="Turkce veya Ingilizce cumle girin...")
output_text = gr.Textbox(label="Ceviri")
translate_btn = gr.Button("CEVIR")
translate_btn.click(translate, inputs=[input_text, direction], outputs=output_text)
with gr.Tab("Zemberek (Turkce)"):
zemberek_input = gr.Textbox(label="Turkce Cumle", placeholder="Turkce cumle girin...")
zemberek_output = gr.Textbox(label="Morfolojik Analiz", lines=15)
zemberek_btn = gr.Button("ANALIZ ET")
zemberek_btn.click(zemberek_analyze, inputs=zemberek_input, outputs=zemberek_output)
with gr.Tab("spaCy (Ingilizce)"):
spacy_input = gr.Textbox(label="Ingilizce Cumle", placeholder="Ingilizce cumle girin...")
spacy_output = gr.Textbox(label="Dilbilgisi Analizi", lines=15)
spacy_btn = gr.Button("ANALIZ ET")
spacy_btn.click(spacy_analyze, inputs=spacy_input, outputs=spacy_output)
with gr.Tab("Karsilastirmali Analiz"):
with gr.Row():
tr_input = gr.Textbox(label="Turkce Cumle", placeholder="Merhaba, nasilsiniz?")
en_input = gr.Textbox(label="Ingilizce Cumle", placeholder="Hello, how are you?")
comp_output = gr.Textbox(label="Sonuc", lines=20)
comp_btn = gr.Button("KARSILASTIR")
comp_btn.click(comprehensive_analysis, inputs=[tr_input, en_input], outputs=comp_output)
demo.launch()