چیه و چه کاری ازش برمیاد؟
پردازش زبان طبیعی، یه تکنولوژی توی هوش مصنوعیه که کمک میکنه کامپیوترها زبون ما آدمارو بفهمن.
با NLP، سیستمها میتونن متن یا صدا رو تحلیل کنن، معنیش رو بفهمن و حتی جواب مناسب تولید کنن.
مثالهاش تو زندگی روزمره :
- گوگل که وقتی چیزی سرچ میکنی، متوجه منظورت میشه.
- رباتهای چت که سوالاتت رو جواب میدن.
- یا وقتی Siri و Alexa حرفت رو گوش میدن و برات کاری انجام میدن.
یکی از قابلیتهای مهم NLP، ریشهیابی کلمات (Lemmatization) هست. مثلا اگه یه کلمه تو متن شکلهای مختلفی داشته باشه (مثل live, lives, lived, living)، همه رو میگیره و به یه فرم اصلی (مثلاً live) تبدیل میکنه.
حالا چرا اینارو گفتم؟
من میخواستم از یه سری زیرنویسها کلمات رو استخراج کنم و بر اساس تعداد تکرارشون تو یه دیتابیس ذخیره کنم. اما یه مشکل مهم وجود داشت:
اگه هر شکل از یه کلمه رو جدا ذخیره میکردم، دیتابیس الکی شلوغ میشد و کلی دیتای اضافی و تکراری داشتم و همینطور تعداد تکرار هم درست حساب نمیشد!
مثلاً کلمههای live, lived, living, lives اگه جداگانه ذخیره بشن، انگار ۴ تا کلمه مختلف داریم، در حالی که همهشون یه معنی میدن!
چطور این چالش رو حل کردم؟
با کمک NLP و ابزارهایی که کار ریشه یابی رو انجام میدن مثل کتابخونه NLTK تو پایتون👌
🔧 یه مثال عملی با کتابخونه NLTK
from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
words = ["live", "lives", "lived", "living"]
for word in words:
print(wnl.lemmatize(word,pos='v'))
📋 خروجی:
live
live
live
live
تو کد بالا با فرض اینکه کلمات ورودی از نوع فعل هستند میاد ریشه فعل رو رو خروجی میده حالا اینکه چطوری نوع کلمه (فعل،اسم،صفت و...) رو تشخیص بدیم خودش یه کار دیگه هست که میتونید با خوندن داکیومنت این کتابخونه یادش بگیرید.
@abolfazl_devs