ihsan66 commited on
Commit
1574088
1 Parent(s): 28500ed

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -12
app.py CHANGED
@@ -1,5 +1,5 @@
1
  import streamlit as st
2
- from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification, AutoModelWithLMHead
3
  import pandas as pd
4
 
5
  # Uygulama sayfa ayarları
@@ -16,12 +16,12 @@ example_list = [
16
  st.title("NLP Toolkit")
17
 
18
  # Görev seçimi
19
- task_list = ['Metin Sınıflandırma', 'Metin Analizi', 'Duygu Analizi', 'Metin Oluşturma']
20
  task = st.sidebar.selectbox("Görev Seç", task_list)
21
 
22
  # Metin giriş yöntemi
23
  st.subheader("Metin Giriş Yöntemi Seç")
24
- input_method = st.radio("", ('Örneklerden Seç', 'Metin Yaz veya Yapıştır', 'Dosya Yükle'))
25
 
26
  # Metin girişine göre seçim
27
  if input_method == 'Örneklerden Seç':
@@ -29,12 +29,6 @@ if input_method == 'Örneklerden Seç':
29
  input_text = st.text_area("Seçilen Metin", selected_text, height=128)
30
  elif input_method == "Metin Yaz veya Yapıştır":
31
  input_text = st.text_area('Metin Yaz veya Yapıştır', '', height=128)
32
- elif input_method == "Dosya Yükle":
33
- uploaded_file = st.file_uploader("Dosya Seç", type="txt")
34
- if uploaded_file is not None:
35
- input_text = str(uploaded_file.read(), "utf-8")
36
- else:
37
- input_text = ""
38
 
39
  @st.cache_resource
40
  def load_pipeline(model_name, task_type):
@@ -51,16 +45,17 @@ def load_pipeline(model_name, task_type):
51
  tokenizer = AutoTokenizer.from_pretrained(model_name)
52
  return pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)
53
  elif task_type == "Metin Oluşturma":
54
- model = AutoModelWithLMHead.from_pretrained(model_name)
55
  tokenizer = AutoTokenizer.from_pretrained(model_name)
56
  return pipeline('text-generation', model=model, tokenizer=tokenizer)
57
 
58
  # Görev ve modele göre pipeline yükleme
59
  model_dict = {
60
  "Metin Sınıflandırma": "nlptown/bert-base-multilingual-uncased-sentiment",
61
- "Metin Analizi": "dbmdz/bert-large-cased-finetuned-conll03-english",
62
  "Duygu Analizi": "cardiffnlp/twitter-roberta-base-sentiment",
63
- "Metin Oluşturma": "gpt2"
 
64
  }
65
 
66
  pipeline_model = load_pipeline(model_dict[task], task)
@@ -80,3 +75,41 @@ if st.button("Çalıştır") and input_text:
80
  output = pipeline_model(input_text, max_length=100, num_return_sequences=1)
81
  st.subheader("Oluşturulan Metin")
82
  st.write(output[0]['generated_text'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer, AutoModelForTokenClassification, AutoModelForCausalLM
3
  import pandas as pd
4
 
5
  # Uygulama sayfa ayarları
 
16
  st.title("NLP Toolkit")
17
 
18
  # Görev seçimi
19
+ task_list = ['Metin Sınıflandırma', 'Metin Analizi', 'Duygu Analizi', 'Metin Oluşturma', 'Varlık Tanıma']
20
  task = st.sidebar.selectbox("Görev Seç", task_list)
21
 
22
  # Metin giriş yöntemi
23
  st.subheader("Metin Giriş Yöntemi Seç")
24
+ input_method = st.radio("", ('Örneklerden Seç', 'Metin Yaz veya Yapıştır'))
25
 
26
  # Metin girişine göre seçim
27
  if input_method == 'Örneklerden Seç':
 
29
  input_text = st.text_area("Seçilen Metin", selected_text, height=128)
30
  elif input_method == "Metin Yaz veya Yapıştır":
31
  input_text = st.text_area('Metin Yaz veya Yapıştır', '', height=128)
 
 
 
 
 
 
32
 
33
  @st.cache_resource
34
  def load_pipeline(model_name, task_type):
 
45
  tokenizer = AutoTokenizer.from_pretrained(model_name)
46
  return pipeline('sentiment-analysis', model=model, tokenizer=tokenizer)
47
  elif task_type == "Metin Oluşturma":
48
+ model = AutoModelForCausalLM.from_pretrained(model_name)
49
  tokenizer = AutoTokenizer.from_pretrained(model_name)
50
  return pipeline('text-generation', model=model, tokenizer=tokenizer)
51
 
52
  # Görev ve modele göre pipeline yükleme
53
  model_dict = {
54
  "Metin Sınıflandırma": "nlptown/bert-base-multilingual-uncased-sentiment",
55
+ "Metin Analizi": "dbmdz/bert-base-turkish-cased", # Türkçe model
56
  "Duygu Analizi": "cardiffnlp/twitter-roberta-base-sentiment",
57
+ "Metin Oluşturma": "gpt2",
58
+ "Varlık Tanıma": "dbmdz/bert-base-turkish-cased" # Türkçe NER model
59
  }
60
 
61
  pipeline_model = load_pipeline(model_dict[task], task)
 
75
  output = pipeline_model(input_text, max_length=100, num_return_sequences=1)
76
  st.subheader("Oluşturulan Metin")
77
  st.write(output[0]['generated_text'])
78
+ elif task == "Varlık Tanıma":
79
+ output = pipeline_model(input_text)
80
+ entities = []
81
+ for item in output:
82
+ entities.append({
83
+ 'Label': item['entity'],
84
+ 'Score': item['score'],
85
+ 'Word': item['word'],
86
+ 'Start': item['start'],
87
+ 'End': item['end']
88
+ })
89
+ df = pd.DataFrame(entities)
90
+ st.subheader("Varlık Tanıma Sonuçları")
91
+ st.dataframe(df)
92
+ # Metni formatla
93
+ def format_text(text_data):
94
+ formatted_text = ""
95
+ last_end = 0
96
+ for item in text_data:
97
+ if item['Start'] > last_end:
98
+ formatted_text += input_text[last_end:item['Start']]
99
+ word = item['Word']
100
+ label = item['Label']
101
+ if label.startswith('I-'):
102
+ color = 'blue'
103
+ elif label.startswith('B-'):
104
+ color = 'green'
105
+ else:
106
+ color = 'gray'
107
+ formatted_text += f"<span style='color:{color};'>{word}</span>"
108
+ last_end = item['End']
109
+ if last_end < len(input_text):
110
+ formatted_text += input_text[last_end:]
111
+ return formatted_text
112
+
113
+ formatted_text = format_text(entities)
114
+ st.subheader("Analiz Edilen Metin")
115
+ st.markdown(f"<p>{formatted_text}</p>", unsafe_allow_html=True)