Рубрики
Без рубрики

Удаление стоп-слов из строк в Python

В этой статье вы увидите, как удалить стоп-слова с помощью библиотек Python NLTK, Gensim и SpaCy, а также пользовательского скрипта для стоп-слов

Автор оригинала: Usman Malik.

В этой статье вы увидите, как удалить стоп-слова с помощью библиотек Python NLTK, Gensim и SpaCy, а также пользовательского скрипта для стоп-слов

В этой статье вы увидите различные методы удаления стоп-слов из строк в Python. Стоп-слова-это те слова в естественном языке, которые имеют очень мало значения, такие как “есть”, “an”, “the” и т. Д. Поисковые системы и другие корпоративные платформы индексирования часто фильтруют стоп-слова при извлечении результатов из базы данных по запросам пользователей.

Стоп-слова часто удаляются из текста перед обучением моделям глубокого обучения и машинного обучения, поскольку стоп-слова встречаются в изобилии, поэтому они практически не дают уникальной информации, которая может быть использована для классификации или кластеризации.

Удаление стоп – слов с помощью Python

Удаление стоп – слов с помощью Python

В этой статье вы увидите несколько различных подходов, в зависимости от используемой вами библиотеки НЛП.

  • В этой статье вы увидите несколько различных подходов, в зависимости от используемой вами библиотеки НЛП.
  • В этой статье вы увидите несколько различных подходов, в зависимости от используемой вами библиотеки НЛП.
  • В этой статье вы увидите несколько различных подходов, в зависимости от используемой вами библиотеки НЛП.

Использование библиотеки NLTK Python

Библиотека NLTK является одной из старейших и наиболее часто используемых библиотек Python для обработки естественного языка. 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)

В приведенном выше сценарии мы сначала импортируем коллекцию stopwords из модуля nltk.corpus . Затем мы импортируем метод word_tokenize() из класса nltk.tokenizer . Затем мы создаем переменную 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', 'on', '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"]
Добавление стоп-слов в Список стоп-слов NLTK по умолчанию

Чтобы добавить слово в коллекцию стоп-слов 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 было удалено.

Вы также можете добавить список слов в список stop words.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 к стоп-словам .слово список. В выводе вы этого не увидите

Приведенный выше скрипт добавляет два слова || likes || и || play || к стоп-словам||.слово || список. В выводе вы этого не увидите

['Nick', 'football', ',', 'however', 'fond', 'tennis', '.']
Приведенный выше скрипт добавляет два слова || likes || и || play || к стоп-словам||.слово || список. В выводе вы этого не увидите

Поскольку stopwords.word('english') – это просто список элементов, вы можете удалить элементы из этого списка, как и любой другой список. Самый простой способ сделать это-с помощью метода remove () . Это полезно в тех случаях, когда ваше приложение нуждается в стоп-слове, чтобы не быть удаленным. Например, вам может понадобиться сохранить слово not в предложении, чтобы знать, когда утверждение отрицается.

Поскольку stopwords.word('english') – это просто список элементов, вы можете удалить элементы из этого списка, как и любой другой список. Самый простой способ сделать это-с помощью метода

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)

Поскольку || stopwords.word(‘english’) || – это просто список элементов, вы можете удалить элементы из этого списка, как и любой другой список. Самый простой способ сделать это-с помощью метода || remove ()||. Это полезно в тех случаях, когда ваше приложение нуждается в стоп-слове, чтобы не быть удаленным. Например, вам может понадобиться сохранить слово || not || в предложении, чтобы знать, когда утверждение отрицается.

['Nick', 'likes', 'play', 'football', ',', 'however', 'not', 'fond', 'tennis', '.']

Из выходных данных вы можете видеть, что слово not не было удалено из входного предложения.

Использование библиотеки Gensim Python

Библиотека Gensim – это еще одна чрезвычайно полезная библиотека для удаления стоп-слов из строки в Python. Все, что вам нужно сделать, это импортировать метод 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 по умолчанию

Давайте сначала взглянем на стоп-слова в библиотеке Python 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', 'on', '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 хранит стоп-слова по умолчанию в объекте frozenset.

Добавление стоп-слов в Список стоп-слов Gensim по умолчанию

