مشخص کردن برچسب اجزای سخن

یکی از خصوصیاتی که به عنوان ورودی در اکثر وظایف پردازش زبان طبیعی استفاده می‌شود، برچسب اجزای سخن است. برای این منظور یک مجموعه تگ (tagset) مانند شکل زیر انتخاب می‌شود و به هر واژه در متن یک برچسب اختصاص داده خواهد شد.

alt sample tagset

مقدمه

هدف اصلی در پردازش زبان طبیعی، ایجاد تئوری‌های محاسباتی از زبان، با استفاده از الگوریتم‌ها و ساختارهای داده‌ای موجود در علوم رایانه‌ای است. بدیهی است که در راستای تحقق این هدف، نیاز به دانشی وسیع از زبان است و علاوه بر محققان علوم رایانه‌ای، نیاز به دانش زبان شناسان نیز در این حوزه می‌‌باشد. کاربردهای پردازش زبان طبیعی به دو دسته کلی قابل تقسیم است: کاربردهای نوشتاری و کاربردهای گفتاری. از کاربردهای نوشتاری آن می توان به استخراج اطلاعاتی خاص از یک متن، ترجمه یک متن به زبانی دیگر و یا یافتن مستنداتی خاص در یک پایگاه داده نوشتاری (مثلا یافتن کتاب‌های مرتبط به هم در یک کتابخانه) اشاره کرد. نمونه‌هایی از کاربردهای گفتاری پردازش زبان عبارتند از: سیستم‌های پرسش و پاسخ انسان با رایانه، سرویس‌های اتوماتیک ارتباط با مشتری از طریق تلفن و یا سیستم های کنترلی توسط صدا. در سال‌های اخیر این حوزه تحقیقاتی توجه دانشمندان را به خود جلب کرده است و تحقیقات قابل ملاحظه‌ای در این زمینه صورت گرفته است.

مهمترین ابزارهای پردازش زبان طبیعی در متون عبارتند از:

تشخیص دهنده ی جمله (sentence splitter): این ابزار باید با توجه به کاراکترهای جداکننده ی جمله در زبان فارسی، توانایی تشخیص جملات را در متن ورودی داشته باشد. برای ایجاد این ابزار باید ابتدا تمامی کاراکترها، نماد ها و احیاناً قواعد دستوری که باعث شکسته شدن جملات می شوند، شناسایی گردند. با توجه به پایه بودن جمله در بسیاری از پردازش های زبانی، خروجی دقیق این ابزار از درجه ی اهمیت بالایی برخوردار است. از نمونه های انگلیسی آن می توان به OpenNLP، Stanford NLP، NLTK و Freeling اشاره کرد.

Tokenizer: ابزاری برای شکستن یک متن بر اساس واحدهای با معنی مانند کلمه، پاراگراف، نمادهای معنادار مانند space و tab و ... . لازمه ی ایجاد این ابزار جمع آوری واحد هایی است که در زبان فارسی به عنوان واحد های مستقل معنایی شناخته می شوند. سپس بر اساس انتخاب هر کدام از این واحدها متن بر اساس آن شکسته خواهد شد. از نمونه های انگلیسی آن می توان به Flex، JLex، JFLex، ANTLR، Ragel و Quex اشاره کرد.

Stemmer: ابزاری برای ریشه یابی لغات و تشخیص نوع کلمه ساخته شده از آن ریشه (اسم مکان، اسم زمان، حالت فاعلی، مفعولی و ...). معمولاً ریشه یابی لغات بر اساس قواعد ساخت واژه ای و سپس حذف پسوندها می باشد. تاکنون روش مؤثری برای حذف پیشوندها ارائه نشده است. در تلاشی که در آزمایشگاه فناوری وب انجام شده است، سعی شده تا بر اساس آنالیزهای آماری و داده کاوی پسوندها حذف گردند، که این روش هم می تواند راهی برای تشخیص ریشه باشد. معروفترین الگوریتم ریشه یابی در انگلیسی porter می باشد.

POS tagger: ابزاری برای مشخص کردن نوع کلمات از قبیل اسم، صفت، قید، فعل و ... . یکی از روش های کاری برای ایجاد این ابزار، ایجاد یک rule base که معمولاً به صورت دستی تشکلیل می شود، برای تشخیص نوع کلمه است. از نونه های فارسی آن می توان به ابزار آزمایشگاه آقای دکتر بیجن خان، و ابزار آزمایشگاه فناوری وب دانشگاه فردوسی مشهد اشاره کرد. از نمونه های انگلیسی آن می توان به Illinois Part Of Speech Tagger و Stanford POS Tagger اشاره کرد.

