ihsan66 commited on
Commit
8579f09
1 Parent(s): 5d71615

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -82
app.py CHANGED
@@ -1,96 +1,85 @@
1
-
2
  import streamlit as st
3
- from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification
4
- from datasets import load_dataset
5
  import pandas as pd
6
 
7
  st.set_page_config(layout="wide")
8
- from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
9
-
10
- model_checkpoint = "model_checkpoint" # PyTorch tabanlı model yolunu buraya ekleyin
11
- model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint)
12
- tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
13
-
14
- sentiment_pipeline = pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)
15
 
 
 
 
 
 
 
16
 
17
- # Veriyi yükleme ve ön işleme
18
- @st.cache_resource
19
- def load_data():
20
- dataset = load_dataset("WhiteAngelss/Turkce-Duygu-Analizi-Dataset")
21
- return dataset
22
-
23
- dataset = load_data()
24
- st.title("Türkçe Sentiment Analizi ve Entity Tanıma Uygulaması")
25
 
26
- # Örnek veri gösterme
27
- st.subheader("Örnek Veri")
28
- sample_df = pd.DataFrame(dataset['train'])
29
- st.write(sample_df.head())
30
 
31
- # Model seçim kısmı
32
- model_list = ['WhiteAngelss/entity-word-sentiment-analysis']
33
- st.sidebar.header("Model Seçimi")
34
- model_checkpoint = st.sidebar.radio("", model_list)
35
-
36
- st.sidebar.write("Model detayları için: 'https://huggingface.co/WhiteAngelss/entity-word-sentiment-analysis'")
37
- st.sidebar.write("")
38
-
39
- # Metin girdi yöntemi seçimi
40
- st.subheader("Metin Giriş Yöntemi Seçin")
41
- input_method = st.radio("", ('Örneklerden Seç', 'Yeni Metin Yaz veya Yapıştır'))
42
 
43
  if input_method == 'Örneklerden Seç':
44
- example_texts = dataset['train']['text'][:5] # Veri kümesinden örnek metinler
45
- selected_text = st.selectbox('Listeden Metin Seçin', example_texts)
46
- st.subheader("Analiz Edilecek Metin")
47
- input_text = st.text_area("Seçilen Metin", selected_text, height=128, max_chars=None)
48
- elif input_method == "Yeni Metin Yaz veya Yapıştır":
49
- st.subheader("Analiz Edilecek Metin")
50
- input_text = st.text_area('Aşağıya Metin Yazın veya Yapıştırın', value="", height=128, max_chars=None)
 
 
 
 
 
 
51
 
52
- # Model ve tokenizer'ı yükleme
53
  @st.cache_resource
