Skip to content

SentiWordNet

Greyrest edited this page Apr 2, 2025 · 1 revision

SentiWordNet — это автоматическая система для присвоения словам из WordNet трех числовых оценок: Pos (позитивность), Neg (негативность) и Obj (нейтральность). Алгоритм состоит из двух основных этапов:

  • Полуавтоматическое обучение (semi-supervised learning) — создание начальных оценок на основе глосс (определений) WordNet.

  • Random-Walk — уточнение оценок через анализ семантических связей между словами.


1. Полуавтоматическое обучение (Semi-Supervised Learning)

1.1 Подготовка обучающих данных

Алгоритм начинается с небольшого набора "эталонных" слов (seed terms):

  • Положительные: nice, good, great (14 слов).

  • Отрицательные: nasty, bad, terrible (14 слов).

Эти слова вручную размечаются в WordNet, учитывая их разные значения (synsets). Например:

  • estimable (значение 1) = "заслуживающий уважения" → Pos = 0.75, Obj = 0.25.

  • estimable (значение 3) = "может быть вычислен" → Obj = 1.0.

1.2 Расширение обучающего набора

Чтобы охватить больше слов, алгоритм автоматически расширяет начальный набор, используя семантические связи WordNet:

  • Синонимы, антонимы, also-see, pertains-to и др.

  • Если слово связано с положительным синонимом → оно тоже считается положительным.

  • Если связано с антонимом (например, good ↔ bad) → его оценка инвертируется.

Этот процесс повторяется итеративно (K = 0, 2, 4, 6 шагов), чтобы получить разные варианты обучающих данных.

1.3 Векторное представление глосс

Каждый synset в WordNet имеет глоссу (определение), например:

"estimable (3): may be computed or estimated"

Алгоритм преобразует глоссу в числовой вектор (TF-IDF + удаление стоп-слов), чтобы классифицировать её тональность.

1.4 Обучение классификаторов

Используются два алгоритма машинного обучения:

  • Rocchio (ближайшие соседи).

  • SVM (Support Vector Machines).

Каждый алгоритм обучается на разных вариантах обучающих данных (из шага 1.2), создавая 8 классификаторов.

1.5 Комитет классификаторов

Каждый synset проходит через все 8 классификаторов, и итоговые оценки усредняются:

  • Если все классификаторы согласны, что слово Pos → оно получает Pos = 1.0.

  • Если мнения разделились (например, 4 говорят Pos, 4 — Obj) → Pos = 0.5, Obj = 0.5.

2. Random-Walk: Уточнение оценок через семантические связи

После полуавтоматического обучения оценки могут быть неточными, поэтому применяется графовый алгоритм Random-Walk.

2.1 Построение графа WordNet

  • Узлы = synset.

  • Рёбра = связи между словами (например, если слово A используется в определении слова B, проводится ребро A → B).

2.2 Итеративное распространение оценок

Идея: Если слово определяется через позитивные термины → оно тоже позитивное.

Алгоритм работает так:

  1. Каждому synset присваиваются начальные оценки из полуавтоматического этапа.

  2. На каждом шаге Pos/Neg "перетекают" по рёбрам графа:

Если слово B определяется через A, и A имеет Pos = 0.8 → B получает часть этой оценки.

  1. Процесс повторяется до сходимости (оценки перестают сильно меняться).

2.3 Нормализация оценок

После Random-Walk значения могут быть слишком малы, поэтому применяется коррекция:

  • Используется степенная функция: F(x) = a * x^b.

  • Пример: Synset с изначальным Pos = 0.001 после коррекции может стать Pos = 0.3.

2.4 Финализация Obj

  • Obj = 1.0 - (Pos + Neg).

  • Если Pos + Neg > 1.0 (редко), значения нормализуются.