Павел Вейник-«Программирование и лингвистика: как...
TRANSCRIPT
17 октября 2015
17 октября 2015
Павел Вейник
Программирование и лингвистика:как понять язык и
извлечь знания из текстов
Реальный кейс проекта
17 октября 2015
Понимание текста
Эмоциональный анализ
Определение тематики текста
Определение тенденций
Выявление значимых событий и персон
Knowledge Extraction
17 октября 2015
Natural Language Processing
Качество всегда существенно меньше 100%
В критичных задачах требуют вмешательства человека
Часто сложны в понимании и применении
Не решают прямо business задачи
17 октября 2015
Проект
Заказчик: большой инвестиционный фонд (не стартапы — строительство, финансы...)
Цель: всегда иметь полный и минимальный обзор текущих событий в интересующих областях.
Контекст: мировые новости на английском языке.
MVP: простейшее выделение объектов.
17 октября 2015
Pipeline
17 октября 2015
Pipeline: Search Engine
Задача: получить адреса всех страниц по интересующим тематикам.
Решение: использовать платный Google Custom Search.
Вход: Seed Phrases — список создается до начала работы и постоянно пополняется в процессе.
Реализация: custom, Amazon EC2.
17 октября 2015
Pipeline: Crawler
Задача: получить содержимое всех страниц по интересующим тематикам.
Вход: очередь адресов.
Решение: использовать Crawler4j — просто и немасштабируемо.
Реализация: Crawler4j, Amazon EC2.
17 октября 2015
Pipeline: Text Extractor
Задача: извлечь текст статьи из страницы.
Сложность: эвристики, машинное обучение.
Вход: очередь страниц.
Решение: использовать boilerpipe.code.google.com/p/boilerpipe/
Реализация: boilerpipe, несколько Amazon EC2.
17 октября 2015
17 октября 2015
Pipeline: NE Extractor
Задача: извлечь Named Entities из текста страницы.
Сложность: эвристики, машинное обучение, словари.
Вход: очередь страниц.
Решение: использовать Illinois Named Entity Tagger.cogcomp.cs.illinois.edu/page/software_view/NETagger
Реализация: Illinois NE Tagger, несколько Amazon EC2.
17 октября 2015
17 октября 2015
Pipeline: NE Disambiguator
Задача: понять какие NE представляют одно и то же.
Сложность: эвристики, машинное обучение, словари.
Вход: очередь NE и текст страницы.
Решение: использовать Illinois NE Similarity Metric.cogcomp.cs.illinois.edu/page/software_view/NESim
Реализация: Illinois NESim + custom, несколько Amazon EC2.
17 октября 2015
17 октября 2015
Pipeline: Relation Extractor
Задача: найти в тексте связки.Связка — то, что может связывать NE в предложении.
Сложность: эвристики, словари.
Вход: очередь страниц.
Решение: сформировать и пополнять словарь связок.
Реализация: custom, несколько Amazon EC2.
17 октября 2015
17 октября 2015
Pipeline: Temporal Expressions Extractor
Задача: найти в тексте упоминания дат в любом виде.
Сложность: эвристики, словари.
Вход: очередь страниц.
Решение: Illinois Temporal Expression Extractor.
Реализация: Illinois TE Extractor, несколько Amazon EC2.
17 октября 2015
17 октября 2015
Pipeline: Sentence Detector
Задача: разбить текст на предложения.
Сложность: эвристики, машинное обучение.
Вход: очередь страниц.
Решение: Stanford Tokenizer, LingPipe Sentence Detection или ANNIE Sentence Splitter.
Реализация: Stanford Tokenizer, несколько Amazon EC2.
17 октября 2015
Pipeline: Fact Extractor
Задача: выделить факты.Факт — это один или больше NE, связка и, возможно, дата.
Сложность: эвристики.
Вход: выделенные NE, связки, Теmporal Expressions, границы предложений.
Решение: custom.
Реализация: custom, несколько Amazon EC2.
17 октября 2015
17 октября 2015
Pipeline: Fact Merger
Задача: выбросить дублирующиеся факты.
Сложность: эвристики.
Вход: выделенные факты, бд фактов.
Решение: custom.
Реализация: custom, несколько Amazon EC2.
17 октября 2015
17 октября 2015
Pipeline: Theme Detector
Задача: определить тему текста.
Сложность: машинное обучение.
Вход: текст страницы.
Решение: Stanfod MaxEnt Classifier.
Реализация: Stanfod MaxEnt Classifier, несколько Amazon EC2.
17 октября 2015
Pipeline: Feedback Cycle
Задача: дать контроль на каждом шаге.
Сложность: зависит от шаге.
Вход: степень уверенности компонента в его результатах.
Решение: custom.
Реализация: custom, UI, несколько Amazon EC2.
17 октября 2015
17 октября 2015
17 октября 2015
Начало
Объем: 4 млн документов в сутки.
Скорость: 30 минутный интервал после появления новости.
Решение: AWS EC2, DynamoDB, SQS, RDS, S3.
17 октября 2015
Топология