Все о стоп-словах в обработке естественного языка вместе с практическими примерами.
В этой статье мы узнаем все о стоп-словах для обработки естественного языка.
В вычислениях стоп-слова - это слова, которые отфильтровываются до или после обработки данных естественного языка (текста). Хотя «стоп-слова» обычно относятся к наиболее употребительным словам в языке, инструменты обработки естественного языка не используют единый универсальный список стоп-слов.
«Стоп-слова» обычно относятся к наиболее употребительным словам в языке. Не существует универсального списка «стоп-слов», который используется всеми инструментами НЛП совместно.
В этой статье мы рассмотрим следующие темы:
- Что такое стоп-слова
- Когда удалять стоп-слова
- За и против
- Как удалить стоп-слова в Python с помощью:
* Библиотеки NLTK
* Библиотеки SpaCy
* Библиотеки Gensim
* Пользовательских стоп-слов
Что такое стоп-слова?
Стоп-слова - это слова на любом языке, не придающие особого значения предложению. Их можно спокойно игнорировать, не жертвуя смыслом предложения. Для некоторых поисковых систем это одни из самых распространенных коротких служебных слов, например, есть, at, which и on. В этом случае стоп-слова могут вызвать проблемы при поиске фраз, которые их включают, особенно в таких именах, как «Кто» или «Возьми это».
Когда удалять стоп-слова?
Если перед нами стоит задача классификации текста или анализа тональности, мы должны удалить стоп-слова, поскольку они не предоставляют никакой информации для нашей модели, то есть не позволяют нежелательным словам не попадать в наш корпус, но если у нас есть Задача языкового перевода, тогда стоп-слова полезны, так как они должны переводиться вместе с другими словами.
Не существует жесткого правила, когда следует удалять стоп-слова. Но я бы посоветовал удалить стоп-слова, если наша задача - это классификация языков, фильтрация спама, создание титров, автоматическое создание тегов, анализ тональности или что-то, что связано с классификацией текста.
С другой стороны, если наша задача - это машинный перевод, вопросы с ответами на вопросы, обобщение текста, языковое моделирование, лучше не удалять стоп-слова, поскольку они являются важной частью этих приложений.
За и против:
Первое, что мы задаем себе, - это каковы плюсы и минусы любой задачи, которую мы выполняем. Давайте посмотрим на некоторые плюсы и минусы удаления стоп-слов в НЛП.
Плюсы:
* Стоп-слова часто удаляются из текста перед обучением моделей глубокого обучения и машинного обучения, поскольку стоп-слова встречаются в изобилии, поэтому они практически не предоставляют уникальной информации, которую можно использовать для классификации. или кластеризация.
* При удалении игнорируемых слов размер набора данных уменьшается, и время обучения модели также уменьшается без значительного влияния на точность модели.
* Удаление стоп-слов потенциально может помочь в повышении производительности, так как осталось меньше и только значительных токенов. Таким образом, точность классификации может быть улучшена.
минусы:
Неправильный выбор и удаление стоп-слов может изменить смысл нашего текста. Поэтому мы должны быть осторожны при выборе стоп-слов.
Пример: «Этот фильм не подходит».
Если мы удалим (не) на этапе предварительной обработки, предложение (этот фильм хороший) будет означать, что он положительно, что неверно истолковано.
Как удалить стоп-слова в Python, используя:
Удаление стоп-слов с помощью библиотек Python довольно просто и может быть выполнено разными способами. Пройдем по порядку.
Использование библиотеки NLTK:
Набор инструментов для естественного языка, или чаще NLTK, представляет собой набор библиотек и программ для символьной и статистической обработки естественного языка для английского языка, написанных на языке программирования Python. Он содержит библиотеки обработки текста для токенизации, синтаксического анализа, классификации, выделения корней, тегов и семантического анализа.
Давайте посмотрим, как мы можем удалить стоп-слова с помощью библиотеки Python NLTK.
Мы можем заметить, что такие слова, как «this», «is», «will», «do», «more», «such», удаляются из токенизированного вектора, поскольку они являются частью набора игнорируемых слов NLTK. Мы можем просмотреть все такие стоп-слова для английского языка, напечатав стоп-слова.
Использование библиотеки SpaCy:
spaCy - это программная библиотека с открытым исходным кодом для расширенной обработки естественного языка. spaCy разработан специально для производственного использования и помогает создавать приложения, которые обрабатывают и «понимают» большие объемы текста. Его можно использовать для построения систем извлечения информации или понимания естественного языка или для предварительной обработки текста для глубокого обучения.
Прежде чем двигаться дальше, убедитесь, что вы установили spaCy и его английскую языковую модель. Для этого вы можете использовать следующие команды.
$ pip install -U spacy $ python -m spacy download en_core_web_sm
Давайте посмотрим, как с помощью этой библиотеки можно удалить стоп-слова.
Вывод токенизированных векторов NLTK и spaCy без стоп-слов одинаков. Но у spaCy был больший набор стоп-слов (326), чем у NLTK (179).
Использование библиотеки Gensim:
Gensim - это библиотека с открытым исходным кодом для неконтролируемого моделирования тем и обработки естественного языка с использованием современного статистического машинного обучения. Gensim предназначен для обработки больших текстовых коллекций с использованием потоковых данных и инкрементных онлайн-алгоритмов, что отличает его от большинства других программных пакетов машинного обучения, ориентированных только на обработку в памяти. Подробнее читайте в документации Gensim.
Используя Gensim, мы можем напрямую вызвать remove_stopwords (), который является методом gensim.parsing.preprocessing. Затем нам нужно передать наше предложение, из которого вы хотите удалить стоп-слова, методу remove_stopwords (), который возвращает текстовую строку без стоп-слов. Затем мы можем токенизировать возвращенные предложения.
Давайте посмотрим, как мы можем удалить стоп-слова с помощью библиотеки Gensim.
Мы можем заметить, что выходные данные NLTK, spaCy и gensim одинаковы, хотя каждый из них имеет другой набор стоп-слов по умолчанию. Давайте посмотрим на 337 стоп-слов Gensim.
Пользовательские стоп-слова:
Если вам кажется, что стоп-слов по умолчанию в любом языковом средстве Python NLP слишком много и они вызывают потерю информации, или слишком мало, чтобы удалить все ненужные слова из вашего corpus, то мы можем выбрать собственный список стоп-слов.
Для этого вы можете просто получить стоп-слова по умолчанию в список и добавить или удалить требуемые слова из списка в соответствии с требованиями.
Если нам нужно очень мало стоп-слов, мы можем определить наш собственный список стоп-слов и использовать его для удаления соответствующих слов из нашего корпуса.
Example: my_stopword_list = [‘the, ‘is’, ‘as’, ‘a’, ‘are’, ‘in’, ‘this’, ‘that’]
Заключение:
В этой статье мы узнали, что такое стоп-слова, плюсы и минусы удаления стоп-слов. В этой статье мы также видели различные библиотеки, которые можно использовать для удаления стоп-слов из строки Python. Вы также узнали, как добавлять или удалять стоп-слова из списков стоп-слов по умолчанию, которые предоставлены различными библиотеками для создания пользовательских списков стоп-слов.
Полный код записной книжки Jupyter доступен в моем GitHub.
Удачного обучения!