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