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§

source

type TokenGroup

Type of tokens produced by the featurizer. Usually something like &'a [T] (for one dimensional data)

source

type Iter: Iterator<Item = Self::TokenGroup>

The associated iterator. For example: NGramIter, MultiFtzrIter, etc

Required Methods§

source

fn iterate_features(&self, input: InputData) -> Self::Iter

Similar to into_iter, but for featurizers.

Implementors§

source§

impl<'a> IterFtzr<&'a str> for Emptywhere Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <Empty as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <Empty as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a> IterFtzr<&'a str> for SliceGramwhere Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <SliceGram as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <SliceGram as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a> IterFtzr<&'a str> for Wholewhere Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <Whole as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <Whole as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a> IterFtzr<&'a String> for Emptywhere Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <Empty as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <Empty as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a> IterFtzr<&'a String> for SliceGramwhere Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <SliceGram as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <SliceGram as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a> IterFtzr<&'a String> for Wholewhere Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <Whole as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <Whole as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a, Origin, TA: Hash, TB: Hash, A, B> IterFtzr<&'a Origin> for MultiFtzr<A, B>where Origin: ?Sized + 'a, A: IterFtzr<&'a Origin, TokenGroup = TA>, B: IterFtzr<&'a Origin, TokenGroup = TB>,

source§

impl<'a, T> IterFtzr<&'a [T]> for Empty

source§

impl<'a, T> IterFtzr<&'a [T]> for SliceGram

§

type TokenGroup = &'a [T]

§

type Iter = SliceGramIter<&'a [T]>

source§

impl<'a, T> IterFtzr<&'a [T]> for Whole

source§

impl<'a, T> IterFtzr<&'a Vec<T, Global>> for Emptywhere Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <Empty as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <Empty as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, T> IterFtzr<&'a Vec<T, Global>> for SliceGramwhere Self: IterFtzr<&'a [T]>,

source§

impl<'a, T> IterFtzr<&'a Vec<T, Global>> for Wholewhere Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <Whole as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <Whole as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, T, Y, X, const N: usize> IterFtzr<&'a [T; N]> for BookEnds<X, Y>where Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <BookEnds<X, Y> as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <BookEnds<X, Y> as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, T, Y, X, const N: usize> IterFtzr<&'a [T; N]> for GapGram<X, Y>where Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <GapGram<X, Y> as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <GapGram<X, Y> as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, T, const N: usize> IterFtzr<&'a [T; N]> for Emptywhere Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <Empty as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <Empty as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, T, const N: usize> IterFtzr<&'a [T; N]> for SliceGramwhere Self: IterFtzr<&'a [T]>,

source§

impl<'a, T, const N: usize> IterFtzr<&'a [T; N]> for Wholewhere Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <Whole as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <Whole as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, T, const N: usize> IterFtzr<&'a [T]> for NGram<N>where [T; N]: TryFrom<&'a [T]>,

§

type TokenGroup = [T; N]

§

type Iter = NGramIter<'a, T, N>

source§

impl<'a, T, const N: usize> IterFtzr<&'a Vec<T, Global>> for NGram<N>where [T; N]: TryFrom<&'a [T]>,

§

type TokenGroup = [T; N]

§

type Iter = NGramIter<'a, T, N>

source§

impl<'a, T, const N: usize, const M: usize> IterFtzr<&'a [T; M]> for NGram<N>where [T; N]: TryFrom<&'a [T]>,

§

type TokenGroup = [T; N]

§

type Iter = NGramIter<'a, T, N>

source§

impl<'a, T: 'a, A, B, U1: 'a, U2: 'a> IterFtzr<&'a [T]> for GapGram<A, B>where A: LinearFixed + IterFtzr<&'a [T], TokenGroup = U1>, B: LinearFixed + IterFtzr<&'a [T], TokenGroup = U2>,

§

type TokenGroup = GapPair<U1, U2>

§

type Iter = GapGramIter<<A as IterFtzr<&'a [T]>>::Iter, <B as IterFtzr<&'a [T]>>::Iter, &'a [T], U1, U2>

source§

impl<'a, T: 'a, TA: 'a, TB: 'a, A, B> IterFtzr<&'a [T]> for BookEnds<A, B>where A: IterFtzr<&'a [T], TokenGroup = TA>, B: IterFtzr<&'a [T], TokenGroup = TB>,

§

type TokenGroup = FrontBack<TA, TB>

§

type Iter = BookEndsIter<<A as IterFtzr<&'a [T]>>::Iter, <B as IterFtzr<&'a [T]>>::Iter>

source§

impl<'a, Y, X> IterFtzr<&'a str> for BookEnds<X, Y>where Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <BookEnds<X, Y> as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <BookEnds<X, Y> as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a, Y, X> IterFtzr<&'a str> for GapGram<X, Y>where Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <GapGram<X, Y> as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <GapGram<X, Y> as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a, Y, X> IterFtzr<&'a String> for BookEnds<X, Y>where Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <BookEnds<X, Y> as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <BookEnds<X, Y> as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a, Y, X> IterFtzr<&'a String> for GapGram<X, Y>where Self: IterFtzr<&'a [u8]>,

§

type TokenGroup = <GapGram<X, Y> as IterFtzr<&'a [u8]>>::TokenGroup

§

type Iter = <GapGram<X, Y> as IterFtzr<&'a [u8]>>::Iter

source§

impl<'a, Y, X, T> IterFtzr<&'a Vec<T, Global>> for BookEnds<X, Y>where Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <BookEnds<X, Y> as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <BookEnds<X, Y> as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, Y, X, T> IterFtzr<&'a Vec<T, Global>> for GapGram<X, Y>where Self: IterFtzr<&'a [T]>,

§

type TokenGroup = <GapGram<X, Y> as IterFtzr<&'a [T]>>::TokenGroup

§

type Iter = <GapGram<X, Y> as IterFtzr<&'a [T]>>::Iter

source§

impl<'a, const N: usize> IterFtzr<&'a str> for NGram<N>where [u8; N]: TryFrom<&'a [u8]>,

§

type TokenGroup = [u8; N]

§

type Iter = NGramIter<'a, u8, N>

source§

impl<'a, const N: usize> IterFtzr<&'a String> for NGram<N>where [u8; N]: TryFrom<&'a [u8]>,

§

type TokenGroup = [u8; N]

§

type Iter = NGramIter<'a, u8, N>

source§

impl<F, Sentence, Word> IterFtzr<Sentence> for ForEach<F, (Sentence, Word)>where Sentence: IntoIterator<Item = Word>, F: IterFtzr<Word>,

§

type TokenGroup = <F as IterFtzr<Word>>::TokenGroup

§

type Iter = ForEachIter<F, Sentence, Word, <Sentence as IntoIterator>::IntoIter, <F as IterFtzr<Word>>::Iter>