وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

حذف کلمات توقف از رشته ها در پایتون

0 9
زمان لازم برای مطالعه: 13 دقیقه


در این مقاله قصد دارید تکنیک های مختلفی را برای حذف کلمات توقف از رشته ها در پایتون مشاهده کنید. کلمات Stop آن دسته از کلمات در زبان طبیعی هستند که معنی بسیار کمی دارند، مانند “is”، “an”، “the”، و غیره. موتورهای جستجو و سایر پلتفرم‌های نمایه‌سازی سازمانی اغلب کلمات توقف را فیلتر می‌کنند در حالی که نتایج را از پایگاه داده در مقابل دریافت می‌کنند. کاربر پرس و جو می کند

کلمات توقف اغلب قبل از آموزش مدل‌های یادگیری عمیق و یادگیری ماشین از متن حذف می‌شوند، زیرا کلمات توقف به وفور اتفاق می‌افتند، از این رو اطلاعات منحصر به فرد کمی ارائه می‌شود که می‌تواند برای طبقه‌بندی یا خوشه‌بندی استفاده شود.

حذف Stop Words با پایتون

با زبان برنامه نویسی پایتون، گزینه های بی شماری برای حذف کلمات توقف از رشته ها دارید. می‌توانید از یکی از چندین کتابخانه پردازش زبان طبیعی مانند NLTK، SpaCy، Gensim، TextBlob و غیره استفاده کنید یا اگر به کنترل کامل نیاز دارید. روی کلمات توقفی که می خواهید حذف کنید، می توانید اسکریپت سفارشی خود را بنویسید.

در این مقاله شما بسته به رویکردهای متفاوتی را مشاهده خواهید کرد روی کتابخانه NLP که از آن استفاده می کنید.

با استفاده از کتابخانه NLTK پایتون

را NLTK کتابخانه یکی از قدیمی ترین و رایج ترین کتابخانه های پایتون برای پردازش زبان طبیعی است. NLTK از حذف کلمه توقف پشتیبانی می کند و می توانید لیستی از کلمات توقف را در آن پیدا کنید corpus مدول. برای حذف کلمات توقف از یک جمله، می توانید متن خود را به کلمات تقسیم کنید و سپس در صورت خارج شدن از لیست کلمات توقف ارائه شده توسط NLTK، کلمه را حذف کنید.

بیایید یک مثال ساده را ببینیم:

from nltk.corpus import stopwords
nltk.download('stopwords')
from nltk.tokenize import word_tokenize

text = "Nick likes to play football, however he is not too fond of tennis."
text_tokens = word_tokenize(text)

tokens_without_sw = (word for word in text_tokens if not word in stopwords.words())

print(tokens_without_sw)

در اسکریپت بالا، ما ابتدا import را stopwords مجموعه از nltk.corpus مدول. بعد، ما import را word_tokenize() روش از nltk.tokenize کلاس سپس یک متغیر ایجاد می کنیم text، که شامل یک جمله ساده است. جمله در text متغیر با استفاده از علامت نشانه گذاری می شود (به کلمات تقسیم می شود). word_tokenize() روش. در مرحله بعد، تمام کلمات موجود در آن را تکرار می کنیم text_tokens لیست می کند و بررسی می کند که آیا کلمه در مجموعه کلمات توقف وجود دارد یا خیر. اگر کلمه در مجموعه توقف کلمه وجود نداشته باشد، برگردانده شده و به آن اضافه می شود tokens_without_sw فهرست را tokens_without_sw سپس لیست چاپ می شود.

در اینجا چگونه جمله بدون کلمات توقف به نظر می رسد:

('Nick', 'likes', 'play', 'football', ',', 'however', 'fond', 'tennis', '.')

شما می توانید ببینید که کلمات to، he، is، not، و too از حکم حذف شده اند.

شما می توانید به لیست کلمات بالا بپیوندید تا یک جمله بدون کلمات توقف ایجاد کنید، همانطور که در زیر نشان داده شده است:

