pub struct AnalysisWorker { /* private fields */ }Expand description
A reusable tokenization session over a Tokenizer’s full analysis
chain (character filters → segmentation → token filters), owning every
per-call buffer: the Viterbi lattice and backtrace scratch (via
SegmentWorker), the normalized-text buffer the character filters
operate on, and the offset-mapping scratch.
Compared to Tokenizer::tokenize, repeated calls avoid the fresh
lattice allocation, and — when character filters are configured — both
the per-call String promotion of the input and the per-token surface
String allocations (surfaces borrow the worker’s buffer instead).
Create a worker with Tokenizer::new_worker or
Tokenizer::into_worker; it stays permanently bound to that
tokenizer’s dictionary and filter chain. Returned tokens borrow the
worker, so they must be consumed before the next call — the usual
per-line loop compiles as-is:
let mut worker = tokenizer.new_worker();
for line in lines {
let tokens = worker.tokenize(line)?;
for token in &tokens {
// use token.surface, ...
}
}The worker is Send + Sync; the &mut self API means cross-thread
sharing requires external synchronization (one worker per thread, or a
Mutex as lindera-binding-core does).
Implementations§
Source§impl AnalysisWorker
impl AnalysisWorker
Sourcepub fn tokenize<'w>(
&'w mut self,
text: &'w str,
) -> LinderaResult<Vec<Token<'w>>>
pub fn tokenize<'w>( &'w mut self, text: &'w str, ) -> LinderaResult<Vec<Token<'w>>>
Tokenizes text through the full analysis chain, reusing this
worker’s internal buffers.
Produces exactly the same tokens as Tokenizer::tokenize for the
same input and configuration. The returned tokens borrow both
text and this worker, so they must be consumed before the next
call.
§引数
text- The input text to tokenize.
§戻り値
The filtered tokens, in reading order, with byte offsets corrected back to the original (pre-filter) text.
Sourcepub fn tokenize_nbest<'w>(
&'w mut self,
text: &'w str,
n: usize,
unique: bool,
cost_threshold: Option<i64>,
) -> LinderaResult<Vec<(Vec<Token<'w>>, i64)>>
pub fn tokenize_nbest<'w>( &'w mut self, text: &'w str, n: usize, unique: bool, cost_threshold: Option<i64>, ) -> LinderaResult<Vec<(Vec<Token<'w>>, i64)>>
Tokenizes text and returns the top-N results with costs, through
the full analysis chain, reusing this worker’s internal buffers.
Produces exactly the same results as Tokenizer::tokenize_nbest
for the same input and configuration.
§引数
text- The input text to tokenize.n- Maximum number of tokenizations to return.unique- Deduplicate results with identical word boundaries.cost_threshold- Discard paths costing more than best + threshold.
§戻り値
Up to n (tokens, cost) pairs ordered by cost (best first).
Sourcepub fn set_keep_whitespace(&mut self, keep: bool)
pub fn set_keep_whitespace(&mut self, keep: bool)
Sets whether whitespace tokens are kept in the output for subsequent calls.
§引数
keep-trueto keep whitespace tokens,falseto drop them.
Auto Trait Implementations§
impl !RefUnwindSafe for AnalysisWorker
impl !UnwindSafe for AnalysisWorker
impl Freeze for AnalysisWorker
impl Send for AnalysisWorker
impl Sync for AnalysisWorker
impl Unpin for AnalysisWorker
impl UnsafeUnpin for AnalysisWorker
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
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> ⓘ
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> ⓘ
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>
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
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.