Обработка текстов на естественном языке: Практика 1

34
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. Обработка текстов на естественном языке Александр Уланов Лекция 4. Классификация текстов при помощи Weka

description

 

Transcript of Обработка текстов на естественном языке: Практика 1

Page 1: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Обработка  текстов  на  естественном  языке Александр  Уланов

Лекция  4.  Классификация  текстов  при  помощи  Weka

Page 2: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 2

Оглавление  курса

1. Введение.  Слова,  фразы,  предложения,  наборы  текстов 2. Статистики,  языковые  модели 3. Классификация  текстов 4. Практика  I 5. Кластеризация  текстов 6. Разбор  текстов  по  частям  речи.  Поиск  именных  сущностей 7. Извлечение  отношений  из  текстов 8. Практика  II 9. Поиск  дубликатов  в  тексте 10. Анализ  мнений 11. Введение  в  статистический  машинный  перевод 12. Практика  III Литература • Chris Manning and Hinrich Schuetze. Foundations of Statistical Natural Language Processing, MIT Press, 1999 • Philipp Koehn. Statistical Machine Translation, Cambridge Univ. Press, 2010 • Научные  статьи  по  теме (ссылки  на  слайдах),  видеолекции  Stanford и  Coursera (Manning)

Page 3: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 3

Введение

Классификация  текста Процесс  классификации  (из  предыдущей  лекции)  и  анализа  данных • Подготовка  данных – Понять,  что  данные,  а  что  – класс.  Почистить

• Представление  и  предобработка  данных – Токенизация  текста,  вычисления  весов  токенов,  векторное  представление

• Визуализация • Выбор  атрибутов  (признаков)  классификации – Выбор  статистически  значимых  признаков

• Классификация – Логистическая  регрессия,  метод  опорных  векторов  (SVM) и  т.д.

• Оценка  качества – Точность,  полнота,  …

• Классификация  новых  данных

Page 4: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 4

Введение

Weka Программа  для  анализа  данных • Релизована  на  Java • Предобработка  данных,  алгоритмы  классификации,  кластеризации,  ассоциативные  правила,  визуализация

• Можно  использовать  через  интерфейс  пользователя  и  как  библиотеку

• Состоит  из  четырех  приложений: – Explorer – основной  тул  для  работы  с  данными – Experimenter – для  проведения  серий  экспериментов – KnowledgeFlow – для  визуального  построения  процессов  обработки  данных

– Simple CLI – командная  строка

Для  корректного  отображения  русских  текстов  в  кодировке  UTF-8 надо  изменить  runweka.ini: fileEncoding=utf-8

http://www.cs.waikato.ac.nz/ml/weka/

Page 5: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Подготовка  данных

Page 6: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 6

Подготовка  данных

Исходные  данные Варианты  исходных  данных • Таблица  «документ,  класс» – Документ  - строка  с  текстом.  Каждая  запись  с  новой  строки

• Набор  папок  с  текстовыми  файлами – Папка  – класс,  все  файлы  в  папке  принадлежат  данному  классу

Рассмотрим  многоклассовую  классификацию • Но  не  на  много  меток  (когда  одному  документу  может  соответствовать  много  меток)

Текст Класс

Беспорядок  дня. смешно

Добро  пожаловать  отсюда. Не  смешно

Это  не  мой  укор,  мне  его  подбросили. смешно

Page 7: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 7

Подготовка  данных

В  виде  таблицы На  примере  MS Excel 1. Таблица  «класс,  документ»  с  заголовком

Заголовок  определяет  кол-во  столбцов! 2. Заменить  символы  “,’,% на  пробелы,  убрать  

перевод  строк  внутри  ячеек  (поиск->замена,  Ctrl + J символ  перевода  строки)  и  табуляцию  (Alt+009)

3. Сохранить как  файл  с  разделителями  в  виде  табуляций.  Убедиться,  что  не  сохранились  пустые  строки  (в  Weka они  будут  как  Missing values)

