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]}**")