Named Entity Recognition: ابزاری برای تشخیص اسامی و نوع آنها اعم از اسامی افراد، اماکن، مقادیر عددی و ... . برای تشخیص اینکه یک کلمه اسم است، راه های مختلفی وجود دارد که از جمله ی آنها مراجعه به لغتنامه، مراجعه به word-net، در نظر گرفتن ریشه ی کلمه، استفاده از قواعد نحوی ساخت واژه و ... می باشد. در این ابزار پس از تشخیص اسم ها با استفاده یک لغتنامه از اسامی افراد، مکان ها، مقادیر عددی و ... نوع اسم تشخیص داده می شود. به نظر می رسد که این لغتنامه در فارسی موجود نمی باشد. از جمله نمونه های انگلیسی این ابزار می توان به Stanford NER و Illinois NER اشاره کرد.

Word-net: مجموعه ای از لغات و ارتباط میان آنها به لحاظ معنایی. ارتباطات معنایی در داخل این مجموعه شامل 16 رابطه می باشد. این مجموعه به عنوان یک مرجع در بسیاری از پردازش های زبانی مورد استفاده قرار می گیرد. ار نمونه های انگلیسی آن می توان به Princeton Wordnet و EuroWordnet اشاره کرد. آزمایشگاه فناوری وب دانشگاه فردوسی مشهد نیز یک نمونه از این مجموعه با نام فردوس نت را تولید کرده است.

Similarity recognition: ابزاری برای تشخیص میزان شباهت میان دو عبارت بر اساس پارامترهای مختلف مانند نوع اسامی مشابه به کار رفته، استفاده از word-net و... . در این ابزار پس از تشخیص نوع کلمات به کار رفته در یک جمله و سپس بر اساس جایگاه آن کلمات در جمله، کلماتی که در جایگاه های یکسان قرار دارند، مورد مقایسه قرار می گیرند. از نمونه های انگلیسی آن می توان به Illinois NESim و Illinois WNSim اشاره نمود.

Parser: به موازات پیشرفت و تحولات نظری در زبان‌شناسی جدید، روش‌های تحلیل متون و دستورات زبان بوسیله‌ی رایانه نیز تحول یافته است. منظور از گرامر هر زبان، در دست داشتن یک سری دستورات زبانی قابل فهم برای رایانه است که به کمک آنها بتوان اجزای نحوی یک جمله را به طور صحیح تفکیک نمود. تجزیه و تحلیل جمله و شکستن آن به اجزای تشکیل دهنده‌ مانند گروه‌های اسمی، فعلی، قیدی و غیره توسط ابزاری به نام پارسر صورت می‌گیرد که نقش اساسی در طراحی و یا افزایش دقت سایر ابزارهای پردازش متن دارد.

Chunker: ابزاری برای تشخیص گروه های اسمی، فعلی و .... در یک جمله. جهت تقویت الگوریتم های وابسته به SRL لازم است نه تنها نقش های کلمات مشخص گردند، بلکه باید وابستگی های کلمات به لحاظ نقشی در جمله مشخص گردند. از جمله نمونه های انگلیسی آن می توان به Illinois Chunker اشاره کرد.

Semantic Role Labeler: ابزاری برای تشخیص نقش گرامری کلمه در جمله. این ابزار یکی از مهمترین نقش ها را در پردازش های زبانی بر عهده دارد. دقت در این ابزار بسیار حائز اهمیت است. این ابزار باید نقش های گرامری کلمات در جمله ها مانند فعل، فاعل، مفعول مستقیم، مفعول غیر مستقیم و .... را تشخیص دهد. از جمله نمونه های انگلیسی آن می توان به OpenNlP، Illinois SRL، Swirl و LTHSRL اشاره کرد. این ابزارها از الگوریتم پارسینگ charniak استفاده می کنند.

Annotator: ابزاری برای ایجاد یک نمونه از یک آنتولوژی در یک سند داده شده. از ابزارهای موجود در انگلیسی می توان به Illinois Curator و Stanford Annotator اشاره کرد.

