|
import streamlit as st |
|
from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification, AutoModelForCausalLM |
|
import pandas as pd |
|
|
|
st.set_page_config(layout="wide") |
|
|
|
|
|
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." |
|
] |
|
|
|
|
|
st.title("NLP Toolkit") |
|
|
|
|
|
task_list = ['Metin Sınıflandırma', 'Metin Analizi', 'Duygu Analizi', 'Metin Oluşturma'] |
|
task = st.sidebar.selectbox("Görev Seç", task_list) |
|
|
|
|
|
st.subheader("Metin Giriş Yöntemi Seç") |
|
input_method = st.radio("", ('Örneklerden Seç', 'Metin Yaz veya Yapıştır')) |
|
|
|
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) |
|
|
|
@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 = AutoModelForCausalLM.from_pretrained(model_name) |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
return pipeline('text-generation', model=model, tokenizer=tokenizer) |
|
|
|
|
|
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) |
|
|
|
try: |
|
entities = [{"Word": e.get('word', 'N/A'), "Entity": e.get('entity', 'N/A'), "Score": e.get('score', 'N/A')} for e in output] |
|
df = pd.DataFrame(entities) |
|
st.subheader("Tanımlanan Varlıklar") |
|
st.dataframe(df) |
|
except Exception as e: |
|
st.error(f"Bir hata oluştu: {e}") |
|
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']) |
|
|