Будет два основных подхода:
- тот, который вы начали, который представляет собой список эмоциональных слов, и подсчет того, как часто они появляются
- с примерами какие предложения вы считаете эмоциональными, а какие - неэмоциональными для модели машинного обучения, и позвольте ей работать над этим.
Первый способ станет лучше, если вы дадите ему больше слов, но в конечном итоге вы попадете предел. (Просто из-за двусмысленности и гибкости человеческого языка, например, хотя «ты» более эмоционально, чем «оно», будет много неэмоциональных предложений, в которых используется «ты».)
любые предложения о том, как я могу извлечь эмоциональные слова из слова dnet?
Взгляните на sentiwor dnet, который добавляет меру положительности, негатива или нейтралитета к каждому слову dnet вход. Для «эмоционального» вы можете выделить только те, которые имеют положительный или отрицательный результат, например, 0,5. (Следите за некоммерческой лицензией.)
Второй подход, вероятно, будет работать лучше , если вы можете передать ему достаточно обучающих данных, но «достаточно» иногда может быть слишком много . Другими недостатками являются модели, которым часто требуется гораздо больше вычислительной мощности и памяти (серьезная проблема, если вам нужно быть в автономном режиме или работать на мобильном устройстве), и что они представляют собой черный ящик.
Я думаю, что подход 2020 года было бы начать с предварительно обученной модели BERT (чем больше, тем лучше, см. недавний документ GPT-3 ), а затем настроить ее с помощью образца ваших 100 000 предложений, которые вы вручную аннотированный. Оцените его на другом образце и аннотируйте больше обучающих данных для тех, которые ошиблись. Продолжайте делать это, пока не добьетесь желаемого уровня точности.
(Spacy, кстати, поддерживает оба подхода. То, что я назвал точной настройкой выше, также называется обучением передачи. См. https://spacy.io/usage/training#transfer -learning Также поиск в Google для "анализа пространных настроений" найдет довольно много руководств.)