Spaces:
Sleeping
Sleeping
Commit
•
727795e
1
Parent(s):
6c2869f
Created app.py
Browse files- 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]}**")
|