یک کتابخانه سریع، قابل تنظیم و مدرن به زبان Rust برای یکسانسازی و پیشپردازش متن فارسی.
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 ارسال نمایید.
This project is licensed under the MIT License.
این پروژه تحت لایسنس MIT منتشر شده است.