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

Post on 16-Dec-2014

603 views 5 download

Tags:

description

 

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

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

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

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

©  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)

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

Введение

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

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

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

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

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

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

©  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/

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

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

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

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

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

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

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

Текст Класс

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

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

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

©  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.

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

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

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

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

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

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

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

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

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

©  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.

©  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)

©  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 представляются  в  виде  «атрибут-значение  атрибута»,  кто  из  атрибутов  класс  – решает  пользователь

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

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

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

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

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

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

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

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

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

Фильтры

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

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

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

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

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

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

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

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

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

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

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

©  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!

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

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

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

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

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

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

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

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

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

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

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

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

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

©  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)

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

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

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

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

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

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

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

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

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

Вид  теста

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

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

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

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

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

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

©  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.

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

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

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

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

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

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

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

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

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

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

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

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

©  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”,  чтобы  видеть  решения

©  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 с  указанием  внешнего  тестового  набора  данных

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

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

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

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

Спасибо!

nashb@yandex.ru

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

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

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