import streamlit as st from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification, AutoModelWithLMHead import pandas as pd st.set_page_config(layout="wide") # Örnek metin listesi example_list = [ "Mustafa Kemal Atatürk 1919 yılında Samsun'a çıktı.", "Bugün hava çok güzel ve enerjik hissediyorum.", "Yapay zeka ve makine öğrenimi hakkında birçok gelişme var." ] # Uygulama başlığı st.title("NLP Toolkit") # Görev seçimi task_list = ['Metin Sınıflandırma', 'Metin Analizi', 'Duygu Analizi', 'Metin Oluşturma'] task = st.sidebar.selectbox("Görev Seç", task_list) # Metin giriş yöntemi st.subheader("Metin Giriş Yöntemi Seç") input_method = st.radio("", ('Örneklerden Seç', 'Metin Yaz veya Yapıştır', 'Dosya Yükle')) if input_method == 'Örneklerden Seç': selected_text = st.selectbox('Metin Seç', example_list, index=0, key=1) st.subheader("Seçilen Metin") input_text = st.text_area("Metin", selected_text, height=128, max_chars=None, key=2) elif input_method == "Metin Yaz veya Yapıştır": st.subheader("Metin") input_text = st.text_area('Metin Yaz veya Yapıştır', value="", height=128, max_chars=None, key=2) elif input_method == "Dosya Yükle": st.subheader("Metin") uploaded_file = st.file_uploader("Dosya Seç", type="txt") if uploaded_file is not None: input_text = str(uploaded_file.read(), "utf-8") else: input_text = "" @st.cache_resource def load_pipeline(model_name, task_type): if task_type == "Metin Sınıflandırma": model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) return pipeline('text-classification', model=model, tokenizer=tokenizer) elif task_type == "Metin Analizi": model = AutoModelForTokenClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) return pipeline('ner', model=model, tokenizer=tokenizer) elif task_type == "Duygu Analizi": model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) return pipeline('sentiment-analysis', model=model, tokenizer=tokenizer) elif task_type == "Metin Oluşturma": model = AutoModelWithLMHead.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) return pipeline('text-generation', model=model, tokenizer=tokenizer) # Görev ve modele göre pipeline yükleme model_dict = { "Metin Sınıflandırma": "nlptown/bert-base-multilingual-uncased-sentiment", "Metin Analizi": "dbmdz/bert-large-cased-finetuned-conll03-english", "Duygu Analizi": "cardiffnlp/twitter-roberta-base-sentiment", "Metin Oluşturma": "gpt2" } pipeline_model = load_pipeline(model_dict[task], task) Run_Button = st.button("Çalıştır", key=None) if Run_Button and input_text != "": if task in ["Metin Sınıflandırma", "Duygu Analizi"]: output = pipeline_model(input_text) df = pd.DataFrame(output) st.subheader(f"{task} Sonuçları") st.dataframe(df) elif task == "Metin Analizi": output = pipeline_model(input_text) df = pd.DataFrame(output) st.subheader("Tanımlanan Varlıklar") st.dataframe(df) elif task == "Metin Oluşturma": output = pipeline_model(input_text, max_length=100, num_return_sequences=1) st.subheader("Oluşturulan Metin") st.write(output[0]['generated_text'])