Чтобы получить доступ к списку стоп-слов Gensim, вам необходимо импортировать замороженный набор СТОП-слов из пакета gensim.parsing.preprocessong . Замороженный набор в Python – это тип набора, который является неизменяемым. Вы не можете добавлять или удалять элементы в замороженном наборе. Следовательно, чтобы добавить элемент, вы должны применить функцию 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 были обработаны как стоп-слова и, следовательно, были удалены из входного предложения.

Удаление стоп-слов из списка стоп-слов Gensim по умолчанию

Чтобы удалить стоп-слова из списка стоп-слов Gensim, необходимо вызвать метод difference() для объекта frozenset, содержащего список стоп-слов. Вам нужно передать набор стоп-слов, которые вы хотите удалить из замороженного набора, в метод 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 теперь было удалено из набора стоп-слов, вы можете видеть, что оно не было удалено из входного предложения после удаления стоп-слова.

Использование космической библиотеки

Библиотека пространства в Python – это еще один чрезвычайно полезный язык для обработки естественного языка в Python.

Чтобы установить Space, вы должны выполнить следующий сценарий на вашем командном терминале:

$ pip install -U spacy

После загрузки библиотеки вам также необходимо загрузить языковую модель. В пространстве существует несколько моделей для разных языков. Мы будем устанавливать англоязычную модель. Выполните следующую команду в вашем терминале:

$ python -m spacy download en

После загрузки языковой модели вы можете удалить стоп-слова из текста с помощью пробела. Посмотрите на следующий сценарий:

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 – это набор стоп-слов по умолчанию для английской языковой модели в пространстве. Далее мы просто перебираем каждое слово во входном тексте, и если это слово существует в наборе стоп-слов модели языка пространства, то оно удаляется.

Вот результат:

Выход:

['Nick', 'likes', 'play', 'football', ',', 'fond', 'tennis', '.']

Добавление и удаление стоп-слов в пространстве Список стоп-слов по умолчанию

Как и другие библиотеки НЛП, вы также можете добавлять или удалять стоп-слова из списка стоп-слов по умолчанию в пространстве. Но перед этим мы увидим список всех существующих стоп-слов в Пространстве.

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', 'on', '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'}

Вывод показывает, что в списке стоп-слов по умолчанию в библиотеке Space есть 326 стоп-слов.

Добавление стоп-слов в список стоп-слов по умолчанию

Список пробелов стоп – слов-это в основном набор строк. Вы можете добавить новое слово в набор, как вы бы добавили любой новый элемент в набор.

Посмотрите на следующий скрипт, в котором мы добавляем слово теннис к существующему списку стоп-слов в пространстве:

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', '.']

Вывод показывает, что слово теннис было удалено из входного предложения.

Вы также можете добавить несколько слов в список стоп-слов в пространстве, как показано ниже. Следующий скрипт добавляет лайки и теннис в список стоп-слов в пространстве:

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 были удалены из входного предложения.

Удаление стоп – слов из списка стоп-слов по умолчанию

Чтобы удалить слово из набора стоп – слов в пространстве, вы можете передать слово для удаления в метод remove набора.

Следующий скрипт удаляет слово not из набора стоп-слов в пространстве:

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 не было удалено из входного предложения.

Использование пользовательского скрипта для удаления стоп-слов

В предыдущем разделе вы видели, как мы можем использовать различные библиотеки для удаления стоп-слов из строки в Python. Если вы хотите полностью контролировать удаление стоп-слов, вы можете написать свой собственный скрипт для удаления стоп-слов из вашей строки.

Первым шагом в этом отношении является определение списка слов, которые вы хотите рассматривать как стоп-слова. Давайте составим список наиболее часто используемых стоп-слов:

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', 'on', '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 list-это простой список строк, вы можете добавлять или удалять в него слова. Например, давайте добавим слово футбол в список 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 .

Вывод теперь показывает, что слово футбол также удаляется из входного предложения, когда мы добавили это слово в список наших пользовательских стоп-слов.

Теперь давайте удалим слово футбол из списка стоп-слов и снова применим удаление стоп-слов к нашему входному предложению:

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 .

Слово футбол не было удалено с тех пор, как мы удалили его из списка наших стоп-слов.

Вывод

В этой статье вы видели различные библиотеки, которые можно использовать для удаления стоп-слов из строки в Python. Вы также видели, как добавлять или удалять стоп-слова из списков стоп-слов по умолчанию, предоставляемых различными библиотеками. В конце мы показали, как это можно сделать, если у вас есть собственный скрипт, используемый для удаления стоп-слов.