Spaces:
Build error
Build error
| import sys | |
| import subprocess | |
| # Memeriksa dan menginstal sentencepiece jika belum terinstal | |
| try: | |
| import sentencepiece | |
| except ImportError: | |
| subprocess.check_call([sys.executable, "-m", "pip", "install", "sentencepiece"]) | |
| import sentencepiece | |
| from transformers import T5ForConditionalGeneration, T5Tokenizer | |
| import gradio as gr | |
| import re | |
| # Memuat model dan tokenizer T5 | |
| model_name = "t5-base" # Anda bisa mengganti dengan "t5-large" jika diperlukan | |
| tokenizer = T5Tokenizer.from_pretrained(model_name) | |
| model = T5ForConditionalGeneration.from_pretrained(model_name) | |
| def extract_seminar_info(chunk): | |
| # Menyusun prompt yang spesifik untuk ekstraksi informasi | |
| prompt = ( | |
| "Ekstrak informasi berikut dari jadwal seminar berikut:\n" | |
| "- NO\n" | |
| "- NIM\n" | |
| "- Nama\n" | |
| "- Judul Seminar\n" | |
| "- Reviewer & Pembimbing\n" | |
| "- Waktu\n\n" | |
| f"{chunk}" | |
| ) | |
| # Tokenisasi input dengan pemotongan jika terlalu panjang | |
| inputs = tokenizer.encode(prompt, return_tensors="pt", max_length=512, truncation=True) | |
| # Menghasilkan respons dengan parameter yang diatur | |
| outputs = model.generate( | |
| inputs, | |
| max_length=150, | |
| num_beams=5, | |
| early_stopping=True | |
| ) | |
| # Mendekode respons | |
| response = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| return response | |
| def process_file(): | |
| # Membaca isi file seminar.txt | |
| with open('seminar.txt', 'r', encoding='utf-8') as file: | |
| content = file.read() | |
| # Menghapus karakter yang tidak perlu dan memperbaiki spasi | |
| content = re.sub(r'\n+', ' ', content) # Mengganti garis baru yang berlebihan dengan spasi | |
| content = re.sub(r'\s+', ' ', content) # Mengganti spasi yang berlebihan dengan satu spasi | |
| # Membagi konten berdasarkan nomor seminar (NO) | |
| seminar_entries = re.split(r'\b\d{1,3}\s+\d{6}\s+', content) | |
| # Mengambil semua nomor seminar yang ditemukan | |
| no_pattern = r'\b(\d{1,3})\s+\d{6}\s+' | |
| nos = re.findall(no_pattern, content) | |
| seminar_info = "" | |
| for no, entry in zip(nos, seminar_entries[1:]): | |
| # Menambahkan nomor seminar ke entri | |
| entry = f"{no} {entry}" | |
| # Ekstrak informasi menggunakan model | |
| info = extract_seminar_info(entry) | |
| seminar_info += f"{info}\n\n" | |
| return seminar_info | |
| # Membuat antarmuka Gradio | |
| iface = gr.Interface( | |
| fn=process_file, | |
| inputs=None, # Tidak ada input karena file sudah ada di direktori | |
| outputs="text", | |
| title="Ekstrak Informasi Seminar", | |
| description="Aplikasi ini membaca file seminar.txt dan mengekstrak informasi seperti NO, NIM, Nama, Judul Seminar, Reviewer & Pembimbing, dan Waktu." | |
| ) | |
| # Menjalankan antarmuka | |
| iface.launch() |