۱. مقدمه

در بسیاری از کاربردهای پردازش طبیعی زبان 1برچسب زنی اجزای سخن نیاز است . برچسب زنی تعیین برچسب دستوری برای یک کلمه در یک متن است . ورودی این سیستم متن است و خروجی آن کلمه ها با تگ های مناسب است [4].

بسیاری از برچسب زن ها با روش های مختلفی طراحی می شوند تا با دقت و عملکرد بالاتری برسند . این برچسب زن ها از روابط بین کلمه ای 2و واژه نامه 3استفاده می کنند [1] . بر چسب زنی نقش بسیار مهمی در بسیاری از سیستم های NLP ایفا میکند مانند ساده سازی برنامه های پیچیده . اگر چه هر برچسب زن در بسیاری از زبان ها قابل استفاده است ولی در هر زبان خصوصیاتی هست که برچسب زن باید با توجه به آن ها طراحی شود . [1] بر چسب ها شامل اطلاعات دستوری بسیار زیادی مانند : کمیت ، شخص ، جنسیت و ... در مورد کلمه و همسایه های آن هستند .[2]
روش ها و مدل های زیادی برای برچسب زنی ارائه شده است که به دو قسمت کلی تقسیم می شوند :روش اول از بررسی و تفسیر آماری پیروی می کند و روش دوم از دانسته های انسانی و یادگیری ماشین4 استفاده می کند .
در زبان فارسی دو مجموعه متنی شناخته شده وجود دارد : پایگاه داده زبان شناسی فارسی (Assi, 1997) و پیکره متنی زبان فارسی (Bijankhan, 2002; Mohseni, 2008) . مورد دوم در دوقسمت دسته بندی شده است : کلمات تفسیر شده و تفسیر نشده . قسمت تفسیر شده که حدود 10% را در بر می گیرد به صورت دستی برچسب زده شده است . هدف ما بر چسب زنی برای قسمت تفسیر نشده (حدود 90% مجموعه) است تا یک مجموعه ی 100 میلیونی از کلمات بر چسب زده شده ایجاد شود.[3]

۲. کارهای مرتبط

اولین کاری که برروی برچسب زنی در زبان فارسی توسط (Assi & Abdolhoseini, 2000) بر پایه روشی که توسط (Schuetze, 1995) پیشنهاد شده ، انجام شده است . ایده ی این است که تمامی همسایه های کلمه در دو آرایه ی کلمات راست و کلمات چپ جمع آوری شود . کلمات با تکرار کم حذف می شوند ، چون دیده شده است که کلمات نادر آرایه های خالی دارند .نوع کلمات به شباهت توزیع شده بستگی دارد و هر دسته به صورت دستی برچسب گذاری می شود . این مجموعه 45 برچسب دارد . دقت گذارش شده به این صورت است : دقت در اعداد ، دسته های مختلف افعال و اسم ها بین 69 تا 83 % می باشد و در حالت کلی ، دقت قسمت خودکار سیستم 57.5% می باشد . در هر حال نویسنده اقرار می کند در حالی که برچسب های فارسی به کلمات مبهم بر می گردد ، سیستم پیشنهادی قادربه ابهام زدایی از کلماتی مانند کلمات با تکرار کم نیست . در ضمن دقت سیستم برای دسته هایی مانند صفت ها و قید ها بسیار کم است . [3]
تحقیق دیگری برروی برچسب زن های فارسی توسط (Megerdoomian, 2004) انجام شده است . از نتایج آزمایشات گزارشی در دست نیست . نویسنده تنها به چالش هایی که برای برنامه نویسی برچسب زن زبان فارسی ایجاد می شود اشاره کرده است .[3]
در (Mohseni, 2008) یک سیستم برچسب زنی برپایه ی مدل Markov مرتبه ی اول برروی مدل قدیمی پیکره اجرا شده است . در این مقاله برخی جنبه های ریخت شناسی فارسی و بعضی مشکلات در گسترش یک سیستم برچسب زنی ارائه شده است . [3]
در (Mojgan Seraji) یک برچسب زن آماری برای یک زبان فارسی ارائه شده است . نتایج آزمایش نشان می دهد که دقتی در حدود 96.9% دارد که بهترین نتیجه گزارش شده برای زبان فارسی است . پایه ی این روش بر Hidden Markov Models می باشد که به کاربر اجازه می دهد تا برچسب زنی با ویژگی های متفاوت داشته باشد . این برچسب زن بر اساس حدس زدن برچسب مناسب با توجه به برچسب های قبلی و فعلی عمل می کند . نکته ی مثبت در مورد این الگوریتم برچسب زنی برای کلماتی است که تا بحال دیده نشده است . برروی کلمات یک آنالیز زبان شناسی انجام می شود تا لیست برچسب های قابل استفاده برای این کلمه را کم کند که نه تهنا باعث افزایش سرعت عملکرد سیستم می شود بلکه به شدت دقت را افزایش می دهد . به عبارت دیگر انالیزور زبان شناسی برچسب های ممکن را تولید می کند ، تا بر اساس الگوریتم های حدس زنی وزن دهی شود . [6]

