Either try as much as you wish or wish as much as you try
استخراج اجزای جمله با پردازش زبان طبیعی
به نام خدا
سلام
امیدوارم حالتون خوب باشه
به سومین مطلب این انتشارات یا همون اولین پستی که توش میخوایم یه پروژه چک کنیم خوش آمدید.
هدف پست:
توی این پست میخوایم یه پروژه ی نسبتا ساده رو باهم چک کنیم که میشه گفت پایه ترین پروژه ی پردازش زبان طبیعی هستش:
استخراج فعل، فاعل، اسم ها و تاریخ جمله از جمله های انگلیسی
توضیح کوتاه درباره ی اجزای جمله:
همونطور که گفتم توی این پست میخوایم فعل ،فاعل،اسم ها و تاریخ جمله ها رو از جمله استخراج کنیم.
حالا اینا چین؟(البته میدونم که همه میدونید ، اما گفتم یه توضیح کوتاهی دربارش بدم):
- فعل(Verb):
فعل بخشی از جمله است که کار انجام شده یا اتفاقی که توی زمان خاصی افتاده رو نشون میده.
- فاعل(PRON):
فاعل کسی یا چیزی است که کاری را انجام داده است.
- اسم(Noun):
اسم جزئی از جمله است که میتوانیم با استفاده از آن اشیا ، حیوانات و انسان ها رو نام گذاری کنیم
البته این تعریف کاملش نیست و اسم ها انواع مختلفی دارن، برای کسب اطلاعات بیشتر از اسم به این لینک بروید.
- تاریخ(Date):
تاریخ یا زمان جمله یعنی جمله چه زمانی رخ داده، مثلا دیروز رخ داده یا امروز یا فردا قراره اتفاق بیافته.
خروجی ای که من در نظر داریم:
خروجی که من در نظر دارم اینطوری هستش:
بعد از اینکه ورودی رو گرفت(همون جمله رو) بیاد زیرش اجزاش رو جدا سازی کنه و جلوش کلماتش رو بنویسه
به این صورت:
pleas write a sentence: today we use python for NLP
Pron: ['we']
Nouns: ['we', 'python', 'NLP']
Verbs: ['use']
Date: ['today']
نصب کتابخانه و ماژول مورد نیاز:
برای اینکه کد ها رو بنویسید نیاز به کتابخانه ی spacy و ماژول خودش رو نیاز دارید
برای این کار باید این کار رو انجام بدید:
اگر مثل من از آناکوندا و ژوپیتر نوت بوک استفاده میکنید این دستور رو داخل آنکوندا پرامپت به ترتیب وارد کنید:
conda install -c conda-forge spacy
و
python -m spacy download en_core_web_sm
و اگر از IDE هایی مثل vscode و خود IDE پایتون استفاده میکنید این دستورات رو به ترتیب داخل CMD وارد کنید:
pip install -U pip setuptools wheel
pip install -U spacy
python -m spacy download en_core_web_sm
کد نویسی:
ایمپورت کردن کتابخانه:
import spacy
لود کردن ماژول:
nlp = spacy.load('en_core_web_wm')
این ماژول توکنایزر زبان انگلیسی هست که کار مارو خیلی راحت میکنه
گرفتن ورودی و سازگاری دادن اون با ماژول :
text = nlp(input("pleas write a sentence: "))
همینطور که میبینید ما ورودی رو گرفتیم و با ماژول سازگاریش دادیم، یعنی ورودی رو بر اساس ماژول گرفتیم.
استخراج اجزای جمله:
میرسیم به بخشی از کد ها که جمله رو آنالیز میکنه:
برای فاعل:
print("Pron:",[token.text for token in text if token.pos_ == "PRON"])
که میبیند دستور for in رو داخل خود پرینت استفاده کردم و با دستور token.text کلمات رو جداسازی کردم و بقیه هم مربوط به پیدا کردن فاعل میشن.
برای اسم ها:
print("Nouns: ", [chunk.text for chunk in text.noun_chuks])
برای فعل ها:
print("Verbs: ", [token.lemma_ for token in text if token.pos_ == "VERB"])
که از دستور _token.lemma استفاده کردم که فعل های گذشته هم بتونه تشخیص بده
برای تاریخ جمله:
print("Date: ", [entity.text for entity in text.ents])
این دستور هم کاری میکنه که اگر کلمه ای درباره ی زمان جمله باشه رو نمایش بده.
کل کد ها به صورت یکجا:
#import the spacy
import spacy
#load the model
nlp = spacy.load("en_core_web_sm")
text = nlp(input("pleas write a sentence: "))
print("Pron:",[token.text for token in text if token.pos_ == "PRON"])
print("Nouns: ", [chunk.text for chunk in text.noun_chuks])
print("Verbs: ", [token.lemma_ for token in text if token.pos_ == "VERB"])
print("Date: ", [entity.text for entity in text.ents])
خروجی:
یه ورودی از شما میگیره و اون رو آنالیز میکنه، مثلا من این ورودی رو وارد کردم و این خروجی رو گرفتم:
pleas write a sentence: today we use python for NLP
Pron: ['we']
Nouns: ['we', 'python', 'NLP']
Verbs: ['use']
Date: ['today']
نتیجه گیری از مطلب:
توی این مطلب نحوه ی استخراج و شناسایی اجزای جمله رو با استفاده از پردازش زبان طبیعی آموختیم.
اول یه توضیح کوچیکی درباره ی اجزای جمله گفتم
بعد نحوه ی نصب کتابخانه و ماژول ها رو آموزش دادم
و بعد کد ها رو نوشتیم و در آخر هم کد شسته رفته رو قرار دادم
امیدوارم از این مطلب خوشتون اومده باشه و لذت کافی رو برده باشید.
تا جلسه ی بعدی خدانگهدار
مطلبی دیگر از این انتشارات
کتابخانه های مورد نیاز برای NLP
مطلبی دیگر از این انتشارات
NLP چیه
مطلبی دیگر از این انتشارات
خلاصه سازی متن با پردازش زبان طبیعی