Изменения
→Задачи анализа тональности текста
* нейтральная;
Под «нейтральной» подразумевается, что текст не содержит эмоциональной окраски.
В качестве примера или упражнения можно предсказывать тональность рецензий к фильмам. Например, предсказывать оценку(тональность), что поставил автор, по набору слов в формате one-hot.
Анализ тональности обычно определяют как одну из задач компьютерной лингвистики, т.е. подразумевается, что мы можем найти и классифицировать тональность, используя инструменты обработки естественного языка. Сделав большое обобщение, можно разделить существующие подходы на следующие категории:
* Подходы, основанные на правилах
* Подходы, основанные на словарях
* Машинное обучение с учителем
* Машинное обучение без учителя
'''Первый тип''' систем состоит из набора правил, применяя которые система делает заключение о тональности текста. Например, для предложения «Я люблю кофе», можно применить следующее правило: ''если сказуемое ("люблю") входит в положительный набор глаголов ("люблю", "обожаю", "одобряю" ...) и в предложении не имеется отрицаний, то классифицировать тональность как "положительная"''
Многие коммерческие системы используют данный подход, несмотря на то что он требует больших затрат, т.к. для хорошей работы системы необходимо составить большое количество правил. Зачастую правила привязаны к определенному домену (например, «ресторанная тематика») и при смене домена («обзор фотоаппаратов») требуется заново составлять правила. Тем не менее, этот подход является наиболее точным при наличии хорошей базы правил.
'''Подходы, основанные на словарях''', используют так называемые тональные словари (affective lexicons) для анализа текста. В простом виде тональный словарь представляет из себя список слов со значением тональности для каждого слова. Вот пример из базы ANEW<ref>[https://www.mdpi.com/2076-3417/8/2/274/html Анализ ANEW dataset]</ref>, переведенный на русский, где число означет валентность(1-9):
*счастливый-8.21
*хороший-7.47
*скучный-2.95
*сердитый-2.85
*грустный-1.61
Чтобы проанализировать текст, можно воспользоваться следующим алгоритмом: сначала каждому слову в тексте присвоить его значением тональности из словаря (если оно присутствует в словаре), а затем вычислить общую тональность всего текста. Вычислять общую тональность можно разными способами. Самый простой из них — среднее арифметическое всех значений. Более сложный — обучить нейронную сеть.
'''Машинное обучение без учителя''' представляет собой, наверное, наиболее интересный и в то же время наименее точный метод анализа тональности. Одним из примеров данного метода может быть автоматическая кластеризация документов.
=== Машинное обучение с учителем ===
Процесс создания системы анализа тональности очень похож на процесс создания других систем с применением машинного обучения:
1. необходимо собрать коллекцию документов для обучения классификатора
2. каждый документ из обучающей коллекции нужно представить в виде вектора признаков
3. для каждого документа нужно указать «правильный ответ», т.е. тип тональности (например, положительная или отрицательная), по этим ответам и будет обучаться классификатор
4. выбор алгоритма классификации и обучение классификатора
5. использование полученной модели
Если стоит задача классификации на более чем два класса, то тут возможны следующие варианты для обучения классификатора:
* Плоская классификация — обучаем лишь один классификатор для всех классов.
* Иерархическая классификация — делим классы на группы и обучаем несколько классификаторов для определения групп. Например, если у нас 5 классов («сильно положительный», «средне положительный», «нейтральный», «средне отрицательный», «сильно отрицательный»), то можно сначала обучить бинарный классификатор, который отделяет нейтральные тексты от субъективных; затем обучить классификатор, который отделяет положительные мнения от отрицательных; и в итоге классификатор, который отделяет сильно выраженные мнения от средних.
* Регрессия — обучаем классификатор для получения численного значения тональности, например от 1 до 10, где большее значение означает более положительную тональность.
Обычно иерархическая классификация дает лучшие результаты чем плоская, т.к. для каждого классификатора можно найти набор признаков, который позволяет улучшить результаты. Однако, он требует больших времени и усилий для обучения и тестирования. Регрессия может показать лучшие результаты, если классов действительно много (от 5 и более).
=== Этапы подготовки ===
==== Предобработка текста ====
Предобработка текста переводит текст на естественном языке в формат удобный для дальнейшей работы. Применяются следующие операции:
* Перевод всех букв в тексте в нижний или верхний регистры;
* Удаление чисел или замена на текстовый эквивалент;
* Удаление пунктуации;
* Удаление редких и слишком частых слов;
* [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<ref>[https://en.wikipedia.org/wiki/Tf%E2%80%93idf TF-idf]</ref> и его вариации (TF — частота слова, term frequency, IDF — обратная частота документа, inverse document frequency). Плюсами мешка слов является простая реализация, однако данный метод теряет часть информации, например, порядок слов. Для уменьшения потери информации можно использовать мешок N-грамм (добавлять не только слова, но и словосочетания), или использовать методы векторных представлений слов(Word2vec) это, например, позволяет снизить ошибку на словах с одинаковыми написаниями, но разными значениями и наоборот.
== Классификация текстов методами машинного обучения ==