Fill-Mask
Transformers
Safetensors
Korean
Literary Chinese
bert
text-generation
sillok
history
korean-history
classical-chinese
Instructions to use ddokbaro/SillokBert-Scratch with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ddokbaro/SillokBert-Scratch with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("fill-mask", model="ddokbaro/SillokBert-Scratch")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForMaskedLM tokenizer = AutoTokenizer.from_pretrained("ddokbaro/SillokBert-Scratch") model = AutoModelForMaskedLM.from_pretrained("ddokbaro/SillokBert-Scratch", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Download scripts/1_train_tokenizer.py from ddokbaro/SillokBert-Scratch: direct link, hf CLI and curl.
- Browser
- Download file 2.84 kB
-
https://huggingface.co/ddokbaro/SillokBert-Scratch/resolve/main/scripts/1_train_tokenizer.py
- Command line
-
hf download hf://ddokbaro/SillokBert-Scratch/scripts/1_train_tokenizer.py
-
curl -L -o 1_train_tokenizer.py https://huggingface.co/ddokbaro/SillokBert-Scratch/resolve/main/scripts/1_train_tokenizer.py
2.84 kB
| # SillokBert-Scratch νλ‘μ νΈ 1λ¨κ³: μ€λ‘ νΉν ν ν¬λμ΄μ νλ ¨ | |
| # ----------------------------------------------------------------- | |
| # BPE μκ³ λ¦¬μ¦κ³Ό PUA/NFC μ μ²λ¦¬ νμ΄νλΌμΈμ μ¬μ©νμ¬ | |
| # Sillok λ°μ΄ν°μ μ΅μ νλ ν ν¬λμ΄μ λ₯Ό νλ ¨ν©λλ€. | |
| # ----------------------------------------------------------------- | |
| import os | |
| import re | |
| from pathlib import Path | |
| from tokenizers import Tokenizer | |
| from tokenizers.models import BPE | |
| from tokenizers.trainers import BpeTrainer | |
| from tokenizers.pre_tokenizers import ByteLevel | |
| from tokenizers.normalizers import NFC | |
| def train_sillok_bpe_tokenizer(): | |
| """ | |
| BPE μκ³ λ¦¬μ¦κ³Ό κ°νλ μ μ²λ¦¬ νμ΄νλΌμΈμ μ¬μ©νμ¬ ν ν¬λμ΄μ λ₯Ό νλ ¨ν©λλ€. | |
| """ | |
| # --- κ²½λ‘ μ€μ --- | |
| corpus_file = "/home/work/baro/sillok25060103/preprocessed_corpus/train.txt" | |
| project_dir = Path("/home/work/baro/sillok/sillok_scratch_20250626") | |
| output_dir = project_dir / "sillok_tokenizer_bpe_preprocessed" | |
| tokenizer_file = output_dir / "tokenizer.json" | |
| print("--- 1. Sillok-Specific Tokenizer Training ---") | |
| output_dir.mkdir(parents=True, exist_ok=True) | |
| # --- PUA λ³ν λ‘μ§ --- | |
| # μ€μ λ°μ΄ν°μ λ§λ μμ ν λ§€ν ν μ΄λΈλ‘ κ΅μ²΄ν΄μΌ ν©λλ€. | |
| pua_to_standard_map = {} | |
| pua_regex = None | |
| if pua_to_standard_map: | |
| pua_regex = re.compile("|".join(map(re.escape, pua_to_standard_map.keys()))) | |
| def normalize_pua(text: str) -> str: | |
| if not pua_regex: | |
| return text | |
| return pua_regex.sub(lambda m: pua_to_standard_map[m.group(0)], text) | |
| # --- ν ν¬λμ΄μ μ€μ --- | |
| tokenizer = Tokenizer(BPE(unk_token="[UNK]")) | |
| tokenizer.normalizer = NFC() | |
| tokenizer.pre_tokenizer = ByteLevel(add_prefix_space=False) | |
| trainer = BpeTrainer( | |
| vocab_size=500000, | |
| min_frequency=1, | |
| special_tokens=["[PAD]", "[UNK]", "[CLS]", "[SEP]", "[MASK]"] | |
| ) | |
| # --- μ½νΌμ€ μ΄ν°λ μ΄ν° λ° νλ ¨ --- | |
| def get_training_corpus(): | |
| with open(corpus_file, "r", encoding="utf-8") as f: | |
| for line in f: | |
| processed_line = normalize_pua(line) | |
| yield processed_line.strip() | |
| print("BPE ν ν¬λμ΄μ νλ ¨μ μμν©λλ€...") | |
| tokenizer.train_from_iterator(get_training_corpus(), trainer=trainer) | |
| # --- μ μ₯ λ° κ²μ¦ --- | |
| tokenizer.save(str(tokenizer_file)) | |
| print(f"\nπ BPE ν ν¬λμ΄μ νλ ¨ μλ£. κ²°κ³Ό νμΌ: {tokenizer_file}") | |
| reloaded_tokenizer = Tokenizer.from_file(str(tokenizer_file)) | |
| print(f"μ€μ μμ±λ μ΄νμ§ ν¬κΈ°: {reloaded_tokenizer.get_vocab_size()}") | |
| if __name__ == "__main__": | |
| train_sillok_bpe_tokenizer() | |