Spaces:
Sleeping
Sleeping
import streamlit as st | |
import numpy as np | |
from transformers import AutoTokenizer | |
from huggingface_hub import from_pretrained_keras | |
import tensorflow as tf | |
import os | |
import tensorflow_datasets as tfds | |
def get_model(): | |
tokenizer = AutoTokenizer.from_pretrained("dbmdz/bert-base-turkish-128k-uncased") | |
model = from_pretrained_keras("yunuskoyun/gazdasBERT") | |
return tokenizer,model | |
tokenizer,model = get_model() | |
user_input = st.text_area('İhbar Tanımı Tahmin Etmek İçin Yorum Yazınız...') | |
button = st.button("Tahmin Et") | |
d = { | |
4:'Gaz Yokluğu', | |
8:'Mühür', | |
0:'Basinç Problemi', | |
3:'Gaz Kokusu', | |
12:'Yangin', | |
10:'Sayaç Problemleri', | |
5:'Hasar', | |
2:'Elektrik Problemleri', | |
1:'Diğer Problemler', | |
11:'Servis Kutusu Problemleri', | |
7:'Kazi Çalişmasi', | |
9:'Patlama', | |
13:'Zehirlenme', | |
6:'İntihar' | |
} | |
def prep_data(text): | |
import tensorflow as tf | |
def transformation(X): | |
# set array dimensions | |
seq_len = 164 | |
Xids = [] | |
Xmask = [] | |
for sentence in X: | |
tokens = tokenizer.encode_plus(sentence, max_length=seq_len, truncation=True, | |
padding='max_length', add_special_tokens=True) | |
Xids.append(tokens['input_ids']) | |
Xmask.append(tokens['attention_mask']) | |
return np.array(Xids), np.array(Xmask) | |
# 1. Predict edeceğimiz yeni gözlemleri öncelikle token embeddings (input_ids) ve position embeddings (attention_mask) matrixlerine dönüştürüyoruz. | |
# Bu fonksiyonu kullanabilmek için öncelikle transformation funksiyonunu çalıştırmanız gerektiğini unutmayın. | |
Xids_obs, Xmask_obs = transformation(text) | |
# 2. Xids_obs, Xmask_obs matrixlerimizi tenserflow tensörlerine dönüştürüyoruz. | |
dataset_obs = tf.data.Dataset.from_tensor_slices((Xids_obs, Xmask_obs)) | |
# 3. Dönüştürdüğümüz tensorflow tensörlerini modelin tanıyabilmesi için "input_ids" ve "attention_mask" olarak isimlendiriyoruz. | |
def map_func(Tensor_Xids, Tensor_Xmask): | |
return {'input_ids': Tensor_Xids, 'attention_mask': Tensor_Xmask} | |
dataset_obs = dataset_obs.map(map_func) | |
# 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. | |
batch_size = 32 # eğitim datasına uygulanan batch_size'ı uyguluyoruz. | |
obs_ds = dataset_obs.batch(batch_size) | |
return obs_ds | |
if user_input and button: | |
probs = model.predict(prep_data([user_input])) | |
pred = np.argmax(probs[0]) | |
st.write(f"%{round(max(probs[0])*100, 0)} Olasılıkla İhbar Tanımınız: **{d[pred]}**") |