Coreference resolution: ابزاری برای تعیین مرجع اسمی یک اسم یا یک ضمیر در جملات. این ابزار در زبان انگلیسی معادل ابزاری است که مرجع ضمیر را که به صورت اسم در جمله های قبلی آمده است، مشخص می کند. استفاده از ضمایر به جای اسامی در زبان انگلیسی بسیر رایج می باشد. اما در زبان فارسی این امر چندان رایج نیست. اما در زبان فارسی عنوان یک مفهوم اسمی با اصطلاحات مختلف بسیار رایج می باشد. عملاً ما به دنبال ابزاری هستیم که مرجع خاص یک سری از عنوان ها ی مختلف اسمی را مشخص کند. از نمونه های انگلیسی این ابزار می توان به Illinois Coreference package اشاره کرد.

یکی از کارهای اساسی در پردازش زبان طبیعی ، برچسب زنی اجزای گفتار می باشد . برچسب زنی ، تعیین مقوله های دستوری برای هر نماد در متن می باشد .

در برچسب زنی دو حوزه ساختواژه و نحو زبان برای تعیین مقوله های دستوری با یکدیگر تعمل دارند . تحلیل های ساخنواژی ، یکی از مسائل اصلی در تحلیل های رایانه ای متون فارسی است و پردازش متون رایانه ای فارسی را با مشکلاتی روبرو کرده است ، از جمله این مشکلات ، شناسایی واژه های ناشناخته در متن و مشکلات خط فارسی می باشد .

در این مقاله سعی بر این شده با بررسی تاریخی این عملیات در علم کامپیوتر ، انواع روشهای آن را به صورت اجمالی مورد بحث قرار داده و در انتها یکی از این روشهارا بر روی زبان فارسی پیاده سازی کنیم .

یادگیری ماشین برروی ترکیب های زبان انسان برای ابهام زدایی در شناخت کلمات یکی از زمینه های مورد علاقه ی کار محققان علوم کامپیوتر و هوش مصنوعی بوده که نظر آنها را بسیار به خود جلب کرده است ، یکی از کاربردها «جدا سازی خودکار اجزای سخن» است ؛

امیدوارم با بررسی روش های مرتبط و مقایسه آنها توانسته باشم مطلب را به خوبی در این مقاله انتقال بدهم .

کارهای مرتبط

از جداسازکننده های موفق برای برچسب گذاری می توان به موارد زیر اشاره کرد :

  • MX-POST بر مبنای Maximum entropy

  • MBT جدا ساز حافظه محور

  • Brill's بر پایه یادگیری مبتنی بر تحول "Transformation-based Learning"

  • TBL

  • Trigram-Tagger یا همان TNT بر مبنای مدلهای پنهان مارکوف

  • Maximum LikeLihood Estimation (MLE)

تا امروز روشهای زیادی طراحی و پیاده سازی شده اند و بسیاری از آنها برای زبان انگلیسی و دیگر زبانها با سربلندی امتحان شده اند ، ولی تعداد زیادی برای زبان فارسی مورد آزمایش قرار نگرفته اند .

با این حال روش هایی مثل MLE , MBT امتحان شده اند که نتایجی با کیفیت کافی نداشته اند .
یکی از روش هایی که بر روی زبان فارسی موفق بوده روش HunPOS است که بر اساس پیاده سازی دوباره روش TNT ساخته شده و قابلیت تنظیمات مختلف برای زبانهای مختلف را به کاربر می دهد و برای زبان فارسی 96.9 % درست عمل می کند که بهترین نتیجه ی گذارش شده برای زبان فارسی تا به امروز است .

این برنامه به TNT بسیار شبیه است با این تفاوت که این روش احتمالات را بر اساس تگ حاضر و تگ قبلی براورد می کند .

یکی از توانایی هایی قوی که از روش TNT به ارث برده است این است که با توجه پسوند و پیشوند می تواند نقش کلمات را حدس بزند که برای کلماتی که دیده نشده اند کاربرد دارد .

پیکره بیژن خوان :

این پیکره مجموع ای از کلمات از قبل برچسب گذاری شده است که از 2.6 میلیون کلمه ی فارسی تگ شده تشکیل شده و در روش های برچسب گذاری بر اساس حافظه از آن استفاده بهینه ای می توان کرد .

آزمایش‌ها

