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

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

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

comments powered by Disqus

Содержание