File size: 3,507 Bytes
d8bc695
8579f09
d8bc695
 
58c0ade
d8bc695
62d3b1e
8579f09
 
 
 
 
 
d8bc695
8579f09
 
d8bc695
8579f09
 
 
d8bc695
8579f09
 
 
d8bc695
58c0ade
579a34e
58c0ade
 
8579f09
58c0ade
8579f09
 
 
 
 
 
d8bc695
1be00bd
8579f09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d8bc695
58c0ade
8579f09
 
 
 
 
 
 
 
 
 
 
 
 
58c0ade
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import streamlit as st
from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification, AutoModelWithLMHead
import pandas as pd

# Uygulama sayfa ayarları
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'))

# Metin girişine göre seçim
if input_method == 'Örneklerden Seç':
    selected_text = st.selectbox('Metin Seç', example_list)
    input_text = st.text_area("Seçilen Metin", selected_text, height=128)
elif input_method == "Metin Yaz veya Yapıştır":
    input_text = st.text_area('Metin Yaz veya Yapıştır', '', height=128)
elif input_method == "Dosya Yükle":
    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)

if st.button("Çalıştır") 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'])