filtered_sentence = (" ").join(tokens_without_sw)
print(filtered_sentence)

در اینجا خروجی است:

Nick likes play football , however fond tennis .

افزودن یا حذف کلمات توقف در فهرست کلمات توقف پیش‌فرض NLTK

می‌توانید طبق انتخاب خود کلمات توقف را به مجموعه موجود کلمات توقف در NLTK اضافه یا حذف کنید. قبل از حذف یا اضافه کردن کلمات توقف در NLTK، بیایید لیست تمام کلمات توقف انگلیسی پشتیبانی شده توسط NLTK را ببینیم:

print(stopwords.words('english'))

خروجی:

('i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'روی', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should', "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", 'didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't", 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", 'wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't")

افزودن Stop Words به فهرست پیش‌فرض NLTK Stop Word

برای افزودن یک کلمه به مجموعه کلمات توقف NLTK، ابتدا یک شی از قسمت ایجاد کنید stopwords.words('english') فهرست در مرحله بعد، از append() روش روی لیستی برای افزودن هر کلمه ای به لیست

اسکریپت زیر کلمه را اضافه می کند play به مجموعه کلمات توقف NLTK. باز هم تمام کلمات را از خود حذف می کنیم text متغیر برای دیدن اینکه آیا کلمه play حذف می شود یا خیر

all_stopwords = stopwords.words('english')
all_stopwords.append('play')

text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords)

print(tokens_without_sw)

خروجی:

('Nick', 'likes', 'football', ',', 'however', 'fond', 'tennis', '.')

خروجی نشان می دهد که کلمه play حذف شده است.

همچنین می توانید لیستی از کلمات را به آن اضافه کنید stopwords.words لیست با استفاده از append روش، همانطور که در زیر نشان داده شده است:

sw_list = ('likes','play')
all_stopwords.extend(sw_list)

text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords)

print(tokens_without_sw)

اسکریپت بالا دو کلمه اضافه می کند likes و play به stopwords.word فهرست در خروجی، این دو کلمه را مانند شکل زیر مشاهده نخواهید کرد:

خروجی:

('Nick', 'football', ',', 'however', 'fond', 'tennis', '.')

حذف Stop Words از فهرست پیش‌فرض NLTK Stop Word

از آنجا که stopwords.word('english') فقط یک لیست از موارد است، شما می توانید موارد را مانند هر لیست دیگری از این لیست حذف کنید. ساده ترین راه برای انجام این کار از طریق remove() روش. این برای زمانی مفید است که برنامه شما نیاز به کلمه توقف دارد تا حذف نشود. برای مثال، ممکن است لازم باشد این کلمه را حفظ کنید not در یک جمله برای دانستن اینکه چه زمانی یک گزاره نفی می شود.

اسکریپت زیر کلمه توقف را حذف می کند not از لیست پیش فرض کلمات توقف در NLTK:

all_stopwords = stopwords.words('english')
all_stopwords.remove('not')

text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords)

print(tokens_without_sw)

خروجی:

('Nick', 'likes', 'play', 'football', ',', 'however', 'not', 'fond', 'tennis', '.')

از خروجی، می توانید این کلمه را ببینید not از جمله ورودی حذف نشده است.

با استفاده از کتابخانه Gensim پایتون

کتابخانه Gensim یک کتابخانه بسیار مفید دیگر برای حذف کلمات توقف از یک رشته در پایتون است. تنها کاری که باید انجام دهید این است که import را remove_stopwords() روش از gensim.parsing.preprocessing مدول. در مرحله بعد، باید جمله خود را که می خواهید کلمات توقف را از آن حذف کنید، به آن منتقل کنید remove_stopwords() روشی که رشته متنی را بدون کلمات توقف باز می گرداند.

بیایید نگاهی به یک مثال ساده از روش حذف کلمات توقف از طریق کتابخانه Gensim بیاندازیم.

from gensim.parsing.preprocessing import remove_stopwords

text = "Nick likes to play football, however he is not too fond of tennis."
filtered_sentence = remove_stopwords(text)

