Skip to content

Null-Err0r/yekdast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yekdast (یکدست) yekdast-rs

Crates.io

یک کتابخانه سریع، قابل تنظیم و مدرن به زبان Rust برای یکسان‌سازی و پیش‌پردازش متن فارسی.

Yekdast ابزاری قدرتمند برای تمیز کردن داده‌های متنی فارسی است که آن‌ها را برای مراحل بعدی مانند جستجو، تحلیل یا نمایش در برنامه‌ها آماده می‌کند.


## چرا Yekdast؟

  • 🚀 سریع و بهینه: نوشته شده با Rust برای بهترین عملکرد ممکن.
  • 🔧 کاملاً قابل تنظیم: شما می‌توانید دیکشنری‌های دلخواه خود را برای مدیریت کلمات مرکب، اصلاح کلمات محاوره‌ای و قوانین جایگزینی سفارشی ارائه دهید.
  • 🧠 هوشمند: قابلیت مدیریت هوشمند نیم‌فاصله (ZWNJ) برای پیشوندها، پسوندها و کلمات مرکب.
  • 🛡️ امن: بخش‌های حساس متن مانند URL، ایمیل، کد و تگ‌های HTML به صورت خودکار محافظت می‌شوند.
  • ✨ جامع: مجموعه‌ای کامل از قابلیت‌ها شامل یکسان‌سازی حروف، ارقام، علائم نگارشی و فاصله‌ها.

## نصب

برای استفاده از Yekdast در پروژه خود، کافی است خط زیر را به فایل Cargo.toml اضافه کنید:

[dependencies]
yekdast = "0.1.0" 

## شروع سریع

استفاده از کتابخانه با تنظیمات پیش‌فرض بسیار ساده است.

use yekdast::{normalize_text, NormalizeOptions};

fn main() {
    let messy_text = "سلام, من يك برنامه نويس هستم و در كتاب خانه كار مي كنم.";
    
    // استفاده از تنظیمات پیش‌فرض
    let options = NormalizeOptions::default();
    
    let clean_text = normalize_text(messy_text, &options);
    
    println!("متن اصلی: {}", messy_text);
    println!("متن اصلاح شده: {}", clean_text);
    // خروجی: متن اصلاح شده: سلام، من یک برنامه نویس هستم و در کتاب خانه کار می کنم.
}

## استفاده پیشرفته و گزینه‌ها

قدرت واقعی Yekdast در قابلیت تنظیم آن است. شما می‌توانید تمام جنبه‌های نرمال‌سازی را کنترل کنید.

use yekdast::{normalize_text, NormalizeOptions, DigitPolicy};
use std::collections::HashMap;

fn main() {
    let text = "من توی خونه شماره 123 کار میکنم و علاقه مند به برنامه نویسی هستم. میباشد.";

    // ۱. دیکشنری کلمات محاوره‌ای به رسمی
    let mut slang_map = HashMap::new();
    slang_map.insert("توی".to_string(), "در".to_string());
    slang_map.insert("خونه".to_string(), "خانه".to_string());

    // ۲. لیست کلمات مرکب برای اعمال نیم‌فاصله
    let zwnj_words = vec![
        "علاقه مند".to_string(),
        "کار میکنم".to_string(), // این یک مثال است، معمولاً برای افعال استفاده نمی‌شود
    ];

    // ۳. قوانین جایگزینی سفارشی
    let custom_rules = vec![
        ("میباشد.".to_string(), "است.".to_string()),
    ];

    // ۴. ساختن تنظیمات نهایی
    let options = NormalizeOptions {
        digits: DigitPolicy::Fa, // تبدیل اعداد به فارسی
        slang_map,
        zwnj_compound_words: zwnj_words,
        custom_rules,
        ..Default::default()
    };
    
    let clean_text = normalize_text(text, &options);

    println!("{}", clean_text);
    // خروجی: من در خانه شماره ۱۲۳ کار‌می‌کنم و علاقه‌مند به برنامه نویسی هستم. است.
}

## لیست کامل قابلیت‌ها

  • یکسان‌سازی حروف عربی (ي, ك) به فارسی (ی, ک)
  • نرمال‌سازی و تبدیل ارقام (فارسی، عربی، لاتین)
  • اصلاح علائم نگارشی (کاما، نقطه ویرگول، علامت سوال)
  • مدیریت هوشمند نیم‌فاصله (ZWNJ) برای پیشوندها (می/نمی)، پسوندها (ها/تر/ترین) و کلمات مرکب سفارشی
  • قابلیت تعریف دیکشنری سفارشی برای تبدیل کلمات محاوره‌ای به رسمی
  • قابلیت تعریف قوانین جایگزینی سفارشی
  • پاک‌سازی فاصله‌گذاری‌های اضافه
  • نرمال‌سازی کاراکترهای خط جدید (Newlines)
  • حذف اعراب و کشیدگی (تطویل)
  • محافظت خودکار از URL, ایمیل, کد و تگ‌های HTML
  • پشتیبانی از فرمت‌های مختلف نرمال‌سازی یونیکد (NFC, NFKC)

## مشارکت

مشارکت در این پروژه مورد استقبال قرار می‌گیرد. لطفاً برای گزارش باگ یا ارائه پیشنهاد، یک Issue جدید باز کنید یا یک Pull Request ارسال نمایید.


📄 License | لایسنس

This project is licensed under the MIT License.
این پروژه تحت لایسنس MIT منتشر شده است.

Repo Badge

About

Yekdast ( یکدست )

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages