… Удаление стоп-слов для приложений Data Science

Оглавление

  1. Введение
  2. Очистка текстовых данных
  3. Резюме
  4. использованная литература

Введение

Неудивительно, что данные в большинстве случаев беспорядочные, неорганизованные и с ними трудно работать. По мере того, как вы углубитесь в науку о данных из образовательной практики, вы увидите, что большая часть данных получается из нескольких источников, из нескольких запросов, и это может привести к получению некоторых нечистых данных. В некоторых или большинстве ситуаций вам придется создать набор данных, который в конечном итоге будет использоваться для обучения вашей модели. Есть несколько статей, посвященных числовым данным, но я хочу, чтобы в этой статье основное внимание уделялось текстовым данным, что совпадает с обработкой естественного языка. С учетом сказанного, вот простой способ очистить ваши текстовые данные в Python, а также когда это будет полезно. Я буду использовать популярный набор данных из TMBDF 5000 Movie Dataset [2], чтобы вы могли следить за ним.

Очистка текстовых данных

Удаление стоп-слов

Другой способ интерпретировать «стоп-слова» - удалить ненужный текст. Однако важно отметить, что при использовании общей библиотеки игнорируемых слов вы можете удалять слова, которые действительно хотите сохранить. Вот почему вам следует подумать о списке слов, которые вы хотите удалить в первую очередь. Вот некоторые распространенные примеры стоп-слов: ‘the’, ‘of’ и т. Д. Причина, по которой вы хотите удалить эти слова, заключается в том, что вы хотите сохранить основной предмет слов, фразу, предложение и т. Д. Примером может быть 'там в июле они пошли в магазин на праздничную вечеринку ». Если вы удалите стоп-слова и еще несколько ненужных слов, у вас останется только time, July, holiday, party.

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

import pandas as pd
import nltk.corpus
nltk.download(‘stopwords’)
from nltk.corpus import stopwords
df = pd.read_csv('...path/tmdb_5000_movies.csv')
stop_words = stopwords.words('english')
df['clean_title'] = df['title'].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop_words)]))

В приведенном выше коде мы импортируем необходимые библиотеки, а затем считываем наши данные в фреймворк pandas. Оттуда мы назначаем стоп-слова, которые мы удалим из текста столбца ‘title’, которые покажут их соответствующий эффект в столбце ‘clean_title’. Результат - то, что мы видим ниже. В строках 1, 3 и 8 убраны игнорируемые слова, как вы можете видеть по строкам «до» и «после», расположенным рядом.

В дополнение к библиотеке стоп-слов от nltk вы можете добавить дополнительные стоп-слова «вручную». Чтобы выполнить эту функцию, вы можете просто добавить список строк в stop_words. Например, если мы хотим удалить текст «3», поскольку в данном случае это не число, мы могли бы добавить его в список, а также слова «At» и букву «v». Это будет работать следующим образом:

stop_words = stopwords.words(‘english’) + [‘At’, ‘v’, ‘3’]
# apply the same code as above but assign
# a new column to see the differences
df['clean_title_v2'] = df['title'].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop_words)]))

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

Теперь, когда мы показали один из способов очистки текстовых данных, давайте обсудим возможные приложения, в которых этот процесс будет полезен специалистам по данным:

  • Удаление ненужных слов, чтобы можно было выполнить выделение корней - где вы можете выделить корень слов, оставшихся после удаления
  • Как и в предыдущем случае, вы можете выделить только лемму слова
  • Сохранение только необходимых слов может позволить вам более легко пометить части речи в ваших данных, например, если вы пометили только прилагательные и использовали этот текст в своих данных для своей модели - например, «красиво», «потрясающе», «громко». останется использовать для прогнозирования целевой переменной обзора фильма. Модель сможет легче распознать настроение по прилагательным, чтобы определить, хороший ли обзор фильма или плохой, или что фильм должен улучшить.
  • Создание сводной информационной панели из основных слов обновленного текста, например, удаление цифр в «Человек-паук 1», «Человек-паук 2» и «Человек-паук 3», позволит выполнять анализ на всех «Человек-паук». фильмы в целом, такие как заработанные деньги или средний рейтинг отзывов этих фильмов
  • Легче моделировать темы - находить общие темы между большими значениями текста
  • Создание меньшего объема текста, чтобы ваше моделирование стало быстрее и дешевле в обучении и прогнозировании.
  • Может использоваться для удаления ошибочного текста, например, если люди вводят ответ вручную, вы можете очистить их ответы, а также, если они вводят текст в формате «голос в текст», вы можете автоматизировать удаление слов, которые являются обычно неправильно интерпретируется голосом

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

Резюме

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

Подводя итог, вот как удалить стоп-слова из текстовых данных:

* import libraris
* import your dataset
* remove stop words from the main library
* add individual stop words that are unique to your use case

ОБНОВЛЕНИЕ: слово The не было удалено, как должно быть, потому что оно было написано в верхнем регистре, поэтому перед очисткой убедитесь, что весь текст в нижнем регистре. Спасибо за звонок, Miia Rämö!

Надеюсь, моя статья была вам интересна и полезна. Пожалуйста, не стесняйтесь комментировать ниже, если вы согласны с этим методом удаления стоп-слов - почему или почему нет? Вы предпочитаете другую библиотеку? Если да, не стесняйтесь комментировать причины, по которым вы предпочитаете одно другому. Какие недостатки есть у этой библиотеки? Знаете ли вы о еще более новой библиотеке, которая могла бы превзойти nltk с точки зрения эффективности, простоты использования и скорости? Какими еще способами вы очищаете текстовые данные? Вы случайно не пользуетесь библиотекой и просто удаляете определенный список, созданный вами? Спасибо, что прочитали мою статью!

Не стесняйтесь проверить мой профиль и другие статьи, Мэтт Пшибила, , а также свяжитесь со мной в LinkedIn.

использованная литература

[1] Фото JESHOOTS.COM на Unsplash, (2019)

[2] Kaggle, TMBDF 5000 Movie Dataset, (2021 - дата обращения)

[3] Фотография Marylou Fortier на Unsplash, (2020)

[4] М.Прибыла, пример текста очистки, (2021 г.)

[5] М.Прибыла, пример очистки текста плюс добавление отдельных стоп-слов, (2021 г.)