print(filtered_sentence)

خروجی:

Nick likes play football, fond tennis.

ذکر این نکته ضروری است که خروجی پس از حذف کلمات توقف با استفاده از کتابخانه های NLTK و Gensim متفاوت است. به عنوان مثال، کتابخانه Gensim این کلمه را در نظر گرفت however یک کلمه توقف باشد در حالی که NLTK این کار را نکرده است و از این رو آن را حذف نکرده است. این نشان می دهد که هیچ قاعده سخت و سریعی وجود ندارد که کلمه توقف چیست و چه نیست. همه چیز به وظیفه ای که قرار است انجام دهید بستگی دارد.

در بخش بعدی، روش افزودن یا حذف کلمات توقف را به مجموعه موجود از کلمات توقف در Gensim خواهید دید.

افزودن و حذف کلمات توقف در فهرست کلمات توقف پیش‌فرض Gensim

بیایید ابتدا نگاهی به کلمات توقف در کتابخانه Gensim پایتون بیندازیم:

import gensim
all_stopwords = gensim.parsing.preprocessing.STOPWORDS
print(all_stopwords)

خروجی:

frozenset({'her', 'during', 'among', 'thereafter', 'only', 'hers', 'in', 'none', 'with', 'un', 'put', 'hence', 'each', 'would', 'have', 'to', 'itself', 'that', 'seeming', 'hereupon', 'someone', 'eight', 'she', 'forty', 'much', 'throughout', 'less', 'was', 'interest', 'elsewhere', 'already', 'whatever', 'or', 'seem', 'fire', 'however', 'keep', 'detail', 'both', 'yourselves', 'indeed', 'enough', 'too', 'us', 'wherein', 'himself', 'behind', 'everything', 'part', 'made', 'thereupon', 'for', 'nor', 'before', 'front', 'sincere', 'really', 'than', 'alone', 'doing', 'amongst', 'across', 'him', 'another', 'some', 'whoever', 'four', 'other', 'latterly', 'off', 'sometime', 'above', 'often', 'herein', 'am', 'whereby', 'although', 'who', 'should', 'amount', 'anyway', 'else', 'upon', 'this', 'when', 'we', 'few', 'anywhere', 'will', 'though', 'being', 'fill', 'used', 'full', 'thru', 'call', 'whereafter', 'various', 'has', 'same', 'former', 'whereas', 'what', 'had', 'mostly', 'onto', 'go', 'could', 'yourself', 'meanwhile', 'beyond', 'beside', 'ours', 'side', 'our', 'five', 'nobody', 'herself', 'is', 'ever', 'they', 'here', 'eleven', 'fifty', 'therefore', 'nothing', 'not', 'mill', 'without', 'whence', 'get', 'whither', 'then', 'no', 'own', 'many', 'anything', 'etc', 'make', 'from', 'against', 'ltd', 'next', 'afterwards', 'unless', 'while', 'thin', 'beforehand', 'by', 'amoungst', 'you', 'third', 'as', 'those', 'done', 'becoming', 'say', 'either', 'doesn', 'twenty', 'his', 'yet', 'latter', 'somehow', 'are', 'these', 'mine', 'under', 'take', 'whose', 'others', 'over', 'perhaps', 'thence', 'does', 'where', 'two', 'always', 'your', 'wherever', 'became', 'which', 'about', 'but', 'towards', 'still', 'rather', 'quite', 'whether', 'somewhere', 'might', 'do', 'bottom', 'until', 'km', 'yours', 'serious', 'find', 'please', 'hasnt', 'otherwise', 'six', 'toward', 'sometimes', 'of', 'fifteen', 'eg', 'just', 'a', 'me', 'describe', 'why', 'an', 'and', 'may', 'within', 'kg', 'con', 're', 'nevertheless', 'through', 'very', 'anyhow', 'down', 'nowhere', 'now', 'it', 'cant', 'de', 'move', 'hereby', 'how', 'found', 'whom', 'were', 'together', 'again', 'moreover', 'first', 'never', 'below', 'between', 'computer', 'ten', 'into', 'see', 'everywhere', 'there', 'neither', 'every', 'couldnt', 'up', 'several', 'the', 'i', 'becomes', 'don', 'ie', 'been', 'whereupon', 'seemed', 'most', 'noone', 'whole', 'must', 'cannot', 'per', 'my', 'thereby', 'so', 'he', 'name', 'co', 'its', 'everyone', 'if', 'become', 'thick', 'thus', 'regarding', 'didn', 'give', 'all', 'show', 'any', 'using', 'روی', 'further', 'around', 'back', 'least', 'since', 'anyone', 'once', 'can', 'bill', 'hereafter', 'be', 'seems', 'their', 'myself', 'nine', 'also', 'system', 'at', 'more', 'out', 'twelve', 'therein', 'almost', 'except', 'last', 'did', 'something', 'besides', 'via', 'whenever', 'formerly', 'cry', 'one', 'hundred', 'sixty', 'after', 'well', 'them', 'namely', 'empty', 'three', 'even', 'along', 'because', 'ourselves', 'such', 'top', 'due', 'inc', 'themselves'})

