Обработка отрицания в НЛП

в настоящее время я работаю над проектом, где я хочу, чтобы извлечь эмоции из текста. Поскольку я использую 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_ ко всем словам между отрицанием и знаками препинания.