То же  самое  можно  сделать  при  помощи  sed • Либо  чем-то  другим

1.

2.

3.

Page 8: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 8

Подготовка  данных

В  виде  папок  с  файлами Каждый  документ  в  отдельном  текстовом  файле.  Название  папки  соответствует  метке  класса  документа

Page 9: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 9

Подготовка  данных

Важно  (чеклист) • Кодировка  текстов • В  файле  с  разделителями  верное  кол-во  табуляций  на  каждой  строчке  и  нет  специальных  символов

• Нет  пустых  строк  или  пропущенных  (пустых)  значений

Page 10: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Загрузка  данных

Page 11: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 11

Загрузка  данных  в  Weka (файл  с  разделителями) Открыть  файл 1. Weka Explorer->Open File 2. Фильтр: All Files,  выбрать  сохраненный  txt файл 3. Выскочит  предупреждение,  что  надо  выбрать  загрузчик  (его  

бы  не  было,  если  файл  был  бы  CSV) 4. Выбрать  параметры  по  умолчанию  и  нажать  ОК 5. В  случае  успеха  см.  cлайд “Интерфейс  Weka Explorer” 6. В  случае  неудачи  – в  Вашем  файле  находятся  

специальные  символы,  которые  мешают  форматированию

1.

2. 3.

4.

Page 12: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 12

Загрузка  данных  в  Weka (папки  с  файлами) Загрузка  папок  с  файлами 1. Weka Simple CLI

Практически  вся  функциональность  Weka доступна  из  командной  строки

2. Преобразовать  структуру  папок  с  файлами  в  формат  ARFF. Для  русского  языка  важно  правильно  указать  кодировку.  Желательно,  чтобы  исходные  файлы  были  в  UTF-8 java weka.core.converters.TextDirectoryLoader -dir c:/ulanov/data -charset "UTF-8" > c:/ulanov/data.arff

3. Открыть получившийся  файл  ARFF в  Weka Explorer (File->Open)

Page 13: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 13

Формат  данных  ARFF

Attribute-Relation File Format (ARFF) Заголовок • @relation: имя  данных  и  список  фильтров  (опционально) – @relateion ‘my_data’

Список  атрибутов  и  их  типов • @attribute:  numeric,  nominal,  string,  … – @attribute document string – @attribute computer numeric

Список  документов  и  ссылок  на  атибуты  в  них • @data: пары  «номер  атрибута,  значение» – {32 1, 162 0.5, 545 sport}

По  сути,  данные  в  Weka представляются  в  виде  «атрибут-значение  атрибута»,  кто  из  атрибутов  класс  – решает  пользователь

Исходный  файл

После  разбивки  текста  на  слова

Page 14: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 14

Загрузка  данных

Важно  (чеклист) • Открыть  файл  ARFF в  текстовом  редакторе  и  посмотреть,  соответствует  ли  он  исходному  файлу

Page 15: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Предобработка  данных

Page 16: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 16

Интерфейс  Weka Explorer (вкладка  Preprocess)

Фильтры

Кол-во  документов

Кол-во  атрибутов

Имена  атрибутов

Статистика  выделенного  атрибута

Визуализация  атрибута  

Какой  атрибут  считать  меткой  класса

Предобработка Классификация

Тип  выделенного  атрибута  (важно!)

Визуализация  всех  атрибутов

Page 17: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 17

Visualize All Можно  визуально  оценить,  есть  ли  хорошие  атрибуты,  разделяющие  классы

Page 18: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 18

Фильтры  данных

Векторное  представление • При  вышеописанной  загрузке  данных  обычно  имеем  два  атрибута (тип  атрибута  на  предыдущем  слайде): @attribute document nominal @attribute my_class nominal

• Мы  работаем  с  текстами,  так  что  надо  представить  документ  в  виде  вектора  слов.  Необходимо  перевести  атрибут  “document”  из  номинативного  типа  в  строковый,  а  потом  разбить  строки  на  слова: – Фильтр  unsupervised.attribute.NominalToString • Указать  номер  (индекс)  атрибута  в  списке

