Обзор

  • Узнайте, как удалить стоп-слова и выполнить нормализацию текста в Python — важное чтение по обработке естественного языка (NLP)
  • Мы рассмотрим различные методы удаления стоп-слов, а также поговорим о методах нормализации текста, таких как стемминг и лемматизация.
  • Примените свою теорию на практике, выполнив удаление стоп-слов и нормализацию текста в Python с помощью популярных библиотек NLTK, spaCy и Gensim.

Введение

Вам не нравится, насколько удивительно разнообразна Обработка естественного языка (NLP)? Вещи, которые мы никогда раньше не представляли возможными, теперь находятся всего в нескольких строках кода. Это восхитительно!

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

Пропустите эти шаги, и мы получим неудачную модель. Это основные методы НЛП, которые вам необходимо включить в свой код, фреймворк и проект.

Мы обсуждали первый шаг о том, как начать работу с НЛП, в этой статье. Давайте продвинемся немного дальше и совершим прыжок. Мы обсудим, как удалить стоп-слова и выполнить нормализацию текста в Python, используя несколько очень популярных библиотек НЛП — NLTK, spaCy, Gensim и TextBlob.

Вы новичок в НЛП? Или хотите начать работу с машинным обучением, но не знаете, с чего начать? В наших комплексных курсах всесторонне рассматриваются эти две области:

Оглавление

  • Что такое стоп-слова?
  • Зачем нам нужно удалять стоп-слова?
  • Когда мы должны удалить стоп-слова?
  • Различные методы удаления стоп-слов
  • Использование НЛТК
  • Использование spaCy
  • Использование Gensim
  • Введение в нормализацию текста
  • Что такое стемминг и лемматизация?
  • Методы стемминга и лемматизации
  • Использование НЛТК
  • Использование spaCy
  • Использование TextBlob

Что такое стоп-слова?

Стоп-слова — самые распространенные слова в любом естественном языке. В целях анализа текстовых данных и построения моделей НЛП эти стоп-слова могут не придавать большого значения смыслу документа.

Как правило, в тексте чаще всего используются слова «the», «is», «in», «for», «where», «when», «to», «at» и т. д.

Рассмотрим эту текстовую строку — «На столе лежит ручка». Теперь слова «is», «a», «on» и «the» не добавляют смысла оператору при его разборе. Принимая во внимание, что такие слова, как «там», «книга» и «стол», являются ключевыми словами и говорят нам, о чем идет речь.

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

Вот основной список стоп-слов, которые могут оказаться полезными:

a about after all also always am an and any are at be been being but by came can cant come could did didn't do does doesn't doing don't else for from get give goes going had happen has have having how i if ill i'm in into is isn't it its i've just keep let like made make many may me mean more most much no not now of only or our really say see some something take tell than that the their them then they thing this to try up us use used uses very want was way we what when where which who why will with without wont you your youre

Зачем нам нужно удалять стоп-слова?

Довольно важный вопрос, и вы должны иметь в виду.

Удаление стоп-слов не является жестким правилом НЛП. Это зависит от задачи, над которой мы работаем. Для таких задач, как классификация текста, когда текст должен быть классифицирован по разным категориям, стоп-слова удаляются или исключаются из заданного текста, чтобы больше внимания можно было уделить тем слов, определяющих смысл текста.

Как мы видели в предыдущем разделе, такие слова, как там, книга и таблица, придают тексту больше смысла по сравнению со словами есть. и включить.

Однако в задачах типа машинный перевод и резюме текста удалять стоп-слова нецелесообразно.

Вот несколько ключевых преимуществ удаления стоп-слов:

  • При удалении стоп-слов размер набора данных уменьшается, а также уменьшается время обучения модели.
  • Удаление стоп-слов потенциально может помочь повысить производительность, поскольку остается меньше и только значимые токены. Таким образом, это может повысить точность классификации
  • Даже поисковые системы, такие как Google, удаляют стоп-слова для быстрого и релевантного поиска данных из базы данных.

Когда мы должны удалить стоп-слова?

Я резюмировал это в двух частях: когда мы можем удалить стоп-слова и когда мы должны избегать этого.

Удалить стоп-слова

Мы можем удалить стоп-слова при выполнении следующих задач:

  • Текстовая классификация
  • Фильтрация спама
  • Классификация языков
  • Жанровая классификация
  • Генерация титров
  • Автоматическая генерация тегов