می توانید ببینید که مجموعه پیش فرض Gensim از کلمات توقف در مقایسه با NLTK بسیار دقیق تر است. همچنین، Gensim کلمات توقف پیش‌فرض را در یک شیء مجموعه ثابت ذخیره می‌کند.

افزودن Stop Words به فهرست پیش‌فرض Gensim Stop Words

برای دسترسی به لیست کلمات توقف Gensim، باید import مجموعه یخ زده STOPWORDS از gensim.parsing.preprocessong بسته بندی مجموعه منجمد در پایتون نوعی مجموعه غیرقابل تغییر است. شما نمی توانید عناصر را در یک مجموعه ثابت اضافه یا حذف کنید. بنابراین، برای اضافه کردن یک عنصر، باید از آن استفاده کنید union تابع روی مجموعه منجمد و آن را به مجموعه ای از کلمات توقف جدید منتقل کنید. را union متد یک مجموعه جدید را برمی گرداند که حاوی کلمات توقف جدید اضافه شده شما است، همانطور که در زیر نشان داده شده است.

اسکریپت زیر اضافه می کند likes و play به لیست کلمات توقف در Gensim:

from gensim.parsing.preprocessing import STOPWORDS

all_stopwords_gensim = STOPWORDS.union(set(('likes', 'play')))

text = "Nick likes to play football, however he is not too fond of tennis."
text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords_gensim)

print(tokens_without_sw)

خروجی:

('Nick', 'football', ',', 'fond', 'tennis', '.')

از خروجی بالا می بینید که کلمات like و play به عنوان کلمات توقف در نظر گرفته شده اند و در نتیجه از جمله ورودی حذف شده اند.

حذف Stop Words از فهرست پیش‌فرض Gensim Stopword

برای حذف کلمات توقف از لیست کلمات توقف Gensim، باید با آن تماس بگیرید difference() روش روی شیء منجمد مجموعه، که حاوی لیستی از کلمات توقف است. باید مجموعه‌ای از کلمات توقف را که می‌خواهید از مجموعه ثابت حذف کنید به آن ارسال کنید difference() روش. را difference() متد مجموعه ای را برمی گرداند که حاوی تمام کلمات توقف است بجز آنهایی که به difference() روش.

اسکریپت زیر کلمه را حذف می کند not از مجموعه کلمات توقف در Gensim:

from gensim.parsing.preprocessing import STOPWORDS

all_stopwords_gensim = STOPWORDS
sw_list = {"not"}
all_stopwords_gensim = STOPWORDS.difference(sw_list)

text = "Nick likes to play football, however he is not too fond of tennis."
text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords_gensim)

print(tokens_without_sw)

خروجی:

('Nick', 'likes', 'play', 'football', ',', 'not', 'fond', 'tennis', '.')