– Фильтр  unsupervised.attribute.StringToWordVector • Указать  номер  (индекс)  атрибута  в  списке

• Обычно  атрибут,  который  обозначает  класс  переносится  в  конец  списка  атрибутов: – Фильтр  unsupervised.attribute.Reorder параметр:  2-last,1

Click!

Page 19: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 19

Предобработка  данных

Важно  (чеклист) • Типы  атрибутов – атрибут  класса  должен  быть  номинативным – текст  надо  преобразовать  в  текстовый  тип  и  разбить  по  словам • StringToWordVector имеет  множество  параметров

• В  результате  должно  появиться  много  атрибутов • Прикинуть,  есть  ли  хорошие  атрибуты  при  помощи  визуализации – То  есть  атрибуты,  которые  чаще  встречаются  в  определенном  классе

Page 20: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Выбор  атрибутов  классификации

Page 21: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 21

Интерфейс  Weka Explorer (вкладка  Select attr.) Метод  выбора  атрибутов

Метод  ранжирования  

Выбор  атрибута,  отвечающего  за  класс

Результаты  выбора  

Список  прошлых  запусков.  По  правой  кнопке  – интересности

Список  отранжированных  атрибутов

Page 22: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 22

Выбор  атрибутов

Последовательность  действий (A) Ранжирование  атрибутов • Weka Explorer ->Select attributes • Attribute evaluator->Method (например,  для  критерия  хи-квадрат  

ChiSquaredAttributeEval • Search Method-> Ranker. Start – Нужен  для  методово  выбора  атрибутов,  которые  возвращают  число  (а  не  «нужен»/«не  нужен»).  Сортирует  по  значению

(B) Ранжирование  и  выбор  атрибутов  (и  удаление  остальных) • Weka Explorer -> Preprocess • Filter->supervised.attribute.AttributeSelection • Evaluator->Method, Search->Ranker – -T – порог  (не  меньше  числа),  -N – сколько  выбрать  (-1  =  все)

• Apply – Атрибуты,  не  прошедшие  по  порогу,  будут  удалены  из  данных

Click!

(A)

(B)

Page 23: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 23

Выбор  атрибутов  классификации

Важно  (чеклист) • Оценить,  сколько  хороших  атрибутов  при  помощи  выбора  атрибутов – Уже  сейчас  можно  прикинуть  уровень  качества  классификации

• Выбор  и  удаление  атрибутов  работает  только,  если  атрибут,  отвечающий  за  класс, стоит  в  конце  списка  и  его  тип  – номинативный – См.  предыдущие  слайды  про  Reorder и  Nominal

Page 24: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Классификация

Page 25: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 25

Интерфейс  Weka Explorer (вкладка  Classify)

Классификатор

Вид  теста

Выбор  атрибута,  отвечающего  за  класс

Результаты  теста.  

Список  прошлых  тестов.  По  правой  кнопке  – сохранение  модели

Точность,  полнота,  Ф-мера  по  классам

Матрица  ошибок  и  верных  решений

Усреднение  по  размеру  классов  в  тесте

Page 26: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 26

Классификация

Классификация  текста Перед  классификацией:  1)  д.б.  атрибут,  который  отвечает  за  класс  и  он  типа  Nominal,  2)д.б.  набор  атрибутов  типа  Numeric 1. Weka Explorer вкладка  Classify 2. Выбрать  классификатор  Classifier->Choose 3. Выбрать  из  списка  атрибут,  отвечающий  за  класс 4. Выбрать  тип  теста  Test Options

User training set: тест  на  всех  данных Cross-validation (Folds N): данные  разбиваются  на  N частей,  проводятся  N тестов  на  N частях  при  обучении  на  остальных  N-1 частях.  Результаты  усредняются Percentage split (% X): Х  процентов  данных  используются  для  обучения

5. Нажать  “Start” Если  кнопка  не  активна,  значит  атрибут  класса  не  типа  Nominal

1. 2.

