۱. مقدمه

در بسیاری از کاربردهای پردازش طبیعی زبان 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 برچسبی که بیشترین تکرار را دارند مورد استفاده قرار می گیرد . جدول زیر تعداد تکرار برچسب ها و احتمال آنها را نشان می دهد :

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

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

۷. پیاده سازی نهایی

مراحل پیاده سازی یه این ترتیب است که اول متن را نرمال سازی می کنیم همان طور که در این مورد در بخش پیش پردازش بحث شده بود . سپس کلمات را تشخیص داده و در اصطلاح Tokenize می کنیم و سپس با اجرای PosTagger بر چسب مربوط به هر کلمه مشخص می شود .
کد
البته در این فاز کار پیاده سازی توسط بنده انجام نشده و صرفا کد های Hazm بررسی شده است و کد های موجود در Git نیز همین کدهاست ، اما بیشتر وقت در این فاز به بررسی Machin Learning در پردازش طبیعی زبان داده شده است . چون مبحث بسیار سنگینی بود و پیش نیاز های متعددی برای یادگیری داشت متاسفانه فرصت کافی برای پیاده سازی وجود نداشت . دو منبع 7 و 8 را به منظور یادگیری ، یادگیری ماشین انتخاب کرده ام

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

با توجه به پیشرفت تکنولوژی ها به خصوص در نحوه ی ارتباط با کاربر یا همان رابط کاربری ، امروزه استفاده از پردازش طبیعی زبان بسیار گسترش یافته است . به خصوص در زمینه ی هوش مصنوعی و دستیار هوشمند شخصی(Inteligent Personal Assistant) کاربرد تبدیل گفتار به متن با استفاده از پردازش طبیعی زبان بسیار گسترش یافته است . همان طور که بررسی شد دو مدل برچسب زنی یعنی آماری و ساختار هر کدام معایب و مزایایی دارند که در مورد آنها صحبت شده است ، اما مواردی که از ترکیبی از این دو مدل بهره گرفته اند بسیار دقت و کارایی بیشتری داشته اند ، به شخصه احساس می کنم ترکیب این دو روش آینده ی برچسب زنی خواهد بود . همچنین استفاده از روش هایی که فارغ از نوع زبان به برچسب زنی می پردازند می تواند بسیار مفید باشد زیرا هر کدام از زبان ها معایب زیادی دارند که بسیار پیشبرد کار را مشکل می کنند ، در مورد معایب زبان فارسی بحث شده است . بهره گیری از نکاتی که عرض شد می تواند مقالات و برنامه های آینده را بهبود ببخشد .

۹. مراجع

  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

  7. Machin Learning in Action , Peter Harrington , Manning , 2012

  8. Machin Learning for Natural Lnaguage Processing , Mrtin Emms , Saturino Luz , 2007


  1. Natural Language Processing (NLP)

  2. inter-word relation

  3. lexicon

  4. Machine Learning

  5. Data Set

رد شده

سلام
از نظر علمی پروژه‌ی خوب و مفیدی است. در متن پروژه ایرادات نگارشی وجود دارد که امیدوارم با رفع آن ها پروژه‌ی شما منظم‌تر و روان تر شود.
نیم فاصله رعایت نشده است، همچنین بهتر بود از ویرگول هم استفاده می‌کردید.
غلط املایی در متن دیده می‌شود برای مثال: طراحی می شوند تا با دقت و عملکرد بالاتری برسند، برای یرچسب زنی...
بهتر بود در بعضی جاها از جمله بندی مناسب‌تری استفاده کنید و متن مقاله‌ی خارجی را مستقیم ترجمه نکنید: 'ایده ی این است که تمامی...' ، 'اولین کاری که برروی برچسب زنی در زبان فارسی توسط (Assi & Abdolhoseini, 2000) بر پایه روشی که توسط (Schuetze, 1995) پیشنهاد شده ، انجام شده است .'
بهتر بود در قسمت مقدمه و کارهای مرتبط کمی بیشتر درباره‌ی روشها و مفاهیم موجود توضیح می‌دادید تا خواننده بهتر موضوع را بشناسد.
در کل پروژه‌ی خوبی است و تلاش شما قابل توجه است.پیاده‌سازی به خوبی انجام شده است اما بهتر بود درباره‌ی توابع استفاده شده و نحوه‌ی کار آنها بیشتر توضیح می‌دادید. امیدوارم با رفع ایرادهای کوچک نتیجه‌ی مطلوب‌تری بگیرید.
موفق باشید.

محمد عبدوس

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

تایید شده

با عرض سلام و خسته نباشید
جای یک مثال برای فهم بهتر این موضوع در بخش مقدمه خالی است.
این جمله به درستی بیان نشده است :در (Mojgan Seraji) یک برچسب زن آماری برای یک زبان فارسی ارائه شده است
در توضیح روش Hidden Markov Models نقص های جدی دیده می شود. این که کدها به خوبی طبقه بندی شده اند بسیار عالی است ولی کاش یک نمونه را پیاده سازی و نتایج را گزارش می دادند.
با آرزوی موفقیت