پردازش زبان طبیعی در پایتون (بخش چهارم)

پردازش زبان طبیعی در پایتون (بخش چهارم)

1395 اسفند,20
|
0 نظرات
نوشته شده : امیر جوادی

رشته

بعضی از توابع در پایتون مخصوص رشته ها می باشد.مثل شاخص در متن و برداشت یک تیک از متن و در ادامه مثال هایی از این توابع عنوان میکنیم
 1.رشته نوعی متغیر است
2.هر رشته شامل شاخض هایی که کاراکتر می باشند است.
3.جداسازی رشته

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

همچنین می توانیم دو عبارت رو با هم متصل   (join) و یا جدا سازی کنیم (Split)

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

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

که شامل هزاران سطر و کاری سخت که قطعا در دست ماشین بر میایید.
لازم به ذکر است که ما به جدول بالا فرکانس توزیع میگوییم.که در آن هر کلمه به همراه تعداد تکرار در متن آورده شده است به عنوان مثال فرکانس توزیع کلمه been برابر است با 11
از ان جایی که ما بشدت در مسائل پردازش زبان های طبیعی به فرکانس توزیع نیازمندیم در نتیجه کتاب خانه nltk تابع ای برای این امر ساخته و فراهم کرده است.(FreqDist)
لازم به ذکر که nltk را به پروژه وارد نمایید.
اجازه بدید تابع FreqDist رو در کتاب MobyDick ارزیابی کنیم و 50 کلمه پر کاربر در این کتاب را مشاهده کنید.

در قسمت اول با ارسال متن شماره یک یا کتاب MobyDick به تابع FreqDist توزیع کلمات در متغییر fdist1 قرار میگیرد
و می توانیم این توزیع در قسمت دوم ببینم که بعد از عمل پرینت اعلام میکند که 19317 نمونه از کل کلمات داخل متن که 260819 است یکتا و توزیع انها استخراج شده است.و سپس با متد most-common و پارامتر 50 به پایتون اعلام میکنیم که 50 وازه که بیشترین تکرار را دارند به ما نشان دهد.
می توان با استفاده از متد plot این توزیع را روی نمودار مشاهده کرد.
آیا هیج کدوم از این کلمات و توزیع ها به ما درباره موضوع و یا سبک متن کمکی میکنه؟
تنها یک کلمه نهنگ "whale" اموزنده است.چرا که 906 با تکرار شده است. و باقی کلمات هیچی به ما نمیگن.پچون با سمبل هستند و یا فعل و به اصطلاح لوله کشی های زبان انگلیسی هستند.ما میتوانیم یک طرح فراوانی تجمعی از کلمات را داشته باشیم.با استفاده ار این دستور fdist1.plot(50, cumulative=True)

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

fdist1.hapaxes().

نگاهی نزدیک تر به کلمات
در این قسمت میخواهیم کلماتی را از درون متن پیدا کنیم که تعداد کاراکتر های انها بیش از 15 باشد

 

در خط اول لیست کلمات متن را دریافت میکنیم . و در خط دوم می گوییم هر w عضو واژگان V انتخاب کن که طول ان بزرگتر از 15 باشد.
توجه داشته باشید که اگر همین کار رو برای متن 4 انجام دهیم خروجی کلمات انعکاس ملی ، تمرکز قانون اساسی می باشد در حالی که در متن 5 boooooooooooglyyyyyy و yuuuuuuuuuuuummmmmmmmmmmm می باشد.
آیا ما موفق به استخراج کلمات خوب شدیم؟
خوب این کلمات طولانی اکثرآ یکتا هستند. و فقط یک بار در متن رخ میدهندو شاید اکثر کلمات طولانی که بیشتر از یکبار تکرار میشوند کلمات خوبی هستند.
خوب حالا می توانیم برگردیم به عقب و با توجه به دانسته های کدونی بیشترین تکرار کلمات که از تابع FreqDist بدست میاوردیم رو کامل تر کنیم.

در این قسمت ما دوشرط قرار دادیم یکی برای طول کلمات len(w) و دومی برای تعداد تکرار fdist5[w] .
مجموعه و بیوگرام ها
مجموعه، دنباله ای از کلمات که غیر منتظره رخ میدهند گفته میشود.
برای بدست اوردن جفت کلمات از بیوگرام استفاده میکنیم

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

fdist = FreqDist(samples) بدست آوردن توزیع فرکانس از متن
fdist.inc(sample) افزایش تعداد و اضافه کردن توزیع فرکانس  
fdist['monstrous'] تعداد رخ داد کلمه
fdist.freq('monstrous') بدست اوردن فرکانس کلمه
fdist.N() تعداد کل واژگان