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

به نام خدا سلامامیدوارم حالتون خوب باشهبه سومین مطلب این انتشارات یا همون اولین پستی که توش میخوایم یه پروژه چک کنیم خوش آمدید.هدف پست:فرایند NLPتوی این پست میخوایم یه پروژه ی نسبتا ساده رو باهم چک کنیم که میشه گفت پایه ترین پروژه ی پردازش زبان طبیعی هستش:استخراج فعل، فاعل، اسم ها و تاریخ جمله از جمله های انگلیسیتوضیح کوتاه درباره ی اجزای جمله:همونطور که گفتم توی این پست میخوایم فعل ،فاعل،اسم ها و تاریخ جمله ها رو از جمله استخراج کنیم.حالا اینا چین؟(البته میدونم که همه میدونید ، اما گفتم یه توضیح کوتاهی دربارش بدم):فعل(Verb):فعل بخشی از جمله است که کار انجام شده یا اتفاقی که توی زمان خاصی افتاده رو نشون میده.فاعل(PRON):فاعل کسی یا چیزی است که کاری را انجام داده است.اسم(Noun):اسم جزئی از جمله است که میتوانیم با استفاده از آن اشیا ، حیوانات و انسان ها رو نام گذاری کنیمالبته این تعریف کاملش نیست و اسم ها انواع مختلفی دارن، برای کسب اطلاعات بیشتر از اسم به این لینک بروید.تاریخ(Date):تاریخ یا زمان جمله یعنی جمله چه زمانی رخ داده، مثلا دیروز رخ داده یا امروز یا فردا قراره اتفاق بیافته.خروجی ای که من در نظر داریم:خروجی که من در نظر دارم اینطوری هستش:بعد از اینکه ورودی رو گرفت(همون جمله رو) بیاد زیرش اجزاش رو جدا سازی کنه و جلوش کلماتش رو بنویسهبه این صورت:pleas write a sentence: today we use python for NLPPron: ['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 wheelpip install -U spacypython -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 NLPPron: ['we']Nouns: ['we', 'python', 'NLP']Verbs: ['use']Date: ['today']نتیجه گیری از مطلب:توی این مطلب نحوه ی استخراج و شناسایی اجزای جمله رو با استفاده از پردازش زبان طبیعی آموختیم.اول یه توضیح کوچیکی درباره ی اجزای جمله گفتمبعد نحوه ی نصب کتابخانه و ماژول ها رو آموزش دادمو بعد کد ها رو نوشتیم و در آخر هم کد شسته رفته رو قرار دادمامیدوارم از این مطلب خوشتون اومده باشه و لذت کافی رو برده باشید.تا جلسه ی بعدی خدانگهدار