خب حالا در این بخش به بررسی روش پیاده سازی می پردازیم .
ﺑﺮای ﺑﺮﭼﺴﺐ ﮔﺬاری اﺟﺰای واژﮔﺎﻧﻲ ﻛﻼم روش ﻫﺎ و اﻟﮕﻮرﻳﺘﻢ ﻫﺎی ﻣﺨﺘﻠﻔﻲ وﺟﻮد دارد .ورودی اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻫﺎ ﻋﺒﺎرﺗﻨﺪ از :
1- ﻣﺠ ﻤﻮﻋﺔ ﺑﺮﭼﺴﺐ ﻫﺎی در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه.
2- رﺷﺘﻪ ای از واژه ﻫﺎ ﻛﻪ ﻗﺼﺪ ﺑﺮﭼﺴﺐ ﮔﺬاری آن را دارﻳﻢ.

خروجی این برنامه واژه های برچسب گذاری شده می باشد که به بهترین صورت برچسب گذاری شده باشند
بهترین صورت به معنای این است که روشی را به کار بگیریم که درستترین برچسب گذاری را برای ما انجام داده باشد
به طور کلی این روش ها به 3 دسته تقسیم می شوند :
1- روش های مبتنی بر قواعد
2- روش های آماری مطلق
3- روش های مبتنی بر تغییر

برای استفاده از روش های بالا به پیکره ی زبانی استخراج شده از متون و کلمات نیاز داریم
این پیکره تعداد زیادی کلمات و برچسب هستند که از متون زبان مورد نظر استخراج شده اند و به مانند یک دیکشنری مورد استفاده قرار می گیرند .

الف ) روش مبتنی بر قواعد

در این روش از یک واژه نامه و مجموعه قواعد استفاده می شود .
در اولین مرحله تمامی نقش هایی که واژه ی ما می تواند در جمله ایفا کند به آن داده میشود ، در اینجا به علت اینکه چندین نقش ممکن است به یک واژه واگذار شود ، نقش واژه مبهم خواهد بود ازینرو در مرحله ی بعدی با پیاده سازی قواعد زبانی بر روی واژه نقش های بی ربط را حذف می کنیم که یا به نقش اصلی کلمه خواهیم رسید یا اینکه باعث کاهش تعداد نقش های کلمات میشویم و میزان ابهام کم می شود .
مشکل این روش این است که اگر کلمه ای در واژه نامه نباشد قادر به برچسب گذاری نخواهیم بود برای همین واژه نامه ی ما باید بسیار کامل باشد و با توجه به پیشرفت و پویا بودن زبان دائما به روز شود . به همین از این روش نمی توان به تنهایی برای برچسب گذاری استفاده کرد و از آن به همراه روشهای آماری و الگوریتمهای یادگیری خودکار به صورت توئما استفاده می شود .

ب) روش آماری مطلق

تقریبا تمامی روش های برچسب گذاری از روش های آماری در مراحل میانی خود بهره می برند .
یکی از روش های آماری که استفاده بسیاری دارد روش زنجیره ای مارکوف می باشد .
زنجیره مارکف که به افتخار آندری مارکف ریاضی دان اهل روسیه این گونه نام گذاری شده یک سیستم ریاضی است که در آن انتقال از یک حالت به حالت دیگر صورت می‌گیرد که البته تعداد این حالات قابل شمارش است. زنجیره مارکف یک فرایند تصادفی بدون حافظه‌است بدین معنی کهتوزیع احتمال شرطی حالت بعد تنها به حالت فعلی بستگی دارد و به وقایع قبل از آن وابسته نیست. این نوع بدون حافظه بودن خاصیت مارکف نام دارد.
زنجیره مارکوف(Markov Approach modeling) یک فرایند تصادفی گسسته در زمان با خاصیت مارکف است. اگرچه برخی از نویسندگان در مورد فرایندهای پیوسته در زمان هم از اصطلاح زنجیره مارکف استفاده می‌کنند. یک فرایند تصافی گسسته در زمان شامل سیستمی است که در هر مرحله در حالت خاص و مشخصی قرار دارد و به صورت تصادفی در هر مرحله تغییر حالت می‌دهد. مراحل اغلب به عنوان لحظه‌های زمانی در نظر گرفته می‌شوند ولی می‌توان آن‌ها را فاصله فیزیکی یا هر متغیر گسسته دیگری در نظر گرفت.خاصیت مارکف بیان می‌کند که توزیع احتمال شرطی برای سیستم در مرحله بعد فقط به حالت فعلی سیستم بستگی دارد و به حالت‌های قبل بستگی ندارد. چون سیستم به صورت تصادفی تغییر می‌کند به طور کلی پیش بینی حالت زنجیره مارکف در نقطه‌ای خاص در آینده غیر ممکن است. با این حال ویژگی‌های آماری سیستم در آینده قابل پیش بینی است. در بسیاری از کاربردها چیزی که دارای اهمیت است همین ویژگی‌های آماری است.

