Archive for 2012/04

دیکشنری سبک فارسی/انگلیسی

۱۳۹۱/۰۱/۱۷ ۱۵:۴۶ Salar https://draft.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۹۱/۰۱/۱۷ دسته بندی : ، ، ، ، 5

مدتی بود که یک دیکشنری ساده برای خودم نوشته بودم که خیلی از نیازهای خودم رو برطرف می کرد. تصمیم گرفتم که کمی روی امکاناتش کار کنم که برای همه قابل استفاده باشه و نتیجه اش شد این برنامه.
اما چرا یک دیکشنری جدید؟ تعداد دیکشنری با امکانات مختلف که خیلی زیاد بود. جواب این سوال در ویژگهای خاص این دیکشنری است:

ویژگی های این دیکشنری:
  • ترجمه لغت فارسی به انگلیسی و انگلیسی به فارسی
  • غلط یاب هوشمند با استفاده از الگوریتم و کتابخانه پیشرفته برای فارسی و انگلیسی
  • غلط یاب جداگانه جهت تطبیق کلمات یافت نشده برای نمایش معانی کلمات مشابه موجود
  • بهینه سازی شده برای شروع سریع 
  • نمایش معانی کلمات موجود در حافظه موقت سیستم (Clipboard)
  • تلفظ کلمات انگلیسی با صدای سیست

چند ویژگی خیلی مهم این برنامه که اشاره شد می تونه توجیهی مناسبی برای استفاده از اون با وجود سایر دیکشنری ها باشه.
  • اجرای سریع و نمایش سریع نتایج
  • وجود چند نوع غلط یاب پیشرفته که کلمات مشابه را نشان می دهند. این موضوع از این جهت مهمه که معمولا کلمات تایپ شده در دیکشنری برای فرد ناآشنا هستند، پس امکان تایپ غلط بسیار زیاد است. متاسفانه اکثر برنامه ها در این زمینه ضعیف عمل می کنند.
  • نمایش معانی کلمات از clipboard، این مورد هم قبلا در برنامه مثل babylon با روش point-click بسیار سریع و ساده عمل می کردند بسیار مفید بود، اما از زمانی که اکثر برنامه ها از سیستم های جدید نمایش متون استفاده می کنند (Hardware accelerated rendering & ClearType fonts)، دیگه این روش کار ساز نیست و لغت رو باید در حافظه کپی کرد. این برنامه یک قدم سریع برداشته و معنای لغت موجود در حافظه رو نشون میده.
صفحه اصلی - نمایش غلط گیر و کلمات مشابه
نمایش غلط گیر و کلمات مشابه برای فارسی

نمایش معنی نزدیکترین کلمه با اصلاح غلط املایی در اول آن

 دانلود
قبل از استفاده از این برنامه باید Microsoft .NET Framework 4 رو در سیستم خود نصب شده داشته باشد.

برای دانلود برنامه به صفحه آن در codeplex مراجعه کنید، در این آدرس.

بررسی مختصر کدها
این برنامه با زبان #C نوشته شده، رایگان و کدباز تحت MPL2 هست.
کدهای برنامه در آدرس پروژه به صورت آنلاین نیز قابل مشاهده است. در اینجا.

فراخونی با تاخیر و گرم کردن
گرم کردن یا اصطلاحا Warm-Up علت اصلی سرعت بهینه اجرا برنامه است. به این صورت که در یک thread جداگانه برنامه اقدام به ایجاد یک اتصال به پایگاه داده می کند، این کار قبل از شروع ایجاد فرم صورت می گیرد. به علت خاصیت thread برای اجرای همزمان، این دو کار همزان اجرا می شوند. در thread اصلی برنامه فرم ایجاد شده و thread دیگر اولین اتصال به پایگاه داده که بسیار وقت گیر انجام می شود.
اولین اتصال به پایگاه داده از این جهت مهم است معمولا این اتصال پس از بسته شدن به صورت نیمه فعال باز باقی می ماند و در صورتی که درخواستی مجددا صورت گیرد، بدون نیاز به باز کردن اتصال جدید همین اتصال نیمه فعال، فعال شده و مورد استفاده قرار می گیرد.

در طی همین مراحل نیز در thread جدید و جداگانه دیگری بانک اطلاعاتی غلط یابها بارگذاری می شود که شامل فارسی و انگلیسی است. بارگذاری این دو بانک نیز زمانبر است ولی به علت استفاده از thread ها این تاخیر های مشاهده نمی شوند.

ابزارهای و کامپوننت های برنامه
* دیتابیس لغات، از جمله آنهایی هست که دست به دست شده و بالاخره به من رسیده، به همین علت نمی دونم کی زحمت تهیه اش را کشیده.
* کتابخانه غلط یاب NHunspell، که الگوریتم پیشرفته آن که به نام Hunspell در مجموعه نرم افزارهای بسیار زیاد و مشهوری استفاده شده.
* تلفظ کننده متون که توکار در نسخه 4 دات نت است. در برنامه تنظیمات پیش فرض سیستم استفاده شده و در صورت اعمال تغییر در گوینده و صدا و غیره به برنامه نیز اعمال خواهد شد.
* کنترل نمایش دهنده لیست پیشنهادات که مخصوصا برای این برنامه نوشتم؛ به این علت که AutoComplete استاندارد که توسط کنترل ارائه میشه جوابگوی نیاز نبود.

نکته:
بانک اطلاعاتی این برنامه Access هست و اگر سیستم 64 بیتی باشد، امکان اتصال به بانک میسر نیست زیرا برای Access فقط درایور 32 بیتی موجود است. راه حل خیلی ساده تنظیم platform برنامه بر روی x86 هست. با این کار کامپایلر زمان اجرای دات نت همیشه برنامه را به صورت 32 بیتی کامپایل می کند. در نهایت امکان دسترسی به دیتابیس هم در سیستم 32 بیتی و هم در 64 بیتی محیا میشه.

امیدوارم مفید واقع بشه.