Классификация текстов и анализ тональности — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(init)
 
м (typo)
(не показано 10 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
'''Классификация текстов (документов)''' (''Document classification'') {{---}} задача компьютерной лингвистики<ref>[https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D0%BD%D0%B3%D0%B2%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0 Компьютерная лингвистика]</ref>, заключающаяся в отнесении документа к одной из нескольких категорий на основании содержания документа.
 
'''Классификация текстов (документов)''' (''Document classification'') {{---}} задача компьютерной лингвистики<ref>[https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D0%BD%D0%B3%D0%B2%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0 Компьютерная лингвистика]</ref>, заключающаяся в отнесении документа к одной из нескольких категорий на основании содержания документа.
  
'''Анализ тональности текста''' (''Sentiment analysis'') {{---}} задача компьютерной лингвистики<ref>[https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D0%BD%D0%B3%D0%B2%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0 Компьютерная лингвистика]</ref>, заключающаяся в определении эмоциональной окраски текста и в частности, в выявлении эмоциональной оценки авторов по отношению к объектам, описываемым в тексте.
+
'''Анализ тональности текста''' (''Sentiment analysis'') {{---}} задача компьютерной лингвистики, заключающаяся в определении эмоциональной окраски (тональности) текста и, в частности, в выявлении эмоциональной оценки авторов по отношению к объектам, описываемым в тексте.
 +
 
 +
== Задачи классификации текстов ==
 +
Классификация текстов применяется, в том числе, для:
 +
* Разделения веб страниц и сайтов по тематическим каталогам;
 +
* Борьбы со спамом;
 +
* Определение языка текста;
 +
* Показа более релевантной рекламы;
 +
 
 +
== Задачи анализа тональности текста ==
 +
Основной задачей анализа тональности текста является определение его эмоциональной окраски. Это необходимо, в том числе, для:
 +
* Анализа отзывов о товарах и услугах;
 +
* Определение языка вражды<ref>[https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%B2%D1%80%D0%B0%D0%B6%D0%B4%D1%8B Язык Вражды]</ref>;
 +
В общем случае, задача анализа тональности текста эквивалентна задаче классификации текста, где категориями текстов могут быть тональные оценки.
 +
Примеры тональных оценок:
 +
* позитивная;
 +
* негативная;
 +
* нейтральная;
 +
Под «нейтральной» подразумевается, что текст не содержит эмоциональной окраски.
 +
 
 +
== Классификация текстов методами машинного обучения ==
 +
=== Постановка задачи ===
 +
Имеется множество категорий (классов, меток) <math>\mathfrak{C}=\{c_1,...,c_{\left|\mathfrak{C}\right|}\}</math>.
 +
 
 +
Имеется множество документов <math>\mathfrak{D}= \{ d_1, ... , d_{ \left| \mathfrak{D} \right| } \}</math>.
 +
 
 +
Неизвестная целевая функция <math>\Phi\colon \mathfrak{C} \times \mathfrak{D} \rightarrow \{ 0, 1 \}</math>.
 +
 
 +
Необходимо построить классификатор <math> \Phi^\prime </math>, максимально близкий к <math>\Phi</math>.
 +
 
 +
Имеется некоторая начальная коллекция размеченных документов <math>\mathfrak{R} \subset \mathfrak{C} \times \mathfrak{D}</math>, для которых известны значения <math>\Phi</math>. Обычно её делят на «обучающую» и «проверочную» части. Первая используется для обучения классификатора, вторая — для независимой проверки качества его работы.
 +
 
 +
Классификатор может выдавать точный ответ <math>\Phi^\prime\colon \mathfrak{C} \times \mathfrak{D} \rightarrow \{ 0, 1 \}</math> или степень подобия <math>\Phi^\prime\colon \mathfrak{C} \times \mathfrak{D} \rightarrow [ 0, 1 ]</math>.
 +
 
 +
=== Этапы подготовки ===
 +
==== Предобработка текста ====
 +
Предобработка текста переводит текст на естественном языке в формат удобный для дальнейшей работы. Применяются следующие операции:
 +
* Перевод всех букв в тексте в нижний или верхний регистры;
 +
* Удаление чисел или замена на текстовый эквивалент;
 +
* Удаление пунктуации;
 +
* Удаление редких и слишком частых слов;
 +
* [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-грамм (добавлять не только слова, но и словосочетания), или использовать методы векторных представлений слов это, например, позволяет снизить ошибку на словах с одинаковыми написаниями, но разными значениями.
 +
=== Алгоритмы классификации ===
 +
==== Наивная байесовская модель ====
 +
Пусть <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>, размеченные силами людей с учётом эмоциональной окраски слов, содержащихся в них. Такие словари позволяют определять тональность текста без применения алгоритмов машинного обучения. Тональность текста определяется как сумма тональностей слов, содержащихся в размеченных словарях.
 +
 
 +
Основной проблемой методов, основанных на словарях является трудоёмкость построения словаря: отдельного для каждого нового языка и каждой новой тематики.
 +
 
 +
Известные тезаурусы:
 +
* [http://wndomains.fbk.eu/wnaffect.html WordNet-Affect];
 +
* [http://nmis.isti.cnr.it/sebastiani/Publications/LREC10.pdf SentiWordNet];
 +
* [http://sentic.net/ SenticNet]
 +
 
 +
== Примечания ==
 +
<references/>

Версия 13:03, 9 апреля 2019

Классификация текстов (документов) (Document classification) — задача компьютерной лингвистики[1], заключающаяся в отнесении документа к одной из нескольких категорий на основании содержания документа.

Анализ тональности текста (Sentiment analysis) — задача компьютерной лингвистики, заключающаяся в определении эмоциональной окраски (тональности) текста и, в частности, в выявлении эмоциональной оценки авторов по отношению к объектам, описываемым в тексте.

Задачи классификации текстов

Классификация текстов применяется, в том числе, для:

  • Разделения веб страниц и сайтов по тематическим каталогам;
  • Борьбы со спамом;
  • Определение языка текста;
  • Показа более релевантной рекламы;

Задачи анализа тональности текста

Основной задачей анализа тональности текста является определение его эмоциональной окраски. Это необходимо, в том числе, для:

  • Анализа отзывов о товарах и услугах;
  • Определение языка вражды[2];

В общем случае, задача анализа тональности текста эквивалентна задаче классификации текста, где категориями текстов могут быть тональные оценки. Примеры тональных оценок:

  • позитивная;
  • негативная;
  • нейтральная;

Под «нейтральной» подразумевается, что текст не содержит эмоциональной окраски.

Классификация текстов методами машинного обучения

Постановка задачи

Имеется множество категорий (классов, меток) [math]\mathfrak{C}=\{c_1,...,c_{\left|\mathfrak{C}\right|}\}[/math].

Имеется множество документов [math]\mathfrak{D}= \{ d_1, ... , d_{ \left| \mathfrak{D} \right| } \}[/math].

Неизвестная целевая функция [math]\Phi\colon \mathfrak{C} \times \mathfrak{D} \rightarrow \{ 0, 1 \}[/math].

Необходимо построить классификатор [math] \Phi^\prime [/math], максимально близкий к [math]\Phi[/math].

Имеется некоторая начальная коллекция размеченных документов [math]\mathfrak{R} \subset \mathfrak{C} \times \mathfrak{D}[/math], для которых известны значения [math]\Phi[/math]. Обычно её делят на «обучающую» и «проверочную» части. Первая используется для обучения классификатора, вторая — для независимой проверки качества его работы.

Классификатор может выдавать точный ответ [math]\Phi^\prime\colon \mathfrak{C} \times \mathfrak{D} \rightarrow \{ 0, 1 \}[/math] или степень подобия [math]\Phi^\prime\colon \mathfrak{C} \times \mathfrak{D} \rightarrow [ 0, 1 ][/math].

Этапы подготовки

Предобработка текста

Предобработка текста переводит текст на естественном языке в формат удобный для дальнейшей работы. Применяются следующие операции:

  • Перевод всех букв в тексте в нижний или верхний регистры;
  • Удаление чисел или замена на текстовый эквивалент;
  • Удаление пунктуации;
  • Удаление редких и слишком частых слов;
  • Стемминг или Лемматизация;

Извлечение признаков из текстов

Большинство математических моделей работают в векторных пространствах больших размерностей, поэтому необходимо отобразить текст в векторном пространстве. Основным походом является мешок слов (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)

Будем представлять каждый документ, как вектор, задаваемый своим содержимым в общем векторном пространстве. После этого будем строить разделяющую гиперплоскость для каждого известного класса.

Преимущества метода:

  • один из наиболее качественных методов;
  • возможность работы с небольшим набором данных для обучения;
  • сводимость к задаче выпуклой оптимизации, имеющей единственное решение.

Недостатки метода: сложная интерпретируемость параметров алгоритма и неустойчивость по отношению к выбросам в исходных данных.

Оценка качества классификации

Для оценки качества классификации, как и для оценки качества работы многих других алгоритмов машинного обучения вычисляется точность и полнота.

Применение семантических тезаурусов для анализа тональности текстов

Существуют тезаурусы[3], размеченные силами людей с учётом эмоциональной окраски слов, содержащихся в них. Такие словари позволяют определять тональность текста без применения алгоритмов машинного обучения. Тональность текста определяется как сумма тональностей слов, содержащихся в размеченных словарях.

Основной проблемой методов, основанных на словарях является трудоёмкость построения словаря: отдельного для каждого нового языка и каждой новой тематики.

Известные тезаурусы:

Примечания