مجله خبری برنامه‌نویسی پایتون

مرکز آموزش و رقابت برنامه نویسی پایتون

مجله خبری برنامه‌نویسی پایتون

مرکز آموزش و رقابت برنامه نویسی پایتون

مجله خبری برنامه‌نویسی پایتون

زبان پایتون (Python) در سال ۱۹۹۱ توسط یک برنامه‌نویس هلندی به نام گیدو ون روسوم (Guido van Rossum) ابداع شد و از آن زمان تا کنون رشد قابل ملاحظه‌ای را شاهد بوده است.

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

در یک سال گذشته، «Python» یکی از کلماتی بود که شهروندان آمریکایی بسیار زیاد در گوگل جستجو کرده‌اند، حتی بیشتر از نام ستاره‌های تلویزیونی.

۳ مطلب با کلمه‌ی کلیدی «استخراج متن در پایتون» ثبت شده است

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

df['text'].str.extract(r'(\d?\d):(\d\d)')

 0 1
0 2 45
1 11 30
2 7 00
3 11 15
4 08 1

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

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

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

df['text'].str.extractall(r'((\d?\d):(\d\d) ?([ap]m))

 

خروجی برنامه در تصویر بعدی قرار دارد.

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

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

?P<GroupName>

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

df['text'].str.extractall(r'(?P<time>(?P<hour>\d?\d):(?P<minute>\d\d)?(?P<period>[ap]m))')

 

برای اینکه متوجه گردیم رشته ورودی ما شامل یک کلمه خاص یا یک الگو می باشد میتوانیم از متد str.contains استفاده کنیم. مثال زیر رو ببنید:

 

df['text'].str.contains('appointment')

0     True
1     True
2    False
3    False
4    False

خوب در نتیجه مشخص شد رشته اول و دوم کلمه apppintment رو شامل میشود

 

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

 

df['text'].str.count(r'\d')

0    3
1    4
2    3
3    4
4   8

اگر به رشته ابتدایی ما توجه کنید مشاهده میکنید پنجمین رشته ما شامل 8عدد می باشد.

 

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

df['text'].str.findall(r'\d')

0                   [2, 4, 5]
1                [1, 1, 3, 0]
2                   [7, 0, 0]
3                [1, 1, 1, 5]
4    [0, 8, 1, 0, 0, 9, 0,]

 

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

 

df['text'].str.findall(r'(\d?\d):(\d\d)')

 


 

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