pub mod char_tokenizer;
pub mod bpe_tokenizer;
#[cfg(feature = "tokenization")]
pub mod hf_tokenizer;
pub use char_tokenizer::CharTokenizer;
pub use bpe_tokenizer::BPETokenizer;
#[cfg(feature = "tokenization")]
pub use hf_tokenizer::HFTokenizer;
pub trait Tokenizer: Send + Sync {
fn encode(&self, text: &str) -> Vec<usize>;
fn decode(&self, ids: &[usize]) -> String;
fn vocab_size(&self) -> usize;
fn special_tokens(&self) -> SpecialTokens;
}
#[derive(Debug, Clone, Copy)]
pub struct SpecialTokens {
pub pad: Option<usize>,
pub bos: Option<usize>,
pub eos: Option<usize>,
pub unk: Option<usize>,
}
impl Default for SpecialTokens {
fn default() -> Self {
Self {
pad: None,
bos: None,
eos: None,
unk: None,
}
}
}