از آنجایی که کلمه not اکنون از مجموعه کلمات توقف حذف شده است، می بینید که پس از حذف کلمه توقف از جمله ورودی حذف نشده است.

با استفاده از کتابخانه SpaCy

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

برای نصب SpaCy باید اسکریپت زیر را اجرا کنید روی فرمان شما terminal:

$ pip install -U spacy

پس از دانلود کتابخانه، باید مدل زبان را نیز دانلود کنید. چندین مدل در SpaCy برای زبان های مختلف وجود دارد. ما مدل زبان انگلیسی را نصب خواهیم کرد. دستور زیر را در خود اجرا کنید terminal:

$ python -m spacy download en

هنگامی که مدل زبان دانلود شد، می توانید با استفاده از SpaCy کلمات توقف را از متن حذف کنید. به اسکریپت زیر نگاه کنید:

import spacy
sp = spacy.load('en_core_web_sm')

all_stopwords = sp.Defaults.stop_words

text = "Nick likes to play football, however he is not too fond of tennis."
text_tokens = word_tokenize(text)
tokens_without_sw= (word for word in text_tokens if not word in all_stopwords)

print(tokens_without_sw)

در اسکریپت بالا ابتدا مدل زبان را بارگذاری کرده و در آن ذخیره می کنیم sp متغیر. را sp.Default.stop_words مجموعه ای از کلمات توقف پیش فرض برای مدل زبان انگلیسی در SpaCy است. در مرحله بعد، ما به سادگی هر کلمه را در متن ورودی تکرار می کنیم و اگر کلمه در مجموعه کلمات توقف مدل زبان SpaCy وجود داشته باشد، کلمه حذف می شود.

در اینجا خروجی است:

خروجی:

('Nick', 'likes', 'play', 'football', ',', 'fond', 'tennis', '.')

افزودن و حذف Stop Words در SpaCy Default Stop Word List

مانند سایر کتابخانه‌های NLP، می‌توانید کلمات توقف را نیز از فهرست کلمات توقف پیش‌فرض در Spacy اضافه یا حذف کنید. اما قبل از آن، لیستی از تمام کلمات توقف موجود در SpaCy را خواهیم دید.

print(len(all_stopwords))
print(all_stopwords)

خروجی:

