Expand description
A thread-safe text classifier library using ONNX models for embedding and classification.
§Basic Usage
use prefrontal::{Classifier, BuiltinModel, ClassDefinition};
let classifier = Classifier::builder()
.with_model(BuiltinModel::MiniLM)?
.add_class(
ClassDefinition::new("positive", "Content with positive sentiment")
.with_examples(vec!["great", "awesome", "excellent"])
)?
.add_class(
ClassDefinition::new("negative", "Content with negative sentiment")
.with_examples(vec!["bad", "terrible", "awful"])
)?
.build()?;
let (label, scores) = classifier.predict("This is a great movie!")?;
println!("Predicted class: {}", label);
§Thread Safety
The classifier is thread-safe and can be shared across threads using Arc
:
use prefrontal::{Classifier, BuiltinModel, ClassDefinition};
use std::sync::Arc;
use std::thread;
let classifier = Arc::new(Classifier::builder()
.with_model(BuiltinModel::MiniLM)?
.add_class(
ClassDefinition::new("example", "Example class")
.with_examples(vec!["sample text"])
)?
.build()?);
let mut handles = vec![];
for _ in 0..3 {
let classifier = Arc::clone(&classifier);
handles.push(thread::spawn(move || {
classifier.predict("test text").unwrap();
}));
}
for handle in handles {
handle.join().unwrap();
}
Re-exports§
pub use classifier::Classifier;
pub use classifier::ClassifierBuilder;
pub use classifier::ClassifierError;
pub use classifier::ClassifierInfo;
pub use classifier::ClassDefinition;
pub use model_manager::ModelManager;
pub use model_manager::ModelError;
Modules§
Structs§
- Model
Characteristics - Characteristics of a model, including its capabilities and resource requirements
- Runtime
Config
Enums§
- Builtin
Model - Built-in models that can be used with the classifier