Избегайте удаления стоп-слов

  • Машинный перевод
  • Языковое моделирование
  • Обобщение текста
  • Проблемы с ответами на вопросы

Не стесняйтесь добавлять в этот список больше задач НЛП!

Различные методы удаления стоп-слов

1. Удаление стоп-слов с помощью NLTK

NLTK, или Natural Language Toolkit, представляет собой кладезь библиотек для предварительной обработки текста. Это одна из моих любимых библиотек Python. NLTK имеет список стоп-слов, хранящихся на 16 разных языках.

Вы можете использовать приведенный ниже код, чтобы увидеть список стоп-слов в NLTK:

import nltk 
from nltk.corpus 
import stopwords set(stopwords.words('english'))

Теперь, чтобы удалить стоп-слова с помощью NLTK, вы можете использовать следующий блок кода:

Вот список, который мы получили после токенизации:

He determined to drop his litigation with the monastry, and relinguish his claims to the wood-cuting and fishery rihgts at once. He was the more ready to do this becuase the rights had become much less valuable, and he had indeed the vaguest idea where the wood and river in question were.

И список после удаления стоп-слов:

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts. He ready becuase rights become much less valuable, indeed vaguest idea wood river question.

Обратите внимание, что размер текста уменьшился почти вдвое! Можете ли вы представить себе чистую полезность удаления стоп-слов?

2. Удаление стоп-слов с помощью spaCy

spaCy — одна из самых универсальных и широко используемых библиотек в НЛП. Мы можем быстро и эффективно удалить стоп-слова из заданного текста с помощью SpaCy. У него есть список собственных стоп-слов, которые можно импортировать как STOP_WORDS из класса spacy.lang.en.stop_words.

Вот как вы можете удалить стоп-слова, используя spaCy в Python:

Вот список, который мы получили после токенизации:

He determined to drop his litigation with the monastry and relinguish his claims to the wood-cuting and \n fishery rihgts at once. He was the more ready to do this becuase the rights had become much less valuable, and he had \n indeed the vaguest idea where the wood and river in question were.

И список после удаления стоп-слов:

determined drop litigation monastry, relinguish claims wood-cuting \n fishery rihgts. ready becuase rights become valuable, \n vaguest idea wood river question.

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

Узнайте больше о spaCy в этой статье с соучредителями библиотеки:

3. Удаление стоп-слов с помощью Gensim

Gensim — довольно удобная библиотека для работы с задачами НЛП. Во время предварительной обработки gensim также предоставляет методы для удаления стоп-слов. Мы можем легко импортировать метод remove_stopwords из класса gensim.parsing.preprocessing.

https://gist.github.com/shubham-singh-ss/ed302a08cc4aff1f5a73179b79e50f6b

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts once. He ready becuase rights valuable, vaguest idea wood river question were.

Используя gensim для удаления стоп-слов, мы можем напрямую использовать его для необработанного текста. Нет необходимости выполнять токенизацию перед удалением стоп-слов. Это может сэкономить нам много времени.

Введение в нормализацию текста

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

  • Лиза съела еду и помыла посуду.
  • Они ели лапшу в кафе.
  • Не хочешь поесть перед тем, как мы уйдем?
  • Мы только что съели наш завтрак.
  • Он также ест фрукты и овощи.

Во всех этих предложениях мы видим, что слово есть используется во многих формах. Для нас нетрудно понять, что еда здесь — это активность. Поэтому для нас на самом деле не имеет значения, «съели», «съели» или «съели» — мы знаем, что происходит.

К сожалению, это не относится к машинам. Они относятся к этим словам по-разному. Поэтому нам нужно привести их к корневому слову, которое в нашем примере — «есть».

Следовательно, нормализация текста — это процесс преобразования слова в единую каноническую форму. Это можно сделать с помощью двух процессов: выборки корней и лемматизации. Давайте разберемся, что они собой представляют в деталях.

Что такое стемминг и лемматизация?

Организация и лемматизация — это просто нормализация слов, то есть приведение слова к его корневой форме.

В большинстве естественных языков корневое слово может иметь множество вариантов. Например, слово «играть» может использоваться как «играть», «играть», «играть» и т. д. Вы можете придумать подобные примеры (и их много).

Стемминг

