Анализ настроений с помощью NLTK Python для предложений с использованием образцов данных или веб-сервиса?

Я приступаю к проекту НЛП по анализу сантиментов.

Я успешно установил NLTK для Python (кажется, отличное программное обеспечение для этого). Однако мне сложно понять, как его можно использовать для выполнения моей задачи.

Вот моя задача:

  1. Я начинаю с одного длинного фрагмента данных (скажем, нескольких сотен твитов на тему выборов в Великобритании от их веб-сервиса)
  2. Я хотел бы разбить это на предложения (или информацию длиной не более 100 символов) (я думаю, я могу просто сделать это на python ??)
  3. Затем для поиска по всем предложениям конкретных экземпляров в этом предложении, например. "Дэвид Кэмерон"
  4. Затем я хотел бы проверить наличие положительных / отрицательных настроений в каждом предложении и соответственно их подсчитать.

NB: Я не особо беспокоюсь о точности, потому что мои наборы данных велики, а также не слишком беспокоюсь о сарказме.

Вот проблемы, которые у меня возникают:

  1. Все наборы данных, которые я могу найти, например данные обзора фильма, которые поставляются с NLTK, не находятся в формате веб-сервиса. Похоже, это уже была обработана. Насколько я могу судить, обработка (Стэнфордом) проводилась с помощью WEKA. Разве НЛТК не может все это сделать самостоятельно? Здесь все наборы данных уже сгруппированы в положительные / отрицательные, например. набор данных полярности http://www.cs.cornell.edu/People/pabo/movie-review-data/ Как это делается? (чтобы организовать предложения по настроениям, это определенно WEKA? или что-то еще?)

  2. Я не уверен, что понимаю, почему WEKA и NLTK будут использоваться вместе. Похоже, они делают то же самое. Если я сначала обрабатываю данные с помощью WEKA, чтобы найти мнение, зачем мне NLTK? Можно ли объяснить, зачем это может понадобиться?

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

Любая помощь очень ценится и сэкономит мне много волос!

Ура Ке


person Ke.    schedule 14.05.2010    source источник


Ответы (2)


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

Описание использования Наивного Байеса для анализа тональности с помощью NLTK: http://streamhacker.com/2010/05/10/text-classification-sentiment-analysis-naive-bayes-classifier/

Затем в этом коде вместо использования корпуса фильмов используйте свои собственные данные для расчета количества слов (в методе word_feats).

person ealdent    schedule 14.05.2010
comment
да, я оказался на этом сайте после небольшого поиска, но я думаю, что я немного застрял в том, как получить статистику для каждого обзора. Как я могу использовать nltk, чтобы предоставить мне список идентификаторов обзора с 1 или 0 для pos / neg? ура ке - person Ke.; 18.05.2010
comment
Возможно, будет полезно будущим читателям: в корпусе обзора фильмов есть категории pos и neg. Чтобы получить список идентификаторов файлов в категории neg, просто используйте movie_reviews.fileids("neg"). Вы также можете напрямую извлечь весь текст из отрицательной категории, сказав, например, movie_reviews.sents(categories=["neg"]). (Эти методы работают со всеми разделенными на категории корпусами nltk. Чтобы перечислить категории в корпусе, используйте corpus.categories().) - person alexis; 08.01.2014

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

person Kevin    schedule 28.05.2010