adyoi commited on
Commit
3201cb8
·
verified ·
1 Parent(s): 8203c9e

Upload generate.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. generate.py +17 -2
generate.py CHANGED
@@ -38,6 +38,8 @@ def main():
38
  parser.add_argument("--seed", type=int, default=None)
39
  parser.add_argument("--device", default="auto", choices=["auto", "cpu", "cuda"])
40
  parser.add_argument("--guard", default=None, help="file kamus (satu kata per baris); pilih kandidat dengan ejaan terbaik")
 
 
41
  parser.add_argument("--guard-tries", type=int, default=5, help="jumlah kandidat saat --guard aktif")
42
  parser.add_argument("--guard-min", type=float, default=0.6, help="rasio kata dikenal minimum (info saja)")
43
  args = parser.parse_args()
@@ -50,11 +52,24 @@ def main():
50
  model = model.to(device)
51
 
52
  wordset = None
 
53
  if args.guard:
 
 
54
  from indigo.common import load_wordlist, word_known_ratio
55
 
56
  wordset = load_wordlist(args.guard)
57
- print(f"[guard] kamus: {len(wordset):,} kata | target rasio >= {args.guard_min:.0%}")
 
 
 
 
 
 
 
 
 
 
58
 
59
  ids = tokenizer.encode(args.prompt) or [0]
60
  idx = torch.tensor([ids], dtype=torch.long, device=device)
@@ -69,7 +84,7 @@ def main():
69
  repetition_penalty=args.repetition_penalty,
70
  )
71
  text = tokenizer.decode(out[0].tolist())
72
- ratio = word_known_ratio(text, wordset) if wordset else 1.0
73
  return text, ratio
74
 
75
  if wordset is None:
 
38
  parser.add_argument("--seed", type=int, default=None)
39
  parser.add_argument("--device", default="auto", choices=["auto", "cpu", "cuda"])
40
  parser.add_argument("--guard", default=None, help="file kamus (satu kata per baris); pilih kandidat dengan ejaan terbaik")
41
+ parser.add_argument("--guard-prefiks", default=None, help="daftar prefiks (default data/prefiks.txt bila ada)")
42
+ parser.add_argument("--guard-sufiks", default=None, help="daftar sufiks (default data/sufiks.txt bila ada)")
43
  parser.add_argument("--guard-tries", type=int, default=5, help="jumlah kandidat saat --guard aktif")
44
  parser.add_argument("--guard-min", type=float, default=0.6, help="rasio kata dikenal minimum (info saja)")
45
  args = parser.parse_args()
 
52
  model = model.to(device)
53
 
54
  wordset = None
55
+ pref_set = suf_set = None
56
  if args.guard:
57
+ from pathlib import Path as _Path
58
+
59
  from indigo.common import load_wordlist, word_known_ratio
60
 
61
  wordset = load_wordlist(args.guard)
62
+ p_def, s_def = _Path("data/prefiks.txt"), _Path("data/sufiks.txt")
63
+ if args.guard_prefiks and _Path(args.guard_prefiks).exists():
64
+ pref_set = load_wordlist(args.guard_prefiks)
65
+ elif not args.guard_prefiks and p_def.exists():
66
+ pref_set = load_wordlist(str(p_def))
67
+ if args.guard_sufiks and _Path(args.guard_sufiks).exists():
68
+ suf_set = load_wordlist(args.guard_sufiks)
69
+ elif not args.guard_sufiks and s_def.exists():
70
+ suf_set = load_wordlist(str(s_def))
71
+ mode = "dengan formula afiks" if pref_set and suf_set else "kata persis"
72
+ print(f"[guard] kamus: {len(wordset):,} kata ({mode}) | target rasio >= {args.guard_min:.0%}")
73
 
74
  ids = tokenizer.encode(args.prompt) or [0]
75
  idx = torch.tensor([ids], dtype=torch.long, device=device)
 
84
  repetition_penalty=args.repetition_penalty,
85
  )
86
  text = tokenizer.decode(out[0].tolist())
87
+ ratio = word_known_ratio(text, wordset, pref_set, suf_set) if wordset else 1.0
88
  return text, ratio
89
 
90
  if wordset is None: