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