Обработка текстов на естественном языке: Практика ii
DESCRIPTION
TRANSCRIPT
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Обработка текстов на естественном языкеАлександр Уланов
Лекция 8. Классификация последовательностей при
помощи Mallet и CRF++ для поиска именных сущностей
© 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
Оглавление
Mallet
CRF++
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.4
Введение
Классификация последовательностей
Особенности
• Текущее решение (класс) зависит от предыдущих решений
• Используются для моделирования разметки текста частями речи и поиска именных сущностей
– Классифицируется каждый токен (слово) в тексте
• Модели обычно основаны на скрытых марковских цепях (Hidden Markov Models - HMM),
марковских цепях с максимальной энтропией (Maximum Entropy MM - MEMM), условных
случайных полях (Conditional Random Fields - CRF)
– MEMM – обычно для частей речи, CRF – для именных сущностей
• В классификации текстов признаков обычно много – это, например, слова из текста статьи
• В классификации последовательностей признаков мало (формально текущее и предыдущее
слово) и их надо придумывать
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.5
Введение
Классификация последовательностей
Процесс подготовки
• Токенизировать текст, разметить соответствующими классами
– В среднем необходимо больше примеров, чем при классификации текстов
• Придумать остроумные признаки
• Реализовать генератор этих признаков
• Сгенерировать данные для обучения классификатора в требуемом формате
– Типичный формат (на каждой новой строчке):слово признак1 признак2… признакN класс
• Обучение классификатора (MEMM, CRF)
• Тестирование
• Классификаци новых данных
– Нужна предобработка для генерации признаков
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.6
Mallet
Mallet
Mallet – программа для статистического анализа текста
• Реализована на Java
• Алгоритмы классификации, кластеризации, извлечения
информации (классификация последовательностей)
• Можно использовать через командный интерфейс и как
библиотеку
Установка
• Скачать с указанного сайта, разархивировать
• Добавить переменную окружения MALLET_HOME с путем к
корневой папке Mallet (например: C:\dis\sci\mallet-2.0.7\)
– Для mingw добавить в PATH тот же путь, (например:
/c/dis/sci/mallet-2.0.7)
http://mallet.cs.umass.edu/
McCallum, Andrew Kachites. "MALLET: A Machine Learning for Language Toolkit."
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.7
Поиск именных сущностей
Mallet
Подготовка данных
• Для русского языка желательно работать в UTF-8
• Формат данных (на каждой новой строчке):слово признак1 признак2… признакN класс
Обучение (CRF)• java -cp "$MALLET_MINGW/class:$MALLET_MINGW/lib/mallet-deps.jar"
cc.mallet.fst.SimpleTagger --train true --model-file
выходной_файл_с_моделью файл_для_обучения
Тест
• С выводом Accuracy (правильность)java -cp "$MALLET_MINGW/class:$MALLET_MINGW/lib/mallet-deps.jar"
cc.mallet.fst.SimpleTagger --model-file файл_с_моделью --test lab
файл_для_теста
• С выводом классовjava -cp "$MALLET_MINGW/class:$MALLET_MINGW/lib/mallet-deps.jar"
cc.mallet.fst.SimpleTagger --model-file файл_с_моделью файл_для_теста
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.8
CRF++
CRF++ : Yet Another CRF toolkit
CRF++ – программа с реализацией CRF
• Реализована на C++
• Работает намного быстрее аналогов на других языках
• Взаимодействие через командную строку
Установка
• Есть бинарники для Windows
• Скачать и скомпилировать для Linux
http://crfpp.googlecode.com/svn/trunk/doc/index.html
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.9
Поиск именных сущностей
CRF++
Подготовка данных
• Для русского языка желательно работать в UTF-8
• Формат данных (на каждой новой строчке):слово признак1 признак2… признакN класс
• Формат шаблона признака классификации:
– Вид: U%x[i,j]
– i – индекс строки (текущяя – 0), j – индекс признака (считая от 0), U - униграмма
– Подробно смотрите на сайте
Обучение• crf_learn.exe файл_с_шаблоном файл_для_обучения выходной_файл_с_моделью
Тест
• С выводом классовcrf_test.exe -m файл_с_моделью файл_с_тестом > файл_для_вывода
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.10
Спасибо!