Spaces:
Sleeping
Sleeping
| import re | |
| import torch | |
| import gradio as gr | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| model_name = "magahcicek/avastin-side-effects-model" | |
| model = AutoModelForCausalLM.from_pretrained(model_name) | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| tokenizer.pad_token = tokenizer.eos_token | |
| tokenizer.padding_side = "right" | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| model.to(device) | |
| def clean_side_effects(text, drug_name): | |
| text = text.strip(" ,.\n\t") | |
| text = re.sub(re.escape(drug_name), '', text, flags=re.IGNORECASE) | |
| text = re.sub(r"([a-z])([A-Z])", r"\1 \2", text) | |
| text = re.sub(r"\s*,\s*", ", ", text) | |
| text = re.sub(r",+", ",", text) | |
| text = re.sub(r"\s{2,}", " ", text) | |
| text = re.sub(r"([a-zA-Z])\.([a-zA-Z])", r"\1. \2", text) | |
| items = re.split(r"[,\n\-]+", text) | |
| items = [item.strip() for item in items if item.strip()] | |
| unique_items = [] | |
| for item in items: | |
| if item.lower() not in [x.lower() for x in unique_items]: | |
| unique_items.append(item) | |
| unique_items = [item if item.endswith('.') else item + '.' for item in unique_items] | |
| return unique_items | |
| def generate_side_effects(drug_name): | |
| prompt = f"[DRUG_START]{drug_name}[DRUG_END][SIDE_EFFECTS]" | |
| inputs = tokenizer(prompt, return_tensors="pt", max_length=256, truncation=True, padding="max_length").to(device) | |
| outputs = model.generate( | |
| **inputs, | |
| max_new_tokens=50, | |
| pad_token_id=tokenizer.eos_token_id, | |
| num_beams=1, | |
| repetition_penalty=1.2, | |
| no_repeat_ngram_size=2, | |
| early_stopping=True | |
| ) | |
| full_text = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| return clean_side_effects(full_text, drug_name) | |
| def process_drug_name(drug_name): | |
| if not drug_name.strip(): | |
| return "Lütfen geçerli bir ilaç adı giriniz." | |
| side_effects = generate_side_effects(drug_name) | |
| if isinstance(side_effects, list): | |
| side_effects_str = "\n- " + "\n- ".join(side_effects) | |
| else: | |
| side_effects_str = side_effects | |
| return f"İlaç Adı: {drug_name}\nÖngörülen Yan Etkiler:\n{side_effects_str}" | |
| iface = gr.Interface( | |
| fn=process_drug_name, | |
| inputs=gr.Textbox(lines=1, placeholder="İlaç adını yazınız..."), | |
| outputs=gr.Textbox(), | |
| title="Yan Etki Tahmini", | |
| description="İlaç adını girerek öngörülen yan etkileri liste halinde görün." | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |