این یک برنامه دسکتاپ (Desktop Application) قدرتمند است که با پایتون و کتابخانه Tkinter توسعه داده شده و برای تحلیلگران متن، زبانشناسان و پژوهشگران طراحی شده است. این ابزار به کاربران اجازه میدهد تا مجموعهای بزرگ از متون (Corpus) را که در فایلهای .docx قرار دارند، پردازش کرده و جستجوهای پیچیدهای بر اساس کلمات همنشین (Collocations) و نقش دستوری آنها (Part-of-Speech) انجام دهند.
این پروژه به عنوان یک نمونه کامل از ترکیب پردازش زبان طبیعی (NLP) با رابط کاربری گرافیکی (GUI) در پایتون عمل میکند.
- پردازش دستهای فایلهای متنی: قابلیت خواندن و پردازش تمام فایلهای
.docxموجود در یک پوشه و زیرپوشههای آن. - اصلاح هوشمند متن: امکان اعمال یک لیست اصلاحات سفارشی (از طریق فایل اکسل) برای تصحیح غلطهای املایی رایج در کل مجموعه متون.
- پردازش هوشمند پاراگراف: منطق پیشرفته برای ادغام پاراگرافهای ناقص (که به نقطه ختم نمیشوند) و شکستن پاراگرافهای بسیار طولانی از محل پایان جملات برای استانداردسازی دادهها.
- برچسبگذاری نقش دستوری (POS Tagging): استفاده از کتابخانه
hazmبرای تحلیل دستوری جملات و تشخیص اجزای کلام (اسم، فعل، صفت و...). - کش (Cache) کردن دادهها: پس از اولین پردازش که ممکن است زمانبر باشد، نتایج در یک فایل
.pklذخیره میشوند. این ویژگی باعث میشود برنامه در اجراهای بعدی تقریباً بلافاصله و با سرعت بسیار بالا بارگذاری شود. - جستجوی پیشرفته و چندوجهی:
- جستجو بر اساس یک عبارت دقیق (چند کلمهای).
- تحلیل کلمات قبل و بعد از عبارت کلیدی.
- فیلتر کردن نتایج بر اساس یک کلمه خاص یا شروع یک کلمه.
- فیلتر کردن نتایج بر اساس نقش دستوری کلمه (مثلاً یافتن تمام اسمهایی که بعد از عبارت کلیدی آمدهاند).
- رابط کاربری تعاملی:
- نمایش نتایج در یک جدول قابل مرتبسازی (Sortable).
- نمایش جملات منبع به همراه نام کتاب برای هر نتیجه.
- پشتیبانی کامل از نمایش صحیح متون راستبهچپ (RTL) حتی در حالتهای پیچیده.
- دکمه "پردازش مجدد" برای بهروزرسانی دادهها در صورت افزودن کتابهای جدید.
- زبان برنامهنویسی: Python 3
- رابط کاربری گرافیکی:
tkinter(به همراه ویجتهای مدرنttk) - پردازش زبان طبیعی:
hazm - کار با فایلها:
pandasوopenpyxlبرای خواندن فایل اکسل لیست اصلاحات.python-docxبرای خواندن فایلهای Word.pickleبرای ذخیره و بازیابی فایل کش.
برای اجرای این برنامه به موارد زیر نیاز دارید:
- Python (نسخه 3.8 یا بالاتر)
pip(ابزار مدیریت بستههای پایتون که معمولاً به همراه پایتون نصب میشود)
-
کلون کردن ریپازیتوری:
git clone https://github.com/your-username/your-repository-name.git cd your-repository-name -
(توصیهشده) ساخت یک محیط مجازی:
# ساخت محیط مجازی python -m venv venv # فعالسازی در ویندوز venv\Scripts\activate # فعالسازی در لینوکس یا macOS source venv/bin/activate
-
نصب کتابخانههای مورد نیاز: یک فایل با نام
requirements.txtدر پوشه اصلی پروژه بسازید و محتوای زیر را در آن کپی کنید:pandas hazm python-docx openpyxl
سپس دستور زیر را برای نصب این کتابخانهها اجرا کنید:
pip install -r requirements.txt
-
قرار دادن مدل
hazm: فایل مدلpos_tagger.modelکه مربوط به کتابخانهhazmاست را دانلود کرده و در کنار فایل اصلی برنامه (analyzer_app.py) قرار دهید.
-
اجرای برنامه:
python analyzer_app.py
-
پردازش اولیه (فقط برای بار اول):
- در اولین اجرا، برنامه تشخیص میدهد که فایل کش (
preprocessed_data.pkl) وجود ندارد. - ابتدا یک پنجره برای انتخاب پوشه حاوی کتابها باز میشود. پوشه مورد نظر را انتخاب کنید.
- سپس پنجره دیگری برای انتخاب فایل اکسل لیست اصلاحات باز میشود (این مرحله اختیاری است).
- برنامه شروع به پردازش تمام فایلها میکند. این فرآیند ممکن است بسته به حجم دادههای شما چند دقیقه طول بکشد. لطفاً تا پایان آن صبور باشید.
- پس از اتمام، فایل کش
preprocessed_data.pklبه صورت خودکار ساخته میشود.
- در اولین اجرا، برنامه تشخیص میدهد که فایل کش (
-
اجراهای بعدی:
- از این به بعد، برنامه با خواندن مستقیم فایل کش، در عرض چند ثانیه و با سرعت بالا اجرا خواهد شد.
-
جستجو و تحلیل:
- از ابزارهای موجود در بالای صفحه برای انجام جستجوهای خود استفاده کنید.
- با کلیک بر روی هر نتیجه در جدول، میتوانید جملات منبع آن را در کادر پایینی مشاهده کنید.
- اگر کتابهای جدیدی به پوشه خود اضافه کردید، از دکمه "پردازش مجدد" برای بهروزرسانی کامل پایگاه داده استفاده کنید.
/your-repository-name
|-- analyzer_app.py # اسکریپت اصلی برنامه
|-- pos_tagger.model # فایل مدل Hazm (باید در اینجا کپی شود چون متاسفانه با کتابخانه صلی لود نشد) .
|-- requirements.txt # لیست کتابخانههای مورد نیاز
|-- preprocessed_data.pkl # فایل کش (پس از اولین اجرا ساخته میشود)
`-- README.md # همین فایل توضیحات
این پروژه تحت مجوز MIT منتشر شده است. برای اطلاعات بیشتر فایل LICENSE را مطالعه کنید.
(توصیه میشود یک فایل به نام LICENSE ساخته و متن مجوز MIT را در آن قرار دهید.)