استخراج اجزای جمله با پردازش زبان طبیعی

به نام خدا

سلام

امیدوارم حالتون خوب باشه

به سومین مطلب این انتشارات یا همون اولین پستی که توش میخوایم یه پروژه چک کنیم خوش آمدید.



هدف پست:

فرایند NLP
فرایند NLP

توی این پست میخوایم یه پروژه ی نسبتا ساده رو باهم چک کنیم که میشه گفت پایه ترین پروژه ی پردازش زبان طبیعی هستش:

استخراج فعل، فاعل، اسم ها و تاریخ جمله از جمله های انگلیسی



توضیح کوتاه درباره ی اجزای جمله:

همونطور که گفتم توی این پست میخوایم فعل ،فاعل،اسم ها و تاریخ جمله ها رو از جمله استخراج کنیم.

حالا اینا چین؟(البته میدونم که همه میدونید ، اما گفتم یه توضیح کوتاهی دربارش بدم):

  • فعل(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(&quotpleas write a sentence: &quot))

همینطور که میبینید ما ورودی رو گرفتیم و با ماژول سازگاریش دادیم، یعنی ورودی رو بر اساس ماژول گرفتیم.

استخراج اجزای جمله:

میرسیم به بخشی از کد ها که جمله رو آنالیز میکنه:

برای فاعل:

print(&quotPron:&quot,[token.text for token in text if token.pos_ == &quotPRON&quot])

که میبیند دستور for in رو داخل خود پرینت استفاده کردم و با دستور token.text کلمات رو جداسازی کردم و بقیه هم مربوط به پیدا کردن فاعل میشن.

برای اسم ها:

print(&quotNouns: &quot, [chunk.text for chunk in text.noun_chuks])

برای فعل ها:

print(&quotVerbs: &quot, [token.lemma_ for token in text if token.pos_ == &quotVERB&quot])

که از دستور _token.lemma استفاده کردم که فعل های گذشته هم بتونه تشخیص بده

برای تاریخ جمله:

print(&quotDate: &quot, [entity.text for entity in text.ents])

این دستور هم کاری میکنه که اگر کلمه ای درباره ی زمان جمله باشه رو نمایش بده.




کل کد ها به صورت یکجا:

#import the spacy
import spacy

#load the model
nlp = spacy.load(&quoten_core_web_sm&quot)
text = nlp(input(&quotpleas write a sentence: &quot))

print(&quotPron:&quot,[token.text for token in text if token.pos_ == &quotPRON&quot])
print(&quotNouns: &quot, [chunk.text for chunk in text.noun_chuks])
print(&quotVerbs: &quot, [token.lemma_ for token in text if token.pos_ == &quotVERB&quot])
print(&quotDate: &quot, [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']




نتیجه گیری از مطلب:

توی این مطلب نحوه ی استخراج و شناسایی اجزای جمله رو با استفاده از پردازش زبان طبیعی آموختیم.

اول یه توضیح کوچیکی درباره ی اجزای جمله گفتم

بعد نحوه ی نصب کتابخانه و ماژول ها رو آموزش دادم

و بعد کد ها رو نوشتیم و در آخر هم کد شسته رفته رو قرار دادم



امیدوارم از این مطلب خوشتون اومده باشه و لذت کافی رو برده باشید.

تا جلسه ی بعدی خدانگهدار