В этой статье вы увидите различные методы удаления стоп-слов из строк в Python. Стоп-слова - это слова на естественном языке, которые имеют очень мало значения, такие как «есть», «an», «the» и т. Д. Поисковые системы и другие корпоративные платформы индексирования часто фильтруют стоп-слова при извлечении результатов из базы данных по пользовательские запросы.
Стоп-слова часто удаляются из текста перед обучением моделей глубокого обучения и машинного обучения, поскольку стоп-слова встречаются в изобилии, а значит, практически не предоставляют уникальной информации, которую можно использовать для классификации или кластеризации.
Удаление стоп-слов с помощью Python
С языком программирования Python у вас есть множество опций для удаления стоп-слов из строк. Вы можете использовать одну из нескольких библиотек обработки естественного языка, таких как NLTK, SpaCy, Gensim, TextBlob и т. Д., Или, если вам нужен полный контроль над стоп-словами, которые вы хотите удалить, вы можете написать свой собственный сценарий.
В этой статье вы увидите несколько различных подходов в зависимости от библиотеки НЛП, которую вы используете.
Использование библиотеки Python NLTK
Библиотека 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.tokenize
Затем мы создаем переменный text
, который
содержит простое предложение. Предложение в text
переменной
токенизируется (делится на слова) с помощью word_tokenize()
. Затем мы
перебираем все слова в text_tokens
и проверяем, существует ли слово в
коллекции стоп-слов или нет. Если слово не существует в коллекции
стоп-слов, оно возвращается и добавляется в список tokens_without_sw
Затем 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
слов была удалена.
Вы также можете добавить список слов в список 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', '.']
Удаление стоп-слов из списка стоп-слов NLTK по умолчанию
Поскольку 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
не было удалено из
входного предложения.
Использование библиотеки Python Gensim
Библиотека
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 сохраняет стоп-слова по умолчанию в объекте замороженного набора.
Добавление стоп-слов в список стоп-слов Gensim по умолчанию
Чтобы получить доступ к списку стоп-слов Gensim, вам необходимо
импортировать замороженный набор STOPWORDS
из пакета
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()
для объекта замороженного набора, который содержит
список стоп-слов. Вам необходимо передать набор стоп-слов, которые вы
хотите удалить из замороженного набора, в метод 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 в Python - еще один чрезвычайно полезный язык для обработки естественного языка в Python.
Чтобы установить SpaCy, вы должны выполнить следующий скрипт на своем командном терминале:
$ pip install -U spacy
После загрузки библиотеки вам также необходимо загрузить языковую модель. В SpaCy существует несколько моделей для разных языков. Мы будем устанавливать англоязычную модель. Выполните в своем терминале следующую команду:
$ 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', '.']
Добавление и удаление стоп-слов в списке стоп-слов по умолчанию SpaCy
Как и другие библиотеки НЛП, вы также можете добавлять или удалять стоп-слова из списка стоп-слов по умолчанию в 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', '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'}
Выходные данные показывают, что в списке стоп-слов по умолчанию в библиотеке SpaCy содержится 326 стоп-слов.
Добавление стоп-слов в список стоп-слов SpaCy по умолчанию
Список стоп-слов 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
методу 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
не было удалено из входного
предложения.
Использование специального скрипта для удаления стоп-слов
В предыдущем разделе вы видели, как мы можем использовать различные библиотеки для удаления стоп-слов из строки в 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
представляет собой простой список строк, вы
можете добавлять в него слова или удалять их. Например, давайте добавим
слово 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
из списка стоп-слов и снова
применим удаление стоп-слова к нашему входному предложению:
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. Вы также увидели, как добавлять или удалять стоп-слова из списков стоп-слов по умолчанию, предоставляемых различными библиотеками. В конце мы показали, как это можно сделать, если у вас есть собственный скрипт для удаления стоп-слов.