НЛП - почему «не» стоп-слово?

18

Я пытаюсь удалить стоп-слова перед выполнением моделирования темы. Я заметил, что некоторые слова отрицания (ни, ни, никогда, ни и т.д. ...) обычно считаются стоп-словами. Например, NLTK, spacy и sklearn включают «not» в свои списки стоп-слов. Однако, если мы уберем «не» из этих предложений ниже, они потеряют значимое значение, и это не будет точным для моделирования темы или анализа настроений.

1). StackOverflow is helpful      => StackOverflow helpful
2). StackOverflow is not helpful  => StackOverflow helpful

Может ли кто-нибудь объяснить, почему эти слова отрицания обычно считаются стоп-словами?

EK
источник
2
Если вы делаете семантический анализ предложений, очевидно, что логические связки важны: (1) если нет (2). Если вы намереваетесь смоделировать логику этих предложений, держите их в сумке с остановками. Они обычно добавляются туда, потому что с точки зрения интеллектуального анализа данных наличие «не» в документе не скажет нам много о теме, чтобы помочь нам отличить ее от других документов; это не достаточно редко. Возможно, есть другие причины игнорировать их в задачах nlp.
Унан Ростомян

Ответы:

20

Стоп-слова обычно рассматриваются как «самые распространенные слова в языке». Однако возможны другие определения, основанные на других задачах.

Очевидно, имеет смысл рассматривать «не» как стоп-слово, если ваша задача основана на частотах слов (например, анализ tf – idf для классификации документов).

Если вас интересует контекст (например, анализ настроений ) текста, возможно, имеет смысл по-разному относиться к словам отрицания. Отрицание меняет так называемую валентность текста. К этому нужно относиться осторожно и обычно это не тривиально. Одним из примеров будет корпус отрицания Twitter. Объяснение подхода дается в этой статье .

oW_
источник