تغییرات حالات سیستم انتقال نام دارند و احتمال‌هایی که به این تغییر حالت‌ها نسبت داده می‌شوند احتمال انتقال نام دارند. مجموعه‌ای از حالت‌ها و احتمال انتقال‌ها به طور کامل یک زنجیره مارکف را مشخص می‌کنند. طبق قرار داد ما فرض می‌کنیم همیشه حالت بعدی وجود دارد و در نتیجه فرایند تا ابد ادامه پیدا می‌کند.

یکی از معروف ترین زنجیره‌های مارکف که موسوم به «پیاده روی می خواره» است یک پیاده روی تصادفی است که در آن در هر قدم موقعیت با احتمال برابر به اندازه ۱+ یا ۱- تغییر می‌کند. در هر مکان دو انتقال ممکن وجود دارد یکی به عدد صحیح بعدی(۱+) و یکی به عدد صحیح قبلی(۱-). احتمال هر انتقال فقط به حالت کنونی بستگی دارد. برای مثال احتمال انتقال از ۵ به ۶ برابر با احتمال انتقال از ۵ به ۴ است و هر دوی این احتمالات برابر با ۰٫۵ هستند. این احتمالات مستقل از حالت قبلی (که یا ۴ بوده و یا ۶) هستند.

مثالی دیگر عادات غذایی که فقط انگور، پنیر و کاهو می‌خورد و عادات غذایی او از قوانین زیر پیروی می‌کند:

او فقط یک بار در روز می‌خورد.
اگر امروز پنیر بخورد فردا انگور یا کاهو را با احتمال برابر خواهد خورد.
اگر امروز انگور بخورد فردا با احتمال ۰٫۱ انگور، با احتمال ۰٫۴ پنیر و با احتمال ۰٫۵ کاهو خواهد خورد.
اگر امروز کاهو بخورد فردا با احتمال ۰٫۴ انگور و با احتمال ۰٫۶ پنیر خواهد خورد.
عادات غذایی این موجود را می‌توان با یک زنجیره مارکف مدل سازی کرد به دلیل این که چیزی که فردا می‌خورد(حالت بعدی) تنها به چیزی که امروز خورده است(حالت فعلی) بستگی دارد. یکی از ویژگی‌های آماری که می‌توان در مورد این زنجیره محاسبه کرد امید ریاضی درصد روزهایی است که انگور خورده است(در یک دوره طولانی).
تعریف آماری :
یک زنجیره مارکف دنباله‌ای از متغیرهای تصادفی X۱،X۲،X۳،... است که دارای خاصیت مارکف هستند یعنی:

1

مقادیر ممکن برای Xi مجموعه قابل شمارشی را می‌سازند که فضای حالت نام دارد.

تعریف دیگری به شرح ذیل عنوان شده است: هرگاه فرایند تعمیرات برای سیستمهای تعمیر پذیر لحظه ای و یا به عبارتی با زمان کوتاه و قابل اغماض در مقایسه با زمان عملکرد سیستم را نتوان مفروض داشت،روشهایی مانند زنجیره ی پیوسته مارکوف برای تحلیل سیستم به کار گرفته میشود. روش مارکوف برای مدلسازی رفتار اتفاقی به صورت پیوسته و نا پیوسته نسبت به زمان و یا در فضای حالت تقسیم بندی میگردد. این تغییرات پیوسته و یا نا پیوسته اتفاقی را اصطلاحاً فرایندهای اتفاقی می نامند. در حقیقت به کارگیری روش مارکوف نیازمند این امر است که سیستم نماینگر فقدان حافظه باشد. یعنی حالت و وضعیت آینده ی سیستم مستقل از وضعیتهای گذشته آن بوده و تنها به آخرین جزء آن وابسته باشد.
زنجیره‌های مارکف ایستا :
زنجیره‌های مارکف ایستا زنجیره‌هایی هستند که در آن‌ها:

2