326
{'whence', 'here', 'show', 'were', 'why', 'n’t', 'the', 'whereupon', 'not', 'more', 'how', 'eight', 'indeed', 'i', 'only', 'via', 'nine', 're', 'themselves', 'almost', 'to', 'already', 'front', 'least', 'becomes', 'thereby', 'doing', 'her', 'together', 'be', 'often', 'then', 'quite', 'less', 'many', 'they', 'ourselves', 'take', 'its', 'yours', 'each', 'would', 'may', 'namely', 'do', 'whose', 'whether', 'side', 'both', 'what', 'between', 'toward', 'our', 'whereby', "'m", 'formerly', 'myself', 'had', 'really', 'call', 'keep', "'re", 'hereupon', 'can', 'their', 'eleven', '’m', 'even', 'around', 'twenty', 'mostly', 'did', 'at', 'an', 'seems', 'serious', 'against', "n't", 'except', 'has', 'five', 'he', 'last', '‘ve', 'because', 'we', 'himself', 'yet', 'something', 'somehow', '‘m', 'towards', 'his', 'six', 'anywhere', 'us', '‘d', 'thru', 'thus', 'which', 'everything', 'become', 'herein', 'one', 'in', 'although', 'sometime', 'give', 'cannot', 'besides', 'across', 'noone', 'ever', 'that', 'over', 'among', 'during', 'however', 'when', 'sometimes', 'still', 'seemed', 'get', "'ve", 'him', 'with', 'part', 'beyond', 'everyone', 'same', 'this', 'latterly', 'no', 'regarding', 'elsewhere', 'others', 'moreover', 'else', 'back', 'alone', 'somewhere', 'are', 'will', 'beforehand', 'ten', 'very', 'most', 'three', 'former', '’re', 'otherwise', 'several', 'also', 'whatever', 'am', 'becoming', 'beside', '’s', 'nothing', 'some', 'since', 'thence', 'anyway', 'out', 'up', 'well', 'it', 'various', 'four', 'top', '‘s', 'than', 'under', 'might', 'could', 'by', 'too', 'and', 'whom', '‘ll', 'say', 'therefore', "'s", 'other', 'throughout', 'became', 'your', 'put', 'per', "'ll", 'fifteen', 'must', 'before', 'whenever', 'anyone', 'without', 'does', 'was', 'where', 'thereafter', "'d", 'another', 'yourselves', 'n‘t', 'see', 'go', 'wherever', 'just', 'seeming', 'hence', 'full', 'whereafter', 'bottom', 'whole', 'own', 'empty', 'due', 'behind', 'while', 'onto', 'wherein', 'off', 'again', 'a', 'two', 'above', 'therein', 'sixty', 'those', 'whereas', 'using', 'latter', 'used', 'my', 'herself', 'hers', 'or', 'neither', 'forty', 'thereupon', 'now', 'after', 'yourself', 'whither', 'rather', 'once', 'from', 'until', 'anything', 'few', 'into', 'such', 'being', 'make', 'mine', 'please', 'along', 'hundred', 'should', 'below', 'third', 'unless', 'upon', 'perhaps', 'ours', 'but', 'never', 'whoever', 'fifty', 'any', 'all', 'nobody', 'there', 'have', 'anyhow', 'of', 'seem', 'down', 'is', 'every', '’ll', 'much', 'none', 'further', 'me', 'who', 'nevertheless', 'about', 'everywhere', 'name', 'enough', '’d', 'next', 'meanwhile', 'though', 'through', 'روی', 'first', 'been', 'hereby', 'if', 'move', 'so', 'either', 'amongst', 'for', 'twelve', 'nor', 'she', 'always', 'these', 'as', '’ve', 'amount', '‘re', 'someone', 'afterwards', 'you', 'nowhere', 'itself', 'done', 'hereafter', 'within', 'made', 'ca', 'them'}

خروجی نشان می دهد که 326 کلمه توقف در لیست پیش فرض کلمات توقف در کتابخانه SpaCy وجود دارد.

افزودن Stop Words به فهرست پیش‌فرض SpaCy Stop Words

لیست کلمات توقف SpaCy اساساً مجموعه ای از رشته ها است. شما می توانید یک کلمه جدید به مجموعه اضافه کنید، همانطور که هر مورد جدیدی را به یک مجموعه اضافه می کنید.

به اسکریپت زیر نگاه کنید که در آن کلمه را اضافه می کنیم tennis به لیست موجود از کلمات توقف در Spacy:

import spacy
sp = spacy.load('en_core_web_sm')

all_stopwords = sp.Defaults.stop_words
all_stopwords.add("tennis")

text = "Nick likes to play football, however he is not too fond of tennis."
text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords)

print(tokens_without_sw)

خروجی:

('Nick', 'likes', 'play', 'football', ',', 'fond', '.')

خروجی نشان می دهد که کلمه tennis از جمله ورودی حذف شده است.

همچنین می توانید مانند شکل زیر چندین کلمه را به لیست کلمات توقف در SpaCy اضافه کنید. اسکریپت زیر اضافه می کند likes و tennis به لیست کلمات توقف در SpaCy:

import spacy
sp = spacy.load('en_core_web_sm')

all_stopwords = sp.Defaults.stop_words
all_stopwords |= {"likes","tennis",}

text = "Nick likes to play football, however he is not too fond of tennis."
text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords)

print(tokens_without_sw)

خروجی:

('Nick', 'play', 'football', ',', 'fond', '.')

خروجی این کلمات را نشان می دهد likes و tennis هر دو از جمله ورودی حذف شده اند.

حذف کلمات توقف از فهرست کلمات توقف پیش‌فرض SpaCy

برای حذف یک کلمه از مجموعه کلمات توقف در SpaCy، می توانید کلمه حذف را به آن منتقل کنید remove روش مجموعه

