از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
حذف کلمات توقف از رشته ها در پایتون
سرفصلهای مطلب
در این مقاله قصد دارید تکنیک های مختلفی را برای حذف کلمات توقف از رشته ها در پایتون مشاهده کنید. کلمات 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