Trait creature_feature::traits::IterFtzr
source · pub trait IterFtzr<InputData> {
type TokenGroup;
type Iter: Iterator<Item = Self::TokenGroup>;
// Required method
fn iterate_features(&self, input: InputData) -> Self::Iter;
}Expand description
A featurizer that can only iterate over the original data.
This is implemented for all featurizers in creature_feature for all of the following: IterFtzr<&str>,IterFtzr<&String>, IterFtzr<&[T]>,IterFtzr<&Vec<T>>,IterFtzr<&[T; N]>.
Examples
use creature_feature::ftzrs::bigram;
use creature_feature::traits::Ftzr;
use creature_feature::convert::Bag;
let data = &[1, 2, 3, 4, 5];
for bg in bigram().iterate_features(data) {
println!("{:?}", bg)
}
//[1, 2]
//[2, 3]
//[3, 4]
//[4, 5]Given an instance of IterFtzr<InputData>, it is very easy to implement the more general Ftzr<InputData>
use creature_feature::traits::IterFtzr;
struct MyIterFtzr;
impl<InputData> Ftzr<InputData> for MyIterFtzr
where
MyIterFtzr: IterFtzr<InputData>,
{
type TokenGroup = <Self as IterFtzr<InputData>>::TokenGroup;
fn push_tokens<Push>(&self, input: InputData, push: &mut Push)
where
Push: FnMut(Self::TokenGroup) -> (),
{
for t in self.iterate_features(input) {
push(t)
}
}
}Required Associated Types§
sourcetype TokenGroup
type TokenGroup
Type of tokens produced by the featurizer. Usually something like &'a [T] (for one dimensional data)
sourcetype Iter: Iterator<Item = Self::TokenGroup>
type Iter: Iterator<Item = Self::TokenGroup>
The associated iterator. For example: NGramIter, MultiFtzrIter, etc
Required Methods§
sourcefn iterate_features(&self, input: InputData) -> Self::Iter
fn iterate_features(&self, input: InputData) -> Self::Iter
Similar to into_iter, but for featurizers.