اسکریپت زیر کلمه را حذف می کند not از مجموعه کلمات توقف در SpaCy:

import spacy
sp = spacy.load('en_core_web_sm')

all_stopwords = sp.Defaults.stop_words
all_stopwords.remove('not')

text = "Nick likes to play football, however he is not too fond of tennis."
text_tokens = word_tokenize(text)
tokens_without_sw = (word for word in text_tokens if not word in all_stopwords)

print(tokens_without_sw)

خروجی:

('Nick', 'play', 'football', ',', 'not', 'fond', '.')

در خروجی می توانید کلمه را ببینید not از جمله ورودی حذف نشده است.

استفاده از اسکریپت سفارشی برای حذف کلمات توقف

در بخش قبل، روش استفاده از کتابخانه های مختلف را برای حذف کلمات توقف از یک رشته در پایتون مشاهده کردید. اگر می‌خواهید کنترل کامل بر حذف کلمه توقف داشته باشید، می‌توانید اسکریپت خود را برای حذف کلمات توقف از رشته خود بنویسید.

اولین قدم در این زمینه، تعریف لیستی از کلماتی است که می خواهید به عنوان کلمات توقف در نظر گرفته شوند. بیایید فهرستی از برخی از متداول ترین کلمات توقف استفاده را ایجاد کنیم:

my_stopwords = ('i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'روی', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should', "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", 'didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't", 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", 'wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't")

در مرحله بعد، تابعی را تعریف می کنیم که یک رشته را به عنوان پارامتر می پذیرد و جمله را بدون کلمات توقف باز می گرداند:

def remove_mystopwords(sentence):
    tokens = sentence.split(" ")
    tokens_filtered= (word for word in text_tokens if not word in my_stopwords)
    return (" ").join(tokens_filtered)

اکنون بیایید سعی کنیم کلمات توقف را از یک جمله نمونه حذف کنیم:

text = "Nick likes to play football, however he is not too fond of tennis."
filtered_text = remove_mystopwords(text)
print(filtered_text)

خروجی:

Nick likes play , however fond tennis .

شما می توانید آن کلمات توقفی را ببینید که در آن وجود دارد my_stopwords لیست از جمله ورودی حذف شده است.

از آنجا که my_stopwords لیست یک لیست ساده از رشته ها است، شما می توانید کلمات را به آن اضافه یا حذف کنید. مثلاً یک کلمه اضافه کنیم football در لیست my_stopwords و دوباره کلمات توقف را از جمله ورودی حذف کنید:

text = "Nick likes to play football, however he is not too fond of tennis."
filtered_text = remove_mystopwords(text)
print(filtered_text)

خروجی:

Nick likes play , however fond tennis .

خروجی اکنون این کلمه را نشان می دهد football همچنین از جمله ورودی حذف می شود زیرا ما کلمه را در لیست کلمات توقف سفارشی خود اضافه کردیم.

حالا بیایید کلمه را حذف کنیم football از لیست stop word و دوباره حذف stop word را به جمله ورودی خود اعمال کنید:

my_stopwords.remove("football")

text = "Nick likes to play football, however he is not too fond of tennis."
filtered_text = remove_mystopwords(text)
print(filtered_text)

خروجی:

Nick likes play football , however fond tennis .

کلمه football از زمانی که ما آن را از لیست لیست کلمات توقف خود حذف کردیم، اکنون حذف نشده است.

نتیجه

در این مقاله کتابخانه های مختلفی را مشاهده کردید که می توان از آنها برای حذف کلمات توقف از یک رشته در پایتون استفاده کرد. همچنین روش افزودن یا حذف کلمات توقف را از لیست کلمات توقف پیش فرض ارائه شده توسط کتابخانه های مختلف مشاهده کردید. در پایان، نشان دادیم که اگر از یک اسکریپت سفارشی برای حذف کلمات توقف استفاده می‌کنید، چگونه می‌توان این کار را انجام داد.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-18 01:11:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید