1 миллион предложений для сохранения в БД - удаление неактуальных английских слов - PullRequest
6 голосов
/ 23 ноября 2010

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

Мне нравится этот фильм :))

ненавижу когда идет дождь :(

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

Проблема в том, что у меня есть более 1 миллиона таких предложений, поэтому, если я буду тренировать их слово в слово, база данных пойдет на бросок. Я хочу удалить все не относящиеся к делу слова, например, «I», «this», «when», «it», чтобы количество запросов к базе данных уменьшалось.

Пожалуйста, помогите мне в решении этой проблемы, чтобы предложить мне лучшие способы сделать это

Спасибо

Ответы [ 3 ]

8 голосов
/ 24 ноября 2010

Существует два распространенных подхода:

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

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

Имейте в виду: стандартные стоп-листы из поиска информации могут или не могут работать в анализе настроений. Я недавно прочитал газету (без ссылки, извините), где это было заявлено! и?, которые обычно удаляются в поисковых системах, являются ценными подсказками для анализа настроений. (Так может и «я», особенно если у вас также есть нейтральная категория.)

Редактировать : вы также можете безопасно выбросить все, что происходит только один раз в тренировочном наборе (так называемые hapax legomena ). Слова, которые встречаются однажды, имеют небольшую информационную ценность для вашего классификатора, но могут занимать много места.

4 голосов
0 голосов
/ 24 ноября 2010

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

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

| ** Если эта операция убивает вашу базу данных, вы можете создать словарь в локальном приложении, которое использует механизм индексирования текста (например, apache lucene), и сохранить только результат в вашей базе данных.

...