4.-5.

3.

Page 27: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 27

Классификация

Важно  (чеклист) • Оценить  baseline: – Примитивный  классификатор:  случайное  решение  или  решение  в  сторону  бОльшего  по  размерам  класса

– Классификатор  с  настройками  по  умолчанию  и  без  выбора  атрибутов – Если  первый  работает  лучше  второго,  то  что-то  тут  не  так

• Изучить  таблицу  правильных  решений  и  ошибок  и  попытаться  понять,  в  сторону  каких  классов  ошибается  классификатор  и  почему

Page 28: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Классификация новых  данных

Page 29: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 29

Классификация  новых  данных

Новые  данные? Неразмеченные  данные, либо  данные,  не  входившие  в  тренировочную  выборку.  Данные  в  отдельном  файле • Важно:  формат  данных  для  обучения  и  применения  классификатора  должен  совпадать  (т.е.  одинаковые  заголовки,  т.е.  одинаковый  набор  и  тип  атрибутов,  т.е.  у  номинативного  типа  тот  же  список  значений)

• Два  способа – FilteredClassifier (классификатор  с  фильтром) • Фильтрует  атрибуты  новых  данных  в  соответствии  с  фильтром  данных  для  обучения

– Batch Filtering (пакетная  фильтрация) • Фильтры  применяются  параллельно  к  данным  для  обучения  и  новым  данным,  чтобы  потом  при  тестировании  их  формат  совпадал

Page 30: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 30

Классификация  новых  данных

Классификатор  со  встроенным  фильтром  атрибутов   • Формат  исходных  данных (идентичен  в  тренировочной  выборке  и  в  тесте): – @attribute  ‘my_data’  string – @attribute  ‘my_class’  {‘class1’,  ‘class2’,  ‘class3’} – @data…

• Важно:  в  тестовых  данных  должен  быть  тот  же  заголовок.  Данные  (@data) могут  быть  без  меток  класса

• Выбор  классификатора  с  фильтром  и  его  параметров – Weka Explorer->Classify->weka.classifiers.meta.FilteredClassifier • Classifier: любой  (а  также  FilteredClassifier!) • Filter: StringToWordVector

• Выбор  тестового  набора  данных – Test options->Supplied test set

• В  “More  options” выбрать  “output  predictions”,  чтобы  видеть  решения

Page 31: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 31

Классификация  новых  данных

Пакетная  фильтрация  данных Предыдущий  способ  не  удобен,  когда  надо  применить  несколько  фильтров заранее,  например  StringToWordVector и  AttributeSelection • Формат  исходных  данных в  двух  файлах  идентичен • Пакетная  фильтрация  (флаг  пакетной  фильтрации  -b) – Weka Simple CLI • java weka.filters.unsupervised.attribute.StringToWordVector -b -i dataForTrain.arff -o trainOut1.arff -r dataForTest -s testOut1.arff

• java weka.filters.unsupervised.attribute.Reorder -R 2-last,1 -b -i trainOut1.arff -o trainOut2.arff -r testOut1.arff -s testOut2.arff

• java weka.filters.supervised.attribute.AttributeSelection -E "weka.attributeSelection.ChiSquaredAttributeEval" -S "weka.attributeSelection.Ranker -T 0 -N -1" -b -i trainOut2.arff -o trainFinal.arff -r testOut2.arff -s testFinal.arff

• Классификация  через  Weka Explorer->Classify с  указанием  внешнего  тестового  набора  данных

Page 32: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 32

Классификация  новых  данных

Важно  (чеклист) • Формат  данных  (заголовки)

Page 33: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 33

Спасибо!

[email protected]

Page 34: Обработка текстов на естественном языке: Практика 1

©  Copyright  2013  Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 34

Дополнительно

Классификация  текста • Дополнительные  возможности – Варианты  эксперимента.  Перекрестная  проверка – Сохранение  и  загрузка  модели – Классификация  новых  данных  (2  способа) – Многоклассовая  классификация  на  много  меток  (MEKA)