BioPhys-Neural-Agent / src /tokenizer.rs
minseok
๐ŸŒŒ Release BioPhys 6.0 Grand Master: 16GB (14.89GB) Gemma-4 100% Devour, Ecosystem Evolution, Solar MoE, SNN Autoregressive SDK, Dynamic PhaseVM
be99550
Raw
History Blame Contribute Delete
1.34 kB
// ๐Ÿ“ BioPhys ํ…์ŠคํŠธ ํŒŒ์ดํ”„๋ผ์ธ (Tokenizer)
use std::collections::HashMap;
pub struct BioPhysTokenizer {
vocab: HashMap<String, u32>,
reverse_vocab: HashMap<u32, String>,
}
impl BioPhysTokenizer {
pub fn new() -> Self {
let mut tokenizer = Self {
vocab: HashMap::new(),
reverse_vocab: HashMap::new(),
};
// ์ตœ์†Œํ•œ์˜ ๊ธฐ๋ณธ ๋”๋ฏธ ์–ดํœ˜(BPE ๋ชจ์‚ฌ)
tokenizer.add_token(" ", 0);
tokenizer.add_token("Hello", 1);
tokenizer.add_token("Universe", 2);
tokenizer.add_token("BioPhys", 3);
tokenizer.add_token("Ecosystem", 4);
tokenizer.add_token("Evolution", 5);
tokenizer
}
fn add_token(&mut self, text: &str, id: u32) {
self.vocab.insert(text.to_string(), id);
self.reverse_vocab.insert(id, text.to_string());
}
pub fn encode(&self, text: &str) -> Vec<u32> {
// ์‹ค์ œ๋กœ๋Š” BPE๋‚˜ SentencePiece ๋กœ์ง์ด ๋“ค์–ด๊ฐ
text.split_whitespace()
.map(|word| *self.vocab.get(word).unwrap_or(&999))
.collect()
}
pub fn decode(&self, tokens: &[u32]) -> String {
tokens.iter()
.map(|t| self.reverse_vocab.get(t).unwrap_or(&"[UNK]".to_string()).clone())
.collect::<Vec<String>>()
.join(" ")
}
}