3. Markov Models

احتمال یک جمله از کلمات

{ w }_{ 1 }\ { w }_{ 2 } ...{ w }_{ n }
با استفاده از برچسب زن به صورت
P({ w }_{ 1 }{ w }_{ 2 }...{ w }_{ n } ,t_{ 1 }t_{ 2 } ...t_{ n })
است.که با توجه به قضیه ی Bayes به صورت زیر می شود :

P({ w }_{ n }|{ w }_{ 1 } { w }_{ 2 } ... { w }_{ n } , t_{ 1 }t_{ 2 } ...t_{ n })P({ t }_{ n }|{ w }_{ 1 }{ w }_{ 2 } ...{ w }_{ n } , t_{ 1 } t_{ 2 } ...t_{ n })P({ w }_{ 1 }{ w }_{ 2 } ...{ w }_{ n }, t_{ 1 } t_{ 2 } ...t_{ n-1 })

با استفاده از دو رابطه ی ساده مشخص می شود که احتمال کلمه ی

{w}_{n}
فقط به
{t}_{n}
آن و به Kکلمه ی مقدم بر آن بستگی دارد :
P({ w }_{ n }|t_{ n })P({ t }_{ n }|t_{ n-k }...t_{ n-1 })P({ w }_{ 1 }{ w }_{ 2 }...{ w }_{ n },t_{ 1 } t_{ 2 } ... t_{ n-1 })

با ساده سازی و تابع بازگشتی قضیه ی Bayes این فرمول حاصل می شود :

P({ w }_{ 1 }{ w }_{ 2 }...{ w }_{ n },t_{ 1 }t_{ 2 }...t_{ n-1 })\quad =\quad \prod _{ i=1 }^{ n } P({ w }_{ i }|t_{ i })P({ t }_{ i }|t_{ i-k }...t_{ i-1 })

احتمال این مدل تنها به K کلمه ی قبلی بستگی دارد که به Markov Model مرتبه ی k شناخته می شود . در برچسب زنی بیشتر از مرتبه ی اول Markov Model و از مرتبه ی دوم Markov Model استفاده می شود .

۴. انواع برچسب زن

الگوریتم های برچسب زنی مختلفی وجود دارد که هرکدام سعی می کند معایب الگوریتم قبلی را از بین ببرد . در (Megerdoomian, 2004) الگوریتم های برچسب زنی به دو دسته تقسیم می شوند :[5]

برچسب زن های آماری: این الگوریتم های برچسب زنی بر اساس احتمال عمل می کنند . این الگوریتم ها معمولا از پیکره های برچسب زده شده استفاده می کنند . این ها احتمالات برچسب کلمه ها را با استفاده از اسناد برچسب زده شده یاد می گیرند . زمانی که این برچسب زن ها با یک کلمه ناشناخته روبرو می شوند از اطلاعات توزیع شده کلمه برای پیشنهاد یک برچسب برای آن استفاده می کنند . برچسب زن های اماری دقت بالایی دارند اما کارایی آن ها به سختی قابل ارتقا است . به علاوه از یک پیکره برچسب زده شده استفاده می کند که در بعضی زبان ها موجود نیست . [5]

برچسب زن های قانونمند : این برچسب زن ها برچسب مناسب را با استفاده از قواعد دستوری و زبان شناسی انتخاب می کنند . در این برچسب زن ها از یادگیری استفاده نمی شود . از انجا که این برچسب زن ها از قواعد استفاده می کنند ، برای یرچسب زنی کلمات ناشناخته ناتوان هستند اما برای کلمات شناخته شده معمولا دقیق هستند .[5]
نوع دیگری از برچسب زن ها نیز در(Shamsfard) معرفی شده است که ترکیبی از این دو حالت است . [1]
با توجه یه اینکه برچسب زن های آماری دقت بالایی دارند در این مقاله از این نوع برچسب زن ها استفاده می شود ، البته همان طور که گفته شد معایبی نیز دارند .

