2015-02-19 1 views
1

Я реализую простой алгоритм анализа чувств, в котором авторы статьи имеют список слов для положительных и отрицательных слов и просто подсчитывают количество вхождений каждого в анализируемом документе и дают ему оценку голосов в документе:Sentiment Analysis - должен ли я нормализовать положительные и отрицательные списки слов, когда они различаются по длине?

настроение = (#positive_matches - #negative_matches)/(document_word_count)

Это нормализуется счет настроений по длине документа, НО свод негативных слов в 6 раз больше, чем положительное слово корпус (около 300 положительных слов и 1800 отрицательных слов), поэтому по вышеуказанной мере оценка сентимента, скорее всего, будет негативно предвзятой, так как есть более отрицательные слова, чтобы соответствовать положительным словам.

Как я могу исправить дисбаланс в длине положительного и отрицательного корпусов?

Должен ли я скорректировать оценку настроения, чтобы нормализовать каждый положительный/отрицательный счет на соответствующих длинах корпусная, что:

настроения * = ((# positive_matches/# words_in_positive_corpus) - (# negative_matches/# words_in_negative_corpus))/(document_word_count)

Любые мысли/проверка исправности/совет высоко ценится :)

+0

Вы имеете какое-либо влияние на данный положительный/отрицательный словарный словарь? – Stephan

+0

Да - я использую словарь Loughran McDonald, но это полностью зависит от меня – Alex

+0

Нахождение хорошего лексикона всегда очень ценно. Возможно, вы можете перекрестно проверить несколько лексиконов и взвесить слова на основе nr. (см. мой ответ) – Stephan

ответ

1

формула вы представили там в основном плохая идея, потому что если у вас есть предложение, как:

«Сегодня есть хорошие и плохие новости о компании»

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

Идея состоит в том, чтобы взвесить слова в лексиконе (если вы можете ее изменить), чтобы у вас было, например, 100 очень сильных чувственных слов с большим весом, а затем вес уменьшается, если слово не так важно для расчета настроений. Теперь разница в размерах лексики больше не имеет значения.

+0

Одной из ближайших проблем является то, как я беру список из 1800 слов и взвешиваю их на основе «важности». Я думаю, что это может быть естественной чертой английского языка, что есть больше способов сказать что-то отрицательное, чем положительное. Или, как я склонен полагать, может быть, это 2-граммовые корректировки наречия, например. «очень выгодные» - более естественный способ выражения позитивных настроений. Возможно, количество слов в каждом списке не имеет значения, но я ожидаю, что настроение набора документов (около 2000 документов) будет ок. нейтральный общий, но в настоящее время получает ~ 70% документов с отрицательным настроем. – Alex

+1

Анализ настроений - очень сложная проблема. Просто взяв один лексикон и применив одну простую формулу, вы вряд ли получите хорошие результаты ... если вы действительно захотите вникать в нее и получить хорошие результаты, вам придется копать глубже. Я предлагаю вам взять стандартную библиотеку или начать с чтение некоторых документов .. просто выполнение пятиминутной реализации не заставит вас очень далеко! это может быть разочаровывающе, но просто не так просто автоматически фильтровать смысл ... извините – Stephan

+0

Я полностью осознаю, что это сложная проблема. Я не ожидаю, что вы просто «сделаете пятиминутную реализацию» - причина, по которой я задаю этот вопрос, состоит в том, что асимметричные списки слов являются теоретическим соображением, и я надеялся получить от этого некоторый вклад. Говорить, что я начинаю читать некоторые бумаги, разочаровывает, потому что это признак интеллектуальной лени с вашей стороны. Я читал документы по этому вопросу, но это тонкий пункт, который не будет появляться в поиске ученого Google. Если вы не можете конструктивно отреагировать на мой вопрос, тогда скорее не ответьте вообще. – Alex

0

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

Ваши простые модели на основе Lexicon не учитывают фразы (n-граммы), контекст, отрицание и т. Д. Классифицированные модели, такие как Naive Bays, Max Entropy или Vector Vector Machine, могут дать вам лучшие результаты.

Вы также можете попробовать гибридный подход как с Lexicon, так и с вероятностной моделью, такой как Naive Bayes, и сравнить результаты, но для любого подхода потребуется либо хорошая лексика, либо подготовленные данные.

0

Если у вас есть контроль над положительными и отрицательными лексиконами, то я бы предложил использовать список this. Я использовал его в прошлом и нашел его довольно обширным, а также сбалансированным. Кроме того, он дает значение полярности для каждой лексики. Вы можете использовать его, если хотите.

0

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

Если вы хотите использовать такой метод по какой-либо причине, попробуйте найти другие словари или методы для их получения, начиная с here.

Если вы хотите исправить словарь, попробуйте его расширить (как положительные, так и отрицательные) с помощью синонимов из WordNet или других сервисов, см. Предложения here.

Тем не менее, на самом деле вы более интересны, поскольку объективное распределение событий типа «сообщение содержит положительное слово» и «сообщение содержит отрицательное слово», но не равное количество положительных и отрицательных слов. Я имею в виду, что эти 300 положительных слов могут встречаться в текстах (из вашего домена, что важно) не реже, чем эти 1800 отрицательных. Кроме того, вы не знаете истинного распределения положительных и отрицательных слов (вы предполагаете, что они одинаково часто, но почему?), И, таким образом, вы не знаете, является ли это предвзятым или нет.

Смежные вопросы