Either try as much as you wish or wish as much as you try
استخراج کلمات کلیدی با پردازش زبان طبیعی
به نام خدا
سلام
امیدوارم حالتون خوب باشه
دیدید بعد اینکه توی ویرگول یه پست مینویسی آخرش میگه کلمات کلیدی پستت رو بنویس(همون tag)
ما با استفاده از پردازش زبان طبیعی و زبان برنامه نویسی پایتون همین کار رو میخوایم انجام بدیم، اما به صورت خودکار.
keyword چیست؟
کلمات کلیدی یا keywords به کلماتی گفته میشن که یه متن رو با همون کلمات معرفی کنه، یعنی چی؟
مثلا ما یه جمله داریم که اینه:
i saw an notebook in stationery yesterday
حالا میخوایم با چند تا کلمه این جمله رو معرفی کنیم:
حرف های اضافه و فعل و فاعل رو حذف و اسم ها و تاریخ ها رو در نظر میگیریم:
notebook , stationery , yesterday
الان یکم به این سه تا کلمه فکر کنید، با این سه تا کلمه میشه میشه اون جمله بالایی رو معرفی کرد؟
کاربردش چیه؟
یکی از کاربرد هاش گزینه ی سرچ گوگل هستش، شما وقتی یه جستجویی انجام میدید سایت هایی رو برای شما میاره که کلمات کلیدی جستجوی شما بهشون بخوره.
یا یکی دیگش همین ویرگوله، که خودتون احتمالا میدونید.
نصب کتابخانه و ماژول مورد نیاز:
برای اینکه کد ها رو بنویسید نیاز به کتابخانه ی 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
from collections import Counter
from string import punctuation
حالا وقت لود کردن ماژوله:
nlp = spacy.load('en_core_web_sm')
حالا با استفاده از یه تابع معلوم میکنیم که چه اجزایی از جمله مهم تر از بقیه هستند:
def keywords(text):
result = []
pos_tag = ['ADJ', 'NOUN','DATE']
doc = nlp(text.lower())
for token in doc:
if(token.text in nlp.Defaults.stop_words or token.text in punctuation):
continue
if(token.pos_ in pos_tag):
result.append(token.text)
return result
توی این بخش از کاربر ورودی میگیریم:
txt = keywords(input("pleas enter the text: "))
چاپ کردن خروجی:
tags = [('' + x[0]) for x in Counter(txt).most_common(5)]
print(', '.join(tags))
البته توی این بخش میتونید توی خط اولش اون 5 رو تغییر بدید اون نشان دهنده ی تعداد کلمات کلیدی ای هستش که قراره براتون چاپ کنه.
کل کد ها:
import spacy
from collections import Counter
from string import punctuation
nlp = spacy.load('en_core_web_sm')
def keywords(text):
result = []
pos_tag = ['ADJ', 'NOUN','DATE']
doc = nlp(text.lower())
for token in doc:
if(token.text in nlp.Defaults.stop_words or token.text in punctuation):
continue
if(token.pos_ in pos_tag):
result.append(token.text)
return result
txt = keywords(input("pleas enter the text: "))
print("keywords:")
tags = [('' + x[0]) for x in Counter(txt).most_common(5)]
print(', '.join(tags))
تست برنامه:
ما برای تست خروجی همون متنی رو که اول توی بخش keywords چیست داده بودم رو به برنامه میدیم.
pleas enter the text: i saw an notebook in stationery yesterday
keywords:
notebook, stationery, yesterday
همینطور که میبینید برنامه ورودی رو گرفته و کلمات کلیدی رو پایینش چاپ کرده.
البته چون جمله کوچیک بود برای من ۳ تا کلمه ی کلیدی استخراج کرد، اما ما توی خط یکی مونده به آخر برنامه حداکثر ۵ تا کلمه ی کلیدی برای تعیین کردیم، شما میتونید تغییرش بدید، مثلا اگر متنتون خیلی گنده بود میتونید حداکثر رو به ۱۰ تا تغییر بدید تا نوشتتون بهتر معرفی بشه.
به پایان این مطلب رسیدیم.
امیدوارم از این آموزش خوشتون اومده باشه و به دردتون خورده باشه.
تا آموزش بعدی خدانگهدار
مطلبی دیگر از این انتشارات
کتابخانه های مورد نیاز برای NLP
مطلبی دیگر از این انتشارات
خلاصه سازی متن با پردازش زبان طبیعی
مطلبی دیگر از این انتشارات
استخراج اجزای جمله با پردازش زبان طبیعی