۵. پیش پردازش

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

  1. "می" که در اول بسیاری از فعل ها می آید باید به صورت جدا نوشته شود .

  2. "ها" که یک نشانه ی جمع است باید به صورت جدا نوشته شود .

  3. "بی" که یک پیشوند منفی ساز است باید به صورت جدا نوشته شود .

۶. پیاده سازی

برای مجموعه ی داده ها 5 از پیکره ی بیجن خان که حاوی 2.6 میلیون کلمه و 550 برچسب است ، استفاده شده است . از آنجا که این مجموعه دارای 550 برچسب است و باعث ایجاد مشکلات فراوان و عدم دقت می شود 38 برچسبی که بیشترین تکرار را دارند مورد استفاده قرار می گیرد . جدول زیر تعداد تکرار برچسب ها و احتمال آنها را نشان می دهد :

برچسب های پرتکرار و احتمال وقوع آنها

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

۷. کارهای آینده

۸.

۹. مراجع

  1. Mehrnoush Shamsfard , Hakimeh Fadaee A Hybrid Morphology-Based POS Tagger for Persian NLP Research Laboratory , Faculty of Electrical & Computer Engineering, Shahid Beheshti University, Tehran, Iran.

  2. Jurafsky D. and Martin J. H. (1999). Speech and language Processing. Prentice Hall, September 28.

  3. Mahdi Mohseni, Behrouz Minaei-bidgoli , A Persian Part-Of-Speech Tagger Based on Morphological Analysis , Iran University of Science and Technology.

  4. Ali Azimizadeh, Mohammad Mehdi Arab, Saeid Rahati Quchani, Persian part of speech tagger based on Hidden Markov Model , ,Islamic Azad University of Mashhad, Iran.

  5. Megerdoomian, K. (2004). Developing a Persian part-of-speech tagger. In Proceedings of First
    Workshop on Persian Language and Computers. Iran.

  6. Mojgan Seraji, A Statistical Part-of-Speech Tagger for Persian ,Department of Linguistics and Philology Uppsala University, Sweden


  1. Natural Language Processing (NLP)

  2. inter-word relation

  3. lexicon

  4. Machine Learning

  5. Data Set

محمد عبدوس

با سلام
1- توضیحی در مورد نحوه دسترسی به پیکره داده نشده است.
2- پیشنهاد میشود که از برچسبهای کمتری برای آموزش استفاده شود زیرا هرچه کلاس ها بیشتر باشند دقت برچسب زن پایین میاید و کارآیی خود را از دست میدهد. برای نمونه تشخیص صفت از عملیات برچسب زن اجزای سخن و تشخیص نوع صفت بر عهده تحلیلگر صرفی میباشد. برای نمونه شما در لیست برچسبهایتان 5 نوع صفت دارید.
3- بهتر بود اسم برچسبها را مینوشتید که دقیقا هر برچسب معرف چیست؟
4- با توجه به موارد ذکر شده شما در این فاز پیاده سازی ای نداشته اید بلکه تنها پالایش داده ها را انجام داده اید.
5-تنها کدی که در گیت هاب مشاهده شد کد مربوط به احتمالات بود و هیچ کدی در مورد پالایش داده ها مشاهده نشد.
6- در مورد یکسان سازی نوشته های عربی نیز صحبتی نشده بود مثلا تبدیل "ي" عربی به "ی" فارسی ، "ك" عربی به "ک" فار سی و ...
از تلاشی که انجام داده اید سپاسگزارم.

تایید شده

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

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

  2. بهتر بود ذکر میکردید 38 برچسب پرتکرار را از چه منبعی به دست آورده‌اید.

  3. بهتر بود یک ستون دیگر در جدول مربوط به برچسب‌ها ایجاد می‌کردید و اسم فارسی برچسب‌هایی که نوشتید را هم می‌آوردید که خواننده بفهمد منظور از "OH" ، "NP" یا "PS" چیست.

  4. یک توصیه هم درمورد نوشتن متون فارسی این که در بعضی مواقع بهتر است به‌جای یک فاصله از نیم‌فاصله استفاده کنید. مثلا نوشتن «ها» یا «ی» به صورت جدا از کلمه‌ی قبل از زیبایی نوشته می‌کاهد. در مورد کلمات فارسی هم بهتر است بدانید " " نداریم و برای قراردادن کلمه در گیومه باید از « » استفاده کنید.