File size: 4,797 Bytes
2a16478
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import json
import os
import random

def generate_synthetic_data(num_docs=50, output_dir="data/synthetic"):
    os.makedirs(output_dir, exist_ok=True)
    
    docs = []
    
    for i in range(1, num_docs + 1):
        category = random.choice(["Laporan", "Surat Resmi", "Berita", "Invoice"])
        
        if category == "Laporan":
            subj = random.choice(["Proyek IT", "Keuangan Bulanan", "Audit Internal", "Pemasaran", "Evaluasi Kinerja"])
            suff = random.choice(["Q1 2024", "Bulan Maret", "Tahunan", "Fase 1", "Semester Ganjil"])
            title = f"Laporan {subj} {suff}"
            
            v1 = random.choice(["pengembangan aplikasi", "penjualan produk", "audit sistem", "kampanye iklan"])
            v2 = random.choice(["80%", "target awal", "tahap final", "Rp 500 Juta"])
            v3 = random.choice(["server", "distribusi", "keamanan", "konversi"])
            v4 = random.choice(["Andi", "Budi", "Siti", "Tim Support"])
            v5 = random.choice(["Jumat depan", "akhir bulan", "tanggal 15", "Senin pagi"])
            
            content = f"Laporan ini membahas mengenai progres {v1}. Hingga saat ini, pencapaian telah mencapai {v2}. Namun, terdapat beberapa kendala di bagian {v3}. {v4} ditugaskan untuk menyelesaikan masalah ini sebelum {v5}. Secara keseluruhan, kondisi masih terkendali."
            expected_action_items = [f"{v4} -> menyelesaikan masalah ini -> {v5}"]
            
        elif category == "Surat Resmi":
            subj = random.choice(["Jadwal Cuti Bersama", "Perubahan Jam Kerja", "Protokol Kesehatan Baru", "Pemeliharaan Server"])
            title = f"Surat Edaran: {subj}"
            
            v1 = random.choice(["jadwal baru", "aturan terbaru", "kebijakan perusahaan"])
            v2 = random.choice(["Senin depan", "awal bulan", "hari ini"])
            v4 = random.choice(["HRD", "Manager", "Admin", "Sekretaris"])
            v5 = random.choice(["besok", "nanti sore", "tanggal 10"])
            
            content = f"Diberitahukan kepada seluruh karyawan mengenai {v1}. Keputusan ini efektif mulai {v2}. Semua pihak diharap mematuhi aturan ini. {v4} harus menyebarkan informasi ini ke seluruh divisi maksimal {v5}. Terima kasih atas kerjasamanya."
            expected_action_items = [f"{v4} -> menyebarkan informasi ini ke seluruh divisi -> {v5}"]
            
        elif category == "Invoice":
            subj = random.choice(["Server", "Lisensi Software", "Perlengkapan Kantor", "Jasa Konsultan"])
            suff = random.choice(["#INV-001", "#INV-002", "#INV-003", "#INV-004"])
            title = f"Invoice Pembelian {subj} {suff}"
            
            v1 = random.choice(["pembelian alat", "perpanjangan lisensi", "layanan premium"])
            v2 = random.choice(["Rp 10.000.000", "Rp 5.500.000", "Rp 25.000.000"])
            v4 = random.choice(["Bagian Keuangan", "Bendahara", "Divisi Purchasing", "Akuntan"])
            v5 = random.choice(["tanggal 25", "akhir bulan ini", "Jumat"])
            
            content = f"Tagihan untuk {v1}. Total biaya yang harus dibayarkan adalah {v2}. Pembayaran dapat dilakukan melalui transfer ke rekening Bank BCA 123456. {v4} harus menyelesaikan pembayaran ini paling lambat {v5}."
            expected_action_items = [f"{v4} -> menyelesaikan pembayaran ini -> {v5}"]
            
        else: # Berita
            subj = random.choice(["Perkembangan AI Terbaru", "Startup Lokal Mendapat Pendanaan", "Tren Cloud Computing 2024", "Regulasi Data Pribadi Baru"])
            title = f"Berita: {subj}"
            
            v1 = random.choice(["teknologi baru telah dirilis", "regulasi ketat diterapkan", "investasi meningkat tajam"])
            v2 = random.choice(["mengubah pasar", "menciptakan peluang baru", "meningkatkan efisiensi"])
            v3 = random.choice(["bersiap", "memperbarui sistem", "melakukan pelatihan"])
            
            content = f"Hari ini dilaporkan bahwa {v1}. Hal ini diprediksi akan {v2}. Para ahli menyarankan agar industri {v3}. Tidak ada tindakan mendesak, namun perusahaan harus mulai beradaptasi dengan perubahan ini."
            expected_action_items = []

        doc = {
            "id": f"doc_{i:03d}",
            "title": title,
            "category": category,
            "content": content,
            "expected_action_items": expected_action_items,
            "expected_keywords": []
        }
        docs.append(doc)
    
    # Save as JSON
    json_path = os.path.join(output_dir, "dataset.json")
    with open(json_path, 'w', encoding='utf-8') as f:
        json.dump(docs, f, indent=4, ensure_ascii=False)
        
    print(f"Berhasil membuat dataset sintetik sebanyak {len(docs)} dokumen di {output_dir}")

if __name__ == "__main__":
    generate_synthetic_data(num_docs=50)