libgrammstein 0.1.0

Hybrid language model (N-gram + Embeddings) for WFST text correction
//! Subword embeddings (FastText-style).
//!
//! This module provides:
//! - BPE tokenizer for subword segmentation
//! - Subword extraction for FastText-style embeddings
//! - Skip-gram training with negative sampling
//! - Word embedding lookup with subword fallback
//!
//! # Example
//!
//! ```ignore
//! use libgrammstein::embedding::{SubwordEmbedding, EmbeddingTrainerBuilder};
//! use libgrammstein::corpus::PlaintextReader;
//!
//! // Train embeddings from corpus
//! let reader = PlaintextReader::from_file("corpus.txt")?;
//! let model = EmbeddingTrainerBuilder::new()
//!     .dim(100)
//!     .window_size(5)
//!     .min_count(5)
//!     .epochs(5)
//!     .train(reader)?;
//!
//! // Get word vectors
//! let vec = model.word_vector("hello");
//!
//! // Find similar words
//! let similar = model.most_similar("king", 10);
//!
//! // Compute analogy: "king" - "man" + "woman" ≈ "queen"
//! let results = model.analogy("man", "king", "woman", 5);
//! ```

mod acoustic;
mod bpe;
mod model;
mod phonetic;
mod trainer;

#[cfg(feature = "gpu")]
pub mod gpu;

pub use bpe::{
    extract_subwords, hash_subword, BpeTokenizer, BpeTrainer, MergeOp, BPE_END_OF_WORD, BPE_UNKNOWN,
};

pub use model::{
    SubwordEmbedding, DEFAULT_BUCKET_COUNT, DEFAULT_EMBEDDING_DIM, DEFAULT_MAX_SUBWORD_LEN,
    DEFAULT_MIN_SUBWORD_LEN,
};

pub use trainer::{EmbeddingConfig, EmbeddingProgress, EmbeddingTrainer, EmbeddingTrainerBuilder};

pub use phonetic::{PhoneticEmbedding, DEFAULT_PHONETIC_FUEL, DEFAULT_PHONETIC_WEIGHT};

pub use acoustic::{
    AcousticEmbeddingConfig, AcousticEmbeddingStats, AcousticEncoder, AcousticWordEmbedding,
    LinearEncoder, PoolingStrategy,
};

#[cfg(feature = "gpu")]
pub use gpu::{
    GpuAccelerator, GpuBatchDotProduct, GpuContext, GpuError, GpuGradientAccum, GpuSigmoid,
    GpuSimilaritySearch,
};