yunuskoyun commited on
Commit
727795e
1 Parent(s): 6c2869f

Created app.py

Browse files
Files changed (1) hide show
  1. bert_app.py +90 -0
bert_app.py ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ from transformers import AutoTokenizer
4
+ from huggingface_hub import from_pretrained_keras
5
+ import tensorflow as tf
6
+
7
+ import os
8
+ import tensorflow_datasets as tfds
9
+
10
+
11
+
12
+
13
+ def get_model():
14
+ tokenizer = AutoTokenizer.from_pretrained("dbmdz/bert-base-turkish-128k-uncased")
15
+ model = from_pretrained_keras("yunuskoyun/gazdasBERT")
16
+ return tokenizer,model
17
+
18
+
19
+ tokenizer,model = get_model()
20
+
21
+ user_input = st.text_area('İhbar Tanımı Tahmin Etmek İçin Yorum Yazınız...')
22
+ button = st.button("Tahmin Et")
23
+
24
+ d = {
25
+
26
+ 4:'Gaz Yokluğu',
27
+ 8:'Mühür',
28
+ 0:'Basinç Problemi',
29
+ 3:'Gaz Kokusu',
30
+ 12:'Yangin',
31
+ 10:'Sayaç Problemleri',
32
+ 5:'Hasar',
33
+ 2:'Elektrik Problemleri',
34
+ 1:'Diğer Problemler',
35
+ 11:'Servis Kutusu Problemleri',
36
+ 7:'Kazi Çalişmasi',
37
+ 9:'Patlama',
38
+ 13:'Zehirlenme',
39
+ 6:'İntihar'
40
+ }
41
+
42
+
43
+ def prep_data(text):
44
+ import tensorflow as tf
45
+
46
+ def transformation(X):
47
+ # set array dimensions
48
+ seq_len = 164
49
+
50
+ Xids = []
51
+ Xmask = []
52
+
53
+
54
+ for sentence in X:
55
+
56
+ tokens = tokenizer.encode_plus(sentence, max_length=seq_len, truncation=True,
57
+ padding='max_length', add_special_tokens=True)
58
+
59
+
60
+
61
+ Xids.append(tokens['input_ids'])
62
+ Xmask.append(tokens['attention_mask'])
63
+
64
+ return np.array(Xids), np.array(Xmask)
65
+
66
+ # 1. Predict edeceğimiz yeni gözlemleri öncelikle token embeddings (input_ids) ve position embeddings (attention_mask) matrixlerine dönüştürüyoruz.
67
+ # Bu fonksiyonu kullanabilmek için öncelikle transformation funksiyonunu çalıştırmanız gerektiğini unutmayın.
68
+ Xids_obs, Xmask_obs = transformation(text)
69
+
70
+ # 2. Xids_obs, Xmask_obs matrixlerimizi tenserflow tensörlerine dönüştürüyoruz.
71
+ dataset_obs = tf.data.Dataset.from_tensor_slices((Xids_obs, Xmask_obs))
72
+
73
+ # 3. Dönüştürdüğümüz tensorflow tensörlerini modelin tanıyabilmesi için "input_ids" ve "attention_mask" olarak isimlendiriyoruz.
74
+ def map_func(Tensor_Xids, Tensor_Xmask):
75
+ return {'input_ids': Tensor_Xids, 'attention_mask': Tensor_Xmask}
76
+
77
+ dataset_obs = dataset_obs.map(map_func)
78
+
79
+ # 4. Son aşama olarak tensorflow tensörlerimizi train datasında olduğu gibi 32'li paketler haline getiriyoruz. Yoksa shape uyumsuzluk hatası alırız.
80
+ batch_size = 32 # eğitim datasına uygulanan batch_size'ı uyguluyoruz.
81
+ obs_ds = dataset_obs.batch(batch_size)
82
+
83
+ return obs_ds
84
+
85
+
86
+
87
+ if user_input and button:
88
+ probs = model.predict(prep_data([user_input]))
89
+ pred = np.argmax(probs[0])
90
+ st.write(f"%{round(max(probs[0])*100, 0)} Olasılıkla İhbar Tanımınız: **{d[pred]}**")