<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های کمیل آقابابایی</title>
        <link>https://virgool.io/feed/@babaiekomeil</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 01:47:54</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/21405/avatar/7kR8Mo.png?height=120&amp;width=120</url>
            <title>کمیل آقابابایی</title>
            <link>https://virgool.io/@babaiekomeil</link>
        </image>

                    <item>
                <title>معیارهای ارزیابی مدل</title>
                <link>https://virgool.io/@babaiekomeil/%D9%85%D8%B9%DB%8C%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D9%85%D8%AF%D9%84-aumf9tbyy3rr</link>
                <description>کمیل آقابابایی_  babaiekomeil@gmail.comهمواره فراگیران علوم داده این سوال را در ذهن خود دارند:                                               کدام معیار ارزیابی برای مدل من مناسبه؟!!!!پس از طراحی و ساخت مدل مهمترین اقدام، ارزیابی کارایی (Performance)  مدل ساخته شده می‌باشد تا بتوان براساس آن پارامترهای شبکه های به کارگرفته شده برای ساخت مدل را بهینه نمود.1- ماتریس درهم ریختگی(Confusion Matrix):به ماتریسی گفته می‌شود که در آن عملکرد الگوریتم‌های مربوطه را نشان می‌دهند.Confusion Matrixمثبت صحیح یا True Positive : نمونه عضو کلاس مثبت باشد و عضو همین کلاس تشخیص داده شودTP.منفی کاذب یا  False Negative : نمونه عضو کلاس مثبت باشد و عضو کلاس منفی تشخیص داده شود FN.منفی صحیح یا True Negative: نمونه عضو کلاس منفی باشد و عضو همین کلاس تشخیص داده شود TN.مثبت کاذب یا  False Positive : نمونه عضو کلاس منفی باشد و عضو کلاس مثبت تشخیص داده شود FP.2- دقت (Accuracy ): مدل به چه میزان خروجی را درست پیش بینی کرده؟Accuracy=(TP+TN)/(TP+FP+FN+TN)       کاربرد:با استفاده از آن می توان در یک نگاه فهمید که کارایی مدل ساخته شده چگونه است یا اینکه مدل درست آموزش دیده یا نه؟     عیب:اطلاعات جزیی در خصوص کارایی مدل ارئه نمی دهد.3- صحت(Precision):Precision=TP/(TP+FP)       کاربرد:زمانی که ارزش False Positive بالا باشد ، معیار صحت معیار مناسبی برای ارزیابی می باشد.   مثال:مدلی برای تشخیص سرطان داشته باشیم و دارای معیار صحت (Precision) پایینی باشد در نتیجه این مدل بسیاری از افراد را مبتلا به سرطان تشخیص می دهد که باعث استرس و آ زمایشات و هزینه زیادی می گردد.4- فراخوانی(Recal):Recall=TP/(TP+FN)    کاربرد:زمانی که ارزش False Negative  بالا باشد ، معیار صحت معیار مناسبی برای ارزیابی می باشد.    مثال:مدلی برای تشخیص بیماری ابولا داشته باشیم و دارای معیار فراخوانی (Recal) پایینی باشد در نتیجه این مدل بسیاری از افراد را که آلوده به این بیماری کشنده هست را سالم تشخیص می دهد که یک فاجعه می باشد.4- معیار F1 Score:F1 Score=(2*Precision*Recall)/(Precision+Recall)   کاربرد:این معیار بسایر معیار مناسبی برای ارزیابی یک آزمایش می باشد به دلیل اینکه هر دو معیار Precision و Recal را باهم در نظر می گیرد که در بهترین حالت یک و در بدترین حالت صفر می باشد.نتیجه گیری :در ابتدا می بایست اهداف ساخت مدل کاملا بررسی شود و درجه اهمیت هریک از عناصر ماتریس درهم ریختگی مشخص گردد تا بتوان معیار مناسب را انتخاب نمود.ولی برای دید کلی از کارایی یک مدل می توان از معیار  Accuracy (دقت) و برای داشتن ارزیابی دقیقتر از معیار  F1 Score استفاده نمود .</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Fri, 09 Sep 2022 17:27:46 +0430</pubDate>
            </item>
                    <item>
                <title>شناسایی و ردیابی حرکت با پایتون و OpenCV</title>
                <link>https://virgool.io/@babaiekomeil/%D8%B4%D9%86%D8%A7%D8%B3%D8%A7%DB%8C%DB%8C-%D9%88-%D8%B1%D8%AF%DB%8C%D8%A7%D8%A8%DB%8C-%D8%AD%D8%B1%DA%A9%D8%AA-%D8%A8%D8%A7-%D9%BE%DB%8C%D8%AA%D9%88%D9%86-%D9%88-opencv-mzid74cxjyjt</link>
                <description>کمیل آقابابایی ارشد نرم فزار _ babaiekomeil@gmail.comدر این مقاله نحوه ساخت یک سیستم ردیابی و شناسایی حرکت پایه برای نظارت خانگی با استفاده از تکنیک‌های بینایی کامپیوتری بررسی می‌شود. این مثال با هر دو فیلم از پیش ضبط شده و پخش زنده از وب کم شما کار خواهد کرد. با این حال ، ما این سیستم را در لپ تاپ ها/دسک تاپ های خود توسعه خواهیم داد.کمی در مورد تفریق پس زمینهتفریق پس‌زمینه در بسیاری از برنامه‌های بینایی رایانه‌ای بسیار مهم است . به عنوان مثال می توان از آن برای شمارش تعداد اتومبیل‌هایی که از باجه عوارضی عبور می‌کنند استفاده کرد و یا برای شمارش تعداد افرادی که در داخل و خارج از یک فروشگاه قدم می‌زنند استفاده کنیم .و ما از آن برای تشخیص حرکت استفاده می کنیم.قبل از اینکه کد گذاری را در این پست شروع کنیم, اجازه دهید بگویم که راه‌های بسیار زیادی برای تشخیص حرکت, ردیابی و آنالیز در OpenCV وجود دارد. بعضی‌ها خیلی ساده هستند. و برخی دیگر بسیار پیچیده هستند.دو روش اصلی عبارتند از: شکل مدل آمیخته گاوسی(Gaussian Mixture Model - based foreground) و تقسیم‌بندی پس‌زمینه(background segmentation)1- یک مدل مخلوط پس‌زمینه تطبیقی بهبودیافته برای ردیابی بلادرنگ با تشخیص سایه توسط KaewTraKulPong و همکاران، که از طریق تابع cv2.BackgroundSubtractorMOG در دسترس است.2- مدل مخلوط گاوسی تطبیقی بهبود یافته برای تفریق پس‌زمینه و تخمین تراکم تطبیقی کارآمد در هر پیکسل تصویر برای وظیفه تفریق پس‌زمینه، همچنین توسط Zivkovic، از طریق تابع cv2.BackgroundSubtractorMOG2در دسترس است.و در نسخه‌های جدیدتر OpenCV، تقسیم‌بندی پیش‌زمینه و پس‌زمینه مبتنی بر بیزی (احتمال) را داریم که از مقاله Godbehereو همکاران در سال 2012 قابل دریافت می باشد. ما می‌توانیم این پیاده‌سازی را در تابع cv2.createBackgroundSubtractorGMGپیدا کنیمهمه این روش‌ها مربوط به تقسیم پس‌زمینه از پیش‌زمینه هستند (و حتی مکانیسم‌هایی را برای ما فراهم می‌کنند تا بین حرکت واقعی و فقط سایه و یا تغییرات کوچک نور تشخیص دهیم)!پس چرا این مساله اینقدر مهم است ؟ و چرا ما اهمیت می‌دهیم که پیکسل ها به پیش‌زمینه تعلق دارند و چه پیکسل بخشی از پس‌زمینه هستند ؟خوب، در تشخیص حرکت، ما تمایل داریم که فرض زیر را داشته باشیم:پس‌زمینه جریان ویدیوی ما تا حد زیادی ثابت و بدون تغییر در فریم‌های متوالی یک ویدیو می باشد. بنابراین، اگر بتوانیم پس‌زمینه را مدل‌سازی کنیم و آن را برای مقایسه با تغییرات اساسی در نظر ‌بگیریم.در نتیجه اگر تغییر اساسی وجود داشته باشد، می‌توانیم آن را تشخیص دهیم که این تغییر معمولاً همان حرکت در ویدیوی ما می باشد.اکنون بدیهی است که در دنیای واقعی این فرض به راحتی می تواند شکست بخورد. به دلیل سایه، انعکاس، شرایط نوری و هر تغییر احتمالی دیگری در محیط، پس زمینه ما می تواند در فریم های مختلف یک ویدیو کاملاً متفاوت به نظر برسد و اگر پس‌زمینه متفاوت به نظر برسد، می‌تواند الگوریتم‌های ما را از بین ببرد. به همین دلیل است که موفق‌ترین سیستم‌های تشخیص پس زمینه تفریق/پیش زمینه از دوربین های نصب شده ثابت و در شرایط نوری کنترل شده استفاده می کنند.روش هایی که در بالا ذکر کردم، اگرچه بسیار قدرتمند هستند، اما از نظر محاسباتی نیز گران هستند و از آنجایی که هدف نهایی ما این است که این سیستم را در پایان این سری 2 قسمتی روی Raspberry Pi استقرار دهیم، بهتر است به رویکردهای ساده پایبند باشیم.در پست‌های آینده به این روش‌های قدرتمندتر خواهم پرداخت.انشاالله  اما فعلاً می‌خواهم آن را ساده و کارآمد نگه دارم.در ادامه این پست ، من می‌خواهم (احتمالا) ابتدایی‌ترین سیستم تشخیص و ردیابی حرکتی را که می‌توانید بسازید، شرح دهم. کامل نخواهد بود، اما می‌تواند روی Piاجرا شود و همچنان نتایج خوبی ارائه دهد.شناسایی و ردیابی حرکت با پیتون و OpenCVبسیار خوب، آیا شما آماده‌اید که به من کمک کنید تا یک سیستم نظارت خانگی ایجاد کنم ؟یک ویرایشگر باز کنید، یک فایل جدید ایجاد کنید، نام آن را motion_detector.py بگذارید، و اجازه دهید کدنویسی کنیم:Basic motion detection and tracking with Python and OpenCV1. # import the necessary packages2. from imutils.video import VideoStream3. import argparse4. import datetime5. import imutils6. import time7. import cv28.9. # construct the argument parser and parse the arguments10. ap = argparse.ArgumentParser()11. ap.add_argument(&quot;-v&quot;, &quot;--video&quot;, help=&quot;path to the video file&quot;)12. ap.add_argument(&quot;-a&quot;, &quot;--min-area&quot;, type=int, default=500, help=&quot;minimum area size&quot;)13. args = vars(ap.parse_args())14.15. # if the video argument is None, then we are reading from webcam16. if args.get(&quot;video&quot;, None) is None:17.  vs = VideoStream(src=0).start()18.  time.sleep(2.0)19.20. # otherwise, we are reading from a video file21. else:22.  vs = cv2.VideoCapture(args[&quot;video&quot;])23.24. # initialize the first frame in the video stream25. firstFrame = Noneخطوط 2-7 بسته های لازم ما را وارد می کنند. همه اینها باید بسیار آشنا به نظر برسند، به جز شاید بسته imutils، که مجموعه ای از توابع راحتی است که من برای آسان کردن کارهای اساسی پردازش تصویر ایجاد کرده ام. اگر قبلا imutil را روی سیستم خود نصب نکرده اید، می توانید آن را از طریق pip نصب کنید:pip install imutilsدر مرحله بعد، آرگومان های خط فرمان خود را در خطوط 13-10 تجزیه می کنیم. ما در اینجا دو سوئیچ تعریف می‌کنیم. اولی، --video، اختیاری است. این به سادگی مسیری را برای یک فایل ویدیویی از پیش ضبط شده تعریف می کند که ما می توانیم حرکت را در آن تشخیص دهیم. اگر مسیری برای یک فایل ویدیویی ارائه نکنید، OpenCVاز وب کم شما برای تشخیص حرکت استفاده می کند.ما همچنین --min-areaکه بیانگر حداقل اندازه (بر حسب پیکسل) برای ناحیه ای از تصویر که به عنوان &quot;حرکت&quot; واقعی در نظر گرفته می شود را تعریف می کنیم. همانطور که بعداً در این آموزش بحث خواهیم کرد، ما اغلب مناطق کوچکی از یک تصویر را می یابیم که احتمالاً به دلیل نویز یا تغییرات در شرایط نوری تغییر اساسی کرده اند. در واقع, این مناطق کوچک اصلاً حرکت واقعی نیستند - بنابراین ما حداقل اندازه یک منطقه را برای مبارزه و فیلتر کردن این تشخیص‌های مثبت کاذب مشخص خواهیم کرد.در خطوط 22-16  vs یک ارجاع به شی مقابل ما را نشان می دهد. در صورتی که در مسیر فایل ویدیویی ارائه نشده باشد (خطوط 18-16)، ما یک ارجاع  به وب کم فعال می کنیم و منتظر می مانیم تا تصویر دریافت شود و اگر یک فایل ویدئویی ارائه شده باشد، در خطوط 21 و 22 یک اشاره گر برای آن ایجاد می کنیم.در نهایت، این قطعه کد را با تعریف متغیری به نام firstFrame به پایان می‌رسانیم.آیا حدس زده‌اید که firstFrameچیست؟اگر حدس می‌زنید که firstFrameاولین فریم از جریان ویدئو / webcamرا ذخیره می‌کند، درست می‌گویید.فرض: اولین فریم فایل ویدیوی ما شامل هیچ حرکتی نیست و فقط پس‌زمینه خواهد بود – بنابراین، می‌توانیم پس‌زمینه جریان ویدیوی خود را تنها با استفاده از اولین فریم ویدیو مدل‌سازی کنیم.بدیهی است که ما در اینجا یک فرض بسیار بزرگ را انجام می دهیم. اما باز هم، هدف ما اجرای این سیستم بر روی Raspberry Pi است، بنابراین نمی توانیم خیلی پیچیده باشیم. و همانطور که در بخش نتایج این پست خواهید دید، ما می‌توانیم به راحتی حرکت را در حین ردیابی فردی که در اتاق راه می‌رود، تشخیص دهیم.# حلقه بر روی فریم ویدئو27. # loop over the frames of the video28. while True:29.  # grab the current frame and initialize the occupied/unoccupied30.  # text31.  frame = vs.read()32. frame = frame if args.get(&quot;video&quot;, None) is None else frame[1]33. text = &quot;Unoccupied&quot;34.35. # if the frame could not be grabbed, then we have reached the end36. # of the video37. if frame is None:38. break39.40. # resize the frame, convert it to grayscale, and blur it41. frame = imutils.resize(frame, width=500)42. gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)43. gray = cv2.GaussianBlur(gray, (21, 21), 0)44.45. # if the first frame is None, initialize it46. if firstFrame is None:47. firstFrame = gray48. continueپس حالا که ما یک مرجع برای جریان video / webcam داریم , می‌توانیم حلقه را بر روی هر یک از فریم‌ها در خط ۲۸ شروع کنیم .با فراخوانی vs.read ()  در خط ۳۱ ، یک فریمی را که به درستی گرفته شده را برای ما باز می‌گرداند.ما همچنین رشته‌ای به نام text تعریف می‌کنیم و آن را مقداردهی اولیه می‌کنیم تا نشان دهد اتاقی که ما نظارت می‌کنیم «غیر اشغال» «Unoccupied»  است. اگر واقعاً در اتاق فعالیت وجود دارد، می توانیم این رشته را به روز کنیم.و در صورتی که یک فریم از فایل ویدیویی با موفقیت خوانده نشود، در خطوط 37 و 38  از حلقه خارج می‌شویم.اکنون می توانیم فریم خود را پردازش کرده و آن را برای تحلیل و تشخیص حرکت آماده کنیم (خطوط 43-41). ابتدا اندازه آن را به عرض 500 پیکسل تغییر می دهیم - نیازی به پردازش تصاویر بزرگ و خام مستقیماً از جریان ویدیو نیست. ما همچنین تصویر را به مقیاس خاکستری تبدیل می کنیم زیرا رنگ هیچ تاثیری بر الگوریتم تشخیص حرکت ما ندارد. در نهایت، ما Gaussian blurring را برای صاف کردن تصاویر خود اعمال می کنیم.درک این نکته مهم است که حتی فریم های متوالی یک جریان ویدیویی یکسان نخواهند بود!با توجه به تغییرات ریز در سنسورهای دوربین دیجیتال, هیچ دو فریم یک‌سان نخواهند بود - مطمئناً برخی از پیکسل ها مقادیر شدت متفاوتی دارند. با این حال، ما باید این را در نظر بگیریم و هموارسازی گاوسی را برای میانگین شدت پیکسل در یک منطقه 21×21 اعمال کنیم (خط 43). این کمک می کند تا نویز با فرکانس بالا را که می تواند الگوریتم تشخیص حرکت ما را از بین ببرد، صاف شود.همانطور که در بالا اشاره شد, باید پس‌زمینه تصویر خود را به گونه‌ای مدل‌سازی کنیم. دوباره, ما این فرض را ایجاد می‌کنیم که فریم اول جریان ویدئوییحاوی هیچ حرکت و نمونه خوبی از چیزی است که پس‌زمینه ما شبیه آن است.اگر firstFrame مقداردهی اولیه نشده باشد، آن را برای مرجع ذخیره می کنیم و به پردازش فریم بعدی جریان ویدیو ادامه می دهیم (خطوط 48-46).در اینجا مثالی از اولین فریم یک ویدئوی نمونه آورده شده است:شکل 1: نمونه فریم اول یک فایل ویدئویی.توجه کنید که چگونه یک عکس ثابت از پس زمینه است و هیچ حرکتی انجام نمی شود.فریم فوق این فرض را برآورده می کند که اولین فریم ویدیو صرفاً پس زمینه ثابت است - هیچ حرکتی انجام نمی شود.با توجه به این تصویر پس زمینه ایستا، ما اکنون آماده هستیم تا در واقع تشخیص حرکت و ردیابی را انجام دهیم:50. # compute the absolute difference between the current frame and51. # first frame52. frameDelta = cv2.absdiff(firstFrame, gray)53. thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1]54. # dilate the thresholded image to fill in holes, then find contours55. # on thresholded image56. thresh = cv2.dilate(thresh, None, iterations=2)57. cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,58. cv2.CHAIN_APPROX_SIMPLE)59. cnts = imutils.grab_contours(cnts)60.61. # loop over the contours62. for c in cnts:63. # if the contour is too small, ignore it64. if cv2.contourArea(c) &lt; args[&quot;min_area&quot;]:65. continue66.67. # compute the bounding box for the contour, draw it on the frame,68. # and update the text69. (x, y, w, h) = cv2.boundingRect(c)70. cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)71. text = &quot;Occupied&quot;اکنون که پس‌زمینه خود را از طریق متغیر firstFrame مدل‌سازی کرده‌ایم، می‌توانیم از آن برای محاسبه تفاوت بین فریم اولیه و فریم‌های جدید بعدی از جریان ویدیو استفاده کنیم.محاسبه تفاوت بین دو فریم یک تفریق ساده است، که در آن قدر مطلق تفاوت‌های شدت پیکسل متناظر آنها را می‌گیریم (خط 52):delta = |background_model – current_frame|نمونه ای از یک فریم دلتا را می توان در زیر مشاهده کرد:شکل 2: نمونه ای از دلتای فریم، تفاوت بین فریم اولیه و فریم فعلی.توجه کنید که پس‌زمینه تصویر چطور به وضوح سیاه است. با این حال, مناطقی که دارای حرکت هستند (مانند منطقه خودم که در اتاق راه می‌روم) خیلی روشن تر است. این بدان معناست که فریم های دارای دلتای بزرگتر نشان دهنده انجام حرکت در تصویر می باشند.ما سپس چارچوب (دلتا ) را در خط ۵۳ برای نشان دادن مناطقی از تصویر که تنها تغییرات قابل‌توجهی در مقادیر شدت پیکسل دارند , بدست خواهیم آورد . اگر دلتا کم‌تر از ۲۵ باشد , پیکسل را دور انداخته و آن را به رنگ سیاه ( به عنوان مثال پس‌زمینه ) تنظیم می‌کنیم . اگر دلتا بزرگ‌تر از ۲۵ است , آن را به سفید ( به عنوان مثال پیش‌زمینه ) تنظیم می‌کنیم . نمونه ای از تصویر دلتا آستانه ما را می توان در زیر مشاهده کرد:شکل 3: آستانه تصویر Delta Frame برای تقسیم پیش زمینه از پس زمینه.دوباره, توجه داشته باشید که پس‌زمینه تصویر سیاه است, در حالی که پیش‌زمینه (و جایی که حرکت در حال انجام است) سفید است.با توجه به این تصویر آستانه ای، اعمال تشخیص کانتور برای یافتن خطوط کلی این مناطق سفید ساده است (خطوط 57-59).ما شروع به حلقه زدن روی هر یک از خطوط در خط 62 می کنیم، جایی که خطوط کوچک و نامربوط را در خط 64 و 65 فیلتر می کنیم.اگر ناحیه کانتور بزرگتر از مساحت --min-area  ارائه شده ما باشد، کادر محدود کننده اطراف پیش زمینه و ناحیه حرکت را در خطوط 69 و 70 ترسیم می کنیم. ما همچنین رشته وضعیت متنی خود را به روز رسانی می‌کنیم تا نشان دهیم که اتاق &quot; اشغال‌شده &quot; ( Occupied &quot;&quot;) است.# draw the text and timestamp on the frame73.  cv2.putText(frame, &quot;Room Status: {}&quot;.format(text), (10, 20),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)74. cv2.putText(frame,datetime.datetime.now().strftime(&quot;%A%d%B%Y%I:%M:%S%p&quot;),(10, frame.shape[0] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 1)# show the frame and record if the user presses a key75. cv2.imshow(&quot;Security Feed&quot;, frame)76. cv2.imshow(&quot;Thresh&quot;, thresh)77. cv2.imshow(&quot;Frame Delta&quot;, frameDelta)78. key = cv2.waitKey(1) &amp; 0xFF# if the &#x60;q&#x60; key is pressed, break from the lop79. if key == ord(&quot;q&quot;):break# cleanup the camera and close any open windows80. vs.stop() if args.get(&quot;video&quot;, None) is None else vs.release()81. cv2.destroyAllWindows()بقیه این مثال به سادگی همه چیز را جمع بندی می کند. وضعیت اتاق را روی تصویر در گوشه سمت چپ بالا ترسیم می‌کنیم و به دنبال آن یک مهر زمانی (برای اینکه شبیه فیلم امنیتی &quot;واقعی&quot; باشد) در پایین سمت چپ می‌کشیم.خطوط 75-77 نتایج کار ما را نشان می‌دهد و به ما امکان می‌دهد اگر حرکتی در ویدیوی ما تشخیص داده شد، به همراه دلتای فریم و تصویر آستانه‌ای تجسم کنیم تا بتوانیم اسکریپت خود را اشکال‌زدایی کنیم.توجه: اگر کد را در این پست دانلود می‌کنید و می‌خواهید آن را روی فایل‌های ویدیویی خود اعمال کنید، احتمالاً باید مقادیر cv2.threshold و آرگومان min-area-- را تنظیم کنید تا بهترین نتایج را برای نورپردازی خود به دست آورید.در نهایت، خطوط 80 و81  نشانگر جریان ویدئو را پاکسازی کرده و آزاد می کنند.منبع:https://pyimagesearch.com/2015/05/25/basic-motion-detection-and-tracking-with-python-and-opencv/</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Thu, 08 Sep 2022 14:30:34 +0430</pubDate>
            </item>
                    <item>
                <title>تشریح و پیاده سازی الگوریتم ژنتیک با geneticalgorithm library_پایتون</title>
                <link>https://virgool.io/@babaiekomeil/%D8%AA%D8%B4%D8%B1%DB%8C%D8%AD-%D9%88-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%DA%98%D9%86%D8%AA%DB%8C%DA%A9-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-geneticalgorithm-library%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-x4hdscyu445d</link>
                <description>کمیل آقابابایی ارشد نرم افزارپیش نیار: آشنا با مفاهیم الگوریتم ژنتیک  و پایتون https://colab.research.google.com/drive/1yHIajehEe9kDNqH_IJuDdliqH_wvOV7S?usp=sharing شرح پروژهکتابخانه geneticalgorithm یک کتابخانه پایتون است که برای پیاده سازی الگوریتم ژنتیک استاندارد  توزیع شده است.نصب:pip install geneticalgorithm#version 1.0.2 updatesیک مثال ساده:فرض کنید  یک مجموعه از X=(x1,x2,x3) که می خواهیم تابع  f(X)=x1+x2+x3 را به حداقل برسانیم. که در آن X می تواند هر عدد واقعی در [0،10] باشد.این یک مساله پیش‌پاافتاده است و ما می‌دانیم  پاسخ آن X=(0,0,0)  که  در نتیجه f(X)=0 می باشد.ما فقط از این مثال ساده استفاده می کنیم تا نحوه اجرای گوریتم ژنتیک را ببینیم:ابتدا اگوریتم ژنتیک و numpy را وارد می کنیم. سپس، تابع f را که می‌خواهیم کمینه کنیم  و محدوده متغیرها. سپس به سادگی می ‌توان مساله بهینه‌سازی تعریف‌شده زیر را با استفاده از الگوریتم ژنتیک حل کرد :import numpy as npfrom geneticalgorithm import geneticalgorithm as gadef f(X):             return np.sum(X)varbound=np.array([[0,10]]*3)model=ga(function=f,dimension=3,variable_type=&#x27;real&#x27;,variable_boundaries=varbound)model.run()توجه داشته باشید که ما تابع f را طوری تعریف می کنیم که بتوانیم خروجی تابع را با  ورودی مجموعه X به حداقل برسانیم. متغیرها باید به صورت یک آرایه numpy تعریف شوند و برای هر متغیر به یک محدوده جداگانه نیاز داریم. در اینجا من سه متغیر دارم و همه آنها محدوده های یکسانی دارند.الگوریتم ژنتیک چند آرگومان دارد:واضح است که آرگومان اول تابع f است که قبلاً تعریف کردیم. function=fمشکل ما سه متغیر دارد بنابراین بعد را برابر سه قرار می دهیم.dimension=3متغیرها واقعی (پیوسته) هستند، بنابراین ما از رشته &quot;real&quot; برای نوع متغیرها استفاده می کنیم (الگوریتم ژنتیک انواع دیگری از جمله بولی، اعداد صحیح و مختلط را نیز می پذیرد.(&#x27;int&#x27;  امتحان کنید)در نهایت، varbound را وارد می کنیم که شامل مرزهای متغیرها است. توجه داشته باشید که طول variable_boundaries باید برابر با dimension باشد.اگر کد را اجرا کنید، باید یک نوار پیشرفت ببینید که نماینگر  پیشرفت الگوریتم ژنتیک (GA) می باشد و سپس راه حل، مقدار تابع هدف و منحنی همگرایی را به صورت زیر نشان می دهد:همچنین ما می‌توانیم به بهترین پاسخ مساله بهینه‌سازی تعریف‌شده توسط geneticalgorithm به عنوان یک دیکشنری و گزارش پیشرفت الگوریتم ژنتیک دسترسی داشته باشیم . برای انجام این کار , کد را به صورت زیر تکمیل می‌کنیم :convergence=model.reportsolution=model.output_dict دقت کنید output_dict فرهنگ لغتی شامل بهترین مجموعه از متغیرهای یافت شده می باشد و مقدار تابع داده شده مرتبط با آن است                                                         output_dict({&#x27;variable&#x27;: , &#x27;function&#x27;: }). گزارش فهرستی است شامل همگرایی الگوریتم بر روی تکرارهامثال ساده با متغیرهای عدد صحیح:import numpy as npfrom geneticalgorithm import geneticalgorithm as gadef f(X):             return np.sum(X)varbound=np.array([[0,10]]*3)model=ga(function=f,dimension=3,variable_type=&#x27;int&#x27;,variable_boundaries=varbound)model.run()مثال ساده با متغیرهای مختلط:توجه داشته باشید که برای متغیرهای مختلط باید وحدوده را تعریف کنیم همچنین باید یک آرایه numpy از انواع متغیرها مانند بالا (vartype) ایجاد کنیم. بدیهی است که ترتیب متغیرها در هر دو آرایه باید مطابقت داشته باشد. همچنین توجه داشته باشید که در چنین حالتی برای متغیرهای اینتجر از رشته &#x27;int&#x27; و متغیرهای  بویلی از محدوده [0,1] استفاده می کنیم.توجه داشته باشید که ما از آرگومان variable_type_mixed برای وارد کردن یک آرایه numpy از انواع متغیر برای توابع با متغیرهای مختلط استفاده می کنیم.import numpy as npfrom geneticalgorithm import geneticalgorithm as gadef f(X):           return np.sum(X)varbound=np.array([[0.5,1.5],[1,100],[0,1]])vartype=np.array([[&#x27;real&#x27;],[&#x27;int&#x27;],[&#x27;int&#x27;]])model=ga(function=f,dimension=3,variable_type_mixed=vartype,variable_boundaries=varboud)model.run()مساله بیشینه سازی(ماکسیمم):اگوریتم ژنتیک برای به حداقل رساندن تابع داده شده طراحی شده است. یک ترفند ساده برای حل مسائل بیشینه سازی، ضرب تابع هدف در علامت منفی است. سپس قدر مطلق خروجی حداکثر تابع است. مثال ساده بالا را در نظر بگیرید. اکنون اجازه می‌دهیم حداکثر f(X)=x1+x2+x3 را پیدا کنیم که در آن X مجموعه‌ای از متغیرهای واقعی در [0,10] است. ما قبلاً می دانیم که پاسخ X=(10,10,10) است که در آن f(X)=30 است.import numpy as npfrom geneticalgorithm import geneticalgorithm as gadef f(X):        return -np.sum(X)  # در منفی ضرب شدهvarbound=np.array([[0,10]]*3)model=ga(function=f,dimension=3,variable_type=&#x27;real&#x27;,variable_boundaries=varbound)model.run()مشکلات بهینه سازی با محدودیت هادر تمام مثال های بالا، مسئله بهینه سازی بدون محدودیت(قید و شرط) بود.حالا توجه کنید که می‌خواهیم f (X) = x۱ + x۲ + x۳ را که X مجموعه‌ای از متغیرهای حقیقی در [۰، ۱۰] است را به حداقل برسانیم. همچنین ما یک محدودیت دیگری داریم به طوری که مجموع x۱ و x۲ برابر یا بزرگ‌تر از ۲ باشند. حداقل f(X)  نیز 2 است. در چنین حالتی، یک ترفند تعریف تابع پنالتی(ضرر) است. بنابراین از کد زیر استفاده می کنیم:import numpy as npfrom geneticalgorithm import geneticalgorithm as gadef f(X):            pen=0            if X[0]+X[1]&lt;2:            pen=500+1000*(2-X[0]-X[1])            return np.sum(X)+penvarbound=np.array([[0,10]]*3)model=ga(function=f,dimension=3,variable_type=&#x27;real&#x27;,variable_boundaries=varbound)model.run()همانطور که در بالا مشاهده شد، هر زمان که محدودیت برآورده نشد، یک جریمه به تابع هدف اضافه می کنیم.چند نکته در مورد نحوه تعریف تابع پنالتی:۱ - معمولا ً شما می‌توانید از یک مقدار ثابت بزرگ‌تر از حداکثر مقدار ممکن تابع هدف استفاده کنید اگر حداکثر شناخته شده‌باشد یا اگر احتمال آن را داشته باشیم . در اینجا بالاترین مقدار ممکن از تابع ما ۳۰۰ است ( به عنوان مثال اگر همه متغیرها ۱۰ , f ( X ) = ۳۰۰ باشد . بنابراین من یک ثابت ۵۰۰ را انتخاب کردم . بنابراین , اگر یک راه‌حل آزمایشی در منطقه امکان پذیر نباشد , حتی اگر تابع هدف آن کوچک باشد , تابع هدف پاداش ( تابع تناسب ) از هر راه‌حل عملی بدتر است .2- از یک ضریب به اندازه کافی بزرگ استفاده کنید و آن را با مقدار تخلف ضرب کنید . این کار به الگوریتم کمک می‌کند تا یاد بگیرد چطور به حوزه امکان پذیر نزدیک شود .3- نحوه تعریف تابع جریمه معمولاً بر نرخ همگرایی یک الگوریتم تکاملی تأثیر می گذارد.4- در نهایت پس از حل مسئله، راه حل را تست کنید تا ببینید آیا محدوده ها رعایت شده اند یا خیر. اگر راه حل محدودیت ها را برآورده نکند، نشان می دهد که جریمه بزرگتری مورد نیاز است. با این حال، در مسائلی که بهینه دقیقاً در مرز منطقه امکان پذیر است (یا بسیار نزدیک به محدودیت ها) که در برخی از مشکلات رایج است، یک جریمه بسیار سخت و بزرگ ممکن است مانع از نزدیک شدن الگوریتم ژنتیک به منطقه بهینه شود. در چنین حالتی طراحی یک تابع جریمه مناسب ممکن است چالش برانگیزتر باشد. در واقع کاری که باید انجام دهیم این است که یک تابع جریمه طراحی کنیم که به الگوریتم اجازه دهد دامنه غیرقابل اجرا را جستجو کند و در نهایت به یک راه حل عملی همگرا شود. از این رو ممکن است به عملکردهای پنالتی پیچیده تری نیاز داشته باشید. اما در بیشتر موارد فرمول فوق به خوبی کار می کند.پارامترهای الگوریتم ژنتیکی:هر الگوریتم تکاملی (فرا ابتکاری) چند پارامتر دارد که باید تنظیم شود. الگوریتم ژنتیک نیز دارای برخی پارامترها است. پارامترها به عنوان یک دیکشنری تعریف می‌شوند:algorithm_param = {&#x27;max_num_iteration&#x27;: None,\                   &#x27;population_size&#x27;:100,\                   &#x27;mutation_probability&#x27;:0.1,\                   &#x27;elit_ratio&#x27;: 0.01,\                   &#x27;crossover_probability&#x27;: 0.5,\                   &#x27;parents_portion&#x27;: 0.3,\                   &#x27;crossover_type&#x27;:&#x27;uniform&#x27;,\                   &#x27;max_iteration_without_improv&#x27;:None}دیکشنری فوق به مقادیر پیش‌فرض که قبلا ً تنظیم شده‌است اشاره دارد . ممکن است به سادگی این کد را از اینجا کپی کرده و مقادیر را تغییر داده و از دیکشنری تغییر یافته به عنوان آرگومان های geneticalgorithm استفاده کند . راه دیگر دسترسی به این فرهنگ لغت با استفاده از فرمان زیر است :import numpy as npfrom geneticalgorithm import geneticalgorithm as gadef f(X):             return np.sum(X)varbound=np.array([[0,10]]*3)algorithm_param = {&#x27;max_num_iteration&#x27;: 3000,\                                          &#x27;population_size&#x27;:100,\                                          &#x27;mutation_probability&#x27;:0.1,\                                          &#x27;elit_ratio&#x27;: 0.01,\                                          &#x27;crossover_probability&#x27;: 0.5,\                                         &#x27;parents_portion&#x27;: 0.3,\                                         &#x27;crossover_type&#x27;:&#x27;uniform&#x27;,\                                         &#x27;max_iteration_without_improv&#x27;:None}model=ga(function=f,\                         dimension=3,\                         variable_type=&#x27;real&#x27;,\                         variable_boundaries=varbound,\                        algorithm_parameters=algorithm_param)model.run()توجه داشته باشید که max_num_iteration به 3000 تغییر کرده است (قبلا None بود). در بالا دیدیم که الگوریتم برای 1500 تکرار اجرا می شود. از آنجایی که ما پارامترها را تعریف نکردیم، اگوریتم ژنتیک مقادیر پیش فرض را اعمال می کرد. اما اگر این کد را اجرا کنید اگوریتم ژنتیک این بار 3000 تکرار را اجرا می کند.برای تغییر سایر پارامترها می توان به سادگی مقادیر را مطابق با Arguments جایگزین کرد.@ بیش‌ترین تعداد تکرار(max_num_iteration):  اگر این معیار دارای مقدار نباشد , الگوریتم حداکثر تعداد تکرارها را به صورت تابع بعد , حدود و اندازه جمعیت تنظیم می‌کند . کاربر ممکن است هر تعداد تکرار را که می‌خواهند وارد کند . به شدت توصیه می‌شود که خود کاربر بیش‌ترین تعداد تکرار را تعیین کند و از None استفاده نکند .@ سایز جمعیت (population_size):تعداد راه حل های(جمعیت/فرضیه) آزمایشی را در هر تکرار تعیین می کند. مقدار پیش فرض 100 است.@ جهش (mutation_probability):مشخص می‌کند که شانس هر ژن در هر راه‌حل مجزا با یک مقدار تصادفی جایگزین می‌گردد . پیش‌فرض ۰.۱ ( یعنی ۱۰ درصد ) است .@ نرخ_نخبگی (elit_ration):تعداد نخبگان جامعه را تعیین می کند. مقدار پیش فرض 0.01 (یعنی 1 درصد) است. به عنوان مثال وقتی اندازه جمعیت 100 است و نسبت elit 0.01 است، یک نخبه در جمعیت وجود دارد. اگر این پارامتر روی صفر تنظیم شود، اگوریتم ژنتیک یک الگوریتم ژنتیک استاندارد را به جای GA نخبه‌گرا پیاده‌سازی می‌کند.@ترکیب(crossover _ probability):مشخص می‌کند که شانس یک راه‌حل وجود دارد تا ژنوم آن ( ملقب به ویژگی ) را به راه‌حل‌های آزمایشی جدید ( ملقب به فرزندان ) منتقل کند; مقدار پیش‌فرض ۰.۵ است ( یعنی ۵۰ درصد )@پارامتر(parents _ portion):بخش جمعیتی که توسط اعضای نسل قبلی ( معروف به والدین ) پر شده بود , ۰.۳ درصد ( یعنی ۳۰ درصد جمعیت ) است .@ نوع ترکیب(crossover _ type :):شامل سه نوع می باشد: one_point; two_point, and uniform crossover functions که پیش فرض uniform crossover می باشد.@پارامتر(max_iteration_without_improv):اگر الگوریتم‌ها تابع هدف را بیش از تعداد تکرارهای متوالی تعیین‌شده توسط این پارامتر بهبود ندهند، آنگاه گوریتم ژنتیکی متوقف می‌شود و بهترین راه‌حل پیدا شده را قبل از برآورده شدن max_num_iterations گزارش می‌کند. مقدار پیش فرض None است.تابع (Function):تابع داده‌شده باید تنها باید یک آرگومان را بپذیرد و عددی را باز گرداند . آرگومان یک تابع خاص ، آرایه numpy است که توسط geneticalgorithm وارد می‌شود . به هر دلیلی اگر نمی‌خواهید با numpy در عملکرد خود کار کنید ، ممکن است آرایه numpy را به یک لیست تبدیل کنید . Arguments@param function &lt;Callable&gt; - به حداقل رساندن تابع هدف داده‌شدهتوجه: این پیاده سازی تابع هدف داده شده را به حداقل می رساند. (برای بیشینه سازی، تابع را در علامت منفی ضرب کنید: قدر مطلق خروجی تابع هدف واقعی خواهد بود)@param dimension &lt;integer&gt;: - the number of decision variables@param variable_type &lt;string&gt;: - &#x27;bool&#x27; if all variables are Boolean; &#x27;int&#x27; if all variables are integer; and &#x27;real&#x27; if all variables are real value or continuous (for mixed type see @param variable_type_mixed).@param variable_boundaries &lt;numpy array/None&gt;: - Default None; leave it None if variable_type is &#x27;bool&#x27;; otherwise provide an array of tuples of length two as boundaries for each variable; the length of the array must be equal dimension. For example, np.array([0,100],[0,200]) determines lower boundary 0 and upper boundary 100 for first and upper boundary 200 for second variable where dimension is 2.@param variable_type_mixed &lt;numpy array/None&gt;: - Default None; leave it None if all variables have the same type; otherwise this can be used to specify the type of each variable separately. For example if the first variable is integer but the second one is real the input is: np.array([&#x27;int&#x27;],[&#x27;real&#x27;]). NOTE: it does not accept &#x27;bool&#x27;. If variable type is Boolean use &#x27;int&#x27; and provide a boundary as [0,1] in variable_boundaries. Also if variable_type_mixed is applied, variable_boundaries has to be defined.@param function_timeout &lt;float&gt;: - if the given function does not provide output before function_timeout (unit is seconds) the algorithm raise error. For example, when there is an infinite loop in the given function.@param algorithm_parameters:@ max_num_iteration &lt;int/None&gt;: - stoping criteria of the genetic algorithm (GA)@ population_size &lt;int&gt;@ mutation_probability &lt;float in [0,1]&gt;@ elit_ration &lt;float in [0,1]&gt;@ crossover_probability &lt;float in [0,1]&gt;@ parents_portion &lt;float in [0,1]&gt;@ crossover_type &lt;string&gt;: - Default is &#x27;uniform&#x27;; &#x27;one_point&#x27; or &#x27;two_point&#x27; are other options @ max_iteration_without_improv &lt;int/None&gt; - maximum number of successive iterations without improvement. If None it is ineffectiveمنبع :https://pypi.org/project/geneticalgorithm/</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Fri, 13 May 2022 17:48:55 +0430</pubDate>
            </item>
                    <item>
                <title>تولید داده های جدید با Variational_Autoencoder_VAE</title>
                <link>https://virgool.io/@babaiekomeil/%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%A8%D8%A7-variationalautoencodervae-trw9gdpkpjlf</link>
                <description>این کاراکترها توسط یک انسان نوشته نشده‌اند!! ما به شبکه عصبی یاد دادیم که چگونه این کار را انجام دهیم !نویسنده: کمیل آقابابایی_ارشد نرم افزاربرای مشاهده  کامل کد VAE لطفا به github من مراجعه کنید.یک Variational Autoencoders چیست؟رمزگذارهای خودکار، شبکه های عصبی هستند که برای تولید داده‌های جدید (آموزش بدون نظارت) استفاده می‌شوند. این مدل برای تولید داده‌های جدید برای ساخت مجموعه داده‌ها یا در مواردی که بخواهیم نویز از داده‌های خود را حذف کنیم، استفاده می شود.این  شبکه‌ها توسط چندین شبکه عصبی تشکیل شده‌اند: یک رمزگذار و یک رمزگشا. که توسط یک گلوگاه که فضای پنهانی(latent) است که در تصویر زیر نشان داده شده است به هم متصل شده‌اند:رمزگذار داده ها را تا فضای پنهان (Latent space) پردازش می کند و ابعاد را کاهش می دهد و رمزگشا داده ها را می گیرد و ساختار داده را بازسازی می کند تا خروجی مشابه داده های اصلی ما را بدهد. ما می توانیم از فضای پنهان برای نمایش داده های خود استفاده کنیم.در اینجا، ما در حال خواندن اعداد (Mnist Dataset) با تصاویری به اندازه  28x28 و پیکسل (784 المان)هستیم، می‌خواهیم آنها را به 32 عنصر فضای پنهان (Latent space) بازآفرینی(احیا) کنیم تا دوباره تصایری به اندازه  28x28 و 784پیکسل ایجاد کنیم.مجموعه داده MNIST مجموعه‌ای بزرگ از ارقام دست‌نویس است که معمولا ً برای پردازش تصویر استفاده می‌شود .می‌توانیم تمام کتابخانه‌های مورد نیاز را وارد کنیم :import numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlinefrom keras import models,layersfrom tensorflow import kerasopt = keras.optimizers.Adam()from keras.datasets import mnistما برای ساخت مدل  از keras.models و برای به کارگیری از Deep Learing از keras functional API بهره خواهیم برد. این راهی است که باید برای تعریف مدل‌های پیچیده مانند  multi-output models یا مدل هایی با لایه های مشترک.پس از اتمام وارد کردن کتابخانه های مورد نیاز ، ما باید مجموعه داده را وارد کنیم، که در این از دیتاست های موجود در  keras استفاده می کنیم.تصاویر مورد استفاده ما تصاویر سیاه و سفید با ابعاد 28x28 پیکسل هستند. هر پیکسل با یک عدد در مقیاس 1 تا 255 نشان داده می شود.پس از وارد کردن داده ها، آنها را با تقسیم هر پیکسل بر 255 نرمال می کنیم، که همه مقادیر را در مقیاس 0-1 قرار خواهند گرفت.(x_train, _), (x_test, _) = mnist.load_data() #Normalizationx_train = x_train.astype(&#x27;float32&#x27;)/255.0x_test = x_test.astype(&#x27;float32&#x27;)/255.0x_train = x_train.reshape((-1,784)) #to go from (60000,28,28) to new shape and -1 let#numpy to calculate the number for youx_test = x_test.reshape((-1,784))print(x_train.shape,x_test.shape)بعد از نرمال سازی، می باییست داده را برای لایه ورودی به آرایه تغییر شکل بدهیم.# dimensionality of the latents space embedding_dim = 32 #Input layerinput_img = layers.Input(shape=(784,))  #Encoding layerencoded = layers.Dense(embedding_dim, activation=&#x27;relu&#x27;)(input_img)#Decoding layerdecoded = layers.Dense(784,activation=&#x27;sigmoid&#x27;)(encoded) #Autoencoder --&gt; in this API Model, we define the Input tensor and the output layer#wraps the 2 layers of Encoder e Decoderautoencoder = models.Model(input_img,decoded)autoencoder.summary()#Encoderencoder = models.Model(input_img,encoded)encoder.summary()#Decoderencoded_input = layers.Input(shape=(embedding_dim,))decoder_layers = autoencoder.layers[-1]  #applying the last layerdecoder = models.Model(encoded_input,decoder_layers(encoded_input))print(input_img)print(encoded)هنگامی که همه داده ها را در اختیار داریم، می توانیم مدل خود را تعریف کنیم، که در آن می‌توانیم به وضوح سه بخش (Encoding، Bottleneck و Decoding) را ببینیم. با ساختار مدل خود می‌توانیم ببینیم که ما بیش از 25k پارامتر برای آموزش داریم که با وزن‌ها و بایاس‌ها نشان داده می‌شوند. این پارامترها به شما در تولید  داده های جدید کمک می‌کنند.پس از ساخت مدل می‌بایست مدل را (با تعریف بهینه ساز optimizer و تابع ضررloss funtcion)  کامپایل کنیم و آن را با مجموعه آموزشی مان هماهنگ(fit)می کنیم .  autoencoder.compile(optimizer=opt,loss=&#x27;binary_crossentropy&#x27;)history = autoencoder.fit(x_train,x_train,epochs=50,batch_size=256,shuffle=True,validation_             data=(x_test,x_test))برای نمایش نمودارهای loss و val_loss :plt.plot(history.history[&#x27;loss&#x27;],label=&#x27;loss&#x27;)plt.plot(history.history[&#x27;val_loss&#x27;],label=&#x27;val_loss&#x27;)plt.legend()plt.show()plt.close()The validation loss, compared to the training loss, tells us how much our model is good in generalising.از مقایسه validation loss با از training loss به این نتجه می رسیم که  که مدل ما چقدر در تعمیم(generalising) خوب است.اکنون که مدل را کامپایل و آموزش داده ایم، می توانیم داده های جدیدی را با پیش بینی مدل، تولید کنیم.encoded_imgs = encoder.predict(x_test)decoded_imgs = decoder.predict(encoded_imgs)print(encoded_imgs.shape,decoded_imgs.shape)n = 10plt.figure(figsize=(20,4))for i in range(n):      ax = plt.subplot(2, n, i+1)       plt.imshow(x_test[i].reshape((28,28)),cmap=&#x27;gray&#x27;)       ax.get_xaxis().set_visible(False)       ax.get_yaxis().set_visible(False)       ax = plt.subplot(2,n,i+1+n)       plt.imshow(decoded_imgs[i].reshape((28,28)),cmap=&#x27;gray&#x27;)       ax.get_xaxis().set_visible(False)       ax.get_yaxis().set_visible(False)plt.show()plt.close()با این کدها می توانیم  2 ردیف 10 عددی ترسیم  کنیم. در ردیف اول تصاویر واقعی و در ردیف دوم تصاویر تولید شده را داریم. همانطور که می بینیم، با اینکه برخی از اطلاعات را از دست می دهیم، اما داده های مشابه های را تولید کردیم.این مدل بسیار قدرتمندی است که می‌تواند با مدل‌های دیگر یادگیری ماشین و مدل‌های از پیش آموزش‌دیده ترکیب شود .همچنین برای کاهش نویز در داده‌ها نیز می توان استفاده نمود.                                                                                                                                            </description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Mon, 02 May 2022 18:37:52 +0430</pubDate>
            </item>
                    <item>
                <title>معرفي و  پياده سازي PCA يك فيلتر قوي برای پردازش تصوير</title>
                <link>https://virgool.io/@babaiekomeil/%D9%85%D8%B9%D8%B1%D9%81%D9%8A-%D9%88-%D9%BE%D9%8A%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%D9%8A-pca-%D9%8A%D9%83-%D9%81%D9%8A%D9%84%D8%AA%D8%B1-%D9%82%D9%88%D9%8A-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%D9%8A%D8%B1-jicn4fahyvqr</link>
                <description> babaiekomeil@gmail.com نگارننده : کمیل آقاباباییدر ابتدا به صورت مرحله به مرحله توضیحات و پیاده سازی PCA  را خدمت شما ارائه خواهم داد و  در نهایت پیاده سازی تمام مراحل  با استفاده از کتابخانه Scikit-Learn تنها فقط باچند خط کد   https://colab.research.google.com/drive/1qcvBXBUPc-eWn6rbwQ0KVEPG1fO1ZrVE?usp=sharing </description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Mon, 18 Apr 2022 00:58:55 +0430</pubDate>
            </item>
                    <item>
                <title>اموزش ساده و مختصر و کاربردی  پردازش تصویر با استفاده از Keras  در پایتون</title>
                <link>https://virgool.io/@babaiekomeil/%D8%A7%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-keras-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-ve0vnypevzi8</link>
                <description>به نام خداوند نون و قلم      خداوند آزادی و عشق و غمنگارنده: کمیل آقابابایی، ارشد نرم افزاربهار 1401آموزش کامل در : https://github.com/babaie62/Image-processing- برای ساخت مدل در Keras از دو روش می توان استفاده کرد:1- روش اول استفاده از مدل Sequential این روش که رایج ترین روش می باشد  یک مدل Sequential  ایجاد کرده و بعد به ترتیت لایه ها را به مدل اضافه می کنیم.2- روش دوم به کارگیری   Keras Functional API   در این حالت ما لایه ها را به صورت جداگانه و دلخواه می سازیم و تنها مسیری را که این لایه ها باید بهم متصل باشند را به یک مدل تبدیل می کنیم.در این نوشتار از با استفاده از مدل Sequential برای شناسایی اعداد دست نویس خواهیم پرداخت.سعی شده است که مطالب خلاصه و کاربردی بیان شده است.فرض بر این است که شما عزیزان با زبان پایتون و مفاهیم یادگیری ماشین آشنا می باشید.**زبان مورد استفاده : پایتون**بستر استفاده شده : colabفراخوانی دیتاست Mnist از Kerasfrom keras.datasets import mnist(train_images,train_labels) ,(test_images,test_labels)= mnist.load_data()print(&quot;tarin:&quot;,train_images.shape,&quot;test_images:&quot;,test_images.shape)OutPut:Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz11493376/11490434 [==============================] - 0s 0us/step 11501568/11490434 [==============================] - 0s 0us/step tarin: (60000, 28, 28) test_images: (10000, 28, 28) همانطور که مشاهده می کنید دیتا ست مورد نظر به داده های آموزش و تست تقسیم شده که شامل تصاویر به ابعاد 28*28 می باشد.حال اگر بخواهیم دیتاست را به صورت محلی (یعنی ابتدا دیتاست را دانلود کنیم و سپس آن را از فضای گوگل درایو فراخوانی کنیم) می بایست از دستورات زیر استفاده نمود :from google.colab import drivedrive.mount(&#x27;/content/drive&#x27;)لینک دانلود دیتا ست Mnist: https://github.com/babaie62/Image-processing-/blob/main/mnist.npz بعد از دادن دسترسی های مورد نیاز به colab جهت دسترسی به فضای شخصی شما در گوگل درایو خروجی زیر را  می بایست مشاهده کنید:OutPut:Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(&quot;/content/drive&quot;, force_remount=True).data=np.load(&#x27;/content/drive/My Drive/Colab Notebooks/Keras/mnist.npz&#x27;)# مسیر را معرفی می کنیمOutPut:----نکته : در ابتدا سعی کنید هر کتابخانه ای که نیاز دارید فراخوانی کنید.import numpy as np # استفاده از این کتابخانه در ادامه توضیح داده خواهد شدimport matplotlib.pyplot as plt # از این کتابخانه جهن نمایش تصاویر و نمودارها استفاده خواهیم کردfrom keras.utils import np_utils # ؟؟؟؟؟بعد از فراخوانی دیتاست بدلیل این که دیتاست به دارای دو قسمت x_train و y_train می باشد آنها را در train_images,train_labels قرار می دهیم تا در روند آموزش به کارگیری گردند همچنین برای داده های تست نیز همین کار را انجا می دهیم.train_images,train_labels=data[&#x27;x_train&#x27;],np.array(data[&#x27;y_train&#x27;])test_images,test_labels=data[&#x27;x_test&#x27;],np.array(data[&#x27;y_test&#x27;])print(&quot;tarin:&quot;,train_images.shape,&quot;test_images:&quot;,test_images.shape)OutPut:tarin: (60000, 28, 28) test_images: (10000, 28, 28)برای نمایش یکی از داده های train یا tset جهت صحت داده های فراخوانی شده  با استفاده از کتابخانه matplotlib که قبلا فراخوانی کرده تصویر را مشاهده می کنیم:digit = train_images[24]#  ابتدا تصویر مورد نظررا در یک متغییر تعریف می کنیم plt.imshow(digit , cmap= &#x27;binary&#x27;)# cmap انتخاب رنگ پس زمینه OutPut:&lt;matplotlib.image.AxesImage at 0x7fc4dd8f2ed0&gt;پیش پردازش داده در اینجا شامل دو مرحله می باشد :1- داده های آموزش(train) به صورت تصاویر 28*28 هستند که این تصاویر می بایست به یک ردیف از  داده ها تبدیل یعنی به بردار تبدیل شوند.که این کار با استفاده از  دستور ()reshape انجام می شود . همین مراحل را برای داده آزمایش (test) نیز انجام می گردد. 2- نرمال سازی داده (مقادیر عکس می بایست بین 0 و 1 باشد ) می توان در دستور reshape(60000,784) مستقیما اندازه بردار راوارد نمود یا به صورت زیر کدها را نوشت تا به صورت اتواتیک تعداد و اندازه بردارها را از داده های آموزش دریافت کند. # X_train=train_images.reshape(60000,784)   X_train=train_images.reshape(train_images.shape[0],(train_images.shape[1]*train_images.shape[2]))#X_train.shapeOutPut:(60000, 784)# X_test=test_images.reshape(10000,784) X_test=test_images.reshape(test_images.shape[0],(test_images.shape[1]*test_images.shape[2]))X_test.shapeOutPut:(10000, 784)همانطور که در خروجی مشاهده می کنید داده ها  به یک بردار با بعد  784 تبدیل شده است. مرسوم این است که مقادیر پیکسل تصاویر را بین 0 و 1 کنیم  اگر 255 بیشترین مقدار پیکسل هست همه را  تقسیم بر 255 بکنیم و اگر بیشترین مقدار پیکسل را نمی دانیم ازکتابخانه نامپای استفاده می کنیم .#image = image /255 # برای نرمالیزه کردن حتما باید از حالت اینتیجر به فلوت تغییر بدهیم و گرنه ارور دریافت می کنیم# می خواهیم تایپ های تصاویر را هم مانند هم کنیم مثلا اگر بعضی انوع اینتجر و یا فلوت باشند همه را فلوت می کنیمX_train=X_train.astype(&#x27;float32&#x27;) #(np.float32)X_test=X_test.astype(&#x27;float32&#x27;) #(np.float32)X_train=X_train/np.max(X_train)#X_train /=255X_test=X_test/np.max(X_test)#X_test /=255خوب اکنون باید لیبل ها را به شکل One Hot Encoding تبدیل کنیم زیرا نمی توان از خود عدد در مدل استفاده نمود  و چون 10 تا کلاس داریم یک بردار که دارای 10 بعد که همه درایه ها صفر می باشد و تنها در درایه مرتبط یکیعنی اگر لیبل 5 باشد به صورت : 0000100000print(&#x27;train_labels: &#x27;,train_labels.shape[0],np.unique(train_labels))print(&#x27;test_labels: &#x27;,test_labels.shape[0],np.unique(test_labels))OutPut:train_labels:  60000 [0 1 2 3 4 5 6 7 8 9] test_labels:  10000 [0 1 2 3 4 5 6 7 8 9]از keras.utils برای تبدیل لیبل ها به One Hot Encoding  استفاده می کنیم. from keras.utils import np_utils#Y_train = np_utils.to_categorical(train_labels)Y_test = np_utils.to_categorical(test_labels)print(&#x27;train_labels[2]:&#x27;,train_labels[2],&#x27;\n&#x27;,&#x27;Y_train[2]:&#x27;,Y_train[2],&#x27;\n&#x27;,&#x27;\n&#x27;)print(&#x27;test_labels[2]:&#x27;,&#x27;\n&#x27;,test_labels[2],&#x27;Y_test[2]:&#x27;,Y_test[2])OutPut:train_labels[2]: 4   Y_train[2]: [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]     test_labels[2]: 1     Y_test[2]: [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.] پایان مرحله آماده سازی داده و شروع ساخت مدل:ما یک مدل Fully Connected Layer (Dense)   فراهم می کنیم که ورودیش X-train باشد که با Y_train آموزش می بیند و دست آخر با داده های test مورد ارزیابی قرار می گیرد. یعنی ورودی ما داری 784 نورن می باشد ما می خواهیم در لایه بعدی 500 نورن و در لایه بعد مثلا 100 نورون و در پایان با 10 نورون خروجی داشته باشیم.from keras.models import Sequentialfrom keras.layers import Densefrom tensorflow.keras.optimizers import SGDfrom keras.losses import categorical_crossentropyساخت مدل:myModle= Sequential()myModle.add(Dense(500,activation=&#x27;relu&#x27;,input_shape=(784,)))myModle.add(Dense(100,activation=&#x27;relu&#x27;))myModle.add(Dense(10,activation=&#x27;softmax&#x27;))myModle.summary()# نمایش اطلاعات مدل معمولا از تابع relu به عنوان تابع فعال ساز و  در خروجی از تابع softmax استفاده می کنند.OutPut:Model: &quot;sequential&quot; _________________________________________________________________  Layer (type)                Output Shape              Param #    =================================================================  dense (Dense)               (None, 500)               392500                                                                        dense_1 (Dense)             (None, 100)               50100                                                                         dense_2 (Dense)             (None, 10)                1010                                                                         ================================================================= Total params: 443,610 Trainable params: 443,610 Non-trainable params: 0 _________________________________________________________________تنطیم  پارامترهای (optimizer و loss و...) را که مدل برای کامپایل  نیاز دارد. دقت یا accuracy باید به سمت یک یا همان 100% و خطا یا loss به سمت صفر حرکت  کند.myModle.compile(optimizer=SGD(lr=0.001),loss=categorical_crossentropy,metrics=[&#x27;accuracy&#x27;])OutPut:/usr/local/lib/python3.7/dist-packages/keras/optimizer_v2/gradient_descent.py:102: UserWarning: The &#x60;lr&#x60; argument is deprecated, use &#x60;learning_rate&#x60; instead.   super(SGD, self).__init__(name, **kwargs)پایان مرحله ساخت مدل و شروع آموزش مدل:nertwork_history = myModle.fit(x=X_train,y=Y_train,batch_size=128, epochs=20)# بچ سایز تعداد دادهای که در هر دور آموزش وارد مدل می شود که هر چقدر بیشتر باشد دقتش بیشتر می شود و چون تعداد داده های ما زیاد است پس 128 می گیریم.OutPut:Epoch 1/20 469/469 [==============================] - 3s 6ms/step - loss: 2.1683 - accuracy: 0.3051 Epoch 2/20 469/469 [==============================] - 3s 6ms/step - loss: 1.8379 - accuracy: 0.6263 Epoch 3/20 469/469 [==============================] - 3s 6ms/step - loss: 1.5086 - accuracy: 0.7388 Epoch 4/20 469/469 [==============================] - 3s 6ms/step - loss: 1.2206 - accuracy: 0.7870 Epoch 5/20 469/469 [==============================] - 3s 6ms/step - loss: 1.0009 - accuracy: 0.8144 Epoch 6/20 469/469 [==============================] - 3s 6ms/step - loss: 0.8459 - accuracy: 0.8321 Epoch 7/20 469/469 [==============================] - 3s 6ms/step - loss: 0.7379 - accuracy: 0.8444 Epoch 8/20 469/469 [==============================] - 3s 6ms/step - loss: 0.6612 - accuracy: 0.8540 Epoch 9/20 469/469 [==============================] - 3s 6ms/step - loss: 0.6046 - accuracy: 0.8611 Epoch 10/20 469/469 [==============================] - 3s 6ms/step - loss: 0.5615 - accuracy: 0.8670 Epoch 11/20 469/469 [==============================] - 3s 7ms/step - loss: 0.5275 - accuracy: 0.8715 Epoch 12/20 469/469 [==============================] - 3s 6ms/step - loss: 0.5000 - accuracy: 0.8752 Epoch 13/20 469/469 [==============================] - 3s 6ms/step - loss: 0.4775 - accuracy: 0.8790 Epoch 14/20 469/469 [==============================] - 3s 6ms/step - loss: 0.4585 - accuracy: 0.8824 Epoch 15/20 469/469 [==============================] - 3s 6ms/step - loss: 0.4424 - accuracy: 0.8851 Epoch 16/20 469/469 [==============================] - 3s 6ms/step - loss: 0.4284 - accuracy: 0.8875 Epoch 17/20 469/469 [==============================] - 3s 6ms/step - loss: 0.4162 - accuracy: 0.8903 Epoch 18/20 469/469 [==============================] - 3s 6ms/step - loss: 0.4053 - accuracy: 0.8920 Epoch 19/20 469/469 [==============================] - 3s 6ms/step - loss: 0.3957 - accuracy: 0.8936 Epoch 20/20 469/469 [==============================] - 3s 6ms/step - loss: 0.3870 - accuracy: 0.8956نکنته:  انتخاب تعداد  اپکوک ها کاملا تجربی هست و باید  مراقب بود که مدل گرفتار  Overfitting و Underfitting نشود. از متغیر history برای رسم نمودار loss و accuracy برای بررسی آموزش استفاده می گردد.history = nertwork_history.history# جهت تبدیل به دیکشنریprint(&#x27;type_nertwork_history :&#x27;,type(nertwork_history),&#x27;\n&#x27;)print(&#x27;type_history :&#x27;,type(history))print(history.keys())OutPut:type_nertwork_history : &lt;class &#x27;keras.callbacks.History&#x27;&gt;   type_history : &lt;class &#x27;dict&#x27;&gt;dict_keys([&#x27;loss&#x27;, &#x27;accuracy&#x27;])جهت نمایش نمودار به شیوه زیر عمل می کنیم:losses =history[&#x27;loss&#x27;]accuracy =history [&#x27;accuracy&#x27;]plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Loss&#x27;)plt.plot(losses)plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Accuracy&#x27;)plt.plot(accuracy)OutPut:حال اگر بخواهیم در نمودار رنگ ها را معرفی کنیم:fig, ax = plt.subplots()losses =history[&#x27;loss&#x27;]accuracy =history [&#x27;accuracy&#x27;]line_up, = ax.plot(losses, label=&#x27;loss&#x27;)line_down, = ax.plot(accuracy, label=&#x27;accuracy&#x27;)ax.legend(handles=[line_up, line_down])برای نمایش نمودار ها به صورت مستقل:losses =history[&#x27;loss&#x27;]plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Loss&#x27;)plt.plot(losses)plt.figure()# جهت نمایش نمودارها به صورت مجزاaccuracy =history [&#x27;accuracy&#x27;]plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Accuracy&#x27;)plt.plot(accuracy)حال بهتر می باشد تمام دستورات نمایش را در یک تابع قرار دهیم تا در هرجایی که دلمان خواست استفاده کنیمdef plot_history(net_history):history = net_history.history# برای ساخت دیکشنریaccuracy =history [&#x27;accuracy&#x27;]plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Accuracy&#x27;)plt.plot(accuracy)plt.figure()losses =history[&#x27;loss&#x27;]plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Loss&#x27;)plt.plot(losses)فراخوانی تابع ایجاد شده:plot_history(nertwork_history)می توان داده train را به Valadation نیز تقسیم کنیم و دقت را ارزیابی کنیم و بعد پارامترها را آنقدر تغییر بدهیم تا بهینه ترین آموزش را داشته باشیم. مدل ساخته شده این کار را در ابتدا می توان انجام داد در هنگام فیت کردن مدل به شکل زیر:nertwork_history2 = myModle.fit(X_train,Y_train,batch_size=128, epochs=20,validation_split=0.2)OutPut:Epoch 1/20 375/375 [==============================] - 3s 8ms/step - loss: 2.1928 - accuracy: 0.2387 - val_loss: 2.0489 - val_accuracy: 0.4732 Epoch 2/20 375/375 [==============================] - 3s 9ms/step - loss: 1.9121 - accuracy: 0.5769 - val_loss: 1.7581 - val_accuracy: 0.6754 Epoch 3/20 375/375 [==============================] - 3s 7ms/step - loss: 1.6232 - accuracy: 0.6979 - val_loss: 1.4630 - val_accuracy: 0.7575 Epoch 4/20 375/375 [==============================] - 3s 8ms/step - loss: 1.3513 - accuracy: 0.7565 - val_loss: 1.2078 - val_accuracy: 0.7959 Epoch 5/20 375/375 [==============================] - 3s 7ms/step - loss: 1.1332 - accuracy: 0.7880 - val_loss: 1.0140 - val_accuracy: 0.8188 Epoch 6/20 375/375 [==============================] - 3s 7ms/step - loss: 0.9707 - accuracy: 0.8092 - val_loss: 0.8720 - val_accuracy: 0.8352 Epoch 7/20 375/375 [==============================] - 3s 7ms/step - loss: 0.8511 - accuracy: 0.8231 - val_loss: 0.7671 - val_accuracy: 0.8472 Epoch 8/20 375/375 [==============================] - 3s 8ms/step - loss: 0.7617 - accuracy: 0.8357 - val_loss: 0.6889 - val_accuracy: 0.8560 Epoch 9/20 375/375 [==============================] - 3s 8ms/step - loss: 0.6937 - accuracy: 0.8452 - val_loss: 0.6291 - val_accuracy: 0.8633 Epoch 10/20 375/375 [==============================] - 3s 7ms/step - loss: 0.6407 - accuracy: 0.8521 - val_loss: 0.5824 - val_accuracy: 0.8688 Epoch 11/20 375/375 [==============================] - 3s 7ms/step - loss: 0.5987 - accuracy: 0.8581 - val_loss: 0.5452 - val_accuracy: 0.8726 Epoch 12/20 375/375 [==============================] - 3s 7ms/step - loss: 0.5645 - accuracy: 0.8636 - val_loss: 0.5150 - val_accuracy: 0.8773 Epoch 13/20 375/375 [==============================] - 3s 8ms/step - loss: 0.5362 - accuracy: 0.8676 - val_loss: 0.4900 - val_accuracy: 0.8803 Epoch 14/20 375/375 [==============================] - 3s 7ms/step - loss: 0.5123 - accuracy: 0.8721 - val_loss: 0.4688 - val_accuracy: 0.8836 Epoch 15/20 375/375 [==============================] - 3s 8ms/step - loss: 0.4919 - accuracy: 0.8754 - val_loss: 0.4507 - val_accuracy: 0.8873 Epoch 16/20 375/375 [==============================] - 3s 7ms/step - loss: 0.4743 - accuracy: 0.8784 - val_loss: 0.4351 - val_accuracy: 0.8899 Epoch 17/20 375/375 [==============================] - 3s 7ms/step - loss: 0.4589 - accuracy: 0.8813 - val_loss: 0.4215 - val_accuracy: 0.8928 Epoch 18/20 375/375 [==============================] - 3s 7ms/step - loss: 0.4453 - accuracy: 0.8838 - val_loss: 0.4096 - val_accuracy: 0.8939 Epoch 19/20 375/375 [==============================] - 3s 7ms/step - loss: 0.4332 - accuracy: 0.8864 - val_loss: 0.3989 - val_accuracy: 0.8957 Epoch 20/20 375/375 [==============================] - 3s 8ms/step - loss: 0.4223 - accuracy: 0.8881 - val_loss: 0.3894 - val_accuracy: 0.8970print(nertwork_history2.history.keys())OutPut:dict_keys([&#x27;loss&#x27;, &#x27;accuracy&#x27;, &#x27;val_loss&#x27;, &#x27;val_accuracy&#x27;])برای نشاند دادن نمودارهای &#x27;val_loss&#x27;, &#x27;val_accuracy&#x27; تابع را به شکل زیر تعریف می کنیم:def plot_history2(net_history):history = net_history.history# برای ساخت دیکشنری#********************#*****************fig, ax = plt.subplots()accuracy =history [&#x27;accuracy&#x27;]plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Accuracy&#x27;)line_up, = ax.plot(accuracy, label=&#x27;accuracy&#x27;)if len(history.keys()) &gt; 2 :  accuracy_val =history [&#x27;val_accuracy&#x27;]  line_down, = ax.plot(accuracy_val, label=&#x27;accuracy_val&#x27;)ax.legend(handles=[line_up, line_down])plt.figure()fig, ax = plt.subplots()losses =history[&#x27;loss&#x27;]plt.xlabel(&#x27;Epochs&#x27;)plt.ylabel(&#x27;Loss&#x27;)line_up, = ax.plot(losses , label=&#x27;loss&#x27;)if len(history.keys()) &gt; 2 :  losses_val =history[&#x27;val_loss&#x27;]  line_down, = ax.plot(losses_val, label=&#x27;losses_val&#x27;)ax.legend(handles=[line_up, line_down])plot_history2(nertwork_history2)OutPut:ارزیابی مدل ساخته شده با داده tset:test_loss, test_acc =myModle2.evaluate(X_test, Y_test)OutPut:313/313 [==============================] - 1s 2ms/step - loss: 0.4273 - accuracy: 0.8899test_lable_p = myModle2.predict(X_test) خروجی 10*1000 هست که بیشترین مقدار از اعداد اعشاری به عنوان کلاس استفاده می شود و حال برای تبدیل کردن لیبل به یک عدد از کتابخانه نامپای استفاده می کنیم:import numpy as nptest_lable_p = np.argmax(test_lable_p , axis=1,)# اگر axisرا مساوی با یک قرار می دهیم یعنی فقط اندیکیس (مکان) ماکسیمم مقدار در هر ردیف افقی را بگیرtest_lable_pOutPut:array([7, 2, 1, ..., 4, 5, 6])منابع: deep learning with python book,FRANÇOIS CHOLLET,©2018 by Manning Publications Co.,ISBN 9781617294433,Printed in the United States of Americaآموزش یادگیری عمیق : سعید محققی</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Tue, 05 Apr 2022 22:18:26 +0430</pubDate>
            </item>
                    <item>
                <title>تعیین قطبیت نظرات با ترکیب مدل‌های CNN و BLSTM با بهره گیری از بردارهای کلمات Static و Dynamic</title>
                <link>https://virgool.io/@babaiekomeil/%D8%AA%D8%B9%DB%8C%DB%8C%D9%86-%D9%82%D8%B7%D8%A8%DB%8C%D8%AA-%D9%86%D8%B8%D8%B1%D8%A7%D8%AAl-%D8%A8%D8%A7-%D8%AA%D8%B1%DA%A9%DB%8C%D8%A8-%D9%85%D8%AF%D9%84-%D9%87%D8%A7%DB%8C-cnn-%D9%88-blstm-%D8%A8%D8%A7-%D8%A8%D9%87%D8%B1%D9%87-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%A8%D8%B1%D8%AF%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%DA%A9%D9%84%D9%85%D8%A7%D8%AA-static-%D9%88-dynamic-vdvn0g2wimqe</link>
                <description>?استاد راهنما: دکتر عباس عکاسینگارنده:   کمیل آقابابایی، ارشد نرم افزار  تابستان 1400#عشقسپاسگزاری:برخود لازم می‌دانم از استاد فرهیخته، جناب آقای دکتر عباس عکاسی که در طول انجام این پژوهش از راهنمایی‌های عالمانه و دلسوزانه‌ی ایشان بهره مند بودم، تشکر و قدردانی کنم.چکیدهبا افزایش تعداد وب سایت‌های ارتباط جمعی , مردم تمایل دارند دیدگاه‌های خود را در مورد همه چیز به صورت آنلاین به اشتراک بگذارند. این راهی مناسب برای انتقال پیام‌ها به کاربران نهایی در یک موضوع خاص است. آنالیز احساسی شاخه‌ای از پردازش زبان طبیعی[1] است که به شناسایی نظرات کاربران نسبت به موضوعات خاص اشاره دارد. این کار در زمینه‌های مختلفی مانند بازاریابی، خدمات مشتری و غیره مورد استفاده قرار می‌گیرد. از سوی دیگر، یادگیری عمیق[2] به دلیل نقش موفقیت‌آمیز آن در چندین کار پردازش زبان طبیعی محبوب شده‌است. هدف این مقاله ارائه یک معماری یادگیری عمیق نوین برای تحلیل احساسات[3]فارسی است . با توجه به مدل پیشنهادی، ویژگی‌های محلی توسط شبکه‌های عصبی کانولوشن[4] استخراج می‌شوند و وابستگی‌های طولانی‌مدت توسط LSTM دوطرفه[5]، بنابراین این مدل می‌تواند از توانایی‌های شبکه‌های عصبی کانولوشن و  LSTM دوطرفه بهره ببرد. علاوه بر این، عملکرد روش پیشنهادی را با بهره‌گیری از دو مدل نمایش کلمات Word2vec و BERT با هم مورد مقایسه قرار می‌دهیم. این اولین تلاش است که یک مدل یادگیری عمیق ترکیبی را با بهره‌گیری از نمایش کلمات BERT، برای تحلیل احساسات فارسی مورد استفاده قرار می‌گیرد .ما مدل پیشنهادی را بر روی مجموعه داده‌های فارسی و انگلیسی که در این مطالعه معرفی شده‌است، ارزیابی می‌کنیم . نتایج تجربی اثربخشی مدل پیشنهادی را با دقت ۸۵ % در زبان فارسی و 88% در زبان انگلیسی نشان می‌دهد .کلمات کلیدی: تعیین قطبیت متن، ترکیب مدل‌های شبکه عمیق، بردارهای کلمات ایستا و پویا، LSTMدوطرفه، شبکه عصبی کانولوشن[1] NLP: Neuro linguistic programming[2] Deep Learning[3] Sentiment analysis[4] Convulsive neural networks[5] Bidirectional Long short-term memory#روش پیشنهادی فهرست مطالبعنوان صفحهفصل اول: کلیات تحقیق1-1- مقدمه. 31-2- بیان مسئله. 31-3- اهداف تحقیق.. 81-4- فرضیه‌های تحقیق.. 91-5- جنبه جدید و نوآوری تحقیق.. 91-6- ساختار پژوهش. 9فصل دوم:ادبیات و پیشینه تحقیق2-1- مقدمه. 122-2- آنالیز احساسات.. 122-2-1- سطح سند. 122-2-2- سطح جمله. 132-2-3- سطح بعد(جنبه) 132-3- مدل‌های زبانی.. 132-3-1- مدل سازی زبانی آماری.. 142-3-2- مدلهای زبانی عصبی.. 162-4- تعبیه کلمات.. 172-4-1-بردار کلمه. 182-4-2- رمزگذاری One-hot 192-4-3- صندوقچه کلمات.. 212-4-4- کدگذاری سفارشی.. 222-4-5- Word2Vec. 242-4-5-1- CBOW... 262-4-5-2- Skip-gram.. 262-4-6- BERT. 272-5-یادگیری عمیق.. 292-5-1- شبکه عصبی کانولوشن.. 302-5-2- شبکه عصبی LSTM دوطرفه. 322-6- یادگیری ماشین ترکیبی  342-7-پیشینه پژوهش... 35فصل سوم: روش پیشنهادی3-1- مقدمه. 413-2- طرح روش پیشنهادی.. 423-3- پیش پردازش... 433-3-1- نرمالسازی.. 443-3-2- اصلاح دادهی گمشده 453-3-3- تقسیم بندی.. 473-4- استخراج ویژگی.. 473-4-1- Word2vec. 473-4-2- BERT. 503-5- طبقه بندی.. 533-5-1- شبکه‌ عصبی کانولوشن.. 573-5-1-1- ماکس Pooling. 573-5-1-2-  Drop out 583-5-2- شبکه‌ LSTM دوطرفه. 583-5-3- اتصال به صورت کامل.. 60فصل چهارم: ارزیابی روش پیشنهادی4-1- مقدمه. 624-2- محیط شبیه سازی.. 624-3- مجموعه داده 634-4- پارامترهای ارزیابی.. 644-5- نتایج روش پیشنهادی.. 654-6- نتیجه گیری.. 66فصل پنجم: نتیجه‌گیری و پیشنهادات5-1- نتیجه‌گیری.. 695-2- زمینه‌های تحقیقاتی آتی.. 70منابع. 70فهرست جداولجدول  (2-1)طرح تعبیه سازی کلمات با استفاده از کدگذاری ONE-HOT برای یک لغت نامه ۹ کلمه‌ای.. 20جدول (2-2)کد گذاری سفارشی.. 22جدول (4-1)توزیع قطبیت نظرات در مجموعه داده فارسی.. 63جدول (4-2) توزیع قطبیت نظرات  در مجموعه داده انگلیسی.. 64جدول (4-3) مقایسه روش پیشنهادی و مقاله پایه براساس معیارهای  ارزیابی.. 65فهرست اشکالشکل (2-1) مدل N-Gram در سطح کلمات.. 16شکل (2-2) تعبیه کلمات [15]. 18شکل (2-3) کدگذاری one-hot 19شکل (2-4) Word2Vec. 25شکل (2-5) Skip-gram &amp;amp;amp;amp;amp;amp;amp;amp;amp; CBOW... 27شکل (2-6) BERT. 29شکل (2-7) CNN.. 31شکل (2-8) BLSTM... 33شکل (3-1) طرح روش پیشنهادی.. 42شکل (3-2) نحوه ی بهبود داده ها 43شکل (3-3) عملیات پیش پردازش بروی داده ها 44شکل (3-4) نوع ویژگی جهت اصلاح داده گمشده 46شکل (3-5) نحوه پیش بینی لغت.. 49شکل (3-6) Fine  - tuning BERT با استفاده از  توکن [CLS] 52شکل (3-7) Fine  - tuning BERT با استفاده از همه  توکن.. 53شکل (3-8) الگوریتمهای دسته بندی.. 54شکل (3-9) معماری روش پیشنهادی.. 57شکل (3-10) LSTM UNIT. 59شکل (3-11) طرح شماتیک روش پیشنهادی.. 60** جهت دریافت متن کامل این پژوهش درخواست خود را به آدرس زیر ارسال نمائید:babaiekomeil@gmail.com</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Wed, 16 Mar 2022 13:58:52 +0330</pubDate>
            </item>
                    <item>
                <title>مدل &quot; CNN - BiLSTM &quot; برای تحلیل احساسات سطح سند</title>
                <link>https://virgool.io/@babaiekomeil/a-cnn-bilstm-model-for-document-level-sentiment-analysis-sylqedc1oyzt</link>
                <description>Maryem Rhanoui 1,2 , Mounia Mikram 2,3 , Siham Yousfi 2,4 and Soukaina Barzali 2* Correspondence: mrhanoui@esi.ac.maReceived: 30 June 2019; Accepted: 23 July 2019; Published: 25 July 2019کمیل آقابابایی ارشد مهندسی نرم‌افزار چکیده : آنالیز احساسی سطح اسناد یک کار چالش برانگیز است که با توجه به اندازه بزرگ متن ، که منجر به فراوانی کلمات و نظرات در زمان‌های متفاوت در همان سند می‌شود.این تحلیل به ویژه در تجزیه و تحلیل مقالات رسانه‌ای و پست بلاگ درباره یک محصول یا شرکت خاص مفید است ، و نیاز به تمرکز بالایی دارد ، به خصوص زمانی که موضوع مورد بحث حساس است . با این وجود ، اغلب مدل‌ها و تکنیک‌های موجود برای پردازش متن کوتاه از شبکه‌های اجتماعی و پلت فرم های مشترک طراحی شده‌اند . در این مقاله ، ما ترکیبی از شبکه‌های عصبی مصنوعی  CNN  و   BiLSTM  را با تعبیه Doc2vec ، مناسب برای تحلیل نظر در متون طولانی پیشنهاد می‌کنیم . مدل CNN - BiLSTM با CNN ، LSTM ، BiLSTM و CNN - LSTM با بهره‌گیری از Word۲vec / Doc۲vec مقایسه شده‌است .   مدل CNN - BiLSTM در مقالات روزنامه‌های فرانسوی به کار گرفته شد و از مدل‌های دیگر با دقت ۹۰.۶۶ % پیشی گرفت.کلمات کلیدی : تحلیل احساسی ؛ سطح اسناد ؛ Doc۲vec ؛ CNN - BiLSTMمقدمهنظر یا تحلیل احساسات مجموعه‌ای از عملیات زبانی متعلق به پردازش خودکار زبان طبیعی است که به متون دیجیتال, یعنی مقالات و نظرات شبکه‌های اجتماعی و نیز مقالات مطبوعاتی اطلاق می‌شود. هدف آن شناسایی احساسات بیان‌شده در متن و پیش‌بینی قطبش آن (مثبت یا منفی) نسبت به یک سوژه مشخص است.این تحلیل بسیار کاربردی است, به ویژه با ظهور شبکه‌های اجتماعی, افراد شروع به بیان نظرات خود به راحتی و در کوتاه‌ترین زمان می‌کنند که پردازش دستی این تعداد زیادی از نظرات را بسیار دشوار می‌کند. یادگیری ماشینی و مدل‌های یادگیری عمیق هنگامی که برای متن کوتاه اعمال می‌شوند به لطف فراوانی مجموعه داده‌های استخراج‌شده از شبکه‌های اجتماعی و تعداد کم کلماتی که شناسایی نظرات را تسهیل می‌کنند، به عملکرد بالایی دست می‌یابند. با این حال، در مورد یک سند، کار پیچیده‌تر است چون حاوی تعداد زیادی کلمات است و ارتباط معنایی بین جملات پیچیده‌تر است. محققان علاقه رو به رشدی را در تکنیک‌های تحلیل این توده بزرگ داده‌ها نشان داده‌اند تا نقطه نظرات بیان‌شده در یک سوژه مشخص را استخراج کنند. یادگیری عمیق نشانه تکامل این تحلیل با توجه به عملکرد آن در تمامی موارد مربوط به پردازش خودکار زبان طبیعی, یعنی خلاصه متن, پیش‌بینی کلمه و دسته‌بندی متن است.آنالیز احساسی یک موضوع تحقیقاتی محبوب است؛ چندین مطالعه درباره اثربخشی شبکه‌های عصبی عمیق در این کار  را تحقیق و اثبات کرده‌اند. در حقیقت، شبکه‌های عصبی مصنوعی (CNN) به عملکرد عالی در طبقه‌بندی اسناد دست یافته‌اند . شبکه عصبی حافظه کوتاه‌مدت طولانی‌مدت LSTM نیز در پردازش زبان طبیعی محبوب است . به طور انفرادی، مدل‌های دوگانه و تکراری را می‌توان ازنظر عملکرد در نظر گرفت. همانطور که CNN یک مدل استخراج ویژگی قوی است و بهتر است با شبکه بزرگ‌تر ادغام و ترکیب شود ، چالش اکنون در ترکیب قرار دارد و این مدل‌ها را برای بهره‌برداری از نقاط قوت یکدیگر ترکیب می‌کند.به علاوه، با توجه به رشد شبکه‌های اجتماعی که به یک منبع غنی از اطلاعات تبدیل شده‌اند، تحقیقات بر روی تحلیل متن کوتاهی متمرکز شده‌است. آنالیز احساسی سطح اسناد یک کار چالش برانگیز تر است زیرا ساختار، تعداد کلمات و ترکیب عقاید به طور قابل‌توجهی از متن کوتاه متفاوت هستند.بنابراین، سوال تحقیق این است که چگونه یک مدل یادگیری عمیق موثر را پیشنهاد کنیم که با پردازش و طبقه‌بندی سطح سند تطبیق داده شود. برای پاسخ به این پرسش، سهم ما پیشنهاد یک مدل CNN - BiLSTM است، که ترکیبی از شبکه‌های عصبی بازگشتی و دو سویه برای تحلیل احساسات در سطح سند با Doc2vec Embedding است. این مدل در مقایسه با مدل‌های سی ان ان، LSTM، BiLSTM و CNN - LSTM با تعبیه Doc2vec/ word embedding  مقایسه شد و این آزمایش نشان می‌دهد که مدل CNN - BiLSTM با تعبیه Doc2vec از مدل‌های دیگر پیشی گرفته‌است و دقت ۹۰.۶۶ % در دسته‌بندی مقالات مطبوعات فرانسه کسب کرده‌است.ادامه این مقاله به شرح زیر سازماندهی شده‌است. در بخش ۲، دانش پیش‌زمینه را ارایه می‌کنیم. بخش ۳ برخی کارهای مرتبط را ارایه می‌دهد. بخش ۴ جزییات مدل پیشنهادی CNN - BiLSTM را توضیح می‌دهد. در نهایت، بخش ۵ نتایج تجربی را ارایه می‌دهد.۲. پیشینه و زمینه: آنالیز احساسی2-1 تجزیه و تحلیل احساساتعقیده به معنای قضاوت, بررسی یا دیدگاه شخصی است. هر نظر می‌تواند مثبت, منفی یا خنثی باشد. این طبقه‌بندی عقیده اخیراً توجه بسیاری را به خود جلب کرده‌است, زیرا عقیده به عنصر اصلی سیستم‌های پایش شهرت الکترونیکی تبدیل شده‌است.۲.۱.۱. سطوح تجزیه و تحلیل نظر:آنالیز نظر می‌تواند در سطوح مختلف بکار رود، یعنی: سطح کلمه Word level تحلیلی است که قطبیت یک واژه را تعیین می‌کند،  یعنی، اگر یک واژه مثبت، منفی یا خنثی باشد.سطح جمله Sentence level، تحلیلی است که قطبیت یک جمله را تعیین می‌کند. اغلب در تجزیه و تحلیل نظر استفاده می‌شود. از آنجا که برای شبکه‌های اجتماعی خاص است، این یک توالی از کلمات است که هدف از آن مشخص کردن یک نظر در یک موضوع است.سطح سند Document level تحلیلی است که قطبیت یک سند را مشخص می‌کند. در مقایسه با سایر سطوح، سطح دشواری است زیرا هنگامی که تعداد کلمات افزایش می‌یابد، نویز کلمات افزایش می‌یابد، که یادگیری را تحریف می‌کند و پیش‌بینی قطبش را پیچیده می‌کند.2.1.2. Word Embeddingتعبیه کلمات Word Embedding روشی است که در یادگیری عمیق برای پردازش خودکار زبان طبیعی, براساس نمایش کلمات در یک پیکره بزرگ با ارائه مجموعه‌ای از کلمات با اندازه k به فضای برداری از ابعادm به گونه ای که m &lt; k, به منظور تسهیل تحلیل معنایی کلمات و بهبود عملکرد یادگیری استفاده می‌شود.یک بردار کلمات AWord Vector  شبکه‌ای از نورون‌های مصنوعی دو لایه است که توانایی یاد گرفتن چگونگی نشان دادن هر کلمه با یک بردار عدد حقیقی با ویژگی‌های معنایی آن را دارند.Word2vecمی‌تواند از طریق دو مدل یاد بگیرد:- استفاده مداوم (پیوسته) از کلمات (CBOW) Continuous Bag of Words براساس پیش‌بینی یک کلمه از یک متن است. این می‌تواند یک کلمه یا مجموعه‌ای از کلمات باشد، در نتیجه این مدل یک نقطه بسیار قوی دارد زیرا به منابع زیادی نیاز ندارد. این مدل مبتنی بر محاسبه احتمال لگاریتمی منفی یک کلمه ?با توجه به یک زمینه? است.- Skip - Gramمشابه CBOW این مدل یک کلمه به عنوان ورودی در نظر گرفته و تمام کلمات را به عنوان خروجی پیش‌بینی می‌کند.یک بردار سند Document Vector تعمیمی از بردار کلمه است که نشان‌دهنده کل سند در یک بردار دیجیتالی است تا به راحتی شباهت بین اسناد را شناسایی کند. یک بردار سند تعمیمی از بردار کلمه است که نشان‌دهنده کل سند در یک بردار دیجیتالی است تا به راحتی شباهت بین اسناد را شناسایی کند. این روش می‌تواند نحوه بازنمایی اسناد را از طریق دو مدل یاد بگیرد, یعنی &quot; کیف توزیع کلمات&quot;Distributed Bag ofWords ( DBOW ) ,  که معادل Skip - Gramدر Word2vecاست, و حافظه توزیع‌شده Distributed Memory ( DM ) است.- Distributed Bag of Words (DBOW)کیف توزیع کلمات به طور تصادفی توزیع احتمال کلمات را در سند از شناسه یک سند, به منظور ایجاد بردار, پیش‌بینی می‌کند. نظم کلمات را در نظر نمی‌گیرد. در طول دوره آموزش, بردار سند و وزن‌های کلمه با استفاده از روش شیب تصادفی stochastic gradient, مقداردهی اولیه و به روز می‌شوند.- Paragraph Vector - Distributed Memory ( PV - DM ) پاراگراف برداری - حافظه توزیع‌شده(PV - DM ) ، برخلاف DBOW، یک کلمه را از متن سند پیش‌بینی می‌کند . یک مجموعه از کلمات یک پاراگراف را به طور تصادفی و یک شناسه سند به عنوان ورودی می‌گیرد و سعی دارد یک واژه مرکزی را پیش‌بینی کند .2.2. Deep Learning2.2.1. CNNشبکه‌های عصبی کانولوشن یک شکل از شبکه‌های عصبی مصنوعی هستند که می‌توانند اطلاعات را در موقعیت‌های مختلف با دقت خوب تشخیص دهند. این مدل مشکلات متعددی را در پردازش تصویر و پردازش خودکار زبان طبیعی مانند تحلیل نظرات, پاسخ به سوالات, خلاصه متن, و با معماری خاص برای تسهیل یادگیری, حل کرده‌است. شبکه عصبی کانولوشن یک شبکه چند لایه است, به طوری که خروجی یک لایه ورودی لایه بعدی خواهد بود. این شبکه معمولاً از یک ورودی, یکی تا چند لایه پنهان و یک خروجی تشکیل شده‌است.2.2.2. RNN-LSTMشبکه عصبی مصنوعی (RNN) یک شبکه به‌هم‌پیوسته و برهمکنش دهنده نورون‌ها است که در آن نورون‌ها به شکل کمانی از وزن به هم متصل می‌شوند. این نوع شبکه در مورد ورودی‌های اندازه‌های مختلف بسیار مفید است، همچنین برای سری‌های زمانی، یعنی ترجمه خودکار، شناسایی گفتار خودکار و شناسایی الگوی خودکار. جهت انتشار اطلاعات در این نوع از شبکه عصبی مصنوعی دو سویه است؛ توالی داده‌ها را نگه می‌دارد؛ و این می‌تواند ارتباط بین ورودی توالی‌های بلند را ایجاد کند، زیرا براساس یک حلقه به خاطر حافظه داخلی آن است.شبکه‌های عصبی حافظه بلند مدت با استفاده از شبکه‌های عصبی مصنوعی پیشنهاد شده‌اند.آن‌ها یک بسط هستند که قادر به حل مشکل ناپدید شدن گرادیان به خاطر حافظه آن هستند, که امکان خواندن, نوشتن و حذف داده‌ها را از طریق سه گیت فراهم می‌کند: اولین اجازه یا بلوک‌های بروزرسانی (گیت ورودی)  Input Gate را می‌دهد. دومی یک نورون است اگر براساس وزن‌های فراموشی آموخته‌شده توسط الگوریتم , که اهمیت آن را تعیین می‌کند گیت فراموشی  (Forget Gate); و سوم یک گیت کنترل حالت نورونی در خروجی گیت خروجی(Output Gate) است (شکل 1).این مدل قدرت خود را به ویژه در ورودی‌های با طول بلند مانند تحلیل اسناد نشان داده‌است, در آن رابطه بین کلمات مختلف سند را ایجاد می‌کند تا لحن خود را با دقت زیاد پیش‌بینی کند.2.2.3. RNN-BiLSTMحافظه کوتاه‌مدت دوطرفه ( BiLSTM ) یکی از انواع شبکه‌های عصبی بازگشتی است.این فرآیند داده‌ها را به دو جهت پردازش می‌کند, زیرا با دو لایه پنهان کار می‌کند. این نقطه اصلی واگرایی با LSTM  است. این روش نتایج خوبی را در پردازش زبان طبیعی به اثبات رسانده‌ است.3. RelatedWorksتحلیل احساسات / عقیده موضوع اصلی تحقیق با استفاده از یادگیری ماشین و مدل‌های یادگیری عمیق است. متن کامل این مقاله به زبان انگلیسی می‌باشد, لطفاً برای مشاهده متن کامل مقاله به بخش انگلیسی مراجعه فرمایید. برای مدل‌های یادگیری عمیق, این طبقه‌بندی نیاز به یک مرحله پاک‌سازی اساسی و مرحله پیش‌پردازش (شامل توکنیزه کردن کلمه کلمه, حذف استپ وردها, تبدیل به حروف کوچک و ریشه‌کن کردن) دارد زیرا کیفیت داده تاثیر قابل‌توجهی بر عملکرد مدل یادگیری عمیق دارد.Pang و همکاران ابتدا مفهوم تحلیل احساسی سطح سند را معرفی کردند. در این بخش, ما به توضیح رویکردهای تحلیل احساسی در هر دو سطح جمله (متن کوتاه) short text) ) و سطح سند (متن بلند ) long text) ) می‌پردازیم.3.1. Short Text Sentiment Analysisدوس سانتوس و Gatti در متن کوتاه کار کردند . آن‌ها یک شبکه عصبی مصنوعی جدید را پیشنهاد کردند که اطلاعات مربوط به کاراکتر به جمله را در متون کوتاه مورد استفاده قرار می‌دهد و آن را با دو پایگاه داده تایید می‌کند , بانک درخت احساسی استنفورد ( SSTb )، که شامل جملات از بررسی‌های فیلم , و احساس استنفورد در تویتر (SST ) است . آن‌ها یک شبکه به نام &quot; Character Convictional Convictional Neural Network ( CharSCNN ) &quot; را پیشنهاد کردند که از دو لایه convolutionalبرای استخراج ویژگی‌های مرتبط کلمات و جملات هر اندازه استفاده می‌کند . این مدل به ۸۵.۷ % در SSTb و ۸۶.۴ % در STS رسید .به علاوه، ژو و همکاران LSTM bidirectional را با حداکثر دو بعد max pooling در پایگاه Stanford Sentiment treebank ( STS ) به کار بردند، به طوری که هر بردار با ماتریسی از بعد ۲ نمایش داده می‌شود . بنابراین، آن‌ها استفاده معمول از ادغام ۲ pooling را برای نمونه مناسب‌تر برای وظایف مدلسازی توالی تغییر دادند. علاوه بر این، آن‌ها از D2 convolution برای برجسته کردن مهم‌ترین اطلاعات در مورد ماتریس استفاده کردند. ترکیب BLSTM - ۲ DPooling به عملکرد 88.3% دست یافت در حالی که ترکیب BLSTM - ۲ DCNN به عملکرد of %89.5 در پایگاه‌داده SST۲ دست یافتند.کیم, یک شبکه سی ان ان ساده را با یک لایه کانولوشنی با استفاده از یک مدل نظارت نشده , بر روی چندین پایگاه‌داده, به نام بازبینی‌های فیلم, sts اطلاعات, مجموعه داده پرس‌وجو, و بازبینی‌های مشتری اعمال کرد. او از یک ماشین کوچک استفاده کرد که نتایج بسیار قدرتمندی داشت.او همچنین از اندازه‌های مختلف فیلترهای مختلف استفاده کرد و چندین مدل سی ان ان را برای استخراج داده‌های مهم آزمایش کرد .او نتیجه گرفت که سی ان ان - استاتیک CNN - staticمدلی است که بهترین عملکرد را ارائه می‌دهد.وانگ و همکاران بر روی ترکیبی از CNN و RNN برای آنالیز عقیده در جملات کار کردند. آن‌ها می‌خواستند از مزایای شبکه CNN و RNN بهره‌مند شوند تا دقت بیشتری داشته باشند. آن‌ها از سی ان ان استفاده کردند، که به موقعیت کلمات در جمله حساس است.سپس، آن‌ها از خروجی سی ان ان به عنوان ورودی برای RNN که در طول زمان آموزش‌دیده بودند، استفاده کردند.Yenter و Verma [ ۲۸ ] یک مدل CNN - LSTM را برای آنالیز عقیده از پایگاه‌داده IMDB پیشنهاد کردند . این اثر از یکی دیگر متفاوت است چون آن‌ها نتایج را بعد از به کارگیری لایه LSTMالحاق می‌کنند . این مدل به ۸۹ % دقت رسید .شن و همکاران [۲۹] یک طرح ویژه را پیشنهاد کردند که مدل‌های CNN و BiLSTM را برای عملکرد بهینه ترکیب می‌کند. آن‌ها دریافتند که این ترکیب دقتی به میزان ۸۹.۷ % دارد، که بهتر از accuracy هر دو مدل به صورت جداگانه است.Yoon و همکاران [ ۳۰ ] یک معماری CNN - BiLSTMرا برای پیش‌بینی احساسات سطح اسناد با استفاده از تعبیه کلمات چند کاناله با بکارگیری Word2vec پیشنهاد کردند . مدل‌ها روی مجموعه داده‌های مختلف اعمال شدند و عملکرد متوسط اما متوسط بین ۵۱.۹۷ % و ۷۰.۰۸ % را بدست آوردند .3.2. Document Level Sentiment Analysisطبقه‌بندی اسناد ، هرچند کم‌تر از تحلیل متن کوتاه شبکه‌های اجتماعی ، می‌تواند در مناطق مختلف بسیار مفید باشد ، مانند تجزیه و تحلیل نظرات سیاسی در مطبوعات ، تحلیل نظرات کاربران و پوشش رسانه‌ای . در کار قبلی ما [ ۳۵ ] ، عملکرد مدل‌های CNN و LSTM را برای متن بلند مقایسه کردیم و دریافتیم که ترکیب Doc2vec و مدل‌های CNNاندکی از عملکرد RNN پیشی گرفته‌است . این به این دلیل است که سی ان ان از مدل Doc۲Vecاستفاده می‌کند ، که قطبیت کل سند را شناسایی می‌کند .Missen و همکاران تحلیل عقیده را در اسناد با استفاده از کلمه &quot; سطح اسناد &quot; با استفاده از یک مجموعه corpus از اسناد مطرح کردند . آن‌ها ابتدا قطبیت کلمات را تعیین کردند، سپس قطبیت کلمات را در یک جمله ترکیب کردند تا قطبش جمله را تعیین کنند و در نهایت قطبیت جملات را با ترکیب امتیاز نهایی برای تشخیص قطبیت سند ترکیب کنند .Yessenalina و همکاران یک رویکرد دو سطحی مشترک برای طبقه‌بندی احساسات سند را با ایجاد مفسر خودکار منطقه‌ای پیشنهاد کردند .رائو و همکاران متون طولانی را برای بهره‌برداری از روابط معنایی بین جملات در طبقه‌بندی احساسات در سطح اسناد مدل‌سازی کردند.فو و همکاران [ ۳۹ ] یک روش جدید به نام Bag Of Meta - Words را پیشنهاد کردند . آن‌ها سند را با بردارهای meta - word نشان دادند ، به طوری که هر بردار اطلاعات معنایی را در این سند مشخص کرده باشد. ویژگی این روش این است که معنایی سند را ثبت می‌کند .آن‌ها دقت ۹۰.۸۸ % بدست آوردند .کار مرتبط در جدول ۱ خلاصه شده‌است.4. Proposed Model: CNN-BiLSTM and Doc2vec for Document-Level Sentiment Analysisاین مدل دو شبکه عصبی را ترکیب می‌کند که CNN and BiLSTMنامیده می شود.  ما این ترکیب را برای آزمودن سازگاری CNN با BLSTMاجرا کردیم, چون عملکرد BLSTM در تحلیل نظرات مشهور است. نقطه قوت این مدل این است که امکان استخراج حداکثر مقدار اطلاعات از اسناد با استفاده از لایه‌های کانولوشن CNN را فراهم می‌کند. این خروجی به ورودی BLSTM تبدیل می‌شود که اجازه حفظ ترتیب زمانی بین داده در دو جهت را می‌دهد.4.1. Model Overview and Motivationترکیب مدل‌های CNN و RNN نیازمند یک طرح خاص است چرا که هر مدل دارای معماری خاص و نقاط قوت خاص خود است :· CNN به خاطر توانایی خود برای استخراج ویژگی‌های بسیاری از متن معروف است.· LSTM / BiLSTM ترتیب زمانی بین کلمات در یک سند را نگه می‌دارد در نتیجه توانایی نادیده گرفتن کلمات غیر ضروری با استفاده از گیت حذف را دارد .هدف ترکیب این دو مدل , ایجاد مدلی است که از نقاط قوت CNN و BiLSTM بهره‌مند شویم , به طوری که ویژگی‌های استخراج ‌شده با استفاده از CNN را بدست آورد و از آن‌ها به عنوان ورودی LSTM استفاده کرد . بنابراین , ما مدلی را توسعه می‌دهیم که این هدف را برآورده می‌کند, در همین راستا بردارهای ساخته‌ شده در بخش تعبیه embedding)) کلمات به‌عنوان ورودی شبکه عصبی کانولوشن استفاده می‌شوند . پس از آن , چهار فیلتر با اندازه 2 , 3 , 4 و 5 به ترتیب برای 100 زمان بندی اعمال می‌شوند . پس از هر فیلتر , یک لایه از max pooling برای به روزرسانی و کاهش اندازه داده‌ها اعمال می‌شود .سپس , نتایج تمام لایه‌های حداکثر تجمع (max pooling )  به منظور ورودی BiLSTM ساخته شده است که برای فیلتر کردن اطلاعات در BiLSTM از سه گیت استفاده می شود. خروجی این مرحله ورودی لایه fully connected layer  است که هر قطعه اطلاعات ورودی را با یک قطعه اطلاعات خروجی پیوند می‌دهد . در نهایت به عنوان تابع فعال‌سازی برای تخصیص کلاس‌ها به مقالات به منظور تولید خروجی مطلوب استفاده می‌شود .بنابراین , معماری زیر را متشکل از سه بخش پیشنهاد می‌کنیم که با جزییات بیشتر در زیر توضیح داده شده‌اند ( شکل - 2 ) :· بخش پیش پردازش : در این مرحله ، پاک‌سازی داده و پیش پردازش انجام می‌شود . سپس ، نمایش اسناد توزیع‌شده با استفاده از تعبیه Doc2Vec برای آماده‌سازی داده‌ها برای کانولوشن اعمال شده‌است . بردار حاصل به عنوان ورودی به مرحله بعدی منتقل می‌شود .· بخش Convolution : در این مرحله , کانولوشن و لایه‌های max pooling برای استخراج ویژگی به منظور استخراج ویژگی‌های سطح بالا به کار می‌روند . خروجی این مرحله ورودی مرحله بعدی است .· بخش BiLSTM/fully connected : در این مرحله از لایه‌های BiLSTM و لایه‌های fully connected  برای طبقه‌بندی احساسات استفاده می‌شود . خروجی این مرحله طبقه‌بندی نهایی سند ( به صورت مثبت , منفی یا خنثی ) است .4.2. Document Representationتعبیه کلمات (Word embedding) آماده‌سازی داده‌ها در فرمت مناسب بردار برای ورودی شبکه‌های عصبی مصنوعی است. از آنجا که ما با متن طولانی سر و کار داشتیم, با اندازه بزرگی برای نشان دادن هر کلمه / پاراگراف در سند توسط یک بردار تست کردیم تا کل بردار کلمه / سند را بسازیم.  از آنجایی که ما با متن بلند سروکار داشتیم، هر دو Doc2vec و Word2vec را با یک اندازه بزرگ برای نمایش هر کلمه / پاراگراف در یک سند توسط یک بردار برای ساختن کل کلمه / سند مورد آزمایش قرار دادیم. علاوه بر این ، ما مدل‌های Word2vec / Doc2vec را با نام‌های CBOW / DBOW و Skip - gram / DM برای دستیابی به عملکرد بهتر ترکیب کردیم .Word2vec با استفاده از کلمات سند بردارهای متناظر را ایجاد می‌کند. این رویکرد مبتنی بر دو رویکرد یعنی CBOW و Skip - gram هستند که با هم ترکیب شده‌اند تا عملکرد را بهبود بخشند . این روش به طور گسترده برای آنالیز عقیده در متون کوتاه که مختص شبکه‌های اجتماعی هستند مورد استفاده قرار می‌گیرد ، اما همچنین برای پردازش متون طولانی نیز مورد استفاده قرار می‌گیرد .Doc2vecبردارها را برای هر جمله یا پاراگراف از سند تولید می‌کند . همچنین براساس دو تکنیک به نام‌های DBOW ، که معادل با CBOW برای Word2vecاست و DM ، که معادل Skip - gram است ، می‌باشد . ما این دو تکنیک را با هم ترکیب کردیم تا به دقت  (accuracy)بالا دست یابیم . این روش جدیدتری از Word2vec است و یک روش خاصی برای پردازش سند خاص به حساب می آید .ما از embedding های Doc2vec برای طبقه‌بندی اسناد بزرگ استفاده کردیم، چون Doc2vec ثابت کرده‌است که عملکرد بهتری نسبت به Word2vec های داده در مجموعه داده‌های مختلف دارد [۴۰]. خروجی ماتریسی است که نشان‌دهنده پیوندهای بین کلمات / جملات / پاراگراف با استفاده از نمایش تعبیه کلمه است , به گونه‌ای که هر کلمه / جمله / پاراگراف یک بردار معادل طول ثابت در ماتریس دارد .4.3. Convolution Layerهدف لایه کانولوشن بررسی ترکیب بین جملات و پاراگراف‌های مختلف سند با استفاده از فیلترهایی در اندازه های t می باشد. یک شبکه عصبی مصنوعی  (CNN) یک معماری استخراج ویژگی است و قرار است در یک شبکه بزرگ‌تر ادغام شود [۶].یک n - gram یک زیر توالی  (sub - sequence) از nکلمه مجاور است که از یک توالی ساخته شده‌ است. اصل اساسی محاسبه , از یک توالی داده ‌شده از کلمات می باشد که تابع احتمال ظاهرشدن کلمه بعدی تعریف می‌شود در لایه کانولوشن ، فیلترها به عنوان تشخیص دهنده n - gramعمل می‌کنند ؛ هر فیلتر برای یک کلاس خاص از n - gramها عمل می‌کند و بالاترین نمرات را به آن‌ها اختصاص می‌دهد . گرم‌های تشخیص داده شده با بالاترین امتیاز از max pooling عبور داده می شوند.چهار فیلتر با اندازه 2 , 3 , 4 و 5 به ترتیب برای 100 زمان بندی به کار می‌رود.· اولی ۹۰ فیلتر bigrams از سایز ۲ را اعمال می‌کند .· دومی 90 فیلتر trigram از اندازه ۳ را اعمال می‌کند  .· سومین 90 فیلتر four - gram از سایز ۴ را اعمال می‌کند  .· چهارمین 90 فیلتر five - gram  از سایز ۵ را اعمال می‌کند .پس از هر فیلتر , یک لایه از max pooling برای به روزرسانی و کاهش اندازه داده‌ها اعمال می‌شود . پس از آن , نتایج تمام لایه‌های max pooling به منظور ایجاد ورودی BiLSTM  ترکیب می شوند.4.4. Activation Layerهر لایه کانولوشن یک تابع خطی تصحیح شده (ReLU )  را اعمال می‌کند , که اجازه می‌دهد هر خروجی منفی با یک 0 جایگزین شود , که به عنوان اطلاعات غیر ضروری برای شبکه عصبی در نظر گرفته می‌شود و در نتیجه غیر خطی بودن شبکه را کاهش می دهد .4.5. Regularizationمنظم سازی از طریق چندین تابع مدیریت می‌شود که یک شبکه عصبی پیچیده را سازماندهی می‌کند تا از انطباق بیش از حدoverfitting بر عملکرد مدل‌های یادگیری عمیق جلوگیری کند .ما از دو نوع اصلی، dropout و L۲ استفاده می‌کنیم، که شامل penalizing large weights in order برای بهینه‌سازی (optimize) شبکه‌های عصبی4.6. Optimizationبهینه‌سازی در آموزش الگوریتم‌های یادگیری عمیق برای به روز رسانی پارامترهای مدل (وزن‌ها و مقادیر بایاس) در طول تکرارها استفاده می‌شود. استراتژی‌های بهینه‌سازی مختلفی وجود دارند که مقادیر مناسب و بهینه را برای این پارامترها محاسبه می‌کنند از قبیل Stochastic Gradient Descent ( SGD ) یا تخمین لحظه انطباقیAdaptive Moment Estimation ( Adam ).SGDالگوریتم‌های بهینه‌سازی غیر انطباقی کلاسیک ((classical non - adaptive optimization algorithmsاست که برای بهینه‌سازی شبکه‌های یادگیری عمیق بکار می‌رود که از یک نرخ یادگیری واحد استفاده می‌کنند که در طول آموزش تغییر نمی‌کند. Adam یک روش الحاقی به SGD است که از یک نرخ یادگیری انطباقی برای بهینه‌سازی شبکه‌ها استفاده می‌کند که خیلی سریع همگرا می‌شوند و بهتر عمل می‌کنند .5. Experimental Results5.1. DataSetما یک مجموعه داده حاوی ۲۰۰۳ مقالات فرانسوی از روزنامه‌های ملی و بین‌المللی ساختیم. ( TelQuel ، Aujourd ، لو فیگارو ، و LeMonde ، و دیگران ). هر مقاله به طور متوسط ۴۰۰۰ لغت را شامل می‌شود . مقالات به صورت آنلاین کنار گذاشته شدند و سپس به صورت دستی برچسب زدند تا مجموعه داده‌ها را بسازند .توزیع قطبیت آن به شرح زیر است : مقالات خنثی 1247 ، ۴۷۴ مقاله مثبت و ۲۸۲ منفی ( جدول ۲ ) .مجموع داده‌ با ۲۰۰۳ ورودی‌ به سه بخش تقسیم شد ، یعنی آموزش ، اعتبار سنجی و آزمایش) (training , validation and testing ، به صورت زیر توزیع شد : ۷۵ % ( ۱۵۰۲ ورودی ) برای آموزش مدل و ۲۵ % ( ۵۰۱ ورودی ) برای اعتبار سنجی ( ۳۷۵ مدخل ) و آزمایش ( ۱۲۶ ورودی ) توزیع شد .مقالات استخراج‌شده مربوط به امور سیاسی ، نظرات در مورد یک شرکت داده‌شده و وقایع جاری عمومی ، و برتری با مقالات سیاسی است که در مورد یک رویداد اخیر ابراز عقیده می‌کنند .عقاید سیاسی را می‌توان در انتخابات , احزاب , نمایندگان سیاسی و یک کشور مشخص کرد . این اطلاعات نیازمند پردازش خاصی است , زیرا اکثر تصمیمات استراتژیک براساس آن هستند .به ویژه اطلاعات امور سیاسی و سیاسی نقش فعالی در شکل‌گیری افکار عمومی ایفا می‌کند ; چرا که اکثر شهروندان آن را منبع اولویت اطلاعات می‌دانند و اعتبار بالایی به آن می‌دهند .5.2. Resultsما عملکرد پیکره بندی‌های مختلفی را برای پردازش اسناد متنی طولانی مقایسه کردیم. بنابراین دقت accuracy با توجه به سه تکرار مختلف محاسبه شد ( یعنی ، ۶ ، ۸ و ۱۰ ) ، بین دو مقدار اندازه دسته ( یعنی ۳۲ و ۶۴ ) ، و بهینه سازی SGD و Adam ( جدول ۳ ، بالاترین مقدار به رنگ قرمز پررنگ می‌شود ) .دقت به نسبت پیش‌بینی‌های درست انجام‌شده توسط این مدل اشاره دارد .ما عملکرد CNN - BiLSTM را با استفاده از تعبیه کلمات Doc2vec با مدل‌های مختلف CNN ، LSTM ، BiLSTM و CNN - LSTMمقایسه و برای همه آن‌ها دقت را اندازه‌گیری کردیم .5.3. Comparaisonما مدل پیشنهادی CNN-BiLSTM را با مدل‌های CNN, LSTM, BiLSTM و CNN-LSTMمقایسه کردیم.5.3.1. CNNمدل شبکه CNN از نظر استخراج ویژگی قدرتمند است , که در تحلیل نظرات بسیار جالب است , به خصوص هنگامی که با مقاله‌های بلند سر و کار دارید و استخراج ویژگی‌های آن دشوار است .مدل CNN به صورت زیر پیکربندی شده‌است :· حداکثر تعداد بردارها که می‌توانند از یک سند ایجاد شوند 600 است.· اندازه داده‌های ورودی شبکه عصبی 600 داده شد .· چهار لایه کانولوشن با تابع فعال‌سازی بازگشتی عبارتند از :- اولی ۹۰ فیلتر bigrams از سایز ۲ را اعمال می‌کند .- دومی 90 فیلترtrigram از اندازه ۳ را اعمال می‌کند .- سومین 90 فیلترfour - gram از سایز ۴ را اعمال می‌کند .- چهارمین 90 فیلتر five - gram از سایز ۵ را اعمال می‌کند .· لایه max pooling : ما از یک لایه max pooling بعد از هر لایه کانولوشن اعمال کردیم و سپس به تشکیل لایه‌های مختلف max pooling برای تولید یک خروجی با اندازه ثابت پرداختیم.· یک لایه ً fully connected layer وجود دارد.· تابع فعال‌سازی بازگشتی اجازه ایجاد ارتباط نتایج به‌دست‌آمده را با کلاس مناسب می‌دهد.· تابع زیان loss function برای تهیه مدل &quot; Sparse - categorical - crossentropy کم‌تراکم &quot; ضروری است.· ما از یک مدل توزیع استفاده کردیم چون سه کلاس در فرمت صحیح و مطلق وجود دارد .· بهینه‌ساز Adam &quot;&quot; استفاده شده است.مدل CNN عملکرد بالایی را ارائه داد که از لحاظ دقت به 88 % رسید(شکل شماره4) .5.3.2. LSTM/BiLSTM Modelsشبکه‌های عصبی بازگشتی و به طور خاص LSTM و BiLSTM , به دلیل توانایی آن‌ها در حفظ ترتیب زمانی بین داده‌ها معروف هستند که هنگام تحلیل نظرات متون طولانی , بسیار مهم و پرکاربرد می‌باشند.مدل LSTM / BiLSTM با CNNمتفاوت است, بنابراین نیازی به مدلی(محدودیتی) برای ایجاد بردارهای ورودی ندارد.مدل‌های LSTM / BiLSTM به شکل زیر پیکربندی شده‌اند :· حداکثر اندازه بردارهای سند ۴۶۷۶ بود .· یک لایه LSTM / BiLSTM وجود دارد .· یک لایه ً fully connected وجود دارد .· یک تابع فعال softmax وجود دارد .· تابع زیان &quot; Sparse - categorical - crossentropy &quot; بوده‌است .· بهینه‌ساز Adam &quot; &quot; استفاده شده است .LSTM دقت 85.87 %(شکل شماره5) و BiLSTM دقت ۸۶.۴۰ % (شکل شماره6) را ارایه کرد. دقت این مدل‌ها به CNN با Doc2vecنزدیک بود .5.3.3. CNN-LSTM Modelمدل CNN - LSTM به شرح زیر پیکربندی شده‌است:· حداکثر تعداد بردارها که می‌توان از یک سند ایجاد کرد ۶۰۰ است.· اندازه داده ورودی شبکه عصبی ۶۰۰ می‌باشد.· چهار لایه کانولوشن به صورت زیر است:-اولی ۹۰ فیلتر bigrams از سایز ۲ را اعمال می‌کند .-دومی 90 فیلتر trigram از اندازه ۳ را اعمال می‌کند .-سومین 90 فیلتر four - gram از سایز ۴ را اعمال می‌کند .-چهارمین 90 فیلتر five - gram از سایز ۵ را اعمال می‌کند .· یک لایه max pooling وجود دارد. بعد از هر لایه کانولوشن یک لایه max pooling اعمال کردیم و سپس به تشکیل لایه‌های مختلف max pooling برای تولید یک خروجی با اندازه ثابت پرداختیم.· یک لایه LSTM وجود دارد.· یک لایه fully connected وجود دارد.· تابع فعال‌سازی بردار را به احتمال تعریف کلاس هر خروجی تبدیل می‌کند.· تابع زیان( loss function) که برای تدوین مدل ضروری است, از بهینه‌ساز &quot;Adam &quot; استفاده می‌کند.این ترکیب به دقت 90.13% دست یافت (شکل شماره 7) که به ارزش افزوده  LSTMها در قیاس با مدل CNN تایید کرد است.5.4. Discussionمقایسه عملکرد مدل‌های یادگیری عمیق مختلف ، علاقه CNN-BiLSTM به Doc2vec ، با مدل پیش آموزش داده شده از جمله یا پاراگراف را تایید می‌کند . (شکل شماره4 ، بالاترین مقدار به رنگ قرمز پررنگ شده‌است .)Doc2vec بهتر از Word2vec می‌باشد ، با توجه به متن بلند مقالات ، چون Word2vec برای تجزیه و تحلیل متن کوتاه مناسب‌تر است .این نتیجه نشان‌دهنده تاثیر BiLSTM در حفظ ارتباط و ترتیب بین داده‌ها(در دو جهت ) برای فهم متن  و در CNNتوانایی استخراج ویژگی‌های داده‌ها می‌باشد. این ترکیب از نقاط قوت هر مدل بهره‌مند می‌گردد.6. Conclusionsنتیجه‌گیریدر این مقاله , ما ترکیبی از شبکه‌های عصبی و بازگشتی دو طرفه را برای تحلیل احساسی در سطح اسناد و با تعبیه Doc2vec ارائه دادیم . مدل ترکیبی CNN - BiLSTM نتایج خوبی را در متن طولانی ارائه می‌کند , چرا که از توانایی CNN برای استخراج ویژگی‌ها و از BiLSTM برای یادگیری وابستگی‌های متقابل طولانی‌مدت متن بهره می‌برد . علاوه بر این, فرآیندهای تعبیه Doc2vecبرای نمایش متن در سطح پاراگراف , برای طبقه‌بندی سند متنی طولانی مناسب‌تر است , برخلاف پردازش متون کوتاه متداول بخصوص در شبکه‌های اجتماعی .این مدل در یک مجموعه داده از مقاله‌های فرانسوی از روزنامه‌های اینترنتی آموزش داده شد . برای اعتبار سنجی( validation )  ما پنج مدل یادگیری عمیق به نام‌های CNN , LSTM , BiLSTM , CNN - LSTM  وCNN - BiLSTM  را با مطالعات تجربی مقایسه کردیم .در کار آینده ، مدل پیشنهادی را می‌توان برای اسناد عربی بکار برد [ ۴۶ ] ، شامل مکانیزم مورد توجه برای تجزیه و تحلیل احساسات سطح سند [ ۴۷ ، ۴۸ ] ، و بررسی سایر embeddingsها مانند  Glove  و  FasttextReferences1. Liu, B. Sentiment analysis and opinion mining. Synth. Lect. Hum. Lang. Technol. 2012, 5, 1–167. [CrossRef]2. Nasukawa, T.; Yi, J. Sentiment analysis: Capturing favorability using natural language processing.In Proceedings of the 2nd International Conference on Knowledge Capture, Austin, TX, USA, 4–6 December2003; pp. 70–77.3. Kim, Y. Convolutional Neural Networks for Sentence Classification. In Proceedings of the 2014 Conference onEmpirical Methods in Natural Language Processing (EMNLP); Association for Computational Linguistics: Doha,Qatar, 2014; pp. 1746–1751.4. Sundermeyer, M.; Schlüter, R.; Ney, H. LSTM neural networks for language modeling. In Proceedings of theThirteenth annual conference of the international speech communication association, Portland, OR, USA,9–13 September 2012.5. Yin,W.; Kann, K.; Yu, M.; Schütze, H. Comparative study of CNN and RNN for natural language processing.arXiv 2017, arXiv:1702.01923.6. Goldberg, Y. Neural network methods for natural language processing. Synth. Lect. Hum. Lang. Technol.2017, 10, 1–309. [CrossRef]7. Pang, B.; Lee, L. Opinion mining and sentiment analysis. Found. Trends Inf. Retr. 2008, 2, 1–135. [CrossRef]8. Mikolov, T.; Sutskever, I.; Chen, K.; Corrado, G.S.; Dean, J. Distributed representations of words and phrasesand their compositionality. In Proceedings of the Advances in Neural Information Processing Systems,Tahoe, NV, USA, 5–10 December 2013; pp. 3111–3119.9. Le, Q.; Mikolov, T. Distributed representations of sentences and documents. In Proceedings of the 31thInternational Conference on Machine Learning, Beijing, China, 21–26 June 2014; pp. 1188–1196.10. Hochreiter, S.; Schmidhuber, J. Long short-term memory. Neural Comput. 1997, 9, 1735–1780. [CrossRef]11. Gers, F. Long Short-Term Memory in Recurrent Neural Networks. Ph.D. Thesis, Leibniz UniversitatHannover, Hannover, Germany, 2001.12. Greff, K.; Srivastava, R.K.; Koutník, J.; Steunebrink, B.R.; Schmidhuber, J. LSTM: A search space odyssey.arXiv 2015, arXiv:1503.040692.13. Lai, S.; Xu, L.; Liu, K.; Zhao, J. Recurrent convolutional neural networks for text classification. In Proceedingsof the 29th AAAI Conference on Artificial Intelligence, Austin, TX, USA, 25–30 January 2015.14. Schuster, M.; Paliwal, K.K. Bidirectional recurrent neural networks. IEEE Trans. Signal Process. 1997, 45,2673–2681. [CrossRef]15. Tai, K.S.; Socher, R.; Manning, C.D. Improved semantic representations from tree-structured long short-termmemory networks. arXiv 2015, arXiv:1503.00075.16. Gamal, D.; Alfonse, M.; M El-Horbaty, E.S.; M Salem, A.B. Analysis of Machine Learning Algorithms forOpinion Mining in Different Domains. Mach. Learn. Knowl. Extr. 2019, 1, 224–234. [CrossRef]17. Zhang, L.;Wang, S.; Liu, B. Deep learning for sentiment analysis: A survey. arXiv 2018, arXiv:1801.07883.18. Go, A.; Bhayani, R.; Huang, L. Twitter Sentiment Classification Using Distant Supervision; CS224N ProjectReport; Stanford University: Stanford, CA, USA, 2009.19. Dong, L.;Wei, F.; Tan, C.; Tang, D.; Zhou, M.; Xu, K. Adaptive recursive neural network for target-dependenttwitter sentiment classification. In Proceedings of the 52nd annual meeting of the association forcomputational linguistics (volume 2: Short papers), Baltimore, MD, USA, 22–27 June 2014; Volume 2,pp. 49–54.20. Tang, D.; Wei, F.; Qin, B.; Liu, T.; Zhou, M. Coooolll: A deep learning system for twitter sentimentclassification. In Proceedings of the 8th international workshop on semantic evaluation (SemEval 2014),Dublin, Ireland, 23–24 August 2014; pp. 208–212.21. Severyn, A.; Moschitti, A. Twitter sentiment analysis with deep convolutional neural networks.In Proceedings of the 38th International ACM SIGIR Conference on Research and Development inInformation Retrieval, Santiago, Chile, 9–13 August 2015; pp. 959–962.22. Jianqiang, Z.; Xiaolin, G.; Xuejun, Z. Deep convolution neural networks for Twitter sentiment analysis.IEEE Access 2018, 6, 23253–23260. [CrossRef]23. Uysal, A.K.; Gunal, S. The impact of preprocessing on text classification. Inf. Process. Manag. 2014, 50,104–112. [CrossRef]24. Petz, G.; Karpowicz, M.; Fürschuß, H.; Auinger, A.; Winkler, S.M.; Schaller, S.; Holzinger, A. On textpreprocessing for opinion mining outside of laboratory environments. In International Conference on ActiveMedia Technology; Springer: Berlin, Germany, 2012; pp. 618–629.25. Dos Santos, C.; Gatti, M. Deep convolutional neural networks for sentiment analysis of short texts.In Proceedings of the COLING 2014, the 25th International Conference on Computational Linguistics,Dublin, Ireland, 23–29 August 2014; pp. 69–78.Mach. Learn. Knowl. Extr. 2019, 1 84626. Zhou, P.; Qi, Z.; Zheng, S.; Xu, J.; Bao, H.; Xu, B. Text classification improved by integrating bidirectionalLSTM with two-dimensional max pooling. arXiv 2016, arXiv:1611.06639.27. Wang, X.; Jiang, W.; Luo, Z. Combination of convolutional and recurrent neural network for sentimentanalysis of short texts. In Proceedings of the COLING 2016, the 26th International Conference onComputational Linguistics, Osaka, Japan, 11–16 December 2016; pp. 2428–2437.28. Yenter, A.; Verma, A. Deep CNN-LSTM with combined kernels from multiple branches for IMDb reviewsentiment analysis. In Proceedings of the 2017 IEEE 8th Annual Ubiquitous Computing, Electronics andMobile Communication Conference (UEMCON), New York, NY, USA, 19–21 October 2017; pp. 540–546.29. Shen, Q.; Wang, Z.; Sun, Y. Sentiment analysis of movie reviews based on cnn-blstm. In InternationalConference on Intelligence Science; Springer: Berlin, Germany, 2017, pp. 164–171.30. Yoon, J.; Kim, H. Multi-Channel Lexicon Integrated CNN-BiLSTM Models for Sentiment Analysis.In Proceedings of the 29th Conference on Computational Linguistics and Speech Processing (ROCLING2017), Taipei, Taiwan, 27–28 November 2017; pp. 244–253.31. Sobkowicz, P.; Kaschesky, M.; Bouchard, G. Opinion mining in social media: Modeling, simulating,and forecasting political opinions in the web. Gov. Inf. Q. 2012, 29, 470–479. [CrossRef]32. Sarmento, L.; Carvalho, P.; Silva, M.J.; De Oliveira, E. Automatic creation of a reference corpus forpolitical opinion mining in user-generated content. In Proceedings of the 1st International CIKM Workshop onTopic-Sentiment Analysis for Mass Opinion; ACM: New York, NY, USA, 2009; pp. 29–36.33. Durant, K.T.; Smith, M.D. Mining sentiment classification from political web logs. In Proceedings ofWorkshop on Web Mining and Web Usage Analysis of the 12th ACM SIGKDD International Conference onKnowledge Discovery and Data Mining (WebKDD-2006), Philadelphia, PA, USA, 20–23 August 2006.34. Hu, Y.H.; Chen, Y.L.; Chou, H.L. Opinion mining from online hotel reviews–A text summarization approach.Inf. Process. Manag. 2017, 53, 436–449. [CrossRef]35. Yousfi, S.; Rhanoui, M.; Mikram, M. Comparative Study of CNN and RNN For Opinion Mining in Long Text.In Proceeding of the International Conference on Modern Intelligent Systems Concepts, Rabat, Morocco,12–13 December 2018.36. Missen, M.M.S.; Boughanem, M.; Cabanac, G. Opinion mining: reviewed from word to document level.Soc. Netw. Anal. Min. 2013, 3, 107–125. [CrossRef]37. Yessenalina, A.; Yue, Y.; Cardie, C. Multi-level structured models for document-level sentiment classification.In Proceedings of the 2010 conference on empirical methods in natural language processing. Association forComputational Linguistics, Cambridge, MA, USA, 9–11 October 2010; pp. 1046–1056.38. Rao, G.; Huang,W.; Feng, Z.; Cong, Q. LSTM with sentence representations for document-level sentimentclassification. Neurocomputing 2018, 308, 49–57. [CrossRef]39. Fu, M.; Qu, H.; Huang, L.; Lu, L. Bag of meta-words: A novel method to represent document for thesentiment classification. Expert Syst. Appl. 2018, 113, 33–43. [CrossRef]40. Lau, J.H.; Baldwin, T. An empirical evaluation of doc2vec with practical insights into document embeddinggeneration. arXiv 2016, arXiv:1607.05368.41. Jacovi, A.; Shalom, O.S.; Goldberg, Y. Understanding convolutional neural networks for text classification.arXiv 2018, arXiv:1809.08037.42. Hinton, G.E.; Srivastava, N.; Krizhevsky, A.; Sutskever, I.; Salakhutdinov, R.R. Improving neural networksby preventing co-adaptation of feature detectors. arXiv 2012, arXiv:1207.0580.43. LeCun, Y.A.; Bottou, L.; Orr, G.B.; Müller, K.R. Efficient backprop. In Neural Networks: Tricks of the Trade;Springer: Berlin, Germany, 2012; pp. 9–48.44. Bottou, L. Large-scale machine learning with stochastic gradient descent. In Proceedings of COMPSTAT’2010;Springer: Berlin, Germany, 2010; pp. 177–186.45. Kingma, D.P.; Ba, J. Adam: A method for stochastic optimization. arXiv 2014, arXiv:1412.6980.46. Shoukry, A.; Rafea, A. Sentence-level Arabic sentiment analysis. In Proceedings of the 2012 InternationalConference on Collaboration Technologies and Systems (CTS), Denver, CO, USA, 21–25 May 2012;pp. 546–550.47. Wang, Y.; Huang, M.; Zhao, L. Attention-based LSTM for aspect-level sentiment classification. In Proceedingsof the 2016 Conference on Empirical Methods in Natural Language Processing, Austin, TA, USA, 1–5November 2016; pp. 606–615.Mach. Learn. Knowl. Extr. 2019, 1 84748. Yang, Z.; Yang, D.; Dyer, C.; He, X.; Smola, A.; Hovy, E. Hierarchical attention networks for documentclassification. In Proceedings of the 2016 Conference of the North American Chapter Of the Associationfor Computational Linguistics: Human Language Technologies, San Diego, CA, USA, 12–17 June 2016;pp. 1480–1489.49. Pennington, J.; Socher, R.; Manning, C. Glove: Global vectors for word representation. In Proceedings ofthe 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), Doha, Qatar, 25–29October 2014; pp. 1532–1543.50. Bojanowski, P.; Grave, E.; Joulin, A.; Mikolov, T. Enriching word vectors with subword information.Trans. Assoc. Comput. Linguist. 2017, 5, 135–146. [CrossRef]</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Sat, 09 Jan 2021 01:24:52 +0330</pubDate>
            </item>
                    <item>
                <title>یک مدل یادگیری ترکیبی برای تجزیه و تحلیل آنالیز احساسات</title>
                <link>https://dataio.ir/یک-مدل-یادگیری-ترکیبی-برای-تجزیه-و-تحلیل-آنالیز-احساسات-zktleh3plg96</link>
                <description> کمیل آقابابایی_ارشد نرم افزارچکیده : با افزایش تعداد وب سایت‌های ارتباط جمعی , مردم تمایل دارند دیدگاه‌های خود را در مورد همه چیز به صورت آنلاین به اشتراک بگذارند . این راهی مناسب برای انتقال پیام‌ها به کاربران نهایی در یک موضوع خاص است . آنالیز احساسی شاخه‌ای از پردازش زبان طبیعی ( NLP ) است که به شناسایی نظرات کاربران نسبت به موضوعات خاص اشاره دارد . این کار در زمینه‌های مختلفی مانند بازاریابی ، خدمات مشتری و غیره مورد استفاده قرار می‌گیرد . از سوی دیگر ، یادگیری عمیق به دلیل نقش موفقیت‌آمیز آن در چندین کار پردازش زبانی طبیعی محبوب شده‌است . هدف این مقاله ارایه یک معماری یادگیری عمیق نوین برای تحلیل احساسات فارسی است . با توجه به مدل پیشنهادی ، ویژگی‌های محلی توسط شبکه‌های عصبی convolutional ( سی ان ان ) استخراج می‌شوند و وابستگی‌های طولانی‌مدت توسط LSTM . بنابراین ، این مدل می‌تواند توانایی‌های CNN&#x27;s و LSTM&#x27;s را مهار کند . علاوه بر این ، Word2vec  برای نمایش کلمه به عنوان یک گام یادگیری بدون نظارت استفاده می‌شود . برای بهترین دانش ما ، این اولین تلاش است که یک مدل یادگیری عمیق ترکیبی برای تحلیل احساسات فارسی مورد استفاده قرار می‌گیرد .ما این مدل را بر روی مجموعه داده‌های فارسی که در این مطالعه معرفی شده‌است ، ارزیابی می‌کنیم . نتایج تجربی اثربخشی مدل پیشنهادی را با دقت ۸۵ % نشان می‌دهد .KEYWORDS: sentiment analysis; natural language processing; deep learning; Persian;machine learning۱. مقدمهدر سال‌های اخیر ، سایت‌های ارتباط جمعی تعداد قابل‌توجهی از اعضا را کسب کرده‌اند.این سایت‌ها به کاربران اجازه می‌دهند تا ایده‌های خود را بیان کنند ، بنابراین فرصت خوبی برای شرکت‌ها و سازمان‌ها وجود دارد که از ایده‌های کاربران به عنوان دیدگاه عمومی مطلع باشند . امروزه بسیاری از شرکت‌ها تلاش می‌کنند تا خدمات مشتریان قابل‌قبول را برای تشویق مردم به خرید محصولاتشان ارائه دهند . همچنین نیاز شدیدی به برخی از سازمان‌ها برای شناخت دیدگاه‌های سیاسی مردم وجود دارد . از سوی دیگر ، با داده‌های متنی خودرای سخت ، از جمله نظرات در وب سایت‌های ارتباط جمعی ، نظرات در وب سایت‌های مختلف ، یا حتی پست‌های وبلاگ ، شرکت‌ها و سازمان‌ها باید بر ابزارها برای تجزیه و تحلیل این داده‌ها تکیه کنند . تکنیک آنالیز احساسی برای این اهداف ظاهر شده‌است ] ۲ [ .این یکی از رایج‌ترین کاربردهای از NLPاست .تجزیه و تحلیل احساسات می تواند در سطوح مختلف دامنه اعمال شود: سطح سند ،سطح جمله و سطح جنبه(aspect). تحلیل احساسی را می‌توان در سطوح مختلف دامنه : سطح سند ، سطح جمله ، و سطح aspect اعمال کرد . آنالیز احساسی سطح اسناد برای تشخیص کل احساسات نوشتار مورد استفاده قرار می‌گیرد . آنالیز احساسی سطح جمله برای تعیین یک احساس یک جمله استفاده می‌شود در حالی که تحلیل احساسی سطح جنبه /بعد به منظور تشخیص هر جنبه از هر موجودیت مورد استفاده در یک جمله استفاده می‌شود . برای مثال در این جمله : &quot; من واقعا ً محصولات Apple را دوست دارم ، اما آخرین ورژن آیفون آن قدرها هم عالی نیست ! &quot; احساس مثبتی در مورد محصولات Apple وجود دارد اما یک نظر منفی در مورد آخرین آیفون وجود دارد [ ۳ ] [ ۴ ] .با این که استخراج ویژگی از اسناد نقش مهمی در طبقه‌بندی وظایف ایفا می‌کند، اغلب تحقیقات تحلیل احساسات ایرانی از روش‌های یادگیری ماشین سنتی استفاده می‌کنند.این روش‌ها باید به طور دستی ویژگی‌ها را از داده‌ها استخراج کنند. برخی از این تکنیک‌ها عبارتند از نوی بیز (NB)، ماشین بردار پشتیبان (SVM) و رگرسیون لجستیک [۵]. از سوی دیگر، ورودی‌های متنی باید به روش مناسب به شبکه‌های عصبی داده شوند. بسته کلمات (BOW) یک روش مشهور است که هر جمله را به شکل مناسب برای یادگیری ماشین معرفی می‌کند. این روش کاملاً ساده و موثر است، اما نظم کلمه‌ای را در سند نادیده می‌گیرد [۶]، که می‌تواند منجر به یک مشکل قابل‌توجه در آنالیز احساسی برای دو جمله با یک مجموعه کلمات و احساسات متفاوت شود. BOWهمچنین شباهت معنایی بین کلمات را در نظر نمی‌گیرد [۷].روش‌های متعددی برای ارایه یک کلمه مناسب برای تغذیه الگوریتم‌های یادگیری ماشین مانند N - گرم و ویژگی‌های باینری وجود دارد. در حال حاضر، به جز پژوهش‌های اندکی در زبان‌های چینی و هندی، اکثر تحقیقات بر روی متن انگلیسی انجام شده‌است. علاوه بر این، زبان فارسی با پیچیدگی چالش برانگیز مانند بسیاری از پسوندها، فقدان مجموعه داده‌ها غنی، و غیره روبرو است.[5]در این مطالعه، یک مدل یادگیری عمیق جدید برای تحلیل احساسات فارسی ارایه شده‌است. ترکیب دو نوع شبکه عصبی: شبکه عصبی convolutional  (CNN) و شبکه عصبی مصنوعی (RNN) . در سال‌های اخیر، از CNN و RNN به طور موفقیت آمیزی در وظایف آنالیز احساسی استفاده شده‌است.CNN بخوبی برای استخراج ویژگی‌های محلی از متن مناسب است [ ۸ ] . RNN برای پردازش داده‌های متوالی استفاده می‌شود [ ۹ ] . LSTM یک نوع خاص از RNN است که قادر به یادگیری وابستگی‌های بلند مدت است . همچنین می‌تواند مشکل محو شدن گرادیان و انفجار گرادیان را حل کند [ ۱۰ ] .در این مقاله ، شبکه عصبیConvolution و RNN برای تحلیل احساسات فارسی ترکیب می‌شوند . ما از استخراج ویژگی اتوماتیک با استفاده از CNNاستفاده می‌کنیم .وابستگی‌های بلند مدت نیز توسط LSTM یاد گرفته می‌شوند . از سوی دیگر ، به جای نمایش هر کلمه با استفاده از شاخص خود در واژه‌نامه ، ما از Word2vec به عنوان یک الگوریتم embeddingاستفاده می‌کنیم ، که کلید نتایج حاصل از معماری شبکه عصبی پیشنهادی است . در این مطالعه دو مجموعه داده معرفی شده‌است . آن‌ها به ترتیب در حدود ۹۰۰۰ و ۳۰۰۰ جمله دارند که به صورت مثبت ، منفی و خنثی برچسب زده می‌شوند .محتوای این مقاله به بخش‌های زیر تقسیم شده‌است : بخش ۲ درباره کارهای قبلی بحث می‌کند . بخش ۳ شامل مدل پیشنهادی است . ما مدل ترکیبی CNN و RNN را در این بخش به تفصیل شرح می‌دهیم . بخش ۴ مجموعه داده‌ها را توضیح داده و نتایج تجربی را ارایه می‌دهد .در نهایت ، این مقاله در بخش آخر نتیجه‌گیری می‌رسد .۲. سوابقآنالیز احساسی شاخه‌ای از NLP است که بر شناسایی و استخراج نظرات مردم تمرکز دارد . به طور کلی ، چالش‌های مختلف موجود در زبان فارسی ، میزان کار انجام‌شده بر روی تحلیل احساسات فارسی را محدود کرده‌است . با این حال ، تحلیل احساسی یک زمینه ادامه‌دار از تحقیقات است ، و در این بخش ، برخی مطالعات در مورد آنالیز احساسی به طور خلاصه بیان می‌شوند .Pang و لی [ ۱۱ ] یک مجموعه داده را مورد استفاده قرار دادند و کلمات مختلف را از مجموعه داده‌ها به عنوان ویژگی انتخاب کردند . آن‌ها ویژگی‌هایی را از طریق تکنیک‌های یادگیری ماشین مختلف مانند بیز ، Max - انتروپی و SVM ، مورد بررسی قرار دادند . در مقایسه با مطالعات گزارش‌شده برای طبقه‌بندی مبتنی بر موضوع استاندارد ، آن‌ها قادر به دستیابی به نتایج مطلوبی نبودند . آن‌ها همچنین به مساله مشترک ارجاع در یک جمله می‌پردازند . وانگ و مانینگ [ ۱۲ ] یک NB ساده و SVM را برای طبقه‌بندی احساسات مورد بررسی قرار دادند . آن‌ها نشان دادند که استفاده از ویژگی‌های کلمه - bigram باعث ایجاد نتایج محکمی شده‌است . علاوه بر این، مطالعه آن‌ها نشان داد که SVM و NB به ترتیب برای بازبینی‌های کامل و کوتاه‌مدت موثر بودند . برای طبقه‌بندی متن ، استفاده از مدل کلمات برای نشان دادن سند آن‌ها مورد استفاده قرار گرفت . یک عیب این مدل وقتی رخ می‌دهد که اندازه مجموعه آموزشی کوچک باشد . BOWهمچنین ساختار گرامری و نظم کلمه را نادیده می‌گیرد . با این حال ، Mass و همکاران [ ۱۳ ] یک مدل جدید را معرفی کردند که شباهت‌های معنایی و احساسی را در میان کلمات گرفته بود. برای به دست آوردن شباهت‌های احساسی ، آن‌ها از یک روش یادگیری نظارت شده استفاده کردند . تشابه‌ات معنایی نیز توسط Word2vec آموخته شد . شباهت معنایی نیز توسط word2vec آموخته شد. اگرچه مدل آنها به کلمات تصادفی حساس بود و فقدان کلمات کلیدی می توانند منجر به عملکرد ضعیف شوند ، اما به نتایج قابل قبولی رسیدند.Socher و همکاران [ ۱۴ ] از یکSentiment احساسات استفاده کردند و مدلی را پیشنهاد کردند که به نام شبکه عصبی بازگشتی RNTN . این مدل بیش از اندازه مشابه مدل ارایه‌شده توسط Socher یک سال قبل از [ ۱۵ ] است که Matrix - ( MV - RNN ) نامیده می‌شود .MV- RNN مشابه شبکه عصبی بازگشتی بود اما برای نمایش کلمات و عبارت‌ها ، هر دو بردار و یک ماتریکس را به هر گره در &quot; درخت تجزیه &quot; اختصاص دادند . مدل آن‌ها می‌تواند معنای هر کلمه را بداند . هم چنین می‌تواند یاد بگیرد که چگونه یک کلمه همسایگان خود را تغییر می‌دهد . با این حال ، یکی از مشکلات اصلی with - RNN این بود که تعداد پارامترها به شدت وابسته به اندازه دایره لغات بودند و بسیار بزرگ شدند . برای پرداختن به این مشکل ، نویسندگان یک مدل RNTN را پیشنهاد کردند که از یک تابع ترکیب مبتنی بر تانسور برای همه گره‌ها استفاده می‌کند .لی و Mikolov [ ۶ ] یک بردار پاراگراف را پیشنهاد کردند که یک الگوریتم بدون نظارت بود که نمایش برداری توزیع پیوسته را آموخت . آن‌ها از مدل خود برای آنالیز احساسی استفاده کردند و نتایج حاصل را بدست آوردند . نوآوری مطالعه آن‌ها این بود که این مدل می‌تواند برای قطعات با طول متغیر از متون اعمال شود . مدل آن‌ها همچنین هر سند را با یک بردار متراکم نشان می‌دهد .باقری و همکاران [۱۶] یک مدل مبتنی بر رویکرد lemmatization برای تحلیل احساسات فارسی پیشنهاد دادند. آن‌ها از الگوریتم Naive بیز برای طبقه‌بندی استفاده کردند. مدل آن‌ها، مانند بسیاری از مطالعات تحلیل احساسات ایرانی، از مدل‌های یادگیری ماشین سنتی استفاده می‌کند.(Alimardani و همکاران [۱۷]، Hajmohammadi و همکاران [۱۸]، Basiri و همکاران [۱۹]).یکی از اشکال این مطالعات این بود که آن‌ها به مهندسی ویژگی دستی تکیه داشتند در حالی که مدل پیشنهادی سعی در یادگیری ویژگی‌های سطح بالا از داده در یک روش افزایشی با استفاده از یک مدل یادگیری عمیق دارد. بنابراین مرحله استخراج ویژگی توسط متخصصین انجام نمی‌شود. مدل پیشنهادی می‌تواند دقیق‌تر باشد.روشن فکر و همکاران [ ۲۰ ] یک مدل یادگیری عمیق را برای تحلیل احساسات فارسی پیشنهاد کردند .مدل آن‌ها دو مرحله یادگیری دارد ، با استفاده از مدل Skip-Gram برای نمایش بردار یادگیری کلمات و استفاده از دو شبکه عصبی عمیق دوسویه LSTM و (CNN ) به طور جداگانه در یک روش نظارت شده. در مطالعه ما ، دو معماری شبکه عصبی ترکیبی برای طبقه‌بندی بررسی‌های فارسی و نظرات به کار گرفته شده‌اند . CNN با LSTM و CNN با واحد Gated Recurrent Unit ( GRU )برای طبقه‌بندی احساسات به سه کلاس به عنوان مثبت ، منفی و خنثی استفاده می‌شود . در مدل پیشنهادی ، ویژگی‌های محلی را می ‌توان توسط CNN یا GRU به دست آورد در حالی که در کار دیگری با یادگیری عمیق برای تحلیل احساسات فارسی ، دو شبکه منفرد به طور جداگانه مورد استفاده قرار گرفتند [ ۲۰ ] و مدل آن‌ها نمی توانست هر دو قابلیت CNN&#x27;s و LSTM&#x27;s را مهار کرد . با این حال ، ترتیب دادن لایه‌ها در مدل پیشنهادی ، نقش مهمی در نحوه عملکرد آن ایفا می‌کند .برای به دست آوردن قابلیت تعبیه کلمات word embedding ، تکنیک Word2vec در مدل پیشنهادی مورد استفاده قرار می‌گیرد. Word2vec از یک شبکه عصبی با یک لایه پنهان برای آموزش مدل استفاده می‌کند. این تکنیک برخی از چالش‌های موجود در فارسی از جمله سبک نوشتاری مختلف، وجود فضای بین کلمات و غیره را مورد خطاب قرار می‌دهد در حالی که بیشتر کلمات دیگری که در مطالعات تحلیل احساسات ایرانی بکار گرفته شده‌اند مانند باقری و همکاران [۱۶] Alimardani و همکاران [۱۷]، couldn&#x27;t این مشکلات را حل می‌کنند.همانطور که قبلاً ذکر شد، تحقیقات کافی درباره تحلیل احساسات فارسی با یادگیری عمیق وجود ندارد. براساس دانش مولف، این اولین مطالعه‌ای بر روی تحلیل احساسات فارسی با معماری یادگیری عمیق ترکیبی است. ما ترکیبی از CNN و RNN (LSTM,GRU)، را پیشنهاد می‌کنیم که عملکرد بهتری نسبت به CNN و RNN به طور جداگانه ارایه می‌دهد.۳. روش پیشنهادیدر این مطالعه، یک مدل یادگیری عمیق ترکیبی به منظور طبقه‌بندی هر جمله فارسی به عنوان احساسی مثبت، منفی یا خنثی ارائه شده‌است. شکل ۱ چارچوب کلی مدل پیشنهادی را نشان می‌دهد. طبق شکل ۱، پس از ایجاد یک مجموعه داده فارسی برای هر جمله، کلمه تعبیه کلمه ، توسط Word2vec انجام می‌شود. پس از آن، سی ان ان ویژگی‌های محلی را استخراج می‌کند.اندازه‌های چندگانه لایه کانولوشن در این مرحله مورد استفاده قرار می‌گیرند . واحد خطی  (Relu ) نیز به عنوان فعال کردن خروجی لایه شبکه CNN اعمال می‌شود . کیم ( ۲۱ ) نشان داد که سی ان ان می‌تواند منجر به بهبود نتایج در وظایف طبقه‌بندی نظرات شود . بعد از استفاده از یک لایه ادغام POOLING برای ایجاد ویژگی‌های مرتبه بالاتر ، ویژگی‌های ثابت ترجمه سطح پایین که توسط سی ان ان یاد گرفته شد به LSTM به عنوان ورودی داده شد . LSTM می‌توانند وابستگی بلند مدت و ورودی زنجیره فرآیند را یاد بگیرند . در نهایت ، بعد از استفاده از یک لایه کاملا ً متصل fully connected ، مدل سعی می‌کند احساسات هر جمله ورودی را مثبت ، منفی یا خنثی پیش‌بینی کند .محتوای این بخش به بخش‌های زیر تقسیم می‌شود:word embedding , convolutional , pooling , dropout , RNN , and fully connected .3.1 Word Embeddingبرای انجام تحلیل احساسی ، گام اول یک نمایش مناسب از سند هدف را انتخاب می‌کند . این مرحله نقش مهمی در یادگیری عمیق ایفا می‌کند . در این مطالعه ، ما از یادگیری بدون نظارت بر استفاده از embedding سطح کلمه با استفاده از یک مدل Word2vec  استفاده می‌کنیم [ ۲۲ ] . این مدل متشکل است از هر دو skip - gram و تکرار مداوم Bag of Words برای نمایش محاسبه بردارها . این بردارها یک اطلاعات معنایی مفید در مورد کلمات و ارتباط آن‌ها با یکدیگر را می دهند .اجازه دهید که اندازه bag of words را با S و Le طول یک کلمه از word-embedding  باشد، بنابراین word-embedding برای دانش لغویvocabularies توسط بردارهای ستونی در ماتریس E R S*Le. Qencoded  شده‌است. یک جمله را می‌توان به شیوه‌ای نشان داد که در معادله (۱) نشان‌داده شده‌است:۳.۲ Convolution سی ان انیک نوع خاص از شبکه عصبی است. سی ان ان می‌تواند به خوبی با داده‌های فضایی کار کند چون تنها از اتصال ویژه لایه قبلی استفاده می‌کند؛ می‌تواند احساسات ورودی را به روشی قابل‌قبول درک کند ].۸[عملیات کانولوشن در کل ماتریس ورودی است که در بخش ۳.۱ ذکر شد تا ویژگی‌های احساسی را استخراج کنیم .برای هر پنجره ورودی داده‌شده با اندازه w یک ماتریس وزن نیز برای استخراج بردار ویژگی‌های محلی اندازه l-w+1  با استفاده از ماتریس بر روی تمام کلمات ورودی اعمال می‌شود. یک واحد خطی اصلاح (Relu) نیز به عنوان فعال کردن خروجی لایه شبکه سی ان ان بکار گرفته می‌شود که جایگزین خروجی‌های منفی با صفر می‌شود. خروجی این لایه, همان شکل ورودی را دارد.۳.۳ ماکسPoolingما عملیات حداکثر تجمع را به خروجی لایه convolutional اعمال می‌کنیم، بنابراین نقشه‌های ویژگی به این لایه انتقال داده می‌شوند تا بیش‌ترین مقدار ویژگی را بدست آورند. اجازه دهید یک ویژگی ایجاد شود که در بخش قبل ایجاد شد: عملیات حداکثر تجمع بیش‌ترین ارزش ویژگی را در میان یک نقشه c به روشی که در معادله (۴) نشان داده می‌شود، می‌گیرد.3.4  Drop outدر این بخش از یک لایه dropout استفاده می‌کنیم که به طور تصادفی بخشی از ورودی به صفر را تعیین می‌کند .این لایه از overfitting شبکه جلوگیری می‌کند . همچنین این شبکه ، شبکه را توزیع می‌کند تا بر روی بخش‌های خاصی از ورودی تمرکز نکند .RNN 3.5یک شبکه عصبی بازگشتی (RNN) نوعی از شبکه‌های عصبی مصنوعی است. این روش در چندین مطالعه NLP مورد استفاده قرار می‌گیرد. آن‌ها برای تشخیص مشخصات یک توالی از داده‌ها طراحی شده‌اند. همانطور که قبلاً ذکر شد, ویژگی‌ها توسط سی ان ان اخذ می‌شوند. در این مرحله, LSTM و GRU به عنوان دو نوع از شبکه‌های عصبی مصنوعی برای یادگیری مورد استفاده قرار می‌گیرند. بنابراین, این ویژگی‌ها به حافظه کوتاه‌مدت LSTM و GRU منتقل می‌شوند.LSTM یک شبکه عصبی مصنوعی است . این می‌تواند وابستگی‌های طولانی‌مدت را یاد بگیرد تا بتواند کل توالی داده‌ها را پردازش کند . یک واحد LSTM مشترک از یک سلول ، یک گیت ورودی ، یک گیت فراموشی و یک گیت خروجی تشکیل شده‌است . گیت ورودی مشخص می‌کند که کدام اطلاعات باید وارد وضعیت سلول شوند . گیت فراموشی ، مشخص می‌کند که کدام اطلاعات باید از حالات سلول قبلی حذف شوند تا فقط اطلاعات مربوطه را حفظ کنند . گیت خروجی مشخص می‌کند که چه مقدار از وضعیت داخلی باید در معرض لایه‌های بالاتر قرار گیرد .شکل ۲ نشان می‌دهد که چگونه LSTM حالت مخفی را با معادله ( ۱۰ - 5 ) محاسبه می‌کند [ ۲۳ ] .در جاییکه i، f، o گیت ورودی، فراموشی و گیت خروجی هستند. σ نشان‌دهنده تابع sigmoid منطقی است که در لایه مخفی قبلی و فعلی ارتباط دارد. U ماتریس وزنی است که ورودی‌ها را به لایه مخفی فعلی متصل می‌کند. xبردار ورودی است. Ĉt یک حالت مخفی است. Ctحافظه داخلی واحد است.GRU یک مکانیزم gating در RNN است . شبیه LSTM است اما پارامترهای کمتری دارد . آموزش آن نیز آسان است . یک واحد GRU دارای دو دریچه است : یک گیت update و یک گیت reset . گیت به روز رسانی تعیین می‌کند که چه مقدار از حافظه قبلی باید در اطراف نگه‌داشته شود . گیت راه‌اندازی مجدد چگونگی ترکیب ورودی جدید با حافظه قبلی را تعیین می‌کند . شکل ۳ نشان می‌دهد که چگونه GRU حالت پنهان با معادله ( ۱۴ - 11 ) را محاسبه می‌کند [ ۲۳ ] .Where r is a reset gate, and z is an update gate.۳.۶ اتصال به صورت کامللایه آخر یک لایه کاملا ً متصل است که تمام ویژگی‌های تولید شده قبل از خروجی نهایی را دریافت می‌کند . ما از cross - entropy به عنوان تابع زیان استفاده می‌کنیم ، که تفاوت بین توزیع احساسات حقیقی و خروجی را اندازه‌گیری می‌کند . خروجی لایه متراکم با تابع زیان محاسبه می‌شود . Adam optimizer نیز در این مرحله به کار می‌رود . معماری اساسی مدل پیشنهادی برای یک جمله فارسی در شکل ۴ نشان‌داده شده‌است . طبق شکل ۴ ، برای هر جمله ورودی ، مرحله word embedding توسط Word۲vec انجام می‌شود . پس از آن ، این مدل سعی دارد هر احساس با ترکیبی از دو شبکه عصبی را پیش‌بینی کند : CNN و LSTM۴. آزمایش و نتایجراه‌اندازی آزمایشی متشکل است از یک سیستم‌عامل ویندوز که یک محیط مجازی به زبان پایتون را اداره می‌کند. این بخش به بخش‌های زیر تقسیم می‌شود:data, convolutional and activation, max-pooling and dropout, RNN and baseline.۴.۱ دادهدر فارسی ، یکی از مشکلات NLP این است که هیچ مجموعه داده استانداردی برای آنالیز احساسی وجود ندارد . در این بخش از یک کاوشگر استفاده کردیم تا داده‌های خود را از www.digikala.com جمع‌آوری کنیم که سایت معروف ایرانی برای محصولات الکترونیکی است . ما این مجموعه داده‌ها را &quot; PE &quot; نام بردیم که مخفف مجموعه داده الکترونیکی فارسی است . ما همچنین از API های پخش تویی‌تر برای ایجاد مجموعه داده دوم در مورد مساله سیاسی در فارسی استفاده کردیم . ما این مجموعه داده &quot; PP &quot; را نام بردیم که مخفف مجموعه داده سیاسی فارسی است .&quot;PE &quot; به عنوان مجموعه داده اصلی ، جملات ۹۰۶۶ دارد و &quot; PP &quot; جملات ۲۵۵۰ دارد . ما به طور دستی هر جمله مثبت ، منفی یا خنثی را با استفاده از ۱۰ دانشمند کامپیوتری مختلف وspeakers بومی برای تصمیم‌گیری در مورد هر احساس طبقه‌بندی کردیم . جدول ۱ همه جزئیات را در مورد هر مجموعه داده نشان می‌دهد . در جدول ، ( Nu , N + , N - ) به ترتیب تعداد جملات خنثی ، مثبت و منفی هستند .بخش‌های زیر پارامترهای بهینه بدست‌آمده از آزمایش را مشخص می‌کنند .۴.۲ convolutional Layer and Activationاندازه کرنل بهینه ۱ بعدی ۳ ، ۵ و ۷ است . این اندازه‌های هسته accuracy بالاتری داشتند . تعداد بهینه فیلتر ۱۲۸ است . لایه فعال‌سازی Relu نیز در این بخش استفاده شده‌است .۴.۳ Maxpooling و Dropoutبا توجه به آزمایش ما برای max - pooling ، اندازه کرنل بهینه ۲ بود . لایه dropout در نرخ ۰.۵ برای کاهش overfitting تنظیم شد . این روش ، این مدل را برای درک داده‌ها به روش بهتر هدایت می‌کند و می‌تواند علت accuracy بالاتری نیز باشد .۴.۴ RNNLSTM و GRU به ترتیب ۱۲۸ و ۲۵۶ واحد دارند . با توجه به آزمایش ، افزایش یا کاهش تعداد واحدها باعث overfitting می‌شود . همچنین می‌تواند accuracyدقت را کاهش دهد .۴.۵ نتایجما نتایج خود را با چهار مطالعه تحلیلی احساسی مقایسه کردیم . جدول ۲ نتایج تجربی هر مدل را بر روی مجموعه داده فارسی ما نشان می‌دهد .طبق این جدول ، مدل ۱ یکی از بهترین رویکردهای سنتی به نامNBSVM است [ ۱۲ ] . مدل ۲ و ۳ دو مطالعه بر روی تحلیل احساسات فارسی هستند . آن‌ها به ترتیب Naive بیز و رگرسیون لجستیک را گسترش دادند [ ۱۹ ] [ ۱۷ ] [ ۱۷ ] . مدل ۴ و ۵ به عنوان دیگر مطالعات عمیق یادگیری در فارسی پیشنهاد شده‌است [ ۲۰ ] . آن‌ها ازBidirectional - LSTM و سی ان ان به طور جداگانه در مدل‌های پیشنهادی خود استفاده کردند . نتایج نشان می‌دهند که مدل یادگیری عمیق ‌تر از مدل‌های دیگر بهتر عمل می‌کند چون می‌تواند توانایی‌های CNN&#x27;s وLSTM&#x27;s را مهار کند .علاوه بر این ، مدل پیشنهادی سعی در یادگیری ویژگی‌های سطح بالا از داده به روش افزایشی دارد . مدل پیشنهادی همچنین از Word2vec  به عنوان یک گام یادگیری بدون نظارت برای نمایش کلمه استفاده می‌کند . Word2vec از اطلاعات معنایی از پیکره زبانی corpus استفاده می‌کند . این سبک به مدل کمک می‌کند تا بهتر عمل کند و با چالش‌های موجود در فارسی از جمله سبک نوشتاری مختلف فایق آید و غیره CNN - LSTM در مقایسه با CNN - GRU تقریبا ً بهتر عمل می‌کند ، بنابراین CNN به عنوان آخرین معماری پیشنهادی انتخاب شده‌است .شکل ۵ نشان‌دهنده منحنی ROC برای مدل پیشنهادی است . آنالیز منحنی Rocابزاری بنیادی برای ارزیابی عملکرد مدل‌های مختلف است . این روش مثبت حقیقی را با نرخ‌های مثبت کاذب برای همه آستانه ممکن مقایسه می‌کند . شکل ۵ ، ارزیابی ROC را برای مدل CNN-LSTM بر روی اولین مجموعه داده‌ها نشان می‌دهد (PE ) . با توجه به این منحنی ، ارزیابی ماکرو و میکرو برای سه کلاس ( کلاس ۰ : مثبت ، کلاس ۱ : منفی و کلاس ۲ : خنثی ) این مطالعه به ترتیب ۸۶ % و ۸۳ % است . یک ماکرو - متوسط این متریک را به طور مستقل برای هر کلاس محاسبه می‌کند و سپس میانگین را می‌گیرد در حالی که یک میانگین Micro ، سهم همه طبقات برای محاسبه میانگین متریک را بدست می‌دهد . منحنی ROC ، ارزیابی هر کلاس را به طور جداگانه نشان می‌دهد .5. نتیجه‌گیریآنالیز احساسی یک زمینه ادامه‌دار در مطالعه است . با این حال مطالعات محدودی در زبان فارسی انجام شده‌است . براساس دانش مولف ، این اولین مطالعه‌ای بر روی تحلیل احساسات فارسی است که از معماری یادگیری عمیق ترکیبی از CNN-LSTM استفاده می‌کند . معماری CNN - LSTM شامل CNNبرای استخراج ویژگی و LSTM برای یادگیری وابستگی‌های دراز مدت است . بنابراین ، این مدل می‌تواند توانایی‌های شبکه CNN و LSTM را مهار کند و نتایج بهتری با دقت ۸۵ % بدست آورد . علاوه بر این، ما دو مجموعه داده‌های فارسی مختلف را از تویی‌تر و digikala به عنوان مشهورترین سایت دیجیتال جمع‌آوری کردیم . ما این جملات را مثبت ، منفی و یا خنثی ذکر کردیم . آن‌ها می‌توانند مجموعه داده‌های مفید برای زبان فارسی باشند .REFERENCES[1] Rajadesingan, A., R. Zafarani and H. Liu (2015). Sarcasm Detection on Twitter: ABehavioural Modeling Approach. In Proceedings of the Eighth ACM InternationalConference on Web Search and Data Mining, (2015): 97-106.[2] Jandail, R. R. S., P. Sharma and C. Agrawal (2014). A Survey on Sentiment Analysis andOpinion Mining: A need for an Organization and Requirement of a customer. In InternationalConference on Trends in Mechanical, Aeronautical, Computer, Civil, Electrical andElectronics Engineering, India, (2016):17-24.[3] Feldman, R. (2013). Techniques and applications for sentiment analysis. Communications ofthe ACM, 56: 82-89.[4] Mir, J. and M. Usman (2015). An effective model for aspect based opinion mining for socialreviews. In Tenth International Conference on Digital Information Management (ICDIM),South Korea, (2015): 49-56.[5] Bagheri, A., M. Saraee and F. d. Jong (2013). Sentiment classification in Persian: Introducinga mutual information-based. In 21st Iranian Conference on Electrical Engineering (ICEE),Iran, (2013):1-6.[6] Le, Q. and T. Mikolov (2014). Distributed Representations of Sentences and Documents. InProceedings of the 31 st International Conference on Machine Learning, China, (2014): 1-9.[7] Socher, R., J. Pennington, E. H. Huang, A. Y. Ng and C. D. Manning (2011). Semi-supervisedrecursive auto encoders for predicting sentiment distributions. In EMNLP &#x27;11 Proceedings ofthe Conference on Empirical Methods in Natural Language Processing, United Kingdom,(2011):151-161.[8] Lecun, Y., L. Bottou, Y. Bengio and P. Haffner (1998). Gradient-based learning applied todocument recognition. In Proceedings of the IEEE, 86: 2278 – 2324.[9] Mikolov, T., M. Karafi´at, L. Burget, J. H. Cernocky and S. Khudanpur (2010). Recurrentneural network based language model. In INTERSPEECH, Japan, (2010): 1045-1048.[10] Hochreiter, H. and J. Schmidhuber (1997). LONG SHORT-TERM MEMORY. Neuralcomputation, 9(8): 1735-1780.[11] Pang, B., L. Lee and S. Vaithyanathan (2002). Thumbs up? Sentiment Classification usingMachine Learning Techniques. In Conference on Empirical Methods in Natural LanguageProcessing (EMNLP), Philadelphia, (2002): 79-86.[12] Wang, S. and C. D. Manning (2012). Baselines and Bigrams: Simple, Good Sentiment andTopic Classification. In Proceedings of the 50th Annual Meeting of the Association forComputational Linguistics, Republic of Korea, (2012): 90-94.[13] Maas, A. L., R. E. Daly, P. T. Pham, D. Huang, A. Y. Ng and C. Potts (2011). Learning WordVectors for Sentiment Analysis. In Proceedings of the 49th Annual Meeting of the Associationfor Computational Linguistics: Human Language Technologies, Portland, Oregon, (2011): 1-9.[14] Socher, R., A. Perelygin, J. Y. Wu, J. Chuang, C. D. Mannin, A. Y. Ng and C. Potts (2013).Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank. InProceeding of the conference on empirical methods in natural language processing (EMNLP),(2013): 1631–1642.[15] Socher, R., B. Huval, C. D. Manning and A. Y. Ng (2013). Semantic compositionality throughrecursive matrix-vector spaces. In Proceedings of the 2012 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning,Korea, (2013): 1201–1211.[16] Bagheri, A., M. Saraee and d. J. Franciska (2013). Sentiment classification in Persian:Introducing a mutual information-based method for feature selection. In 21st IranianConference on Electrical Engineering (ICEE), Mashhad, (2013): 1-6.[17] Alimardani, S. and A. Aghaei (2015). Opinion Mining in Persian Language Using SupervisedAlgorithms. Journal of Information Systems and Telecommunication, 3:135-141.[18] Hajmohammadi, M. S. and R. Ibrahim (2013). A SVM-Based Method for Sentiment Analysisin Persian Language. In International Conference on Graphic and Image Processing,Singapore.[19] Basiri, M. E. and A. Kabiri (2017). Sentence-Level Sentiment Analysis in Persian. In 3rdInternational Conference on Pattern Recognition and Image Analysis (IPRIA 2017), Iran,(2017): 84-89.[20] Roshanfekr, B., S. Khadivi and M. Rahmati (2017). Sentiment analysis using Deep learningon Persian Texts. In 25th Iranian Conference on Electrical Engineering (ICEE2017), Iran,(2017):1503-1508.[21] Kim, Y. (2014). Convolutional neural networks for sentence classification. In Proceedings ofthe 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), Qatar,(2014): 1746–1751.[22] Mikolov, T., K. Chen, G. Corrado and J. Dean (2013). Efficient estimation of wordrepresentation in vector space, In arXiv preprint arXiv.[23] Chung, J., C. Gulcehre, K. Cho and Y. Bengio (2014). Empirical evaluation of gated recurrentneural networks on sequence modeling. In arXiv preprint arXiv.ZAHRA BOKAEE NEZHAD1 AND MOHAMMAD ALI DEIHIMI21Department of Information and Computer Science, Zand university, Shiraz, Iran.2Department of Electrical and Electronics Engineering, Bahonar University,Shiraz, Iran.(Received: 10th Dec 2018; Accepted: 17th April 2019; Published on-line: 1st June 2019)https://doi.org/10.31436/iiumej.v20i1.1036</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Mon, 27 Jan 2020 22:22:01 +0330</pubDate>
            </item>
                    <item>
                <title>تحلیل احساسات و استخراج عقاید</title>
                <link>https://virgool.io/@babaiekomeil/%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D8%A7%D8%AD%D8%B3%D8%A7%D8%B3%D8%A7%D8%AA-%D9%88-%D8%A7%D8%B3%D8%AA%D8%AE%D8%B1%D8%A7%D8%AC-%D8%B9%D9%82%D8%A7%DB%8C%D8%AF-vcv0kens05kp</link>
                <description>Sentiment Analysis and Opinion Miningبینگ لیو ، دانشگاه ایلینویز در شیکاگوترجمه شده توسط : کمیل آقابابایی دانشجوی ارشد نرم افزار دانشگاه آزاد بندرعباسنکته : باتوجه به برگردان به زبان فارسی مسلما بعضی از مثال ها هم می بایست منطبق با زبان فارسی بیان می شد که در نتیجه ممکن است  با نسخه اصلی کمی متفاوت باشد. برای فهم راحتتر مطالب نیز  در برخی از موارد از تعاریف موجود در برخی مقالات داخلی استفاده شده (که منابع مربوط به آن نیز اشاره شده است.) و یا اینکه برداشت خودم از موضوع را نوشتم.مطمئنا کار انجام شده دارای اشکالاتی نیز می باشد که بسیار خوشحال می شوم اشکالات مشاهده شده را برایم ارسال نمائید.امیدوار هستم که  مفید واقع شود.babaiekomeil@gmail.comسخنرانی‌های Synthesisدرباره تکنولوژی‌های زبان انسانیویرایشگرGraeme Hirst، دانشگاه تورنتوچکیدهآنالیز احساسی و استخراج نظرات حوزه مطالعاتی است که نظرات، احساسات، ارزیابی‌ها، نگرش‌ها و عواطف مردم را از زبان نوشتاری تحلیل می‌کند. این یکی از فعال ترین زمینه های تحقیقاتی  در پردازش زبان طبیعی و همچنین به طور گسترده ای در زمینه داده کاوی ، وب کاوی و متن کاوی می باشد .در واقع ، این تحقیق به دلیل اهمیت آن برای تجارت و جامعه ، خارج از علوم رایانه به علوم مدیریت و علوم اجتماعی نیز گسترش یافته است.اهمیت روزافزون تجزیه و تحلیل احساسات  همزمان با رشد رسانه های اجتماعی مانند بررسی ها ، بحث های انجمنی ، وبلاگ ها ، میکروبلاگ ها ، توییتر و شبکه های اجتماعی  منطبق شده است. برای نخستین بار در تاریخ بشریت ، اکنون حجم عظیمی از داده های تفسیر شده به صورت دیجیتالی برای تجزیه و تحلیل ثبت شده است.سیستم‌های تحلیل احساسی تقریباً در هر کسب‌وکار و حوزه اجتماعی به کار گرفته می‌شوند، زیرا عقاید در تمام فعالیت‌های انسانی نقش اساسی دارد  و از تأثیرگذارترین رفتارهای ما می باشد. اعتقادات و برداشت ما از واقعیت و انتخاب هایی که ما انجام می دهیم ، تا حد زیادی مشروط به این است که دیگران چگونه دنیا را می‌بینند و ارزیابی می‌کنند. به همین دلیل، زمانی که ما نیاز به تصمیم‌گیری داریم، اغلب به دنبال عقاید دیگران هستیم.، این نه تنها برای افراد بلکه برای سازمان ها نیز صادق است.این کتاب ، متنی مقدماتی و پیمایشی است که همه موضوعات مهم  و آخرین تحولات در این زمینه با بیش از 400 مرجع پوشش می دهد. مناسب برای دانشجویان ، محققین و متخصصانی که به تجزیه و تحلیل رسانه های اجتماعی ، به طور کلی  تحلیل احساسات علاقه مند هستند. به خصوص مدرسین می توانند به راحتی از آن در کلاس برای دوره های مربوط به پردازش زبان طبیعی ، اجتماعی ، تجزیه و تحلیل رسانه ها ، استخراج متن و داده کاوی استفاده کنند .اسلایدها به صورت آنلاین نیز در دسترس هستند.کلید واژه هاتجزیه و تحلیل احساسات ، افکار اندیشی ، احساسات ، تأثیر ، ارزیابی ، نگرش ، روحیه ، رسانه های اجتماعی ،پیشرفت زبان طبیعی ، استخراج متن.sentiment analysis, opinion mining, emotion, affect, evaluation, attitude, mood, social media,natural language progressing, text mining.سپاسگذاری:من می خواهم از دانشجویان سابق و فعلی خودم ، تشکر کنم :Zhiyuan Chen, Xiaowen Ding, Geli Fei, Murthy Ganapathibhotla, Minqing Hu, Nitin Jindal, Huayi Li, Arjun Mukherjee, Quang Qiu(visiting student from Zhejiang University), William Underwood, Andrea Vaccari, Zhongwu Zhai (visiting student from Tsinghua University), and Lei Zhangبرای کمک به ایده های تحقیقاتی بیشمار در طول سال هابحث‌ها با بسیاری از محققان نیز به شکل دادن این کتاب کمک کرد:Malu G.Castellanos,Dennis Chong, Umesh Dayal, Eduard Dragut, Riddhiman Ghosh, Natalie Glance,Meichun Hsu, Jing Jiang, Birgit König, Xiaoli Li, Tieyun Qian, Gang Xu, Philip S. Yu, Clement Yu, and ChengXiangZhai.من همچنین از دو بازبین (reviewers) ناشناس بسیار سپاسگزارم. آنها علیرغم برنامه های شلوغ خود ، این کتاب را بسیار با دقت مطالعه کردند و پیشنهادات بسیار خوبی به من دادند. من در هنگام بهبود کتاب ، هرکدام از آنها را مورد توجه قرار داده ام.در خصوص  انتشار این کتاب نیز از سردبیر ، Dr. Graeme Hirst و President and CEO of Morgan &amp; Claypool Publishers  تشکر می کنم ، که توانسته اند همه کارها را به موقع انجام داده و بسیاری از توصیه های ارزشمند را در اختیار من قرار دهند.سرانجام ، بزرگترین قدردانی من به خانواده خودم  برمی گردد :  Yue, Shelley, and Kate ، که از جهات مختلف به من کمک کرده اند.فهرستPreface....................................................................................................................... xiii پیش گفتار1. Sentiment Analysis: A Fascinating Problem...........................................................1 تجزیه و تحلیل احساسات: یک مسئله جذاب1.1 Sentiment Analysis Applications.......................................................................... 2 برنامه های کاربردی تجزیه و تحلیل احساسات1.2 Sentiment Analysis Research................................................................................ 3  تحقیقات تجزیه و تحلیل احساسات1.2.1 Different Levels of Analysis............................................................................... 4 سطوح مختلف تجزیه و تحلیل1.2.2 Sentiment Lexicon and Its Issues....................................................................... 5 واژه نامه احساساتی و مسائل آن1.2.3 Natural Language Processing Issues................................................................. 6 مسائل مربوط به پردازش زبان طبیعی1.3 Opinion Spam Detection....................................................................................... 7 Spam تشخیص عقاید1.4 What’s Ahead...................................................................................................... 7 چه چیزی پیش روپیشگفتارعقاید تقریباً در تمام فعالیتهای انسانی بسیار مهم و از تأثیرگذارترین رفتارهای ما هستند. اعتقادات و برداشت های ما از واقعیت و انتخاب هایی که با توجه به آن ها انجام می دهیم ، تا حد قابل توجهی ، به چگونگی مشاهده و ارزیابی دیگران از جهان بستگی دارد. به همین دلیل ، هنگامی که ما نیاز به تصمیم گیری داریم ، غالباً نظر دیگران را جستجو می کنیم. این نه تنها در مورد افراد بلکه در مورد سازمان ها نیز صادق است.عقاید و مفاهیم مرتبط مانند احساسات، ارزیابی‌ها، نگرش‌ها و عواطف ، موضوعات مورد مطالعه تحلیل احساسات و عقیده کاوی هستند. شروع و رشد سریع این زمینه همزمان با رسانه های اجتماعی در وب بوده است .  به عنوان مثال  بررسی ها ، بحث های انجمنی ، وبلاگ ها ، میکروبلاگ ها ، توییتر و شبکه های اجتماعی  . برای نخستین بار در تاریخ بشریت ، اکنون حجم عظیمی از داده های تفسیر شده به صورت دیجیتالی برای تجزیه و تحلیل ثبت شده است. از اوایل سال 2000 ، تجزیه و تحلیل احساسات به یکی از فعال ترین زمینه های تحقیق در پردازش زبان طبیعی تبدیل شده است. همینطور به طور گسترده ای در زمینه داده کاوی ، وب کاوی و استخراج متن مورد مطالعه قرار گرفته است.در واقع ، این پدیده به دلیل اهمیت آن برای تجارت و جامعه ، خارج از علوم رایانه به علوم مدیریت و علوم اجتماعی نیز گسترش یافته است.در سال های اخیر ، فعالیت های صنعتی پیرامون تحلیل احساسات نیز رونق گرفته است.استارت آپ های بی شماری پدید آمده است. بسیاری از شرکت های بزرگ ظرفیت های داخلی خود را ایجاد کرده اند. سیستم های تحلیل احساسات کاربردهای خود را تقریباً در هر تجارت و حوزه اجتماعی پیدا کرده اند.هدف این کتاب ارائه مقدماتی عمیق از این مسئله جذاب و ارائه یک بررسی جامع از کلیه مباحث مهم تحقیقاتی و آخرین تحولات موجود در این زمینه است. که در همین راستا ، این کتاب بیش از 400 مقاله از همه کنفرانس ها و ژورنال های مهم را در بر گرفته است. گرچه این زمینه با متن زبان طبیعی سروکار دارد ، که غالباً داده های بدون ساختار محسوب می شوند ، لیکن این کتاب رویکردی ساختاری در معرفی این مسئله با هدف پیوند دادن جهان بدون ساختار و ساختار یافته و تسهیل تحلیل کیفی و کیفی نظرات در پیش گرفته است. که برای برنامه های علمی و کاربردی  بسیار مهم می باشد. در این کتاب ابتدا برای ارائه مسئله یک انتزاع یا ساختار را تعریف خواهم کرد.در این ساختار، ما به طور طبیعی زیر مسئله های  خود را خواهیم دید. فصل‌های بعدی درباره تکنیک‌های موجود برای حل این زیر مسئله ها بحث و تبادل نظر می‌کنیم.این کتاب برای دانش آموزان، پژوهشگران، و متخصصان که به تحلیل رسانه‌های اجتماعی به صورت  کلی و یا خاص مورد توجه قرار می‌گیرند، مناسب است. مدرسین می‌توانند به آسانی از آن در کلاس برای دوره‌های پردازش زبان طبیعی، تحلیل رسانه‌های اجتماعی، استخراج متن و داده کاوی استفاده کنند. اسلایدها نیز به صورت آنلاین در دسترس هستند.فصل 1تجزیه و تحلیل احساسات:یک مسئله جذابتجزیه و تحلیل احساسات ، که همچنین به عنوان افکار اندیشی (عقیده کاوی /نظر کاوی) خوانده می شود ، حوزه مطالعاتی است که نظرات، احساسات، ارزیابی‌ها، نگرش‌ها و احساسات نسبت به موجودیت‌های مثل محصولات، خدمات، سازمان‌ها، افراد، موضوعات، رویدادها، عناوین و ویژگی‌های آن‌ها را تجزیه و تحلیل می‌کند. اصطلاح تحلیل احساسات شاید برای اولین بار در Nasukawa و Yi(2003)  و همچنین  اصطلاح عقیده کاوی نیز برای اولین بار توسط  Dave  و همکارانش بیان شده است. (2003)با این حال، تحقیقات در مورد احساسات و عقاید پیش‌تر  از این ظاهر شده بودند (Das and Chen، ۲۰۰۱؛ Morinaga و همکاران، ۲۰۰۲؛ Pang و همکاران، ۲۰۰۲؛ Turney، ۲۰۰۲؛ wiebe، ۲۰۰۰).در این کتاب ما از اصطلاحات تحلیل احساس و استخراج نظرات (opinion mining (sentiment analysis and به جای یکدیگر استفاده می‌کنیم. برای ساده کردن ارائه، در سراسر این کتاب ما از واژه  opinion  (عقیده /نظر) برای نشان دادن نظر، احساسات، ارزیابی، نگرش و احساس استفاده خواهیم کرد. با این حال، این مفاهیم هم‌ارز نیستند. ما زمانی که به آن‌ها نیاز داریم، آن‌ها را متمایز خواهیم کرد. مفهوم نظر  opinion خودش خیلی گسترده است. تحلیل احساسی و استخراج نظرات عمدتاً بر نظراتی تمرکز می‌کنند که احساسات مثبت یا منفی را بیان می‌کنند.اگر چه زبان‌شناسی و پردازش زبان طبیعی  (NLP) سابقه طولانی دارند, اما تحقیقات کمی در مورد عقاید و احساسات مردم قبل از سال ۲۰۰۰انجام شده‌است. از آن زمان به بعد, این حوزه به یک حوزه تحقیقاتی بسیار فعال تبدیل شده‌است. دلایل مختلفی برای این موضوع وجود دارد. اول اینکه تقریباً در هر حوزه, کاربردهای وسیعی از برنامه‌ها وجود  دارد. صنعت تحلیل احساسات نیز  به دلیل گسترش کاربردهای تجاری رونق گرفته است. این یک انگیزه قوی برای تحقیق می تواند باشد. دوم  اینکه، بسیاری از مشکلات تحقیقاتی چالش برانگیز را ارائه می دهد ، که قبلاً هرگز مورد مطالعه قرار نگرفته بودند. این کتاب به طور سیستماتیک این مشکلات را تعریف و بحث خواهد کرد ، و جدیدترین تکنیک های  برای حل آنها را توصیف می کند. سوم اینکه ، برای نخستین بار در تاریخ بشریت ، اکنون حجم عظیمی از داده های تفسیر شده (opinionated data)در رسانه های اجتماعی در وب داریم. بدون این داده ها ، تحقیقات زیادی امکان پذیر نبود.جای تعجب نیست که، شروع و رشد سریع تحلیل احساسات با رسانه‌های اجتماعی همزمان شده‌است. در حقیقت، تحلیل احساسی اکنون در مرکز تحقیقات رسانه‌های اجتماعی قرار دارد. از این رو، تحقیقات در مورد تحلیل احساسات نه تنها تاثیر مهمی بر NLPدارد بلکه ممکن است تاثیر عمیقی بر علوم مدیریتی، علوم سیاسی، اقتصاد و علوم اجتماعی داشته باشد چرا که همگی تحت‌تاثیر عقاید مردم قرار گرفته‌اند. اگرچه تحقیقات آنالیز احساسی اساساً از اوایل سال ۲۰۰۰ آغاز شد، لیکن  برخی از تحقیقات اولیه در مورد تفسیر استعاره، صفات احساسی، ذهنیت، دیدگاه‌ها، و عواطف وجود داشته است (Hatzivassiloglou و mckeown، ۱۹۹۷؛ Hearst، ۱۹۹۰؛ wiebe، ۱۹۹۰؛ wiebe و همکاران، ۱۹۹۹).این کتاب به عنوان یک متن مقدماتی به روز و جامع و همچنین یک بررسی در مورد  این موضوع عمل می‌کند.1.1 برنامه های کاربردی تجزیه و تحلیل احساساتعقاید تقریباً در مرکز تمام فعالیت‌های انسانی قرار دارند, زیرا تاثیر مهمی بر رفتارهای ما دارند.هر زمان که ما نیاز به تصمیم‌گیری داریم, می‌خواهیم نظرات دیگران را بدانیم. در دنیای واقعی, شرکت‌ها و سازمان‌ها همیشه خواهان پیدا کردن نظرات مشتریان یا عموم در مورد محصولات و خدماتشان هستند. مصرف کنندگان نیز می‌خواهند نظرات کاربران موجود یک محصول را قبل از خرید آن, و نظرات دیگران درباره نامزدهای سیاسی قبل از تصمیم‌گیری در انتخابات سیاسی بدانند. در گذشته, وقتی فردی به اظهار نظر نیاز داشت, از دوستان و خانواده‌اش می‌پرسید.وقتی یک سازمان یا یک کسب‌وکار به نظرات عمومی یا مصرف‌کننده نیاز داشت, بررسی‌ها, نظرسنجی‌ها و گروه‌های متمرکز را انجام می داد. کسب نظرات عمومی و مصرف‌کننده از دیرباز یک کسب و کار بزرگ برای بازاریابی, روابط‌عمومی, و شرکت‌های تبلیغاتی سیاسی بوده‌است.با رشد شگفت انگیز رسانه‌های اجتماعی (به عنوان مثال، reviews، بحث‌های اجتماعی، بلاگ ها، میکروبلاگ ها، توییتر، نظرات، و پست‌های شبکه اجتماعی) در وب، افراد و سازمان‌ها به طور فزاینده‌ای از محتوای این رسانه‌ها برای تصمیم‌گیری استفاده می‌کنند. این روزها، اگر کسی بخواهد کالای مصرفی را بخرد، دیگر محدود به پرسیدن از دوستان و خانواده تان برای نظرات نیست چون نظرات و بحث‌های بسیاری از کاربران در فورم های عمومی درباره محصول وجود دارد. برای یک سازمان ممکن است دیگر نیازی به انجام نظرسنجی ها و ایجاد گروه های متمرکز به منظور جمع آوری افکار عمومی نباشد زیرا تعداد زیادی از این اطلاعات در دسترس عموم قرار دارد. با این حال ، یافتن و پایش نظرات  بر روی  وب و تقطیر اطلاعات موجود در آنها به دلیل تکثیر سایت‌های گوناگون یک وظیفه دشوار است.هر سایت معمولاً حاوی حجم بالایی از متن نظرات است که به راحتی در بلاگ ها و پست ها قابل  رمزگشایی و فهمیدن نمی باشند. معمولا به کارگیری روش های سنتی(خواندن نظرات توسط انسان) در شناسایی سایت‌های مرتبط و استخراج و خلاصه کردن نظرات با مشکلات فراوان روبرو خواهند شد. بنابراین سیستم‌های آنالیز احساسی خودکار مورد نیاز هستند.در سال‌های اخیر شاهد بوده‌ایم که پست هایی در رسانه‌های اجتماعی به تغییر شکل مشاغل و تغییر احساسات و عواطف عمومی کمک کرده است که تأثیرات زیادی بر سیستم های اجتماعی و سیاسی ما داشته اند.مانند پست هایی که  برای تغییرات سیاسی که در برخی از کشورهای عربی در سال ۲۰۱۱ رخ داده‌است.بنابراین  جمع آوری و مطالعه نظرات در وب  به یک ضرورت تبدیل شده است. البته اسناد منتشر شده نه تنها در وب وجود دارد (داده خارجی نامیده می شود)( called external data) ، بلکه بسیاری از سازمان ها داده های داخلی خود را نیز دارند ، به عنوان مثال ، بازخورد مشتری جمع آوری شده از ایمیل و مراکز تماس یا نتایج حاصل از نظرسنجی های انجام شده توسط سازمان ها.به خاطر این کاربردها، فعالیت‌های صنعتی در سال‌های اخیر رشد کرده‌اند. برنامه‌های آنالیز احساسی تقریباً در هر حوزه ممکن، از محصولات مصرفی، خدمات، مراقبت‌های بهداشتی و خدمات مالی برای رویداده‌ای اجتماعی و انتخابات سیاسی گسترش‌یافته اند. من خودم یک سیستم تحلیل احساسی به نام تجزیه‌گر نظر(Opinion parser) را اجرا کرده‌ام و در همه این زمینه‌ها در یک شرکت تازه‌کار بر روی پروژه‌ها کار کرده‌ام. در ایالات‌متحده حداقل ۴۰ تا ۶۰ شرکت فعال در این رابطه وجود دارد. بسیاری از شرکت‌های بزرگ نیز قابلیت‌های داخلی خود را ساخته‌اند، به عنوان مثال، مایکروسافت، گوگل، هیولت - پاکارد، SAP، و SAS. این کاربردهای عملی و علایق صنعتی انگیزه‌های قوی برای تحقیق در آنالیز احساسی فراهم کرده‌اند.جدا از کاربردهای دنیای واقعی، بسیاری از مقالات تحقیقات محور نیز منتشر شده‌اند. به عنوان مثال، لیو و همکاران (۲۰۰۷) یک مدل احساسی برای پیش‌بینی عملکرد فروش پیشنهاد شد.McGlohon و همکاران (۲۰۱۰)، مقالات برای رتبه‌بندی محصولات و تجار مورد استفاده قرار گرفتند. هنگ‌کنگ و skiena )۲۰۱۰)، روابط بین خطوط شرط‌بندی NFL و نظرات عمومی در وبلاگ‌ها و توییتر مورد مطالعه قرار گرفت. در O &quot; کانر و همکاران (۲۰۱۰)، احساسات تویی‌تر با نظرسنجی‌های افکار عمومی مرتبط بود. در Tumasjan و همکاران (۲۰۱۰)، احساسات تویی‌تر برای پیش‌بینی نتایج انتخابات نیز اعمال شد. در چن و همکاران (۲۰۱۰)، نویسندگان نقطه نظرات سیاسی را مورد مطالعه قرار دادند. در yano و Smith )۲۰۱۰(، یک روش برای پیش‌بینی حجم کامنت های سیاسی گزارش شد. در Asur و Huberman )۲۰۱۰(، جوشی و همکاران (۲۰۱۰) و Sadikov و همکاران (۲۰۰۹)، داده‌های تویی‌تر، بررسی‌های فیلم و بلاگ ها برای پیش‌بینی درآمد گیشه فروش برای فیلم‌ها استفاده شدند. در میلر و همکاران (۲۰۱۱)، جریان احساسات در شبکه‌های اجتماعی مورد بررسی قرار گرفت.  محمد و یانگ (۲۰۱۱)، احساسات در mails برای پیدا کردن این که چگونه جنسیت در محور احساسات متفاوت است، مورد استفاده قرار گرفتند. در محمد (۲۰۱۱)، احساسات در رمان و داستان‌های پریان مورد پی‌گیری قرار گرفتند.Bollen و همکاران (۲۰۱۱)، حالات تویی‌تر برای پیش‌بینی بازار سهام مورد استفاده قرار گرفتند. در بار - Haim و همکاران(2011) و فلدمن و همکاران (2011), سرمایه گذاران متخصص در microblogsشناسایی شدند و آنالیز احساسی سهام انجام شد. در ژانگ و skiena (2010) وبلاگ و احساسات اخبار برای مطالعه استراتژی‌های تجاری مورد استفاده قرار گرفتند. در Sakunkoo و Sakunkoo (2009), تاثیرات اجتماعی در بررسی‌های کتاب آنلاین مورد مطالعه قرار گرفت. در Grohو Hauffa (2011), آنالیز احساسی برای مشخص کردن روابط اجتماعی مورد استفاده قرار گرفت. یک سیستم آنالیز احساسی جامع و برخی مطالعات موردی نیز در Castellanosو همکاران (2011) گزارش شده‌اند.گروه من نظرات  را در مورد فیلم‌ها در تویتر‌دنبال کرد و درآمدهای باکس آفیس را با نتایج بسیار دقیق پیش‌بینی کرده‌است. ما به سادگی از سیستم parser Opinionبرای تجزیه و تحلیل نظرات مثبت و منفی در مورد هر فیلم با هیچ الگوریتم اضافی دیگری استفاده نکردیم.1.2 تحقیقات  در خصوص تجزیه و تحلیل احساساتهمانطور که در بالا بحث شد, کاربردهای فراگیر در زندگی تنها بخشی از دلیلی هستند که چرا تحلیل احساسات یک مسئله تحقیقاتی محبوب است. همچنین به عنوان یک موضوع تحقیقاتی NLPبسیار چالش برانگیز است و بسیاری از زیر مسئله‌های جدیدی را که بعداً خواهیم دید را پوشش می‌دهد. علاوه بر این, تحقیقات اندکی در سال2000 در روش nlpو یا در زبان‌شناسی انجام شده است. که  دلیل آن این است که قبل از آن نظرات کمی در فرم‌های دیجیتال به صورت متنی وجود داشت. از سال نو میلادی, این حوزه به سرعت به یکی از فعال‌ترین حوزه های  تحقیقاتی NLPتبدیل شده‌است. همچنین تحقیقات گسترده‌ای در داده‌کاوی ، وب کاوی و بازیابی اطلاعات صورت‌گرفته است. در واقع از علوم کامپیوتر گرفته تا علوم مدیریتی نیز گسترش پیدا کرده‌است.(Archak و همکاران، ۲۰۰۷؛ چن و Xie، ۲۰۰۸؛ داس و همکاران، ۲۰۰۷؛ Dellarocasو همکاران، ۲۰۰۷؛ Ghose و همکاران، ۲۰۰۷؛ پارک و همکاران (۲۰۰۷).1.2.1 سطوح مختلف تجزیه و تحلیلمن اکنون مقدمه‌ای کوتاه بر مشکلات اصلی تحقیق براساس سطح سطوح تحقیقاتی فعلی ارائه می‌کنم. به طور کلی, تحلیل احساسات عمدتاً در سه سطح بررسی شده‌است.سطح سند: وظیفه در این سطح ، طبقه‌بندی اسناد بر اساس دارا بودن احساس مثبت یا منفی می باشد(Pangو همکاران، ۲۰۰۲؛ Turney، ۲۰۰۲). به عنوان مثال، با توجه به یک مرور نظرات در رابطه با یک محصول، سیستم تعیین می‌کند که در مجموع نظر کلی در رابطه با آن محصول مثبت یا منفی  می باشد. این وظیفه معمولاً به عنوان طبقه‌بندی احساسات سطح سند شناخته می‌شود. این سطح از تجزیه و تحلیل فرض می‌کند که هر سند نظرات در مورد یک موجودیت واحد را بیان می‌کند (به عنوان مثال، یک محصول). بنابراین، برای اسنادی که ماهیت چندگانه را ارزیابی یا مقایسه می‌کنند، قابل‌اجرا نیست.سطح جمله: وظیفه در این سطح به جملات بستگی دارد و مشخص می‌کند که آیا هر جمله یک نظر مثبت، منفی و یا خنثی است. خنثی معمولاً به معنای نداشتن نظر نیست. این سطح از تجزیه و تحلیل رابطه نزدیکی با طبقه‌بندی ذهنی دارد (wiebeو همکاران ۱۹۹۹)، آنچه که باعث تمایز جملات می شود (جملات عینی نامیده می شود) می‌شود ، که اطلاعات واقعی را از جملات بیان می‌کنند و  (جملات ذهنی نامیده می‌شوند) که دیدگاه ها و نظرات شخصی را بیان می‌کنند. با این حال, ما باید توجه داشته باشیم که ذهنیت معادل احساس نیست, همان طور که بسیاری از جملات عینی می‌توانند به یک نظر اشاره داشته باشد.مانند:&quot; We bought the car last month and the windshield wiper has fallen off .&quot;یا دو جمله روبرو: &quot; اوضاع شرکت خیلی نگران کننده است &quot; و &quot; من فکر می کنم با آمدن این مدیر عامل جدید ، شرکت حتما ورشکست می شود&quot;جمله اول احساسی را راجع به یک شرکت که گوینده در آن کار می کند را بیان می کند و جمله دوم نظری را که حاصل یک تفکر است گوینده است را ببان می کند.]بر گرفته شده از اکادمی داده[ماهیت و سطح ابعاد(Entity and Aspect level): هر دو تجزیه و تحلیل‌های سطح سند و سطح جمله چیزی را که مردم دقیقاً دوست دارند و دوست ندارند، پوشش نمی دهد. Aspect Level  آنالیز خوبی  را انجام می دهد. سطح ابعاد قبلاً سطح ویژگی ها (جمع آوری و تفسیر نظرات مبتنی بر ویژگی ها) خوانده می شد (هو و لیو ، 2004).در این دسته ویژگیهای خاصی از این موجودیت مورد توجه قرار می گیرد برای مثال اگر نظرات پیرامون یک گوشی موبایل باشند: باطری، صفحه نمایش، بدنه و... ویژگی هایی از این گوشی موبایل می باشند . در گزارش نهایی این دسته میزان رضایت نظرات کاربران نسبت به هر ویژگی بیان می شود.]برگرفته شده ازمقاله نظرکاوی :سید محمد اصغری نکاح ، محسن کاهانی و احسان عسگریان[Aspect Level به جای نگاه کردن به ساختارهای زبان (اسناد، پاراگراف‌ها، جملات، بندها، یا عبارات)، به طور مستقیم به خود نظر نگاه می‌کند. براساس این ایده است که یک نظریه شامل یک احساس (مثبت یا منفی) ویا یک هدف (از نظر) است.یک نظر بدون مشخص شدن برچسب آن (مثبت /منفی/خنثی) استفاده محدودی می تواند داشته باشد. درک اهمیت این برچسب ها  به ما کمک می‌کند تا مساله تحلیل احساسات را بهتر درک کنیم.برای مثال:Although the service is not that great , I still love this restaurant . &quot;&quot;&quot;اگرچه خدمات آنچنان عالی نیست ، اما من هنوز هم این رستوران را دوست دارم.&quot;واضح است که این جمله کاملاً مثبت است. در واقع, جمله در مورد رستوران مثبت است, اما در مورد خدمت آن منفی است (تاکید نشده). در بسیاری از برنامه ها برچسب های نظری توسط  and / or  ابعاد مختلف آن‌ها توصیف می‌شوند. بنابراین, هدف این سطح تحلیل, کشف احساس با استفاده از توسط  and / or  بر روی ویژگی یا ابعاد آن‌ها است. برای مثال, جمله &quot; کیفیت تماس آیفون خوب است, اما عمر باتری آن کوتاه است. &quot; ارزیابی دو بعد : کیفیت تماس و عمر باتری, از آیفون (موجودیت).احساس در کیفیت تماس آیفون مثبت است, اما احساس در عمر باتری منفی است. کیفیت تماس و عمر باتری iphone بعد(ویژگی) نظری هستند. براساس این سطح تحلیل, یک خلاصه ساختار یافته درباره موجودیت ها و ابعاد آن‌ها می‌تواند تولید شود که متن بدون ساختار را به داده‌های ساختاریافته تبدیل می‌کند و می‌تواند برای انواع تحلیل‌های کیفی و کمی مورد استفاده قرار گیرد. هر دو طبقه‌بندی سطح سند و سطح جمله بسیار چالش برانگیز هستند. سطح بعد حتی سخت‌تر است. این مساله شامل چندین زیر مساله است که در فصول 2 و 5 از آن مورد بحث قرار خواهیم گرفت.برای اینکه موضوع را جالب‌تر و چالش برانگیز تر کنیم، دو نوع عقیده وجود دارد ، یعنی عقاید منظم و عقاید مقایسه ای (Jindal and Liu، 2006 b.). برای مثال، &quot;طعم کوکاکولا&quot; بسیار خوب است، که بیانگر احساس مثبت در مورد مزه نوشابه کوکاکولا است. یک نظر مقایسه‌ای چند موجودیت را براساس برخی از ابعاد مشترک آن‌ها مقایسه می‌کند، به عنوان مثال، &quot;کوکاکولا&quot; بهتر از پپسی است، که کوکاکولا و پپسی را براساس طعم (یک بعد یا ویژگی) مقایسه می‌کند و یک اولویت برای کوکاکولا بیان می‌کند (مراجعه به فصل ۸).1.2.2 واژگان احساساتی و مسائل مربوط به آنجای تعجب نیست که مهمترین شاخصه های احساسات ، کلمات احساساتی هستند که به آنها اصطلاحات نظر opinion words  نیز گفته می شود. این‌ها کلماتی هستند که معمولاً برای بیان احساسات مثبت یا منفی استفاده می‌شوند. برای مثال خوب، عالی، و فوق‌العاده کلمات احساسات مثبت هستند، و بد، ضعیف و وحشتناک کلمات احساسی منفی هستند. علاوه بر کلمات منحصربه فرد، عبارات و اصطلاحات نیز وجود دارند، به طور مثال، به قیمت خون پدرش. کلمات و عبارات احساسی به دلایل آشکاری برای تحلیل احساسات مفید هستند. فهرستی از این کلمات و عبارات یک واژه‌نامه حسی (یا واژه‌نامه نظر / عقیده) نامیده می‌شود.(sentiment lexicon ( or opinion lexicon ))  با گذشت سالها ، محققان الگوریتم های بی شماری برای گردآوری چنین واژگان طراحی کرده اند. ما در فصل 6 درباره این الگوریتم ها صحبت خواهیم کرد.اگرچه کلمات و عبارات احساساتی برای تحلیل احساسات مهم هستند ، اما تنها استفاده از آنها کافی نیست. مسئله بسیار پیچیده تر است. به عبارت دیگر ، می توان گفت که واژگان احساساتی برای تحلیل احساسات لازم اما کافی نیستند. در زیر ، ما چندین مسئله را روشن می کنیم.1- یک کلمه احساسات مثبت یا منفی ممکن است جهت های متضادی(معکوسی) در دامنه های کاربردهای مختلف داشته باشد. به عنوان مثال ، &quot;برید&quot; معمولاً بیانگر احساسات منفی است ، به عنوان مثال. ، &quot;امیر دستش را با چاقو برید.&quot; اما می تواند دلالت مثبتی داشته باشد ، به عنوان مثال ، &quot;امیر برای افتتاح رستوران روبان قرمز را برید.&quot;2- جمله ای که حاوی کلمات احساسی است ممکن است هیچ احساسی را بیان نکند. این پدیده اغلب در انواع مختلفی از جملات رخ می‌دهد. جملات سوالی (پرسشی) و شرطی دو نوع مهم از این پدیده هستند، مثلاً &quot;آیا می‌توانید بگویید کدام دوربین سونی خوب است؟ &quot; و &quot; اگر من بتوانم یک دوربین خوب در مغازه پیدا کنم، آن را خواهم خرید.&quot; هر دوی این جملات حاوی واژه &quot;خوب&quot; هستند، اما نظرات مثبت یا منفی را در مورد هر دوربینی سونی را نشان نمی‌دهند. با این حال، تمام جملات شرطی یا جملات پرسشی مورد نظر هیچ احساسی ندارند، به طور مثال، &quot;آیا کسی می‌داند چطور این چاپگر وحشتناک را تعمیر کند؟ &quot; و &quot; اگر به دنبال یک ماشین خوب هستید, تویوتا را بخرید. &quot; ما در فصل  4 به چنین جملاتی می‌پردازیم.3- جملات طعنه‌آمیز با یا بدون کلمات احساسی آن ها بسیار دشوار است. جملات طعنه آمیز با یا بدون کلمات احساساتی دشوار است ، برای مثال ، &quot;چه ماشین عالی!طعنه/کنایه در نظرات مصرف كنندگان درباره محصولات و خدمات چندان مرسوم نیست ، اما در بحث های سیاسی بسیار رایج است که نظرات سیاسی را سخت می کند. ما در فصل 4 چنین جملاتی را مورد بحث قرار خواهیم داد.4- بسیاری از جملات بدون کلمات احساساتی نیز می توانند حاکی از عقاید باشند. بسیاری از این جملات در واقع جملات عینی هستند که برای بیان برخی اطلاعات واقعی به کار می روند. باز هم ، انواع بسیاری از جمله ها وجود دارد. در اینجا ما فقط دو مثال آورده ایم. جمله &quot;این ماشین لباسشویی از آب زیادی استفاده می کند.&quot; دلالت بر احساس منفی در مورد شستشو دارد زیرا از منابع زیادی (آب) استفاده می کند. جمله &quot;پس از دو روز خوابیدن روی تشک ، وسط شکل گودی گرفته است.&quot; نظر منفی در مورد تشک بیان می کند. این جمله همانطور که واقعیت را بیان می کند عینی است. همه این جملات هیچ کلمه احساساتی ندارند.این مسائل، همه چالش‌های عمده را در بر دارند. در حقیقت اینها  تنها برخی از مشکلات دشوار هستند. مطالب بیشتر در فصل ۵ مورد بحث قرار خواهند گرفت.1.2.3 مسائل مربوط به پردازش زبان طبیعیدر نهایت، نباید فراموش کنیم که آنالیز احساسی یک مساله NLPاست که همه ابعاد از NLPرا لمس می‌کند، به عنوان مثال، coreference resolution، بررسی انکار، و ابهام‌زدایی معنایی کلمات که مشکلات بیشتری را به آن اضافه می‌کند، از آنجایی که مشکلات حل‌شده در NLPحل نمی‌شوند. با این حال، مفید است که درک کنیم که آنالیز احساسی یک مساله NLP محدود است، زیرا سیستم نیازی به درک کامل معنای هر جمله یا سند ندارد بلکه باید برخی از بعدهای آن را درک کند، به عنوان مثال، احساسات مثبت یا منفی و ماهیت اهداف یا موضوعات آن‌ها. در این حالت، تجزیه و تحلیل احساسی یک پلت فرم عالی برای محققان NLPارایه می‌کند. در این حالت ، تجزیه و تحلیل احساسات بستر بزرگی را برای محققان NLP فراهم می کند تا در همه حوزه های NLPبا پتانسیل ایجاد تأثیر عملی عظیم ، پیشرفت های محسوسی داشته باشند. در این کتاب مشکلات اصلی و وضعیت فعلی الگوریتم ها را بیان خواهم کرد. امید است که از این کتاب برای جذب محققان از حوزه‌های دیگر nlp جهت تمرکز برای حل این مشکل استفاده شود.پیش از این کتاب ، چند جلد کتاب  تحت عنوان &quot; نگرش و تأثیر محاسبات در متن: نظریه و کاربردها &quot; وجود داشته است که توسط Shanahan, Qu, and Wiebe (2006), ویرایش شده است . و همچنین یک مقاله / کتاب توسط Pang and Lee (2008) . هر دو این کتاب مطالب عالی دارند. با این حال ، آنها در توسعه این زمینه نسبتاً زود منتشر شدند. از آن زمان به بعد پیشرفت‌های قابل‌توجهی به خاطر تحقیقات فراوان در ۵ سال گذشته به وجود آمده است. اکنون محققان درک بهتری از کل طیف مسئله ، ساختار آن و موضوعات اصلی دارند. تعداد زیادی مدل و روش جدید ارائه شده است. تحقیقات نه تنها عمیق تر شده بلکه به طور قابل توجهی گسترش یافته است. تحقیقات اولیه در این زمینه عمدتاً بر طبقه بندی احساسات یا ذهنیت بیان شده در اسناد یا جملات متمرکز بوده است که برای اکثر برنامه های کاربردی در زندگی واقعی کافی نیست. کاربردهای عملی اغلب خواستار تجزیه و تحلیل عمیق و دقیق‌تری هستند. با توجه به بلوغ این حوزه، این کتاب به شکل ساختاریافته تری نوشته شده است ، به این معنا که اکنون مسئله از نظر ساختاری تعریف شده است و جهت های مختلف تحقیقاتی پیرامون این تعریف متحد می شوند.1.3 تشخیص عقاید Spamویژگی کلیدی رسانه اجتماعی این است که هر کسی را از هر جایی در جهان قادر می‌سازد تا آزادانه دیدگاه‌ها و نظرات خود را بیان کند و بدون افشای نام واقعی اش و بدون ترس از عواقب نامطلوب، نظرات و عقائد خود را بیان کند. این نظرات بسیار با ارزش هستند. با این حال ، این ناشناسی همچنین دارای قیمتی است. این امکان را به افراد دارای برنامه های مخفی با اهداف مخرب می دهد تا بتوانند به مردم این احساس را بدهند که آن‌ها عضو مستقلی در افکار عمومی  هستند و نظرات جعلی را برای ترویج و بی‌اعتبار کردن محصولات ، خدمات، سازمان‌ها ، یا افراد  هدف ،  بدون افشای نیت واقعی خود، یا شخص یا سازمانی که به طور مخفیانه برای آن کار می‌کنند، ارایه دهند. به اینگونه افراد opinion spammersگفته می شود و فعالیت های آنها opinion spamming نام دارد (Jindal and Liu، 2007، 2008).اسپم سازی نظر ، به یک موضوع مهم تبدیل شده است. به غیر از افرادی که در بررسی ها و بحث در مورد فورم نظرهای جعلی می دهند ، شرکت های تجاری نیز وجود دارند که در زمینه نوشتن نظرات جعلی و وبلاگ های جعلی برای مشتریان خود فعالیت می کنند. چندین مورد از مشاهدات جعلی در اخبار منتشر شده است. شناسایی اسپم مهم است تا اطمینان حاصل شود که عقاید وب یک منبع قابل‌اعتماد از اطلاعات با ارزش هستند. برخلاف استخراج نظرات مثبت و منفی، تشخیص اسپم تنها یک مسئله NLPنیست زیرا شامل تجزیه و تحلیل رفتارهای posting افراد است. بنابراین یک مساله داده کاوی نیز وجود دارد. فصل ۱۰ درباره روش‌های تشخیص وضعیت کنونی بحث خواهد کرد.1.4 مسائل پیش رودر این کتاب، ما این موضوع جذاب را بررسی می‌کنیم. اگرچه کتاب با متن زبان طبیعی سر و کار دارد، که  داده‌های بدون ساختار خوانده می‌شوند، لیکن من یک رویکرد ساختاری برای نوشتن این کتاب اتخاذ می‌کنم. فصل بعدی به طور رسمی این مساله را تعریف خواهم کرد که به ما اجازه می‌دهد تا ساختاری از این مساله را ببینیم. ما از این تعریف وظایف کلیدی آنالیز احساسی را خواهیم دید. در فصل‌های بعدی، تکنیک‌های موجود برای انجام وظایف تشریح می‌شوند. با توجه به تحقیق، مشاوره، و تجربیات شروع، این کتاب نه تنها مفاهیم تحقیق کلیدی را مورد بحث قرار می‌دهد بلکه به فن‌آوری از نقطه‌نظر کاربردی به منظور کمک به افراد حرفه‌ای در این زمینه نگاه می‌کند. با این حال، من باید عذر خواهی کنم که وقتی در مورد سیستم‌های صنعتی صحبت می‌کنم، نمی‌توانم نام شرکت‌ها یا سیستم‌های آن‌ها را فاش کنم، تا حدی به خاطر این واقعیت که بازار تحلیل احساسات به سرعت حرکت می‌کند و شرکت‌هایی که من می‌شناسم ممکن است الگوریتم خود را هنگام خواندن این کتاب تغییر داده یا اصلاح کنند. نمی‌خواهم برای آن‌ها  و خودم مشکل ایجاد کنم .اگرچه من سعی می‌کنم همه ایده‌ها و تکنیک‌های اصلی را در این کتاب پوشش دهم، اما این کار به یک کار غیر ممکن تبدیل شده‌است. در دهه گذشته، تعداد زیادی از مقالات تحقیقاتی (احتمالا بیش از ۱۰۰۰) در این موضوع منتشر شده‌اند. اگرچه اکثر مقالات در کنفرانس‌ها و مجلات NLP منتشر شده‌اند، مقالات بسیاری در داده کاوی، وب کاوی، یادگیری ماشین، بازیابی اطلاعات، تجارت الکترونیک، علوم مدیریتی و بسیاری از زمینه‌های دیگر منتشر شده‌اند. بنابراین نوشتن کتابی که ایده‌ها را در هر مقاله منتشر شده پوشش می‌دهد تقریباً غیرممکن است. متاسفم که ایده‌ها یا تکنیک‌های خوب شما نادیده گرفته می‌شوند. با این حال، یک مزیت اصلی انتشار این کتاب در مجموعه کنفرانس سخنرانی Morgan &amp; Claypool این است که نویسندگان همیشه می‌توانند مطالب جدید به روز رسانی شده را به این کتاب اضافه کنند، زیرا ویرایش های جدید همیشه مورد تقاضا می باشد. بنابراین اگر شما متوجه شدید که برخی ایده‌های مهم مورد بحث جا مانده است ، لطفاً تردید نکنید و به من اطلاع دهید ، بسیار خوشحال می‌شوم که از آن ها  استفاده کنم.سرانجام ، دانش پیش زمینه در زمینه های زیر در خواندن این کتاب بسیار مفید خواهد بود:پردازش زبان طبیعی (Indurkhya and Damerau, 2010; Manning and Schutze, 1999) ، یادگیری ماشین (Bishop, 2006; Mitchell, 1997)و بازیابی اطلاعات (Manning et al., 2008).</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Sun, 04 Aug 2019 01:19:39 +0430</pubDate>
            </item>
                    <item>
                <title>Textual Entailment</title>
                <link>https://virgool.io/@babaiekomeil/textual-entailment-s1a7msvyfkqf</link>
                <description>استلزام متنی[Wikipedia]دانشجو ارشد نرم افزار کمیل آقاباباییتعریف :  حوزه پژوهشی استلزامات متنی به شناسایی، استخراج یا تولید جملات قابل نتیجه گیری از متن اختصاص دارد.تأثیرات متنی( TE ) در پردازش زبان طبیعی یک رابطه ی مستقیم بین قطعات متن است. هر زمان که حقیقت یک قطعه متن را از متن دیگری دنبال می کند، این رابطه برقرار می شود. در چارچوب TE، متون مربوطه و استلزام با آن به ترتیب متن (t) و فرضیه (h) نامیده می شوند.مثال :نمونه‌های   Textual entailment را می‌توان با مثال‌هایی از سه رابطه متفاوت نشان داد:یک نمونه از TE مثبت (متن شامل فرضیه) است:متن :  اگربه نیازمندان کمک کنید, خدا به شما پاداش خواهد داد.فرضیه:  دادن پول به یک مرد فقیر نتایج خوبی دارد.یک مثال از TE منفی (متن در تناقض با فرضیه) این است:متن :  اگر به نیازمندان کمک کنید, خدا به شما پاداش خواهد داد.فرضیه:  دادن پول به مرد فقیر، پیامدهایی ندارد.یک مثال  (متن شامل یا تکذیب فرضیه نمی‌شود) این است:متن:   اگر به نیازمندان کمک کنید, خدا به شما پاداش خواهد داد.فرضیه:  دادن پول به یک مرد فقیر باعث می‌شود شما فرد بهتری شوید.رویکردهابه علت عمومیت Textual entailment یک حوزه فعال از تحقیقات می باشد. بسیاری از رویکردها نظیر تعبیه کلمات، مدل‌های منطقی، مدل‌های گرافیکی، رول بیس ها ، تمرکز بر زمینه ای خاص و یادگیری ماشین در این حوزه در نظر گرفته شده‌است.لیکن معمولا از روش‌های پیچیده اجتناب می‌کنند و به جای آن تنها از سینتکس سطحی یا روابط لغوی استفاده syntax or lexical relationships می‌کنند، اما متقابلاً دقت کمتری دارند. با این حال، حتی سیستم‌های مدرن هنوز هم از عملکرد انسانی دورهستند؛ یک مطالعه نشان داد که انسان‌ها در مجموعه داده‌ها ۹۵.۲۵ % از زمان بر روی استلزامات توافق دارند، در حالی که الگوریتمها از سال ۲۰۱۶ هنوز به ۹۰ درصد نرسیده اند.کاربردهابسیاری از برنامه‌های پردازش زبان طبیعی مانند پرسسش و پاسخ ، استخراج اطلاعات، خلاصه‌سازی، خلاصه‌سازی چند متنی و ارزیابی سیستم‌های ترجمه ماشین و. .. همه این ها  باید تشخیص بدهند که آیا می توان یک معنی خاص از انواع مختلف متن استنباط کرد؟!ارزیابی                                                                                                                             یک مجموعه از معیارها و یک بسته نرم‌افزاری مورد استفاده برای ارزیابی خلاصه‌سازی خودکار و نرم‌افزار ترجمه ماشینی در پردازش زبان طبیعی  ROUGE   می باشد که این معیارها یک خلاصه یا ترجمه خودکار تولید شده را در برابر مرجع یا مجموعه‌ای از منابع (تولید شده انسانی) و یا ترجمه مقایسه می‌کنند.                                                                                                                                             Metricsپنج معیار جهت ارزیابی                                                                                                                              :   ROUGE - N         همپوشانی  از N - grams   بین سیستم و خلاصه مرجع              الف :    ROUGE - 1                                                                                                                                                                 به همپوشانی از  1 - gram   (هر کلمه) بین سیستم و خلاصه مرجع اشاره دارد.              ب:  ROUGE - 2  :                                                                                          به همپوشانی از   bigrams  (دو کلمه) بین سیستم و خلاصه مرجع اشاره دارد.                                                                  :ROUGE - L  Longest Common subsequence ( lcs)طولانی ترین برداشت متعارف بر اساس آمار است. طولانی ترین مسئله متعاقب متعارف به نظر می رسدشباهت ساختار سطح جمله را به صورت طبیعی در نظر می‌گیرد و طولانی‌ترین ترتیب اتصال را به طور خودکار شناسایی می‌کند.                                                                                                                                    : ROUGE - W آمار مبتنی بر LCS مبتنی بر وزن است که از LCS های متوالی پشتیبانی می کند.                                                                                                                                    :  ROUGE - S آمار و ارقام مشارکتی مبتنی بر  Skip - bigram  . Skip - bigramهر جفت کلمه در دستور جمله است.                                                                                                                                :    ROUGE - SU  آمار و ارقام مربوط به همپوشانی مبتنی بر Unigram بر اساس Skip-bigram plus.</description>
                <category>کمیل آقابابایی</category>
                <author>کمیل آقابابایی</author>
                <pubDate>Fri, 26 Jul 2019 21:15:55 +0430</pubDate>
            </item>
            </channel>
</rss>