token-dict 1.3.0

basic dictionary based tokenization
Documentation

token-dict

basic dictionary based tokenization

for example:

pub fn main(){
	let tokenizer=token_dict::file_lines_to_dict("words.txt").unwrap();
	let tokens:Vec<u32>=tokenizer.tokenize_str("some text to tokenize").collect();
	let detokens:String=tokenizer.detokenize_str(&tokens).collect();

	print!("[");
	for id in tokens.iter().take(tokens.len().saturating_sub(1)){print!("{id}, ")}
	if let Some(id)=tokens.last(){print!("{id}")}
	println!("]");

	println!("\"{detokens}\"");
}

possible output (id sequence depends what's in words.txt):

[375018, 32, 403933, 32, 410301, 32, 410782]
"some text to tokenize"

this tokenizer finds the next token based on whether it's a prefix of the remaining text, so despite being designed for word level tokenization it doesn't need to split on word boundaries first

pub fn main(){
	let tokenizer=token_dict::file_lines_to_dict("words.txt").unwrap();
	let tokens:Vec<u32>=tokenizer.tokenize_str("スペースは不要です").collect();
	let detokens:String=tokenizer.detokenize_str(&tokens).collect();

	print!("[");
	for id in tokens.iter().take(tokens.len().saturating_sub(1)){print!("{id}, ")}
	if let Some(id)=tokens.last(){print!("{id}")}
	println!("]");

	println!("\"{detokens}\"");
}

possible output (id sequence depends what's in words.txt):

[470364, 467937, 471716, 467952]
"スペースは不要です"