که رابطه بالا برای هر n صحیح است. در واقع احتمال انتقال مستقل از n است.
زنجیره مارکف مرتبه m :
زنجیره مارکف مرتبه m(که در آن m متناهی است) فرایندی است که در آن:
3

به عبارت دیگر حالت بعدی به m حالت قبلی وابسته‌است .

احتمال تغییر حالت از حالت iام به حالت jام در n حرکت برابر است با :

4

استفاده از مدل مارکوف در برچسب گذاری

ابتدا باید مساله خود را به صورت مدل آماری در بیاوریم ، در مساله برچسب گذاری می توان هر حالت را برابر یکی از برچسب های نسبت داده شده از مجموع برچسب ها دانست . در این صورت وزن یال ها مشخص کننده ی دیده شدن یک برچسب خاص بعد از دنباله ای از برچسب های ماست .
با داشتن دنباله کلمات W، هدف یافتن محتمل ترین دنبالۀ معناییM می‌باشد.

5

P(M) را مدل اولیۀ معنایی (semantic prior model) و P(W|M) را مدل لغوی (lexicalization model) می‌گویند.
. در این مدل، حالت‌ها برچسب‌های معنایی را نشان می‌دهند و خروجی حالت‌ها مدل لغوی را نشان می‌دهد.
6

ج) روش های مبتنی بر تغییر

ابتدا با بعضی رویکرد های آماری واژه های درون متن برچسب گذاری می شوند سپس از مجموعه ای از قوائد برای برچسب گذاری دوباره استفاده می کنیم ، در همه ی این روش ها از یادگیری مبتنی بر تغییر استفاده می کنیم .

یادگیری مبتنی بر تغییر :
عاملهای یادگیرنده ی هوشمند ، عواملی هستند که می تواندد رشته ی ادراکات را از محیط دریافت کنند بر اساس آن قوانین پایگاه دانش خود را تغییر دهند ، به عبارت دیگر می توانند از محیط یاد بگیرند . الگوریتمهای یادگیری بر اساس نوع تعاملی که عامل یادگیرنده با محیط دارد دسته بندی می شود .
یادگیری با ناظر دسته ای از الگوریتمهای یادگیری خودکار هستند که در آن رده ی مجموعه ای از نمونه ها داده شده است و رده ی بقیه نمونه ها از مجموعه آموزش تامین می شود .
به روش مشابه در یادگیری مبتنی بر تغییر یک پیکره برچسب گذاری شده که همان مجموعه ی آموزش است موجود است که برچسب گذاری واژه ها با استفاده از آن انجام می شود ،
در این روش ابتدا متن بدون برچسب با استفاده از یکی از روش های آماری برچسب گذاری می شود از برچسب با بیشترین فراوانی در میان برچسب های مختلف یک واژه برای برچسب گذاری استفاده می شود بعد از این مرحله متن برچسب گذاری شده با نسخه ی برچسب گذاری شده ی دیگری مقایسه می شود ، خروجی این مرحله همان قواعد تغییر است که با اعمال آنها برچسب واژه ها را می توان به برچسب گذاری مطلوب نزدیک کرد .
1- قاعده ی باز نویسی : مشخص کننده برچسبی که باید جایگزین برچسب نادرست شود .
2- محیط اعمال : شروطی را بیان می کند که باید در واژه های اطراف یا برچسب آنها وجود داشته باشد تا بتوان قاعده را بازنویسی کرد .

55

