from liqfit.pipeline import ZeroShotClassificationPipeline
from liqfit.models import T5ForZeroShotClassification
from transformers import T5Tokenizer
import streamlit as st
import time
model = T5ForZeroShotClassification.from_pretrained('knowledgator/comprehend_it-multilingual-t5-base')
tokenizer = T5Tokenizer.from_pretrained('knowledgator/comprehend_it-multilingual-t5-base')
classifier = ZeroShotClassificationPipeline(model=model, tokenizer=tokenizer,ypothesis_template = '{}', encoder_decoder = True)
st.markdown("
NLP Project
", unsafe_allow_html=True)
st.markdown("Hafizh Zaki Prasetyo Adi|hafizhzaki6661@gmail.com|https://www.linkedin.com/in/hafizhzpa/
", unsafe_allow_html=True)
part=st.sidebar.radio("project",["sentimen", "emosi", "label khusus"],captions = ["menentukan label sentimen", "menentukan label emosi", "klasifikasi berdasarkan label yang ditentukan"])
if part=='label khusus':
start=time.time()
col1, col2 = st.columns(2)
text = col1.text_area('text', 'Saya sudah menggunakan produk ini selama sebulan dan saya sangat puas dengan hasilnya')
multiclass = col1.checkbox('Izinkan multi label')
label = col1.text_area('label', 'positive,negative,neutral')
if col1.button('run'):
candidate_labels = label.split(',')
result=classifier(text, candidate_labels, multi_label=multiclass)
if not multiclass:
col2.markdown("result")
col2.markdown(f"{result['labels'][0]}
", unsafe_allow_html=True)
col2.progress(round(result['scores'][0],2))
col2.text(str(round(result['scores'][0]*100,2))+"%")
else:
bool_score=[score>0.5 for score in result['scores']]
col2.markdown("result")
col2.markdown(f"{','.join([label for i,label in enumerate(result['labels']) if bool_score[i]])}
", unsafe_allow_html=True)
col2.progress(round(result['scores'][0],2))
col2.text(str(round(result['scores'][0]*100,2))+"%")
if part=='sentimen':
start=time.time()
col1, col2 = st.columns(2)
text = col1.text_area('text', 'Saya sudah menggunakan produk ini selama sebulan dan saya sangat puas dengan hasilnya')
multiclass = col1.checkbox('Izinkan multi label')
if col1.button('run'):
candidate_labels = ['positive','negative','neutral']
result=classifier(text, candidate_labels, multi_label=multiclass)
if not multiclass:
col2.markdown("result")
col2.markdown(f"{result['labels'][0]}
", unsafe_allow_html=True)
col2.progress(round(result['scores'][0],2))
col2.text(str(round(result['scores'][0]*100,2))+"%")
else:
bool_score=[score>0.5 for score in result['scores']]
col2.markdown("result")
col2.markdown(f"{','.join([label for i,label in enumerate(result['labels']) if bool_score[i]])}
", unsafe_allow_html=True)
col2.progress(round(result['scores'][0],2))
col2.text(str(round(result['scores'][0]*100,2))+"%")
if part=='emosi':
start=time.time()
col1, col2 = st.columns(2)
text = col1.text_area('text', 'Saya sudah menggunakan produk ini selama sebulan dan saya sangat puas dengan hasilnya')
multiclass = col1.checkbox('Izinkan multi label')
if col1.button('run'):
candidate_labels = ["bahagia", "sedih", "takut", "marah", "antisipasi", "terkejut", "jijik","percaya"]
result=classifier(text, candidate_labels, multi_label=multiclass)
if not multiclass:
col2.markdown("result")
col2.markdown(f"{result['labels'][0]}
", unsafe_allow_html=True)
col2.progress(round(result['scores'][0],2))
col2.text(str(round(result['scores'][0]*100,2))+"%")
else:
bool_score=[score>0.5 for score in result['scores']]
col2.markdown("result")
col2.markdown(f"{','.join([label for i,label in enumerate(result['labels']) if bool_score[i]])}
", unsafe_allow_html=True)
col2.progress(round(result['scores'][0],2))
col2.text(str(round(result['scores'][0]*100,2))+"%")