فرصت مطالعه ندارید؟ چکیده این مطلب را همینجا گوش دهید:
تحلیل فایلهای متنی حجیم، پژوهشهای طولانی یا پردازش مستندات قطور همیشه یکی از چالشهای زمانبر برای دانشجویان، نویسندگان و برنامهنویسان بوده است. وقتی با یک فایل متنی پانصد صفحهای روبهرو میشوید، باز کردن آن در نرمافزارهای پردازشگر کلمات معمولی میتواند سیستم شما را به شدت کند کند یا حتی از کار بیندازد. ساخت یک ابزار خط فرمان اختصاصی سبک وزن با پایتون به شما اجازه میدهد در کسری از ثانیه، بدون نیاز به محیطهای گرافیکی سنگین یا ابزارهای آنلاین مبهم، مغز متفکرانهی خود را روی دادههای متنی پیادهسازی کنید. در این مقاله یاد میگیرید چطور یک اسکریپت حرفهای و کاملاً کاربردی برای شمارش کلمات، خطوط، تشخیص واژگان پرتکرار و استخراج اطلاعات کلیدی بسازید.
| زبان برنامهنویسی | پایتون (نسخه ۳ به بالا) |
|---|---|
| ابزارهای وابسته | کتابخانههای داخلی و استاندارد پایتون (بدون نیاز به نصب پکیج خارجی) |
| نوع رابط کاربری | خط فرمان (Command Line Interface) |
| پشتیبانی از زبان فارسی | دارد (با رمزگذاری استاندارد UTF-8) |
| وضعیت دسترسی برای ایران | کاملاً آزاد و بدون محدودیت |
مسئله: چرا به تحلیلگر متنی خط فرمان نیاز داریم؟
تصور کنید یک فایل لاگ سنگین، یک کتاب دیجیتال با هزاران خط متن یا یک مقاله پژوهشی بسیار طولانی دارید و باید بدانید پرتکرارترین کلمات آن چیستند، چند خط و چند کلمه در کل مستند وجود دارد و کلمات کلیدی اصلی کدامند. استفاده از ابزارهای وبمحور برای فایلهای حجیم به دلیل محدودیت حجم آپلود یا مسائل حریم خصوصی مناسب نیست. از طرفی، نرمافزارهای اداری سنگین برای کارهای آماری دقیق انعطاف لازم را ندارند. در این میان، داشتن یک اسکریپت سبک پایتون که مستقیماً از طریق ترمینال سیستمعامل اجرا شود، بهترین راهکار است. این ابزار به هیچگونه نصب پکیج جانبی یا اتصال به اینترنت نیاز ندارد و چون از ماژولهای استاندارد پایتون بهره میبرد، روی هر سیستمی بلافاصله اجرا میشود.
نصب کتابخانهها و پیشنیازها
خوشبختانه این ابزار به صورت ۱۰۰ درصد متکی بر کتابخانههای داخلی و استاندارد پایتون است. بنابراین نیازی به استفاده از دستور pip install و دانلود پکیجهای خارجی ندارید. پایتون به طور پیشفرض ابزارهای قدرتمندی برای مدیریت ورودیهای ترمینال و ساختاربندی دادهها در اختیار ما قرار میدهد که در ادامه از آنها استفاده خواهیم کرد. مطمئن شوید که پایتون نسخه ۳ یا بالاتر روی سیستم شما نصب است.
کد کامل اسکریپت تحلیلگر متنی پایتون
کد زیر یک اسکریپت کامل، یکپارچه و اجرایی است. این کد مسیر فایل را از خط فرمان دریافت میکند، متن را میخواند، خطوط و کلمات را میشمارد، کلمات پرتکرار را استخراج کرده و یک گزارش آماری مرتب و خوانا در خروجی ترمینال چاپ میکند. این اسکریپت را میتوانید در یک فایل با نام text_analyzer.py ذخیره کنید.
import sys
from collections import Counter
import re
def analyze_text(file_path):
# بررسی وجود فایل و خواندن محتوا با رمزگذاری امن UTF-8
try:
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
except FileNotFoundError:
print(f"خطا: فایل '{file_path}' یافت نشد. لطفاً مسیر را بررسی کنید.")
return
except Exception as e:
print(f"خطا در خواندن فایل: {e}")
return
# محاسبه آمار کلی متن
lines = text.splitlines()
total_lines = len(lines)
# استفاده از عبارت منظم برای استخراج کلمات (سازگار با کلمات فارسی و انگلیسی)
words = re.findall(r'\b\w+\b', text)
total_words = len(words)
total_characters = len(text)
total_characters_no_space = len(text.replace(" ", "").replace("\n", ""))
# استخراج ۵ کلمه پرتکرار اول (با نادیده گرفتن کلمات بسیار کوتاه تک حرفی)
filtered_words = [word.lower() for word in words if len(word) > 1]
common_words = Counter(filtered_words).most_common(5)
# نمایش گزارش نهایی به صورت جدولمانند در ترمینال
print("=" * 45)
print(f" گزارش تحلیل آماری فایل: {file_path}")
print("=" * 45)
print(f" تعداد کل خطوط: {total_lines:,}")
print(f" تعداد کل کلمات: {total_words:,}")
print(f" تعداد کل کاراکترها (با فضا): {total_characters:,}")
print(f" تعداد کاراکترها (بدون فضا): {total_characters_no_space:,}")
print("-" * 45)
print(" ۵ کلمه پرتکرار برتر متن:")
print("-" * 45)
for index, (word, count) in enumerate(common_words, 1):
print(f" {index}. واژه '{word}' --> {count} بار تکرار")
print("=" * 45)
if __name__ == "__main__":
# بررسی دریافت آرگومان مسیر فایل از خط فرمان
if len(sys.argv) < 2:
print("راهنما: لطفاً مسیر فایل متنی را به عنوان آرگومان وارد کنید.")
print("مثال اجرای دستور:")
print("python text_analyzer.py sample.txt")
else:
target_file = sys.argv[1]
analyze_text(target_file)
توضیح بخش به بخش کد
برای درک بهتر نحوه کارکرد این اسکریپت، بخشهای اصلی آن را بررسی میکنیم:
- مدیریت کتابخانهها: ماژول
sysبرای دریافت آرگومانهای ورودی از خط فرمان استفاده میشود. ماژولcollections.Counterوظیفهی شمارش و رتبهبندی بسامد کلمات را بر عهده دارد و ماژولreبرای جداسازی هوشمندانه کلمات از علائم نگارشی به کار میرود. - مدیریت خطا در فایل: ساختار
try-exceptتضمین میکند که اگر کاربر مسیر اشتباهی بدهد یا فایل وجود نداشته باشد، برنامه کرش نکند و پیام خطای دوستانهای نمایش دهد. - پردازش متن و محاسبه آمار: با متد
splitlinesتعداد خطوط به دست میآید. تابعre.findall(r'\b\w+\b', text)مرز کلمات را پیدا کرده و تمام واژگان را استخراج میکند. - فیلتر واژگان پرتکرار: کلمات با طول کمتر از ۲ حرف حذف میشوند تا حروف اضافهای مثل «و» یا «به» آمار را مخدوش نکنند. سپس شیء
Counter۵ کلمه برتر را جدا میکند.
نحوه اجرا در ترمینال
برای اجرای این اسکریپت، ترمینال (یا خط فرمان سیستمعامل) را باز کرده و به پوشهای که فایل پایتون در آن قرار دارد بروید. سپس دستور زیر را همراه با نام فایل متنی مورد نظر خود (مثلاً document.txt) وارد کنید:
python text_analyzer.py document.txt
اگر فایل شما در پوشه دیگری قرار دارد، کافی است مسیر کامل یا نسبی آن را به عنوان آرگومان دوم به اسکریپت بدهید. مشابه همین رویکرد ساخت ابزارهای کاربردی متنباز را میتوانید در ابزارهای مشابه مدیریت فایل و دادهها مثل جینومریک (Gnumeric)؛ جایگزین متنباز، سریع و دقیق اکسل نیز مشاهده کنید که پردازش سریع اطلاعات را بدون اتکا به ابزارهای سنگین هدف قرار دادهاند.
خروجی نمونه اسکریپت
پس از اجرای موفقیتآمیز اسکریپت روی یک فایل متنی نمونه، خروجی ساختاریافته و تمیزی به شکل زیر در ترمینال شما چاپ خواهد شد:
=============================================
گزارش تحلیل آماری فایل: document.txt
=============================================
تعداد کل خطوط: 1,240
تعداد کل کلمات: 15,850
تعداد کل کاراکترها (با فضا): 104,230
تعداد کاراکترها (بدون فضا): 88,110
---------------------------------------------
۵ کلمه پرتکرار برتر متن:
---------------------------------------------
1. واژه 'پایتون' --> 245 بار تکرار
2. واژه 'داده' --> 180 بار تکرار
3. واژه 'برنامه' --> 142 بار تکرار
4. واژه 'سیستم' --> 115 بار تکرار
5. واژه 'کد' --> 98 بار تکرار
=============================================
ایدههای توسعه و شخصیسازی
این اسکریپت یک نقطهی شروع عالی است و شما میتوانید قابلیتهای جذاب دیگری به آن اضافه کنید:
- جستجوی الگوی خاص (Regex): میتوانید ورودی دیگری برای جستجوی الگوهای خاص مثل شماره تلفنها، ایمیلها یا کلمات کلیدی خاص در متن اضافه کنید.
- خروجی به فرمت JSON: به جای چاپ نتایج در ترمینال، آنها را در یک فایل خروجی با فرمت JSON ذخیره کنید تا در برنامههای دیگر قابل استفاده باشد.
- حذف کلمات توقف (Stopwords): لیست کاملی از کلمات ربطی زبان فارسی یا انگلیسی تهیه کنید تا کلماتی مانند «در»، «از»، «The»، «And» به طور کامل از آمار پرتکرارها فیلتر شوند.
خطاهای رایج و راهحلها
هنگام کار با فایلهای متنی بزرگ، ممکن است با چند خطای متداول روبهرو شوید که راهحل آنها بسیار ساده است:
- خطای کدگذاری کاراکترها (UnicodeDecodeError): این خطا زمانی رخ میدهد که پایتون تلاش میکند یک فایل متنی با کدگذاری غیر استاندارد (مثل ANSI یا Windows-1256) را با
utf-8بخواند. راهحل این است که فایل متنی خود را در یک ویرایشگر متن باز کرده و آن را با انکودینگUTF-8مجدداً ذخیره (Save As) کنید. در کد بالا پارامترencoding='utf-8'برای پیشگیری از این مشکل لحاظ شده است. - خطای فراموشی آرگومان: اگر اسکریپت را بدون ذکر نام فایل اجرا کنید، پیام راهنمای داخل بلاک شرط
sys.argvنمایش داده میشود که یادآوری میکند نام فایل باید حتماً وارد شود.
پرسشهای متداول
آیا این اسکریپت از متنهای فارسی پشتیبانی میکند؟
بله، به لطف استفاده از انکودینگ UTF-8 و الگوی عبارت منظم \w در پایتون، این اسکریپت به خوبی کلمات و خطوط فارسی را پردازش و شمارش میکند.
آیا برای اجرای این کد نیاز به نصب کتابخانه خارجی هست؟
خیر، تمامی ماژولهای استفاده شده (sys, collections, re) جزو کتابخانهی استاندارد و پیشفرض پایتون هستند و نیازی به نصب پکیج اضافهتری ندارید.
محدودیت حجم فایل متنی چقدر است؟
این ابزار فایلها را به صورت یکجا در حافظه میخواند. برای فایلهای بسیار حجیم (چند گیگابایتی)، پیشنهاد میشود خواندن فایل را به صورت خطبهخط (Streaming) بازنویسی کنید تا مصرف رم سیستم به حداقل برسد.
جمعبندی
ساخت ابزارهای خط فرمان سبک در پایتون یکی از مهارتهای کلیدی برای هر برنامهنویس، پژوهشگر یا نویسندهای است که با حجم انبوهی از دادههای متنی سر و کار دارد. در این مقاله یاد گرفتید چگونه بدون نیاز به ابزارهای گرافیکی پیچیده یا سرویسهای آنلاین، اسکریپتی کارآمد برای تحلیل متن، شمارش خطوط، کلمات و استخراج واژگان پرتکرار بنویسید. با استفاده از این کد میتوانید سرعت کارهای پژوهشی و مستندسازی خود را به شکل چشمگیری افزایش دهید.




