pub struct Trainer { /* private fields */ }Expand description
CRF-based morphological analysis trainer for Japanese text
This trainer implements standard CRF-based morphological analysis training, adapted for Lindera’s architecture. It supports:
- Feature extraction from vocabulary and corpus
- L-BFGS optimization for weight learning
- Unknown word categorization for 6 character types
- Connection cost matrix generation
§Training Process
- Initialize feature provider with vocabulary entries
- Build lattices from training corpus
- Execute CRF training with L-BFGS optimization
- Extract learned weights and create final model
§Example
use lindera_trainer::{Trainer, TrainerConfig};
use std::io::Cursor;
// Create minimal training data for demonstration
let seed_csv = "これ,0,0,1000,連体詞,*,*,*,*,*,これ,コレ,コレ\n";
let char_def = "DEFAULT 0 1 0\nHIRAGANA 1 1 0\n0x3042..0x3096 HIRAGANA\n";
let unk_def = "DEFAULT,0,0,1500,名詞,一般,*,*,*,*,*,*,*\n";
let feature_def = "UNIGRAM:%F[0]\nUNIGRAM:%F[1]\n";
let rewrite_def = "*\tUNK\n";
let config = TrainerConfig::from_readers(
Cursor::new(seed_csv),
Cursor::new(char_def),
Cursor::new(unk_def),
Cursor::new(feature_def),
Cursor::new(rewrite_def)
).unwrap();
let trainer = Trainer::new(config).unwrap()
.regularization_cost(0.01)
.max_iter(10); // Reduced for doc test
// Note: In practice, you would load an actual corpus file
// let corpus = Corpus::from_reader(corpus_reader).unwrap();
// let model = trainer.train(corpus).unwrap();Implementations§
Source§impl Trainer
impl Trainer
Sourcepub fn new(config: TrainerConfig) -> Result<Self>
pub fn new(config: TrainerConfig) -> Result<Self>
Creates a new Trainer using the specified configuration.
Sourcepub fn regularization_cost(self, cost: f64) -> Self
pub fn regularization_cost(self, cost: f64) -> Self
Sets the regularization cost coefficient.
Sourcepub fn elastic_net_l1_ratio(self, ratio: f64) -> Self
pub fn elastic_net_l1_ratio(self, ratio: f64) -> Self
Sets the Elastic Net L1 ratio (0.0 to 1.0). When set, uses Elastic Net regularization instead of pure L1 or L2. l1_ratio=1.0 is pure L1, l1_ratio=0.0 is pure L2.
Sourcepub fn num_threads(self, threads: usize) -> Self
pub fn num_threads(self, threads: usize) -> Self
Sets the number of threads for training.
Sourcepub fn max_grouping_len(self, len: Option<usize>) -> Self
pub fn max_grouping_len(self, len: Option<usize>) -> Self
Sets the maximum grouping length for token sequences.
Sourcepub fn get_regularization_cost(&self) -> f64
pub fn get_regularization_cost(&self) -> f64
Get the regularization cost (lambda)
Sourcepub fn get_max_iter(&self) -> u64
pub fn get_max_iter(&self) -> u64
Get the maximum number of iterations
Sourcepub fn get_num_threads(&self) -> usize
pub fn get_num_threads(&self) -> usize
Get the number of threads
Auto Trait Implementations§
impl Freeze for Trainer
impl RefUnwindSafe for Trainer
impl Send for Trainer
impl Sync for Trainer
impl Unpin for Trainer
impl UnsafeUnpin for Trainer
impl UnwindSafe for Trainer
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.