Давайте сначала разберемся со стеммингом:

  • Стемминг — это метод нормализации текста, который обрезает конец или начало слова, принимая во внимание список общих префиксов или суффиксов, которые можно найти в этом слове.
  • Это элементарный процесс удаления суффиксов ("ing", "ly", "es", "s" и т. д.) из слова, основанный на правилах.

лемматизация

Лемматизация, с другой стороны, представляет собой организованную и пошаговую процедуру получения корневой формы слова. Он использует словарный запас (словарное значение слов) и морфологический анализ (структура слов и грамматические отношения).

Зачем нам нужно выполнять стемминг или лемматизацию?

Рассмотрим следующие два предложения:

  • Он был за рулем
  • Он поехал кататься

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

Еще одно преимущество нормализации текста заключается в том, что она уменьшает количество уникальных слов в текстовых данных. Это помогает сократить время обучения модели машинного обучения (а разве мы все этого не хотим?).

Итак, какой из них мы должны предпочесть?

Алгоритм Stemming работает путем вырезания суффикса или префикса из слова. Лемматизация — более мощная операция, поскольку она учитывает морфологический анализ слова.

Лемматизация возвращает лемму, которая является корнем слова всех его форм перегиба.

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

Методы нормализации текста

1. Нормализация текста с использованием NLTK

В библиотеке NLTK есть множество замечательных методов для выполнения различных этапов предварительной обработки данных. Существуют такие методы, как PorterStemmer() и WordNetLemmatizer(), для выполнения стемминга и лемматизации соответственно.

Давайте посмотрим на них в действии.

Вывод

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts. He ready becuase rights become much less valuable, indeed vaguest idea wood river question.
He determin drop litig monastri, relinguish claim wood-cut fisheri rihgt. He readi becuas right become much less valuabl, inde vaguest idea wood river question.

Здесь мы ясно видим разницу. Теперь давайте выполним лемматизацию того же текста.

Лемматизация

He determined drop litigation monastry, relinguish claims wood-cuting fishery rihgts. He ready becuase rights become much less valuable, indeed vaguest idea wood river question.
He determined drop litigation monastry, relinguish claim wood-cuting fishery rihgts. He ready becuase right become much le valuable, indeed vaguest idea wood river question.

Здесь v означает глагол, a означает прилагательное и n > означает существительное. Лемматизатор лемматизирует только те слова, которые соответствуют параметру pos метода lemmatize.

Лемматизация осуществляется на основе тегирования частей речи (тегов POS). Мы подробно поговорим о POS-тегах в следующей статье.

2. Нормализация текста с помощью spaCy

spaCy, как мы видели ранее, — это потрясающая библиотека НЛП. Он предоставляет множество отраслевых методов для выполнения лемматизации. К сожалению, в spaCy нет модуля для стемминга. Чтобы выполнить лемматизацию, проверьте следующий код:

-PRON- determine to drop -PRON- litigation with the monastry, and relinguish -PRON- claim to the wood-cuting and \n fishery rihgts at once. -PRON- be the more ready to do this becuase the right have become much less valuable, and -PRON- have \n indeed the vague idea where the wood and river in question be.

Здесь -PRON- — обозначение местоимения, которое можно легко удалить с помощью регулярных выражений. Преимущество spaCy заключается в том, что нам не нужно передавать какой-либо параметр pos для выполнения лемматизации.

3. Нормализация текста с использованием TextBlob

TextBlob — это библиотека Python, специально созданная для предварительной обработки текстовых данных. Он основан на библиотеке NLTK. Мы можем использовать TextBlob для выполнения лемматизации. Однако в TextBlob нет модуля для создания основы.

Итак, давайте посмотрим, как выполнить лемматизацию с помощью TextBlob в Python:

He determine to drop his litigation with the monastry, and relinguish his claim to the wood-cuting and fishery rihgts at once. He wa the more ready to do this becuase the right have become much le valuable, and he have indeed the vague idea where the wood and river in question were.

Как мы видели выше в разделе NLTK, TextBlob также использует теги POS для выполнения лемматизации. Подробнее о том, как использовать TextBlob в НЛП, можно прочитать здесь:

Конечные примечания

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

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

И если вы ищете место, где вы, наконец, сможете начать свое путешествие в НЛП, у нас есть идеальный курс для вас:

Первоначально опубликовано на https://www.analyticsvidhya.com 21 августа 2019 г.