Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import AutoTokenizer, AutoModelForSequenceClassification # Thay bằng mô hình của bạn | |
import torch | |
# Load mô hình (thay thế bằng mô hình sửa lỗi chính tả của bạn) | |
def load_model(): | |
tokenizer = AutoTokenizer.from_pretrained("Diezu/bat_pho_bo") # Thay bằng tên mô hình của bạn | |
model = AutoModelForSequenceClassification.from_pretrained("Diezu/bat_pho_bo") | |
return tokenizer, model | |
# Hàm phát hiện lỗi chính tả | |
def detect_errors(text, tokenizer, model): | |
errors = [] | |
words = text.split() | |
for word in words: | |
inputs = tokenizer(word, return_tensors="pt", padding=True, truncation=True) | |
with torch.no_grad(): | |
outputs = model(**inputs) | |
probabilities = torch.softmax(outputs.logits, dim=-1) | |
predicted_class = torch.argmax(probabilities, dim=-1).item() | |
if predicted_class == 1: # Nếu từ sai | |
errors.append(word) | |
return errors | |
# Streamlit App | |
st.title("Công cụ phát hiện lỗi chính tả") | |
# CSS tùy chỉnh | |
st.markdown( | |
""" | |
<style> | |
.stTextArea textarea { | |
font-size: 18px; /* Thay đổi kích thước font */ | |
font-weight: bold; /* Làm đậm chữ */ | |
weight : 30%; | |
} | |
</style> | |
""", | |
unsafe_allow_html=True | |
) | |
# Tải mô hình | |
tokenizer, model = load_model() | |
# Tạo bố cục 2 cột | |
col1, col2 = st.columns([1, 1]) # Hai cột có kích thước bằng nhau | |
# Cột bên trái: Nhập văn bản | |
with col1: | |
st.header("Nhập văn bản") | |
input_text = st.text_area( | |
"Nhập văn bản:", | |
height=300, | |
max_chars=5000, | |
placeholder="Nhập văn bản của bạn ở đây..." | |
) | |
# Cột bên phải: Hiển thị kết quả | |
with col2: | |
st.header("Kết quả phát hiện lỗi") | |
if st.button("Phát hiện lỗi", use_container_width=True): | |
if input_text.strip(): | |
errors = detect_errors(input_text, tokenizer, model) | |
if errors: | |
st.text_area( | |
"Các từ phát hiện lỗi:", | |
value=", ".join(errors), | |
height=300, | |
disabled=True, | |
) | |
else: | |
st.success("Không phát hiện lỗi nào trong văn bản.") | |
else: | |
st.warning("Vui lòng nhập văn bản để kiểm tra.") | |