تشخیص موجودیت‌های نامدار در متن

تغییرات پروژه از تاریخ 1392/12/24 تا تاریخ 1393/02/06
موجودیت‌های نام‌دار در زبان به مجموعه‌ای از اسامی مانند نام افراد، سازمان‌ها، مکان‌ها،  و... می‌باشد. شناسایی موجودیت‌های نام‌دار در متن مسئله پیدا کردن این موجودیت‌ها از متن خام و همچنین شناسایی نوع موجودیت است.

برای مثال:
آدولف بورن، طراح، کاریکاتوریست و نقاش در شهر بودجویس از جمهوری چک به دنیا آمد.

> آدولف		B-PERSON
>
> بورن		I-PERSON
>
> ،
>
> کاریکاتوریست
>
> و
>
> نقاش
>
> در
>
> شهر
>
> بودجویس		B-LOCATION
>
> از
>
> جمهوری		B-LOCATION
>
> چک	I-LOCATION
>
> به
>
> دنیا
>
> آمد
>
> .

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

# مقدمه
بسم الله ا لرحمن الرحیم

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

1- ویژگی های کلمه ای 

این ویژگی ها مربوط به نویسه های سازنده ی کلمه است و از روی شکل وظاهر خود کلمه استخراج می گردد . این ویژگی ها توصیف گر حالت کلمه ، نقش کلمه ، حالت عددی و مانند آن است. ویژگی های زیر از این دسته اند :(nadeau and sekine , 2007 ( 
ویژگی هایی که مربوط به بزرگ یا کوچک بودن حروف در کلمه است ، مانند : 1- شروع کلمه با حروف بزرگ 2- بزرگ بودن تمام حروف در کلمه 3- وجود حروف بزرگ در وسط کلمه مثل eBay
ویژگی های عددی کلمات مانند : الگوی اعداد به کار رفته(استفاده از 2 یا 4 عدد جهت نمایش تاریخ و مانند آن )
ویژگی های نویسه ی کلمات مانند : 1- ضمیر اول شخص 2- ضمیر ملکی 3- حروف یونانی 
ویژگی های صرفی کلمات کانند : 1- پسوند 2- پیشوند 3-ریشه ی کلمات
و ...

2- ویژگی های فهرستی 

یک سری دیگر از ویژگی هایی که برای کلمات یک جمله در سیستم های  NER در نظر گرفته می شود ، ویژگی هاییست که از یک سری فهرست ها استخراج می گردد ؛ برای استخراج این ویژگی ها از فهرست هایی که شامل اسامی افراد ، مکان ها ، شهرها ، کشورها ، افراد و ... است استفاده می شود. وجود کلمه در هر یک از این فهرست ها ، نشان دهنده ی یکی از ویژگی های کلمه است . در بعضی موارد وجود یک کلمه در یک فهرست می تواند با اختمال طبقه ی آن کلمه را مشخص کند . ولی به دلید ابهام در نقش و جایگاه اسامی این امکان وجود دارد که اسمی در یک فهرست قرار داشته باشد ؛ ولی متعلق به طبقه ی آن فهرست نباشد. بزرگ بودن این فهرست ها باعث می شود تا ویژگی  هایی با دقت بالاتری استخراج گردد؛ اما در بسیار ی  از موارد ، محدودیت وجود دارد که نمی توان از فهرست هایی بزرگ استفاده کرد . به همین دلیل از یک سری روش ها در جستجو استفاده می شود تا فهرست ها بتوانند تعداد کلمات بیشتری پوشش دهند .(nadeau and sekine , 2007 ( 

3- ویژگی های سندی

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

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

برای تشخیص موجودیت های نامدار چندین روش وجود دارد :

- روش برمبنای قواعد :

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

[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})

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

- روش های مبتنی بر واژه نامه 

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

- روش های آماری :

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


# آزمایش‌ها

# کارهای آینده

# مراجع
+ Jurafsky, Daniel, and James H. Martin. 2009. Speech and Language Processing: An Introduction to Natural Language Processing, Speech Recognition, and Computational Linguistics. 2nd edition. Prentice-Hall.
+ Nadeau, David, and Satoshi Sekine. "A survey of named entity recognition and classification." Lingvisticae Investigationes 30.1 (2007): 3-26.
+ M. Asgari Bidhendi, et al., "Extracting person names from ancient Islamic Arabic texts", in Proceedings of LREC-Rel, pp. 1-6, 2012.
+ پونه سادات مرتضوی، مهرنوش شمس فرد، "شناسایی موجودیت های نام دار در متون فارسی"، پانزدهمین کنفرانس بین المللی سالانه انجمن کامپیوتر ایران، 1388
+ [Named Entity Recognition with NLTK](http://nltk.org/book/ch07.html#named_entity_recognition_index_term)
+ [Stanford Named Entity Recognizer(NER)](http://nlp.stanford.edu/software/CRF-NER.shtml)
+http://alias-i.com/lingpipe/demos/tutorial/ne/read-me.html
+http://techdigest.jhuapl.edu/TD/td3001/McNamee.pdf
+https://homes.cs.washington.edu/~mausam/papers/emnlp11.pdf
+http://en.wikipedia.org/wiki/Named-entity_recognition
+[Introducing the tasks:
Getting simple structured
information out of text
]http://www.stanford.edu/class/cs124/lec/Information_Extraction_and_Named_Entity_Recognition.pdf
+Design Challenges and Misconceptions in Named Entity Recognition,Lev Ratinov Dan Roth
Computer Science Department
University of Illinois،نایو بیر و ...وجود دارد.

"سیستم شناسایی طبقه بندی اسامی فارسی "

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

1- یک متن به عنوان ورودی به سیستم ارائه می شود ، مانند جمله ی : " محمد جمعه به دانشگاه نرفت ."

2- با استفاده از یک نشان گذار ، کلمات در متن ورودی از هم دیگر جدا می شوند. (محمد/جمعه /به/ دانشگاه /نرفت)

3- با استفاده از برچسب زن دستوری نقش دستوری هر کلمه مشخص می شود(محمد/اسم| جمعه/اسم| به /حرف| دانشگاه/اسم| نرفت/فعل)

4- یا استفاده از برچسب دستوری کلمات ، اسامی شناسایی شده و از بقیه ی کلمات متن جدا می شوند .(محمد/جمعه/دانشگاه)

5-برای هر یک از اسامی بردار ویژگی لازم استخراج می شود.

6- با استفاده از یک دسته بند آماری ، اسامی در طبقات مربوطه طبقه بندی می شوند .

- مراحل 2 و 3 را می توان توسط سیستم هضم (پردازش زبان فارسی در پایتون) انجام داد. پس از مرحله 4 باید از داده های برچسب خورده موجود که شامل اسامی هستند ویژگی های لازم جهت تشخیص موجودیت های نامدار استخراج شو د . و پس از این مرحله باید با استفاده از یک طبقه بندی کننده داده های خود را طبقه بندی کنیم .

طبقه کننده های آماری :

-مدلهای پنهان مارکوف

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

1- N: تعداد حالتهای مدل 

S = {s1,s2,…,sN}-2: مجموعهی حالتها 

Π = {π i = P(si at t = 1)}-3: احتمالات حالت اولیه 

A = {aij = P(sj at t+1 | si at t)}-4احتمالات تغییر حالت 

M-5 :تعداد علائم قابل مشاهده (تولید شده)

 V = {v1, v2, ..., vM}-6: مجموعه علائم قابل مشاهده

B = {bi(vk) = P(vk at t | si at t}-7احتمالات تولید علائم قابل مشاهده 

Ot t -8: علامت مشاهده شده در زمان

9- T: طول دنباله مشاهدات 

λ = (A, B, Π)-10: نماد خلاصهی برای مدل پنهان مارکوف

- طبقه کننده نایو بیز

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

براساس ویژگی‌های ذاتی احتمال(به ویژه اشتراک احتمال) نایو بیز (به انگلیسی: Naive Bayes classifier) با دریافت تمرین اولیه نتایج خوبی ارایه خواهد کرد. تمرین دادن نایو بیز یک تمرین بانظارت (به انگلیسی: Supervised learning) است.

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

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




# آزمایش‌ها

# کارهای آینده

# مراجع
+ Jurafsky, Daniel, and James H. Martin. 2009. Speech and Language Processing: An Introduction to Natural Language Processing, Speech Recognition, and Computational Linguistics. 2nd edition. Prentice-Hall.
+ Nadeau, David, and Satoshi Sekine. "A survey of named entity recognition and classification." Lingvisticae Investigationes 30.1 (2007): 3-26.
+ M. Asgari Bidhendi, et al., "Extracting person names from ancient Islamic Arabic texts", in Proceedings of LREC-Rel, pp. 1-6, 2012.
+ پونه سادات مرتضوی، مهرنوش شمس فرد، "شناسایی موجودیت های نام دار در متون فارسی"، پانزدهمین کنفرانس بین المللی سالانه انجمن کامپیوتر ایران، 1388
+ [Named Entity Recognition with NLTK](http://nltk.org/book/ch07.html#named_entity_recognition_index_term)
+ [Stanford Named Entity Recognizer(NER)](http://nlp.stanford.edu/software/CRF-NER.shtml)

+ [دسته‌بندی کننده نایو بیز](http://fa.wikipedia.org/wiki/%D8%AF%D8%B3%D8%AA%D9%87%E2%80%8C%D8%A8%D9%86%D8%AF%DB%8C_%DA%A9%D9%86%D9%86%D8%AF%D9%87_%D9%86%D8%A7%DB%8C%D9%88_%D8%A8%DB%8C%D8%B2)

+ [سیستم شناسایی و طبقه بندی اسامی در متون فارسی](http://www.sid.ir/FA/VEWSSID/J_pdf/35213891306.pdf)

+ [Efficient Support Vector Classifiers
for Named Entity Recognition](http://delivery.acm.org/10.1145/1080000/1072282/p54-isozaki.pdf?ip=151.243.10.234&id=1072282&acc=OPEN&key=4D4702B0C3E38B35.4D4702B0C3E38B35.4D4702B0C3E38B35.6D218144511F3437&CFID=446233081&CFTOKEN=76552105&__acm__=1398446503_5a3a37f41038583a804eef651346723c)

+ [Focused Named Entity Recognition using Machine
Learning](http://stat.rutgers.edu/home/tzhang/papers/sigir04-focusedentity.pdf)
+ [امکان سنجی سیستم طبقه بندی متون برای زبان فارسی](http://www.arooz.net/attachments/059_22-TextClassification.pdf)






# پیوندهای مفید
+ [تشخیص موجودیت‌های نام‌دار، پروژه درس هوش مصنوعی نیمسال دوم ۸۹-۸۸ دانشگاه علم و صنعت](http://bayanbox.ir/id/6189680504542343855?download)
+ [تشخیص موجودیت‌های اسمی در متن، پروژه درس هوش مصنوعی نیمسال اول ۹۲-۹۱ دانشگاه علم و صنعت](http://bayanbox.ir/id/1685090304266467232?download)
+ [سیستم شناسایی و طبقه بندی اسامی در متون فارسی](http://www.sid.ir/FA/VEWSSID/J_pdf/35213891306.pdf)
+ [پردازش زبان فارسی در پایتون](http://www.sobhe.ir/hazm)
+ [کتابخانه ابزار یادگیری ماشین برای پایتون](http://scikit-learn.org/stable/)
+ [Named Entity Recognition with NLTK](http://nltk.org/book/ch07.html#named_entity_recognition_index_term)
+ [Stanford Named Entity Recognizer(NER)](http://nlp.stanford.edu/software/CRF-NER.shtml)
+http://alias-i.com/lingpipe/demos/tutorial/ne/read-me.html
+http://techdigest.jhuapl.edu/TD/td3001/McNamee.pdf
+https://homes.cs.washington.edu/~mausam/papers/emnlp11.pdf
+http://en.wikipedia.org/wiki/Named-entity_recognition
+[Introducing the tasks:
Getting simple structured
information out of text
]http://www.stanford.edu/class/cs124/lec/Information_Extraction_and_Named_Entity_Recognition.pdf
+http://nlp.iust.ac.ir/downloads/articles/Extracting%20person%20names%20from%20ancient%20Islamic%20Arabic%20texts.pdf [Named Entity Recognition with
Combinations of Conditional Random Fields](http://pub.uni-bielefeld.de/luur/download?func=downloadFile&recordOId=2603451&fileOId=2624520)
+ [دسته بندی اسناد فارسی با استفاده از الگوریتمknn](http://engold.ui.ac.ir/~basiri/papers/bargh.pdf) 
+ [Named Entity Recognition Using Hidden Markov Model](http://www.ijarcsse.com/docs/papers/Volume_3/4_April2013/V3I4-0462.pdf)