ﺑﺎ ﻣﻘﺎﻳﺴﺔ ﺑﺮﭼﺴﺐ ﻫﺮ ﻳﻚ از واژه ﻫﺎ ﺑﺎ ﺑﺮﭼﺴﺐ درﺳﺖ آن ﻫﺎ در ﻣﺘﻦ ﺑﺮﭼ ﺴ ﺐ ﮔﺬاری ﺷﺪه، ﻋﻨﺼﺮ ﻳﺎدﮔﻴﺮی ﺧﻮدﻛﺎر ﻳﻚ ﻗﺎﻧﻮن به مجموعه ی قوانین اضافه می کند ، ﺳﭙﺲ از ﻳﻚ اﻟﮕﻮرﻳﺘﻢ ﺟﺴﺘﺠﻮی ﺣﺮﻳﺼﺎﻧﻪ ﺑﺮای ﻳﺎﻓﺘﻦ ﻓﻬﺮﺳﺖ ﻣﺮﺗﺐ ﺷﺪة قوانین تغییر اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد؛ در ﻫﺮ ﻳﻚ از ﺗﻜﺮار اﻟﮕﻮرﻳﺘﻢ از میان ﻫﻤﺔ قوانین تغییر ، ﻗﺎﻧﻮﻧﻲ اﻧﺘﺨﺎب ﻣﻲ ، ﻫﺎی اﻳﻦ ﺷﻮد ﻛﻪ اﻋﻤﺎل آن ﺑﺮ ﻣﺘﻦ ﻛﻤﺘﺮﻳﻦ ﺗﻌﺪاد ﺧﻄﺎ را ﺑﻪ دﻧﺒﺎل داﺷﺘﻪ ﺑﺎﺷﺪ .ﺳﭙﺲ اﻳﻦ ﻗﺎﻧﻮن ﺑﻪ ﻛﻞ ﻣﺘﻦ اﻋﻤﺎل ﻣﻲ ﺷﻮد .اﻳﻦ ﺗﻜﺮار ﻫﺎ ﺗﺎ ﺟﺎﻳﻲ اداﻣﻪ پیدا ﻣﻲ ﻛﻨﺪ ﻛﻪ اﻋﻤﺎل قوانین تغییر ﺑﺮ ﻣﺘﻦ، ﺑﻪ ﻛﺎﻫﺶ ﺗﻌﺪاد ﺧﻄﺎﻫﺎ ﻣﻨﺠﺮ ﻧﺸﻮد، ﻳﺎ اﻳﻦ ﻛﻪ ﺗﻌﺪاد ﺧﻄﺎﻫﺎ، ﻛﻤﺘﺮ ﻣﺴﺎویِ ﺳﻄﺢ دﻗﺖ ﻣﻮرد ﻧﻈﺮ ﺑﺮای برچسب گذاری شود .

فلو

‍ پیاده سازی

برای پیاده سازی با استفاده از مدل پنهان مارکوف ما از SVM-hmm که توسط Thorsten Joachims تهیه شده به صورت پیشفرض استفاده کردیم که مستند سازی آن را در پیوندهای مفید می تونید مشاهده کنید .
در این روش ابتدا با پویش دیکشنری تگ گذاری شده به برنامه خود آموزش می دهیم که از لحاظ آماری چگونه تگ گذاری انجام شده است و سپس از نتیجه ی آموزش خود یک فایل خروجی می گیریم .
سپس با توجه به فایل خروجی گرفته شده و متنی که می خواهمی اجزایش مشخص شود متن را برچسب گذاری می کنیم .
هر یک از این مراحل را به صورت برنامه ای جدا به زبان جاوا آپلود کردیم می توانید از لینک زیر دانلود کنید :

فایلهای غیر جاوای موجود در پوشه پروژه :
۱ - مجموعه تگها (tagset.txt)
۲ - دیکشنری کلمات (bijankhan.txt)
۳ - متن مورد بررسی برای تگگذاری (jomle.txt)
۴ -فایل الگوریتم یادگیری با توجه به مدل مارکوف ( svm_hmm_learn ) و (svm_hmm_classify )
۵ - فایل الگوی به دست آمده از یادگیری (Learn.model)

ابتدا همه ی دو برنامه را در یک پوشه ذخیره کنید چون بعضی از فایلهای مشترک در در هر دو مجموعه ی آپلود شده نیستند .

کارهای آینده

با توجه به اینکه یکی از استفاده های پردازش زبان فارسی فهماندن آن به کامپیوتر و استفاده از آن در آینده است ُ بسیار خوب است اگر بتوان سیستمی طراحی کرد که با نوشتن دستور به زبان فارسی که برای عامه ی جامعه امکان پذیر باشد بتواند عملی خاص را انجام دهد . مثلا اداره ی یک خانه ُ شرکت ُ مدرسه و ...

مراجع

پیوندهای مفید

علیرضا نوریان

کمی زحمت بکشید لطفا.

نیما همتی

با سلام و خسته نباشید

انتظاری که از شما در این فاز می‌رفت، چیزی فراتر از نوشتن مقدمه و کلیات مربوط به موضوع بوده است. در واقع شما در این فاز باید یکی از روش‌هایی که مدنظر داشتید پیاده‌سازی کنید را به صورت کاملا شفاف و واضح توضیح می‌دادید. این در حالی است که شما در متن خود به کلیات بسنده کرده‌اید. انشالله در فازهای آتی جبران گردد.

با تشکر

رد شده

