Эмпирическое исследование влияния различных методов предварительной обработки текста с использованием Tensorflow.
Когда дело доходит до обработки естественного языка, критически важным, но часто игнорируемым предварительным шагом является предварительная обработка текста. Существует множество способов предварительной обработки входных данных перед их подачей в модель. В этом посте блога экспериментируется и сравнивается влияние различных методов предварительной обработки текста на задачу классификации сентиментов.
Пример сентиментальной классификации взят с учебного веб-сайта Tensorflow. Мы собираемся предсказать настроение — положительное или отрицательное — отзывов IMDB. Набор данных, который у нас есть, представляет собой список из 50000 крайне полярных обзоров фильмов с соответствующими метками — 0 или 1, разделенных пополам для обучения и тестирования. Поскольку модель не находится в центре внимания этого поста, и она уже подробно описана в руководстве по Tensorflow, мы не будем тратить на нее слишком много времени. Код модели указан в конце поста. Он состоит из слоя векторизации текста, слоя внедрения, двунаправленного слоя LSTM и, наконец, плотного слоя, который производит предсказание метки. Самое важное, что следует отметить, это то, что в слое векторизации текста мы устанавливаем для параметра standardize
значение None
, потому что мы будем выполнять собственную стандартизацию в ходе предварительной обработки.
Сначала мы обучаем модель без какой-либо стандартизации текста. Это наш базовый уровень. После 20 эпох (то же самое для последующих тестов) мы получаем точность проверки 82,40%. Обратите внимание, что у нас есть функция preprocess
, которая применяет данную пользовательскую стандартизацию. Мы используем эту функцию preprocess
в этом посте блога.
Далее мы просто переводим текст в нижний регистр и получаем точность проверки 82,19%. Использование нижнего регистра уменьшает разреженность входных данных, но может привести к двусмысленности. Например, apple
и Apple
, скорее всего, означают разные вещи: одно — фрукт, а другое — компанию.
Затем поверх нижнего регистра убираем знаки препинания. На этот раз мы получаем точность проверки 85,73%. Удаление знаков препинания уменьшает некорректную обработку «новых» слов в конце части предложения, например, “world,”
в “hello world,”
вместо фактического “world”
. Несмотря на то, что знаки препинания могут иногда нести сильные чувства, такие как восклицательные знаки, их удаление кажется здесь очень полезным.
Продолжая, мы пытаемся сформулировать и лемматизировать слова. И стемминг, и лемматизация представляют собой своего рода обработку, которая сводит морфологические варианты слова к его основной/корневой форме. Разница заключается в том, что определение основы основано только на простых эвристических правилах символов, в то время как лемматизация имеет больше встроенных лингвистических знаний. Например, для входных слов apples
, geese
и churches
формирование основы дает appl
, gee
и churches
, а лемматизация дает apple
, goose
. и church
. В качестве другого примера, для входных слов likes
, liking
, likely
, unlike
и liked
, определение основы сокращает их все до like
, в то время как лемматизация преобразует только likes
в like
и сохраняет все другие варианты, поскольку они вполне могут означать разные вещи в зависимости от контекста.
Мы получаем точность проверки 81,77% и 84,69% после стемминга и лемматизации, что соответствует нашему интуитивному предположению, что лемматизация лучше, чем стемминг.
В конце мы пытаемся удалить все стоп-слова. Стоп-слова — это такие слова, как i
, my
, you
, her
, be
, don’t
, can
, must
и т. д. Формального определения стоп-слов не существует. Это те слова, которые традиционная обработка естественного языка обычно отбрасывает для упрощения. Мы получаем точность проверки 84,01%. Ожидается немного более низкая производительность, поскольку стоп-слова включают отрицание, например don’t
, которое может полностью изменить тональность обзора.
Похоже, что в этом случае лучше всего работают простые строчные буквы и удаление знаков препинания. См. следующие таблицы для обзора, после которых предоставляется фрагмент кода для модели. На самом деле аналогичное расследование проводили и другие. Для какой из них лучше вообще, да, вы догадались. Это зависит.