pub use crate::{Result, TextError};
pub use crate::tokenization::{
BPETokenizer, CharTokenizer, SubwordTokenizer, Tokenizer, WhitespaceTokenizer,
};
pub use crate::tokenization::advanced::FastTokenizer;
pub use crate::tokenization::unified::{
EfficientUnifiedTokenizer, TokenizerConfig, TokenizerFactory, UnifiedTokenizer,
};
pub use crate::vocab::{SpecialTokens, Vocabulary};
pub use crate::utils::{
BatchProcessor, CustomStep, OptimizedBatchOps, PreprocessingStep, StreamingBatchProcessor,
TextAugmenter, TextCleaner, TextNormalizer, TextPreprocessingPipeline,
};
pub use crate::embeddings::{
CombinedEmbeddings, EmbeddingUtils, PositionalEncoding, WordEmbedding,
};
pub use crate::datasets::{
AgNewsDataset, ClassificationDataset, ConsolidatedDataset, Dataset, DatasetConfig,
DatasetDownloader, DatasetUtils, ImdbDataset, LanguageModelingDataset, Multi30kDataset,
SequenceLabelingDataset, TranslationDataset, UnifiedDatasetLoader, WikiTextDataset,
};
pub use crate::generation::{
BeamHypothesis, BeamSearchDecoder, GenerationConfig, NGramRepetitionFilter, RepetitionPenalty,
TextGenerator, TextSampler,
};
pub use crate::analysis::{NgramExtractor, TextSimilarity, TextStatistics, TfIdfCalculator};
pub use crate::models::{
GenerationConfig as ModelGenerationConfig, ModelRegistry, TextDecoder, TextEncoder, TextModel,
};
pub use crate::models::registry::{create_model, get_config, get_global_registry, list_configs};
pub use crate::scirs2_ops::SciRS2TextOps;
pub use crate::scirs2_ops::string_ops::*;
pub use crate::scirs2_ops::advanced_analytics::{
compute_advanced_stats, AdvancedTextSampler, AdvancedTextStats, ComplexityAnalyzer,
ComplexityMetrics,
};
pub use crate::scirs2_ops::performance::{PerformanceMetrics, PerformanceMonitor};
pub use crate::scirs2_ops::vectorized_ops::*;
pub use crate::scirs2_ops::indexing::*;
pub use crate::scirs2_ops::memory::*;
pub use crate::convenience::{
BatchTextProcessor, ComprehensiveTextReport, EnhancedTextAnalyzer, LanguageDetector,
QuickTextProcessor, TextQualityAssessor,
};
pub use torsh_core::{DType, Device, Shape};
pub use torsh_tensor::Tensor;
#[macro_export]
macro_rules! preprocessing_pipeline {
(
normalize: (unicode: $unicode:expr, accents: $accents:expr, punctuation: $punct:expr),
clean: (urls: $urls:expr, emails: $emails:expr, html: $html:expr)
$(, custom: $custom:expr)*
) => {{
let normalizer = $crate::utils::TextNormalizer::default()
.normalize_unicode($unicode)
.remove_accents($accents)
.remove_punctuation($punct);
let cleaner = $crate::utils::TextCleaner::default()
.remove_urls($urls)
.remove_emails($emails)
.remove_html($html);
let mut pipeline = $crate::utils::TextPreprocessingPipeline::new()
.with_normalization(normalizer)
.with_cleaning(cleaner);
$(
pipeline = pipeline.add_custom_step(Box::new($crate::utils::CustomStep::new($custom, "custom".to_string())));
)*
pipeline
}};
}
#[macro_export]
macro_rules! vocabulary {
(
special_tokens: {
$($name:ident: $token:expr),* $(,)?
}
$(, min_freq: $min_freq:expr)?
) => {{
let mut special_tokens = $crate::vocab::SpecialTokens::default();
$(
match stringify!($name) {
"pad" => special_tokens.pad = $token.to_string(),
"unk" => special_tokens.unk = $token.to_string(),
"bos" => special_tokens.bos = $token.to_string(),
"eos" => special_tokens.eos = $token.to_string(),
"sep" => special_tokens.sep = $token.to_string(),
"cls" => special_tokens.cls = $token.to_string(),
"mask" => special_tokens.mask = $token.to_string(),
_ => {}
}
)*
let vocab = $crate::vocab::Vocabulary::new(Some(special_tokens));
vocab
}};
}
#[macro_export]
macro_rules! quick_process {
(
$text:expr
$(, normalize: $normalize:expr)?
$(, clean_urls: $clean_urls:expr)?
$(, clean_emails: $clean_emails:expr)?
$(, clean_html: $clean_html:expr)?
$(, lowercase: $lowercase:expr)?
) => {{
let mut pipeline = $crate::utils::TextPreprocessingPipeline::new();
$(
if $normalize {
let normalizer = $crate::utils::TextNormalizer::default();
pipeline = pipeline.with_normalization(normalizer);
}
)?
$(
if $clean_urls {
let cleaner = $crate::utils::TextCleaner::default().remove_urls(true).remove_emails(false).remove_html(false);
pipeline = pipeline.with_cleaning(cleaner);
}
)?
$(
if $clean_emails {
let cleaner = $crate::utils::TextCleaner::default().remove_urls(false).remove_emails(true).remove_html(false);
pipeline = pipeline.with_cleaning(cleaner);
}
)?
$(
if $clean_html {
let cleaner = $crate::utils::TextCleaner::default().remove_urls(false).remove_emails(false).remove_html(true);
pipeline = pipeline.with_cleaning(cleaner);
}
)?
$(
if $lowercase {
pipeline = pipeline.add_custom_step(Box::new($crate::utils::CustomStep::new(|text: &str| text.to_lowercase(), "lowercase".to_string())));
}
)?
pipeline.process_text($text)
}};
}
pub use preprocessing_pipeline;
pub use quick_process;
pub use vocabulary;