بسم الله

سلام و خسته نباشید
توضیحات جامع و کامل بود
اما قرار بود در این فاز پیاده سازی انجام شود و نتایج حاصل از پیاده سازی بررسی گردد.
به نظر بنده بهتر بود حداقل برنامه ای که نوشته اید را (هرچند ناقص) ضمیمه می کردید.

رد شده

کد؟

متن پروژه کامل و شیواست.

رد شده

با سلام
روشها ی مبتنی بر قواعد , آماری مطلق و مبتنی بر تغییر به خوبی توضیح داده شدند ولی برای روش TNT را که در قسمت کارهای مرتبط نام بردید توضیحی ندادید همچنین اگر یک روش برای ارزیابی اینجور الگوریتم ها در قسمت آزمایش میگفتید بهتر بود .
موفق باشید.

علیرضا نوریان
  • پیاده‌سازی برچسب اجزای سخن بسیار ساده هست و با توجه به اینکه ما گفتیم شما می‌تونید از کدهای آماده استفاده کنید، انجام این کار تقریبا زحمتی نداره.

  • اگر همین مقالاتی که به عنوان ارجاع در متن آورده شده رو بخونید می‌بینید که تقسیم‌بندی‌تون خیلی جزئی هست. منظورم اینه که شما علاوه بر اینکه خود روش‌ها رو خوب توضیح ندادید، این نکته رو هم منتقل نمی‌کنید که این مساله به روش‌های بسیار زیادی قابل حل هست.

  • هیچ توضیحی در مورد خود برچسب‌ها ندادید و اینکه اصلا این کار به چه دردی می‌خوره.

رد شده

متن گزارش خوب بود اما با مشکلات نگارشی همراه بود، همچنین بخش بهبود نوشته نشده بود.

رد شده

مطالب گفته شده در بخش آزمایش ها بیشتر به کارهای مرتبط مربوط می شود و در آزمایش ها باید خروجی برنامه و میزان بهینه بودن آن بررسی شود.
در بخش کارهای آینده بهتر بود توضیح بیشتری می دادید.
توضیحی درباره ی بخش بهینه کردن کد داده نشده.

تایید شده

بهتر بود فایل هاتون را در گیت میگذاشتید .فایل learn اصلا در سایت گذاشته نشده است.
در فازهای قبل به خوبی کار کردید ولی در این فاز هیچ پیشرفتی متاسفانه نداشتید

تایید شده

با عرض سلام و خسته نباشید خدمت شما دوست عزیز.
دو نکته در مورد پروژه ی شما به ذهنم می رسه که عرض میکنم:
1-در بخش کار های مرتبط،بهتر می بود ضمن معرفی جداساز کننده های موفق،به توضیح(حداقل توضیحی مختصر)آنها می پرداختید تا ابهامات برطرف گردد.
2-بهتر می بود که در بخش پیاده سازی ،کد های مربوطه را در سایت گیت هاب قرار می دادید تا دسترسی به آن راحتتر باشد.

تایید شده

کارهای اینده و پیاده سازی توضیح کمی داده شده.از تصاویر خوبی برای توضیح دیگر قسمت ها استفاده شده است.بهتر بود از مارک دان برای نمایش فرمول ها استفاده میشد بجای عکس.با توجه به توضیحات خوبی که در قسمت های قبل داده شده،انتظار میرفت کارهای انجام شده در این فاز نیز بیشتر باشد.لینک کد نیز قرار داده شده.بهتر بود از گیت هاب استفاده میشد تا تغییرات در فاز های مختلف دیده میشد تا درک بهتری از پیشرفت کد حاصل میشد.

رد شده

توضیحات و روش های انجام پروژه خوب بود و پیاده سازی هم جالب بود ولی آزمایشات به خوبی نشان داده نشده است

تایید شده

بسم الله
این که مفاهیم تخصصی در مقدمه تعریف شده اند بسیار خوب است و لی مکان آن در مقدمه نیست و باید در بخش دیگری نوشته می شد.
شما صرفا روشها را پیادسازی کرده اید در صورتی که فاز اخر با ید این پیاده سازی ها رو ارتقاء می دادین که نکته ای در این مورد من پیدا نکردم.
بهتر بود نتیجه ی انجام آزمایش هایتان را میآوردید ! تا مخاطب با نتیجه عملکرد شما آشنا شود.
بخش نتیجه گیری وجود ندارد