Skip to main content

GenerationStrategy

Enum GenerationStrategy 

Source
pub enum GenerationStrategy {
    Template,
    EDA,
    BackTranslation,
    MixUp,
    GrammarBased,
    SelfTraining,
    WeakSupervision,
}
Expand description

Available synthetic data generation strategies.

Each strategy uses different techniques for creating synthetic samples, with trade-offs between quality, diversity, and computational cost.

§Example

use aprender::synthetic::GenerationStrategy;

let strategy = GenerationStrategy::EDA;
assert_eq!(strategy.name(), "eda");
assert!(strategy.description().contains("Augmentation"));

§References

  • Template: Cubuk et al. (2019). AutoAugment. CVPR.
  • EDA: Wei & Zou (2019). Easy Data Augmentation. EMNLP.
  • BackTranslation: Sennrich et al. (2016). Back-translation. ACL.
  • MixUp: Zhang et al. (2018). MixUp. ICLR.
  • GrammarBased: Jia & Liang (2016). Data Recombination. ACL.
  • SelfTraining: Xie et al. (2020). Noisy Student. CVPR.
  • WeakSupervision: Ratner et al. (2017). Snorkel. VLDB.

Variants§

§

Template

Template-based generation with slot filling.

Uses parameterized templates to generate variations by filling slots with different values. Fast and controllable, but limited diversity.

§

EDA

Easy Data Augmentation (synonym replacement, random insertion/swap/deletion).

Simple text transformations that preserve semantics while creating surface-level variations. Good baseline with low computational cost.

§

BackTranslation

Back-translation through pivot representation.

Translates to intermediate representation and back, creating paraphrases. High quality but requires translation models or intermediate formats.

§

MixUp

MixUp interpolation in embedding space.

Creates virtual examples by interpolating between existing samples in latent space. Improves generalization and decision boundaries.

§

GrammarBased

Grammar-based recombination from rules.

Uses formal grammar to generate valid samples by recombining syntactic components. Guarantees syntactic correctness.

§

SelfTraining

Self-training with pseudo-labels.

Uses model predictions on unlabeled data as synthetic labels. Iteratively improves with curriculum ordering.

§

WeakSupervision

Programmatic weak supervision with labeling functions.

Uses heuristic rules to label unlabeled data, then combines noisy labels using a generative model.

Implementations§

Source§

impl GenerationStrategy

Source

pub fn name(&self) -> &'static str

Get the strategy name as a string identifier.

Source

pub fn description(&self) -> &'static str

Get a human-readable description of the strategy.

Source

pub fn computational_cost(&self) -> u8

Get the relative computational cost (1 = lowest, 5 = highest).

Source

pub fn requires_model(&self) -> bool

Check if this strategy requires a trained model.

Source

pub fn preserves_labels(&self) -> bool

Check if this strategy preserves label semantics.

Source

pub fn all() -> &'static [GenerationStrategy]

Get all available strategies.

Source

pub fn from_name(name: &str) -> Option<Self>

Parse strategy from string name.

§Arguments
  • name - Strategy name (case-insensitive)
§Returns

Some(strategy) if valid, None if unrecognized.

Trait Implementations§

Source§

impl Clone for GenerationStrategy

Source§

fn clone(&self) -> GenerationStrategy

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GenerationStrategy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for GenerationStrategy

Source§

fn default() -> Self

Default strategy is EDA (simple, effective, low cost).

Source§

impl Display for GenerationStrategy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for GenerationStrategy

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for GenerationStrategy

Source§

fn eq(&self, other: &GenerationStrategy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for GenerationStrategy

Source§

impl Eq for GenerationStrategy

Source§

impl StructuralPartialEq for GenerationStrategy

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V