Обработка отрицания в НЛП
В настоящее время я работаю над проектом, в котором хочу извлечь эмоции из текста. Поскольку я использую conceptnet5 (семантическую сеть), я не могу, однако, просто приставлять слова в предложении, которое содержит слово отрицания, поскольку эти слова просто не будут отображаться в API conceptnet5.
Вот пример:
Фильм был не настолько хорош.Таким образом, я решил, что могу использовать функциональность леммы wordnet для замены прилагательных в предложениях, содержащих отрицание-слова типа (не, ...).
В предыдущем примере алгоритм определит wasn't
и заменит его на was not
.
Далее, он обнаружит отрицательное слово not
и заменит good
его антонимом bad
.
Предложение будет гласить:
Хотя я вижу, что это не самый элегантный способ, и он, вероятно, во многих случаях приводит к неправильному результату, я все же хотел бы обращаться с отрицанием таким образом, поскольку я, честно говоря, не знаю ни одного лучше подходить.Фильм был настолько плох.
Учитывая мою проблему:
К сожалению, я не нашел библиотеки, которая позволила бы мне заменить все вхождения прилагаемых отрицательных слов (wasn't
=> was not
).
Я имею в виду, что я мог бы сделать это вручную, заменив вхождения регулярным выражением, но тогда я застрял бы с английским языком.
nltk
, все еще это не похоже, что он содержит такую функциональность, но я могу ошибаться.
Заранее спасибо:)
1 ответ:
Случаи, подобные
Но отрицательное значение также может быть сформировано "Квазинегативными словами, такими как вряд ли, едва, редко" и "подразумеваемыми негативами, такими как неудача, предотвращение, нежелание, отрицание, отсутствие", посмотрите в этой статье. Еще более подробный анализ можно найти в книге Кристофера Поттса "о негативности отрицания" [10]. .wasn't
, могут быть просто проанализированы с помощью токенизации (tokens = nltk.word_tokenize(sentence)
):wasn't
превратится вwas
иn't
.Учитывая вашу первоначальную проблему, анализ настроений, большинство современные подходы, насколько мне известно, не обрабатывают отрицания явно; вместо этого они используют контролируемые подходы с n-граммами высокого порядка. Те, кто действительно обрабатывает отрицание, обычно добавляют специальный префикс NOT_ ко всем словам между отрицанием и знаками препинания.