Классификация текстов и анализ тональности — различия между версиями
KirillTim (обсуждение | вклад) (+ алгоритмы список + тезаурусы) |
KirillTim (обсуждение | вклад) м (typo) |
||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 16: | Строка 16: | ||
В общем случае, задача анализа тональности текста эквивалентна задаче классификации текста, где категориями текстов могут быть тональные оценки. | В общем случае, задача анализа тональности текста эквивалентна задаче классификации текста, где категориями текстов могут быть тональные оценки. | ||
Примеры тональных оценок: | Примеры тональных оценок: | ||
− | * | + | * позитивная; |
− | * | + | * негативная; |
* нейтральная; | * нейтральная; | ||
Под «нейтральной» подразумевается, что текст не содержит эмоциональной окраски. | Под «нейтральной» подразумевается, что текст не содержит эмоциональной окраски. | ||
Строка 42: | Строка 42: | ||
* Удаление пунктуации; | * Удаление пунктуации; | ||
* Удаление редких и слишком частых слов; | * Удаление редких и слишком частых слов; | ||
− | * [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B5%D1%81%D1%82%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0#.D0.A1.D1.82.D0.B5.D0.BC.D0.BC.D0.B8.D0.BD.D0.B3 | + | * [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B5%D1%81%D1%82%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0#.D0.A1.D1.82.D0.B5.D0.BC.D0.BC.D0.B8.D0.BD.D0.B3 Стемминг] или [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B5%D1%81%D1%82%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0#.D0.9B.D0.B5.D0.BC.D0.BC.D0.B0.D1.82.D0.B8.D0.B7.D0.B0.D1.86.D0.B8.D1.8F Лемматизация]; |
==== Извлечение признаков из текстов ==== | ==== Извлечение признаков из текстов ==== | ||
Большинство математических моделей работают в векторных пространствах больших размерностей, поэтому необходимо отобразить текст в векторном пространстве. Основным походом является мешок слов (bag-of-words): для документа формируется вектор размерности словаря, для каждого слова выделяется своя размерность, для документа записывается признак насколько часто слово встречается в нем, получаем вектор. Наиболее распространенным методом для вычисления признака является TF-IDF[4] (TF — частота слова, term frequency, IDF — обратная частота документа, inverse document frequency). Плюсами мешка слов является простая реализация, однако данный метод теряет часть информации, например, порядок слов. Для уменьшения потери информации можно использовать мешок N-грамм (добавлять не только слова, но и словосочетания), или использовать методы векторных представлений слов это, например, позволяет снизить ошибку на словах с одинаковыми написаниями, но разными значениями. | Большинство математических моделей работают в векторных пространствах больших размерностей, поэтому необходимо отобразить текст в векторном пространстве. Основным походом является мешок слов (bag-of-words): для документа формируется вектор размерности словаря, для каждого слова выделяется своя размерность, для документа записывается признак насколько часто слово встречается в нем, получаем вектор. Наиболее распространенным методом для вычисления признака является TF-IDF[4] (TF — частота слова, term frequency, IDF — обратная частота документа, inverse document frequency). Плюсами мешка слов является простая реализация, однако данный метод теряет часть информации, например, порядок слов. Для уменьшения потери информации можно использовать мешок N-грамм (добавлять не только слова, но и словосочетания), или использовать методы векторных представлений слов это, например, позволяет снизить ошибку на словах с одинаковыми написаниями, но разными значениями. | ||
=== Алгоритмы классификации === | === Алгоритмы классификации === | ||
==== Наивная байесовская модель ==== | ==== Наивная байесовская модель ==== | ||
− | ==== | + | Пусть <math>P(c_i|d)</math> {{---}} вероятность того, что документ, представленный вектором <math>d = (t_1, ..., t_n)</math>, соответствует категории <math>c_i</math> для <math>i = 1, ..., |C|</math>. Задача классификатора заключается в том, чтобы подобрать такие значения <math>c_i</math> и <math>d</math>, при которых значение вероятности <math>P(c_i|d)</math> будет максимальным: |
− | ==== Метод опорных векторов ==== | + | |
− | = | + | <math>c_m = \underset{c \in C}{\operatorname{argmax}} \, P(c|d)</math> |
+ | |||
+ | Для вычисления значений <math>P(c_i|d)</math> пользуются теоремой Байеса: | ||
+ | |||
+ | <math>P(c_i|d) = \frac{P(d|c_i)P(c_i)}{P(d)}</math> | ||
+ | |||
+ | где <math>P(c_i)</math> – априорная вероятность того, что документ отнесен к категории <math>c_i</math>; <math>P(d | c_i)</math> – вероятность найти документ, представленный вектором <math>d = (t_1, ..., t_n)</math>, в категории <math>c_i</math>; <math>P(d)</math> – вероятность того, что произвольно взятый документ можно представить в виде вектора признаков <math>d = (t_1, ..., t_n)</math>. | ||
+ | |||
+ | По сути <math>P(c_i)</math> является отношением количества документов из обучающей выборки <math>L</math>, отнесенных в категорию c_i , к количеству всех документов из <math>L</math>. | ||
+ | |||
+ | <math>P(d)</math> не зависит от категории <math>c_i</math>, а значения <math>t_1, ..., t_n</math> заданы заранее, поэтому знаменатель {{---}} это константа, не влияющая на выбор наибольшего из значений <math>P(c_i|d)</math>. | ||
+ | |||
+ | Вычисление <math>P(d | c_i)</math> затруднительно из-за большого количества признаков <math>t_1, ..., t_n</math> , поэтому делают «наивное» предположение о том, что любые две координаты, рассматриваемые как случайные величины, статистически не зависят друг от друга. Тогда можно воспользоваться формулой | ||
+ | |||
+ | <math>P(d|c_i) = \prod_{k=1}^{n} P(t_k|c)</math> | ||
+ | |||
+ | Далее все вероятности подсчитываются по методу максимального правдоподобия. | ||
+ | |||
+ | Преимущества метода: | ||
+ | * высокая скорость работы; | ||
+ | * простая реализация алгоритма; | ||
+ | * легкая интерпретируемость результатов работы алгоритма. | ||
+ | |||
+ | Недостатками являются относительно низкое качество классификации и неспособность учитывать зависимость результата классификации от сочетания признаков. | ||
+ | |||
+ | ==== [[Метод опорных векторов (SVM)]] ==== | ||
+ | Будем представлять каждый документ, как вектор, задаваемый своим содержимым в общем векторном пространстве. После этого будем строить [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2_(SVM)#.D0.A0.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB.D1.8F.D1.8E.D1.89.D0.B0.D1.8F_.D0.B3.D0.B8.D0.BF.D0.B5.D1.80.D0.BF.D0.BB.D0.BE.D1.81.D0.BA.D0.BE.D1.81.D1.82.D1.8C разделяющую гиперплоскость] для каждого известного класса. | ||
+ | |||
+ | Преимущества метода: | ||
+ | * один из наиболее качественных методов; | ||
+ | * возможность работы с небольшим набором данных для обучения; | ||
+ | * сводимость к задаче выпуклой оптимизации, имеющей единственное решение. | ||
+ | |||
+ | Недостатки метода: сложная интерпретируемость параметров алгоритма и неустойчивость по отношению к выбросам в исходных данных. | ||
+ | |||
=== Оценка качества классификации === | === Оценка качества классификации === | ||
+ | Для оценки качества классификации, как и для оценки качества работы многих других алгоритмов машинного обучения вычисляется [https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA#%D0%A2%D0%BE%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C_(precision) точность] и [https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA#%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D1%82%D0%B0_(recall) полнота]. | ||
== Применение семантических тезаурусов для анализа тональности текстов == | == Применение семантических тезаурусов для анализа тональности текстов == | ||
− | Существуют тезаурусы<ref>[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B0%D1%83%D1%80%D1%83%D1%81 Тезаурус]</ref>, размеченные силами людей с учётом эмоциональной окраски слов, содержащихся в них. Такие словари позволяют определять тональность текста без применения алгоритмов машинного обучения. Тональность текста определяется как сумма тональностей слов, содержащихся в размеченных словарях. | + | Существуют тезаурусы<ref>[https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%B7%D0%B0%D1%83%D1%80%D1%83%D1%81 Тезаурус]</ref>, размеченные силами людей с учётом эмоциональной окраски слов, содержащихся в них. Такие словари позволяют определять тональность текста без применения алгоритмов машинного обучения. Тональность текста определяется как сумма тональностей слов, содержащихся в размеченных словарях. |
+ | |||
Основной проблемой методов, основанных на словарях является трудоёмкость построения словаря: отдельного для каждого нового языка и каждой новой тематики. | Основной проблемой методов, основанных на словарях является трудоёмкость построения словаря: отдельного для каждого нового языка и каждой новой тематики. | ||
+ | |||
Известные тезаурусы: | Известные тезаурусы: | ||
− | * [http://wndomains.fbk.eu/wnaffect.html | + | * [http://wndomains.fbk.eu/wnaffect.html WordNet-Affect]; |
− | * [http://nmis.isti.cnr.it/sebastiani/Publications/LREC10.pdf | + | * [http://nmis.isti.cnr.it/sebastiani/Publications/LREC10.pdf SentiWordNet]; |
− | * [http://sentic.net/ | + | * [http://sentic.net/ SenticNet] |
== Примечания == | == Примечания == | ||
<references/> | <references/> |
Версия 13:03, 9 апреля 2019
Классификация текстов (документов) (Document classification) — задача компьютерной лингвистики[1], заключающаяся в отнесении документа к одной из нескольких категорий на основании содержания документа.
Анализ тональности текста (Sentiment analysis) — задача компьютерной лингвистики, заключающаяся в определении эмоциональной окраски (тональности) текста и, в частности, в выявлении эмоциональной оценки авторов по отношению к объектам, описываемым в тексте.
Содержание
Задачи классификации текстов
Классификация текстов применяется, в том числе, для:
- Разделения веб страниц и сайтов по тематическим каталогам;
- Борьбы со спамом;
- Определение языка текста;
- Показа более релевантной рекламы;
Задачи анализа тональности текста
Основной задачей анализа тональности текста является определение его эмоциональной окраски. Это необходимо, в том числе, для:
- Анализа отзывов о товарах и услугах;
- Определение языка вражды[2];
В общем случае, задача анализа тональности текста эквивалентна задаче классификации текста, где категориями текстов могут быть тональные оценки. Примеры тональных оценок:
- позитивная;
- негативная;
- нейтральная;
Под «нейтральной» подразумевается, что текст не содержит эмоциональной окраски.
Классификация текстов методами машинного обучения
Постановка задачи
Имеется множество категорий (классов, меток)
.Имеется множество документов
.Неизвестная целевая функция
.Необходимо построить классификатор
, максимально близкий к .Имеется некоторая начальная коллекция размеченных документов
, для которых известны значения . Обычно её делят на «обучающую» и «проверочную» части. Первая используется для обучения классификатора, вторая — для независимой проверки качества его работы.Классификатор может выдавать точный ответ
или степень подобия .Этапы подготовки
Предобработка текста
Предобработка текста переводит текст на естественном языке в формат удобный для дальнейшей работы. Применяются следующие операции:
- Перевод всех букв в тексте в нижний или верхний регистры;
- Удаление чисел или замена на текстовый эквивалент;
- Удаление пунктуации;
- Удаление редких и слишком частых слов;
- Стемминг или Лемматизация;
Извлечение признаков из текстов
Большинство математических моделей работают в векторных пространствах больших размерностей, поэтому необходимо отобразить текст в векторном пространстве. Основным походом является мешок слов (bag-of-words): для документа формируется вектор размерности словаря, для каждого слова выделяется своя размерность, для документа записывается признак насколько часто слово встречается в нем, получаем вектор. Наиболее распространенным методом для вычисления признака является TF-IDF[4] (TF — частота слова, term frequency, IDF — обратная частота документа, inverse document frequency). Плюсами мешка слов является простая реализация, однако данный метод теряет часть информации, например, порядок слов. Для уменьшения потери информации можно использовать мешок N-грамм (добавлять не только слова, но и словосочетания), или использовать методы векторных представлений слов это, например, позволяет снизить ошибку на словах с одинаковыми написаниями, но разными значениями.
Алгоритмы классификации
Наивная байесовская модель
Пусть
— вероятность того, что документ, представленный вектором , соответствует категории для . Задача классификатора заключается в том, чтобы подобрать такие значения и , при которых значение вероятности будет максимальным:
Для вычисления значений
пользуются теоремой Байеса:
где
– априорная вероятность того, что документ отнесен к категории ; – вероятность найти документ, представленный вектором , в категории ; – вероятность того, что произвольно взятый документ можно представить в виде вектора признаков .По сути
является отношением количества документов из обучающей выборки , отнесенных в категорию c_i , к количеству всех документов из .не зависит от категории , а значения заданы заранее, поэтому знаменатель — это константа, не влияющая на выбор наибольшего из значений .
Вычисление
затруднительно из-за большого количества признаков , поэтому делают «наивное» предположение о том, что любые две координаты, рассматриваемые как случайные величины, статистически не зависят друг от друга. Тогда можно воспользоваться формулой
Далее все вероятности подсчитываются по методу максимального правдоподобия.
Преимущества метода:
- высокая скорость работы;
- простая реализация алгоритма;
- легкая интерпретируемость результатов работы алгоритма.
Недостатками являются относительно низкое качество классификации и неспособность учитывать зависимость результата классификации от сочетания признаков.
Метод опорных векторов (SVM)
Будем представлять каждый документ, как вектор, задаваемый своим содержимым в общем векторном пространстве. После этого будем строить разделяющую гиперплоскость для каждого известного класса.
Преимущества метода:
- один из наиболее качественных методов;
- возможность работы с небольшим набором данных для обучения;
- сводимость к задаче выпуклой оптимизации, имеющей единственное решение.
Недостатки метода: сложная интерпретируемость параметров алгоритма и неустойчивость по отношению к выбросам в исходных данных.
Оценка качества классификации
Для оценки качества классификации, как и для оценки качества работы многих других алгоритмов машинного обучения вычисляется точность и полнота.
Применение семантических тезаурусов для анализа тональности текстов
Существуют тезаурусы[3], размеченные силами людей с учётом эмоциональной окраски слов, содержащихся в них. Такие словари позволяют определять тональность текста без применения алгоритмов машинного обучения. Тональность текста определяется как сумма тональностей слов, содержащихся в размеченных словарях.
Основной проблемой методов, основанных на словарях является трудоёмкость построения словаря: отдельного для каждого нового языка и каждой новой тематики.
Известные тезаурусы: