45 lines
4.9 KiB
Python
45 lines
4.9 KiB
Python
import sys
|
||
import os
|
||
|
||
# اضافه کردن مسیر روت پروژه برای دسترسی به پوشه modules
|
||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||
|
||
# وارد کردن کلاسها با نامهای صحیح و بهروزرسانی شده
|
||
from modules.segmenter import Segmenter
|
||
from modules.api_handler import APIHandler
|
||
|
||
|
||
def test_pipeline():
|
||
print("در حال بارگذاری ماژولها...")
|
||
|
||
# نمونهسازی با نامهای صحیح
|
||
segmenter = Segmenter()
|
||
api = APIHandler()
|
||
|
||
# اصلاح نیمفاصلههای خراب (حذف علامت ¬) برای چاپ تمیزتر در ترمینال
|
||
sample_text = """ظهور دادهها و رشد قدرت محاسباتی، به همراه روشهای یادگیری نوین، منجر به دستاوردهای قابل توجهی در بسیاری از حوزههای علمی شده است. در چند سال اخیر، یادگیری ماشینی و هوش مصنوعی یک موج جدید از توجهات را به خود جلب کردهاند که علت اصلی آن، حجم عظیم و روزافزون داده و قدرت محاسباتی، و همچنین کشف الگوریتمهای یادگیری بهبود یافته، میباشد[1]. با این حال، ایدهی یادگیری یک رایانه از مجموعهای از مفاهیم انتزاعی و تبدیل دادهها به اطلاعات و استفاده از آنها برای پیش بینی، جدید نیست و حداقل از دهه ۱۹۵۰ زمانی که اولین شبکههای عصبی توسعه یافتند، وجود داشته است [2]. همانگونه که ذکر شد، حجم زیاد دادهها ما را به دوران جدیدی از رشد نمایی در حجم و پیچیدگی دادهها وارد کرده است؛ اینترنت، تلفنهای همراه، کامپیوترها و تجهیزات ضبط باعث ظهور معدنهای بزرگ داده شده و انسان را به یک تغییر شیب در فرآیند تحقیقات سوق میدهد [3]. دانش مدفون در این معدن داده نیازمند فناوریهای کاوش داده است تا الگوهای جالب، معنیدار و قوی را کشف کند. این روش جایگزین تحقیقات نسبت به رویکرد سنتی، اثرات چشمگیری بر همه حوزههای تحقیقات داشته است. کاوش داده در واقع فناوری جدید ارائه میدهد تا به ما در آشکار کردن الگوهای پنهان کمک کند، که قابلیت کمک به نوآوری و توسعه نظریات جدید را دارد و اثرات انقلابی بر توسعه نظریه در بسیاری از رشتهها را ارتقا میدهد [4].
|
||
طبقه بندی یکی از تکنیک های کاوش داده است. در این روش تمام دادهها بر اساس برچسبهای از قبل تعریف شده طبقه بندی میشوند. الگوریتم های طبقه بندی به شکل وسیعی در دامنه های مختلف استفاده میشوند، از آن جمله برخی از کاربردهایی آنها عبارت اند از پیشگویی ورشکستگی [5]، پیشگویی سرطان [6]، تشخیص چهره [7]، تشخیص کلاه برداری [8]و پیشگویی خرابی نرم افزار [9]. جهت کارایی و عملکرد بهتر در راستای کاربردهایی مذکور بعلاوهی کاربردهای زیادی دیگر، الگوریتمهایی طبقه بندی نیاز به مجموعه دادههای کوچکتر و خالصتر دارند که با استفاده از روشهایی کاهش نمونه روی مجموعه دادههای اصلی بدست میآیند."""
|
||
|
||
# ۱. استخراج جملات
|
||
sentences = segmenter.extract_sentences(sample_text)
|
||
print(f"\nتعداد کل جملات: {len(sentences)}")
|
||
|
||
# ۲. سگمنتبندی
|
||
print("در حال سگمنتبندی...")
|
||
# متد segment_items جایگزین متدهای قدیمی شده است
|
||
segments = segmenter.segment_items(sentences)
|
||
|
||
# ۳. دریافت واحد معنایی (خلاصه) از API برای هر سگمنت
|
||
print("\n--- نتایج پایپلاین ---")
|
||
for i, seg_sentences in enumerate(segments):
|
||
print(f"\nسگمنت {i + 1} (شامل {len(seg_sentences)} جمله):")
|
||
for s in seg_sentences:
|
||
print(f" - {s}")
|
||
|
||
print("در حال دریافت واحد معنایی از API...")
|
||
semantic_unit = api.get_semantic_unit(seg_sentences)
|
||
print(f"** واحد معنایی (خلاصه): {semantic_unit} **")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
test_pipeline() |