ابزارهای لازم برای پردازش متن در زبان فارسی
تشخیص دهنده ی جمله: این ابزار باید با توجه به کاراکترهای جداکننده ی جمله در زبان فارسی، توانایی تشخیص جملات را در متن ورودی داشته باشد. برای ایجاد این ابزار باید ابتدا تمامی کاراکترها، نماد ها و احیاناً قواعد دستوری که باعث شکسته شدن جملات می شوند، شناسایی گردند. با توجه به پایه بودن جمله در بسیاری از پردازش های زبانی، خروجی دقیق این ابزار از درجه ی اهمیت بالایی برخوردار است. از نمونه های انگلیسی آن می توان به OpenNLP، Stanford NLP، NLTK و Freeling اشاره کرد.
Tokenizer: ابزاری برای شکستن یک متن بر اساس واحدهای با معنی مانند کلمه، پاراگراف، نمادهای معنادار مانند space و tab و … . لازمه ی ایجاد این ابزار جمع آوری واحد هایی است که در زبان فارسی به عنوان واحد های مستقل معنایی شناخته می شوند. سپس بر اساس انتخاب هر کدام از این واحدها متن بر اساس آن شکسته خواهد شد. از نمونه های انگلیسی آن می توان به Flex، JLex، JFLex، ANTLR، Ragel و Quex اشاره کرد.
Named entity recognition: ابزاری برای تشخیص اسامی و نوع آنها اعم از اسامی افراد، اماکن، مقادیر عددی و … . برای تشخیص اینکه یک کلمه اسم است، راه های مختلفی وجود دارد که از جمله ی آنها مراجعه به لغتنامه، مراجعه به word-net، در نظر گرفتن ریشه ی کلمه، استفاده از قواعد نحوی ساخت واژه و … می باشد. در این ابزار پس از تشخیص اسم ها با استفاده یک لغتنامه از اسامی افراد، مکان ها، مقادیر عددی و … نوع اسم تشخیص داده می شود. به نظر می رسد که این لغتنامه در فارسی موجود نمی باشد.
از جمله نمونه های انگلیسی این ابزار می توان به Stanford NER و Illinois NER اشاره کرد.
Word-net: مجموعه ای از لغات و ارتباط میان آنها به لحاظ معنایی. ارتباطات معنایی در داخل این مجموعه شامل ۱۶ رابطه می باشد. این مجموعه به عنوان یک مرجع در بسیاری از پردازش های زبانی مورد استفاده قرار می گیرد. ار نمونه های انگلیسی آن می توان به Princeton Wordnet و EuroWordnet اشاره کرد. آزمایشگاه فناوری وب دانشگاه فردوسی مشهد نیز یک نمونه از این مجموعه با نام فردوس نت را تولید کرده است.
Stemmer: ابزاری برای ریشه یابی لغات و تشخیص نوع کلمه ساخته شده از آن ریشه (اسم مکان، اسم زمان، حالت فاعلی، مفعولی و …). معمولاً ریشه یابی لغات بر اساس قواعد ساخت واژه ای و سپس حذف پسوندها می باشد. تاکنون روش مؤثری برای حذف پیشوندها ارائه نشده است. در تلاشی که در آزمایشگاه فناوری وب انجام شده است، سعی شده تا بر اساس آنالیزهای آماری و داده کاوی پسوندها حذف گردند، که این روش هم می تواند راهی برای تشخیص ریشه باشد.
معروفترین الگوریتم ریشه یابی در انگلیسی porter می باشد.
Similarity recognition: ابزاری برای تشخیص میزان شباهت میان دو عبارت بر اساس پارامترهای مختلف مانند نوع اسامی مشابه به کار رفته، استفاده از word-net و… . در این ابزار پس از تشخیص نوع کلمات به کار رفته در یک جمله و سپس بر اساس جایگاه آن کلمات در جمله، کلماتی که در جایگاه های یکسان قرار دارند، مورد مقایسه قرار می گیرند. از نمونه های انگلیسی آن می توان به Illinois NESim و Illinois WNSim اشاره نمود.
Chunker: ابزاری برای تشخیص گروه های اسمی، فعلی و …. در یک جمله. جهت تقویت الگوریتم های وابسته به SRL لازم است نه تنها نقش های کلمات مشخص گردند، بلکه باید وابستگی های کلمات به لحاظ نقشی در جمله مشخص گردند. از جمله نمونه های انگلیسی آن می توان به Illinois Chunker اشاره کرد.
Semantic role labeler: ابزاری برای تشخیص نقش گرامری کلمه در جمله. این ابزار یکی از مهمترین نقش ها را در پردازش های زبانی بر عهده دارد. دقت در این ابزار بسیار حائز اهمیت است. این ابزار باید نقش های گرامری کلمات در جمله ها مانند فعل، فاعل، مفعول مستقیم، مفعول غیر مستقیم و …. را تشخیص دهد. از جمله نمونه های انگلیسی آن می توان به OpenNlP، Illinois SRL، Swirl و LTHSRL اشاره کرد. این ابزارها از الگوریتم پارسینگ charniak استفاده می کنند.
Annotator: ابزاری برای ایجاد یک نمونه از یک آنتولوژی در یک سند داده شده. از ابزارهای موجود در انگلیسی می توان به Illinois Curator و Stanford Annotator اشاره کرد.
Coreference resolution: ابزاری برای تعیین مرجع اسمی یک اسم یا یک ضمیر در جملات. این ابزار در زبان انگلیسی معادل ابزاری است که مرجع ضمیر را که به صورت اسم در جمله های قبلی آمده است، مشخص می کند. استفاده از ضمایر به جای اسامی در زبان انگلیسی بسیر رایج می باشد. اما در زبان فارسی این امر چندان رایج نیست. اما در زبان فارسی عنوان یک مفهوم اسمی با اصطلاحات مختلف بسیار رایج می باشد. عملاً ما به دنبال ابزاری هستیم که مرجع خاص یک سری از عنوان ها ی مختلف اسمی را مشخص کند. از نمونه های انگلیسی این ابزار می توان به Illinois Coreference package اشاره کرد.
Pos tagger: ابزاری برای مشخص کردن نوع کلمات از قبیل اسم، صفت، قید، فعل و … . یکی از روش های کاری برای ایجاد این ابزار، ایجاد یک rule base که معمولاً به صورت دستی تشکلیل می شود، برای تشخیص نوع کلمه است. از نونه های فارسی آن می توان به ابزار آزمایشگاه آقای دکتر بیجن خان، و ابزار آزمایشگاه فناوری وب دانشگاه فردوسی مشهد اشاره کرد. از نمونه های انگلیسی آن می توان به Illinois Part Of Speech Tagger و Stanford POS Tagger اشاره کرد.
————————————————————————-
نرمالسازی متن
در ابتدا بایستی همهی نویسههای (کاراکترهای) متن با جایگزینی با معادل استاندارد آن، یکسانسازی گردند. در اولین گام باید متون برای استفاده در گامهای بعدی به شکلی استاندارد درآیند. از آنجایی که متون مختلف ممکن است بسیار به هم شبیه باشند اما به دلیل تفاوتهای ساده ظاهری از نظر ماشین متفاوت باشند؛ به همین دلیل سعی شده است این تفاوتهای سادهی ظاهری برطرف گردد. همچنین اصلاحات دیگری نیز به منظور پردازش دقیقتر متون در این مرحله صورت میگیرد.
در اولین گام باید متون برای استفاده در گامهای بعدی به شکلی استاندارد درآیند. از آنجایی که متون مختلف ممکن است بسیار به هم شبیه باشند اما به دلیل تفاوتهای ساده ظاهری از نظرماشین متفاوت باشند؛ به همین دلیل سعی شده است این تفاوتهای سادهی ظاهری برطرف گردد. برای رسیدن به این هدف، قبل از مقایسه متون، پیشپردازشهایی روی آنها آنجام میشود. طبیعتا هر چه این پیشپردازشها قویتر باشد، نتایج حاصل ازمقایسه متون قابل اطمینانتر خواهد بود. لازم به ذکر است که از آن جایی که زبان فارسی جزو زبانهای غیر ساختیافته است با مشکلات بسیار بیشتری نسبت به سایر زبانها مواجه خواهیم شد. متون غیرساختیافته، متونی هستند که پیش فرض خاصی در مورد قالب آنها نداریم و آنها را به صورت مجموعهای مرتب از جملات در نظر میگیریم.
در ابتدا بایستی همهی نویسههای (کاراکترهای) متن با جایگزینی با معادل استاندارد آن یکسانسازی گردند. در پردازش رسم الخط زبان فارسی، با توجه به قرابتی که با رسم الخط عربی دارد، همواره در تعدادی از حرفها مشکل وجود دارد که از جمله آنها میتوان به حروف “ک”، “ی”، همزه و … اشاره نمود. در اولین گام باید مشکلات مربوط به این حروف را برطرف ساخت. علاوه بر این، اصلاح و یکسان سازی نویسهی نیمفاصله و فاصله در کاربردهای مختلف آن و همچنین حذف نویسهی «ـ» که برای کشش نویسههای چسبان مورد استفاده قرار میگیرد و مواردی مشابه برای یکسانسازی متون، از اقدامات لازم قبل از شروع فازهای مختلف میباشد. در این فاز مطابق با یک سری قاعده دقیق و مشخص، فاصلهها و نیمفاصلههای موجود در متن برای علاماتی نظیر “ها” و “ی” غیرچسبان در انتهای لغات و همچنین پیشوندها و پسوندهای فعلساز نظیر “می”، “ام”، “ایم”، “اید” و موارد مشابه جهت استفاده در فازهای بعدی، اصلاح میگردند. در ادامه به چند نمونه از این اصلاحات، اشاره شده است.
با استفاده از این ویژگی نرمافزار میتوان همهی نویسههای (کاراکترهای) متن را استاندارد نمود. اگر نویسهی غیر استانداردی یافت شد، با معادل استاندارد آن جایگزین میشود. برخی از این اصلاحات در ذیل آورده شده است:
اصلاح انواع حرف «ک» به معادل فارسی آنان.اصلاح انواع حرف «ی» به معادل فارسی آنان.بررسی همزه و انواع مختلف املاهای موجود و اصلاح هر کدام (به عنوان مثال تبدیل ؤ به و ، ئ به ی ، أ به ا ، إ به ا و…)حذف شناسهی همزه از انتهای واژههایی مثل شهداءحذف شناسه «آ» به «ا» مانند: آب به اباصلاح نویسهی «طور» در واژههایی مانند به طور، آن طور، این طور و …بررسی وجود حرف «ی» در انتهای لغاتی مانند خانهی ما و اصلاح آنانحذف تشدید از واژههاتبدیل ارقام عربی و انگلیسی به معادل فارسی.اصلاح نویسهی نیمفاصلهاصلاح اعراب و حذف فتحه، کسره و ضمه و همچنین تنوینهاحذف نیمفاصلههای تکراریحذف نویسهی «ـ» که برای کشش نویسههای چسبان مورد استفاده قرار میگیرد. مانند تبدیل«بــــــــر» و «بـــر» به «بر»چسباندن پسوندهای «تر»، «ترین» و … به آخر واژههااصلاح فاصلهگذاری «ها» در انتهای واژهها و همچنین پسوندهای «های»، «هایی»، «هایم»، «هایت»، «هایش» و …اصلاح فاصلهگذاری «می»، «نمی»، «درمی»، «برمی»، «بی» در ابتدای واژههاتبدیل «ة» به «هی»تبدیل «ب» متصل به ابتدای واژهها به «به»اصلاح فاصلهگذاری پسوندهاحذف فاصلهها و نیمفاصلههای اضافه بکار رفته در متنتصحیح فاصلهگذاری در مورد علائم سجاوندی بدین صورت که علائم سجاوندی به لغات قبل از خود میچسبند و با لغت بعد از خود فاصله خواهند داشت.برای اعمال اصلاحات اولیه قبل از هر عملیاتی، بایستی متون مورد پردازش توسط ابزار Normalizer طراحی شده، مورد اصلاح قرار گیرند.
——————————————————————–
ریشهیابی معنایی در زبان فارسی
هدف از انجام پروژه ریشه یابی معنایی در زبان فارسی، جداسازی کلمات از متن و بازگرداندن کلمات به ریشه اصلی تشکیل دهنده آنهاست. تفاوت اصلی این پروژه با سایر پژوهشهای انجام شده در زمینه ریشهیابی، قابلیت بازگرداندن کلمات به ریشه بدون از بین رفتن معنای آنها در جمله میباشد. بدین منظور به نقش کلمات در جمله توجه ویژهای شده است. در این طرح از مجموعه افعال گرداوری شده توسط گروه دادگان و لغات پرکاربرد پیکره همشهری استفاده شده است.
——————————————————————–
برچسب گذار نقش کلمات فارسی
برچسب گذاری اجزای واژگانی کلام (Part of Speech tagging) عمل انتساب برچسب های واژگانی به کلمات و نشانه های تشکیل دهنده یک متن است؛ به صورتی که این برچسب ها نشان دهنده نقش کلمات و نشانه ها در جمله باشد. درصد بالایی از کلمات از نقطه نظر برچسب واژگانی دارای ابهام هستند، زیرا کلمات در جایگاههای مختلف برچسب های واژگنی متفاوتی دارند. بنابراین برچسب گذاری واژگانی عمل ابهام زدایی از برچسب ها با توجه به زمینه (متن) مورد نظر است. برچسب گذاری واژگانی عملی اساسی برای بسیاری از حوزه های دیگر پردازش زبان طبیعی(NLP) از قبیل ترجمه ماشینی، خطایاب و تبدیل متن به گفتار می باشد. تا کنون مدل ها و روش های زیادی برای برچسب گذاری در زبان های مختلف استفاده شده است. بعضی از این روش ها عبارتند از:
مدل مخفی مارکوف (Markov Hidden Model) برچسب گذاری مبتنی بر تبدیل یا قانون (Transformation/Rule -based tagger) سیستم های مبتنی بر حافظه (Memory-basedSystem سیستم های ماکزیمم آنتروپی (Maximum Entropy System)——————————————————————–
پارسر زبان فارسی
به موازات پیشرفت و تحولات نظری در زبانشناسی جدید، روشهای تحلیل متون و دستورات زبان بوسیلهی رایانه نیز تحول یافته است. منظور از گرامر هر زبان، در دست داشتن یک سری دستورات زبانی قابل فهم برای رایانه است که به کمک آنها بتوان اجزای نحوی یک جمله را به طور صحیح تفکیک نمود. تجزیه و تحلیل جمله و شکستن آن به اجزای تشکیل دهنده مانند گروه های اسمی، فعلی، قیدی و غیره توسط ابزاری به نام پارسر صورت می گیرد که نقش اساسی در طراحی و یا افزایش دقت سایر ابزارهای پردازش متن دارد.
پارسر طراحی شده برای زبان فارسی در این پروژه، از ساختار لغات، موقعیت و ترتیب لغات در جمله، حروف یا عبارات قبل و بعد از آنها و نوع لغات، درخت نحوی یا پارسینگ را برای جملات متن تشکیل می دهد. در واقع عملیات پارسینگ با توجه به ریختشناسی (مطالعه ساختار و حالتهای مختلف یک کلمه) و همچنین دستورات نحوی گرامر زبان فارسی صورت میگیرد. بدیهی است هر چقدر نگارش بکار رفته در جملات و همچنین رعایت علائم سجاوندی طبق اصول و با دقت بیشتری صورت گرفته باشد، عملیات پارسینگ با کیفیت بهتری صورت خواهد گرفت و اجزای تشکیل دهنده ی جمله با عملیات کمتر و ساده تری برچسب زده خواهند شد.
یک فایل فشرده حاوی فایل EXE (شامل ابزارهای پیش پردازش متون زبان فارسی : نرمالسازی – ریشه یابی – برچسب زنی نحوی – پارسر )
کد سی شارپ همراه با کتابخانه های مورد نیاز جهت ریشه یابی کلمات فارسی:
در این نمونه کد، که به زبان سی شارپ نوشته شده است، کتابخانه های لازم برای استفاده از کد ریشه یاب زبان فارسی که در آزمایشگاه فناوری وب دانشگاه فردوسی مشهد تولید شده است، به کد اضافه شده و چگونگی استفاده از این کتابخانه ها در کد مشخص است و در قالب ابزاری جهت دادن ورودی و مشاهده خروجی آماده شده است.
در کد موجود در فایل ضمیمه سه کتابخانه (فایل dll) اضافه شده اند که امکان شناسایی افعال و ریشه یابی کلمات را فراهم می آورند…
برای استفاده از نرم افزار در صورت اجرا نشدم برنامه در فایل EXE، ابتدا بسته نرم افزاری دات نت فریمورک ۴.۵ را نصب نمایید.
مقدمه
پیشرفتهای به وجود امده در جمعاوری داده و قابلیتهای ذخیره سازی در طی دهههای اخیر باعث شده در بسیاری از علوم با حجم بزرگی از اطلاعات روبرو شویم. محققان در زمینههای مختلف مانند مهندسی، ستاره شناسی، زیست شناسی و اقتصاد هر روز با مشاهدات بیشتر و بیشتری روبرو میشوند. در مقایسه با بسترهای دادهای قدیمی و کوچکتر، بسترهای دادهای امروزی چالشهای جدیدی در تحلیل دادهها بوجود اوردهاند. روشهای اماری سنتی به دو دلیل امروزه کارایی خود را از دست دادهاند. علت اول افزایش تعداد مشاهدات (observations) است و علت دوم که از اهمیت بالاتری برخوردار است، افزایش تعداد متغیرهای مربوط به یک مشاهده میباشد.
تعداد متغیرهایی که برای هر مشاهده باید اندازهگیری شود، ابعاد داده نامیده میشود. عبارت "متغیر" (variable) بیشتر در امار استفاده میشود در حالی که در علوم کامپیوتر و یادگیری ماشین بیشتر از عبارات "ویژگی" (feature) و یا "صفت" (attribute) استفاده میشود.
فهرست
مقدمه. 2
روش های مبتنی بر استخراج ویژگی.. 4
روش های انتخاب ویژگی.. 5
تعاریف.. 6
بررسی توابع مختلف ارزیابی و تولید کننده 10
توابع تولید کننده 11
جستجوی کامل.. 11
جستجوی مکاشفه ای.. 12
جستجوی تصادفی.. 12
توابع ارزیابی.. 12
دسته بندی و تشریح الگوریتم های مختلف انتخاب ویژگی.. 17
تابع ارزیابی مبتنی بر فاصله - تابع تولید کننده مکاشفه ای.. 18
روش Relief. 18
روش Jakub. 20
تابع ارزیابی مبتنی بر فاصله - تابع تولید کننده کامل.. 21
تابع ارزیابی مبتنی بر اطلاعات - تابع تولید کننده مکاشفه ای.. 23
1) روش درخت تصمیم(DTM) 23
الگوریتم C4.5. 23
2) روش استفاده شده توسط Kollerو Sahami 27
پوشش مارکوف.. 27
تابع ارزیابی مبتنی بر وابستگی - تابع تولید کننده مکاشفه ای.. 30
2) روش PreSet 31
تابع ارزیابی مبتنی بر سازگاری - تابع تولید کننده کامل.. 32
1) روش Focus. 32
2) روش Schlimmer 38
3) روش MIFES1. 38
تابع ارزیابی مبتنی بر سازگاری - تابع تولید کننده تصادفی.. 39
تابع ارزیابی مبتنی بر خطای طبقه بندی کننده- تابع تولید کننده مکاشفه ای.. 41
2) روش SBS (Sequential Backward Selection) 41
3) روش SBS-Slash. 41
4) روش PQSS ((p,q) Sequential Search) 42
5) روش BDS (Bi-Directional Search) 42
6) روش Schemata Search. 42
7) روش RC (Relevance in Context) 43
8) روش Queiros and Gelsema. 43
تابع ارزیابی مبتنی بر خطای طبقه بندی کننده - تابع تولید کننده کامل.. 43
تابع ارزیابی مبتنی بر خطای طبقه بندی کننده - تابع تولید کننده تصادفی.. 44
جمع بندی روش های انتخاب ویژگی.. 46
روش های فرا اکتشافی.. 49
روش های مکاشفه ای.. 50
انواع الگوریتمهای مکاشفهای.. 51
پیادهسازی الگوریتم های فرا اکتشافی.. 53
ویژگی های مشترک روش های فرا اکتشافی.. 54
دستهبندی الگوریتمهای فرا اکتشافی.. 54
الگوریتم ژنتیک (Genetic Algorithm) 56
مراحل الگوریتم ژنتیک... 59
انواع کدینگ... 59
روشهای کدینگ... 60
روش های پیاده سازی عملگر ترکیب.. 61
ترکیب تک نقطهای : 61ترکیب دو نقطهای : 62ترکیب یکنواخت: 63ترکیب حسابی: 64انواع روش های جهش... 65
الگوریتم ژنتیک برای انتخاب ویژگی.. 67
الگوریتم بهینه سازی جمعیت مورچگان (ACO) 68
الگوریتم ACO برای انتخاب ویژگی.. 71
الگوریتم بهینه سازی انبوه ذرات (PSO) 74
الگوریتم PSO برای انتخاب ویژگی.. 75
الگوریتم جستجوی ممنوعه (Tabu Search) 79
استراتژیهای پیشرفته جستجوی ممنوعه. 82
حافظه ها در جستجوی ممنوعه. 83
الگوریتم جستجوی ممنوعه برای انتخاب ویژگی.. 84
فهرست منابع و مراجع. 87
فهرست اشکال
عنوان صفحه
شکل 1- فرایند انتخاب ویژگی.. 11
شکل 2- مقایسه توابع ارزیابی مختلف.. 20
شکل 4- الگوریتم Branch and Bound. 26
شکل 5- الگوریتم درخت تصمیم. 30
شکل 9- الگوریتم روش Focus. 36
شکل 10- الگوریتمی دیگر از روش Focus. 37
شکل 11- الگوریتم Focus-2. 38
شکل 12- کلاسهای مورد بررسی در الگوریتم Focus. 39
شکل 13- روند الگوریتم Focus. 40
شکل 14- حل ناسازگاری در الگوریتم Focus. 41
شکل 15- الگوریتم روش LVF. 43
شکل 16- طبقهبندی روش های مختلف انتخاب ویژگی.. 50
شکل 1- بهینه محلی و بهینه کلی.. 61
شکل 7- ترکیب تک نقطهای.. 65
شکل 12- جهش باینری.. 69
شکل 17- فرایند انتخاب ویژگی در ACO.. 75
کد استفاده از کتابخانه های ابزارهای پردازش متن فارسی
در این کد که به زبان سی شارپ نوشته شده است چگونگی استفاده از کتابخانه های ابزارهای پردازش متن فارسی زیر آورده شده است:
– نرمالسازی متون فارسی – Normalizer
– تشخیص جملات – Sentence Spliter
– تشخیص کلمات – Tokenizer
– ریشه یابی کلمات – Stemmer
– برچسب زنی نحوی کلمات – POS Tagger
– تشخیص گروه های تشکیل دهنده جملات – Parser
– تبدیل عبارات عامیانه و محاوره ای به عبارات رسمی – Formal