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

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