54
- def set_model(model_checkpoint):
55
- # PyTorch tabanlı modelleri kullan
56
- model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint)
57
- tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
58
-
59
- # Named Entity Recognition (NER) için model
60
- ner_model = AutoModelForTokenClassification.from_pretrained('dbmdz/bert-large-cased-finetuned-conll03-english')
61
- ner_tokenizer = AutoTokenizer.from_pretrained('dbmdz/bert-large-cased-finetuned-conll03-english')
62
-
63
- return {
64
- 'sentiment_pipeline': pipeline('sentiment-analysis', model=model, tokenizer=tokenizer),
65
- 'ner_pipeline': pipeline('ner', model=ner_model, tokenizer=ner_tokenizer)
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
- # Analiz butonu
69
- run_button = st.button("Analiz Et")
70
 
71
- if run_button and input_text:
72
- pipelines = set_model(model_checkpoint)
73
-
74
- # Named Entity Recognition (NER) yapma
75
- ner_pipeline = pipelines['ner_pipeline']
76
- ner_output = ner_pipeline(input_text)
77
-
78
- # Sentiment analizi yapma
79
- sentiment_pipeline = pipelines['sentiment_pipeline']
80
-
81
- # Entity bazında sonuçları toplama
82
- results = []
83
- for entity in ner_output:
84
- entity_text = entity['word']
85
- sentiment_output = sentiment_pipeline(entity_text)
86
-
87
- results.append({
88
- 'Entity': entity_text,
89
- 'Entity Sınıfı': entity['entity'],
90
- 'Sentiment': sentiment_output[0]['label'],
91
- 'Skor': sentiment_output[0]['score']
92
- })
93
-
94
- st.subheader("Entity ve Sentiment Analizi Sonuçları")
95
- results_df = pd.DataFrame(results)
96
- st.write(results_df)
 
 
1
  import streamlit as st
2
+ from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification, AutoModelWithLMHead
 
3
  import pandas as pd
4
 
5
  st.set_page_config(layout="wide")
 
 
 
 
 
 
 
6
 
7
+ # Örnek metin listesi
8
+ example_list = [
9
+ "Mustafa Kemal Atatürk 1919 yılında Samsun'a çıktı.",
10
+ "Bugün hava çok güzel ve enerjik hissediyorum.",
11
+ "Yapay zeka ve makine öğrenimi hakkında birçok gelişme var."
12
+ ]
13
 
14
+ # Uygulama başlığı
15
+ st.title("NLP Toolkit")
 
 
 
 
 
 
16
 
17
+ # Görev seçimi
18
+ task_list = ['Metin Sınıflandırma', 'Metin Analizi', 'Duygu Analizi', 'Metin Oluşturma']
19
+ task = st.sidebar.selectbox("Görev Seç", task_list)
 
20
 
21
+ # Metin giriş yöntemi
22
+ st.subheader("Metin Giriş Yöntemi Seç")
23
+ input_method = st.radio("", ('Örneklerden Seç', 'Metin Yaz veya Yapıştır', 'Dosya Yükle'))
 
 
 
 
 
 
 
 
24
 
25
  if input_method == 'Örneklerden Seç':
26
+ selected_text = st.selectbox('Metin Seç', example_list, index=0, key=1)
27
+ st.subheader("Seçilen Metin")
28
+ input_text = st.text_area("Metin", selected_text, height=128, max_chars=None, key=2)
29
+ elif input_method == "Metin Yaz veya Yapıştır":
30
+ st.subheader("Metin")
31
+ input_text = st.text_area('Metin Yaz veya Yapıştır', value="", height=128, max_chars=None, key=2)
32
+ elif input_method == "Dosya Yükle":
33
+ st.subheader("Metin")
34
+ uploaded_file = st.file_uploader("Dosya Seç", type="txt")
35
+ if uploaded_file is not None:
36
+ input_text = str(uploaded_file.read(), "utf-8")
37
+ else:
38
+ input_text = ""
39
 
 
40
  @st.cache_resource
41
+ def load_pipeline(model_name, task_type):
42
+ if task_type == "Metin Sınıflandırma":
43
+ model = AutoModelForSequenceClassification.from_pretrained(model_name)
44
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
45
+ return pipeline('text-classification', model=model, tokenizer=tokenizer)
46
+ elif task_type == "Metin Analizi":
47
+ model = AutoModelForTokenClassification.from_pretrained(model_name)
48
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
49
+ return pipeline('ner', model=model, tokenizer=tokenizer)
50
+ elif task_type == "Duygu Analizi":
51
+ model = AutoModelForSequenceClassification.from_pretrained(model_name)
52
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
53
+ return pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)
54
+ elif task_type == "Metin Oluşturma":
55
+ model = AutoModelWithLMHead.from_pretrained(model_name)
56
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
57
+ return pipeline('text-generation', model=model, tokenizer=tokenizer)
58
+
59
+ # Görev ve modele göre pipeline yükleme
60
+ model_dict = {
61
+ "Metin Sınıflandırma": "nlptown/bert-base-multilingual-uncased-sentiment",
62
+ "Metin Analizi": "dbmdz/bert-large-cased-finetuned-conll03-english",
63
+ "Duygu Analizi": "cardiffnlp/twitter-roberta-base-sentiment",
64
+ "Metin Oluşturma": "gpt2"
65
+ }
66
+
67
+ pipeline_model = load_pipeline(model_dict[task], task)
68
 
69
+ Run_Button = st.button("Çalıştır", key=None)
 
70
 
71
+ if Run_Button and input_text != "":
72
+ if task in ["Metin Sınıflandırma", "Duygu Analizi"]:
73
+ output = pipeline_model(input_text)
74
+ df = pd.DataFrame(output)
75
+ st.subheader(f"{task} Sonuçları")
76
+ st.dataframe(df)
77
+ elif task == "Metin Analizi":
78
+ output = pipeline_model(input_text)
79
+ df = pd.DataFrame(output)
80
+ st.subheader("Tanımlanan Varlıklar")
81
+ st.dataframe(df)
82
+ elif task == "Metin Oluşturma":
83
+ output = pipeline_model(input_text, max_length=100, num_return_sequences=1)
84
+ st.subheader("Oluşturulan Metin")
85
+ st.write(output[0]['generated_text'])