Это может быть очень тривиальный вопрос. Но я не могу найти ответ, который я ищу, выполнив поиск Google или SO.
Я хочу построить простую логику анализа чувств.
Есть два списка отрицательных и положительных слов/фраз с некоторым количеством баллов, сколько отрицательных или положительных, что слово/фразы.
Отрицательная фраза/слова:
really hate -2
hate -1
dislike -1
Положительная фраза/слова:
like 1
very much like 2
Ниже приведены соответствующие оценки
"I like to eat Apple" => Sentiment Score = 1
"I really hate the college president" => Sentiment Score = -2
Это нормально для вышеуказанных случаев. Но, интересно, как решить следующие случаи:
"Though I am an Android user, I hate to say I like iPhone 5s"
Понимаете, "ненависть" и "как" оба сделают оценку настроений = 0 Но я ожидаю, что это будет +1, потому что у нее есть положительные отзывы об iPhone 5s.
Как я уже сказал, это не пример двойного отрицательного. Это выражение ненависти к ощущению об iPhone, но похоже, что вы только хотели бы посчитать это чувство: слова, затрагивающие Субъект вашего предложения.
Вам нужно будет иметь учетную запись вашего алгоритма для контекста:
Apple
, president
, iPhone
и т.д.)(really) hate/like/love
и т.д.)Этот алгоритм, который вы можете себе представить, очень сложно реализовать, поскольку он имеет тенденцию к общему пониманию естественного языка.
Что касается двойных негативов, вы, вероятно, захотите попробовать что-то вроде того, какие слова вызывают логические перевороты в настроение, т.е. not
, don't
и т.д. (Большинство из них - сокращение от not
), а затем делают подсчет, чтобы определить флип что это приводит к прилагательным: т.е.
I do not like green eggs and ham
Идентифицировать зеленые eggs and ham
, вернуться к поиску ключевых слов: not, like
, возможно, искать глагол, получить некоторое предложение, подобное regex
? Опять же, это не самая простая задача и, скорее всего, всегда будет только точной.
Подсчитайте not
и с тех пор, как он нечетно умножает ваш рейтинг сентимента -1
.
I do not not like green eggs and ham
Теперь у нас есть два nots
, его четный, поэтому мы не меняем оценку чувства или не умножаемся на +1
.
Мое общее предложение состояло в том, чтобы либо принять ложные срабатывания, либо продолжить, либо взглянуть на обработку естественного языка
Так как ваши слова настроения могут быть фразами, быстрое и грязное решение - добавить "ненависть, чтобы сказать, что мне нравится", к положительному списку настроений:
hate to say I like +1
Это одно экстремальное решение, и проблема с ним заключается в том, что он обрабатывает только один конкретный случай, поэтому вам нужно добавить тысячи, если не миллионы, или такие записи. Другая крайность - супер-интеллектуальный ИИ, который полностью понимает контекст и нюанс. Проблема с этим заключается в том, что она находится вне нас. Между этими двумя крайностями являются решения НЛП, которые используют грамматику и шаблоны для понимания многих предложений, не указывая их явно.
Боковое примечание о весе для назначения
Используйте +1
если наибольшее совпадение всегда используется и останавливает другие слова/фразы, соответствующие этим словам. В противном случае отрегулируйте вес. В этом случае вам не нужно ничего делать, как будто "ненависть" также соответствует -1, тогда "like" будет соответствовать другому "+1". Но для "действительно ненавижу говорить, что мне нравится", вам нужно дать ему базовое значение +2; то "действительно ненавижу" добавит в -2, как добавит в +1, и вы получите желаемое чувство от +1.