Программирование и лингвистика: как понять язык и...
TRANSCRIPT
![Page 1: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/1.jpg)
17 октября 2015
Павел Вейник
Программирование и лингвистика:как понять язык и
извлечь знания из текстов
Реальный кейс проекта
![Page 2: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/2.jpg)
17 октября 2015
Понимание текста
Эмоциональный анализ
Определение тематики текста
Определение тенденций
Выявление значимых событий и персон
Knowledge Extraction
![Page 3: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/3.jpg)
17 октября 2015
Natural Language Processing
Качество всегда существенно меньше 100%
В критичных задачах требуют вмешательства человека
Часто сложны в понимании и применении
Не решают прямо business задачи
![Page 4: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/4.jpg)
17 октября 2015
Проект
Заказчик: большой инвестиционный фонд (не стартапы — строительство, финансы...)
Цель: всегда иметь полный и минимальный обзор текущих событий в интересующих областях.
Контекст: мировые новости на английском языке.
MVP: простейшее выделение объектов.
![Page 5: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/5.jpg)
17 октября 2015
Pipeline
![Page 6: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/6.jpg)
17 октября 2015
Pipeline: Search Engine
Задача: получить адреса всех страниц по интересующим тематикам.
Решение: использовать платный Google Custom Search.
Вход: Seed Phrases — список создается до начала работы и постоянно пополняется в процессе.
Реализация: custom, Amazon EC2.
![Page 7: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/7.jpg)
17 октября 2015
Pipeline: Crawler
Задача: получить содержимое всех страниц по интересующим тематикам.
Вход: очередь адресов.
Решение: использовать Crawler4j — просто и немасштабируемо.
Реализация: Crawler4j, Amazon EC2.
![Page 8: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/8.jpg)
17 октября 2015
Pipeline: Text Extractor
Задача: извлечь текст статьи из страницы.
Сложность: эвристики, машинное обучение.
Вход: очередь страниц.
Решение: использовать boilerpipe.code.google.com/p/boilerpipe/
Реализация: boilerpipe, несколько Amazon EC2.
![Page 9: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/9.jpg)
17 октября 2015
![Page 10: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/10.jpg)
17 октября 2015
Pipeline: NE Extractor
Задача: извлечь Named Entities из текста страницы.
Сложность: эвристики, машинное обучение, словари.
Вход: очередь страниц.
Решение: использовать Illinois Named Entity Tagger.cogcomp.cs.illinois.edu/page/software_view/NETagger
Реализация: Illinois NE Tagger, несколько Amazon EC2.
![Page 11: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/11.jpg)
17 октября 2015
![Page 12: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/12.jpg)
17 октября 2015
Pipeline: NE Disambiguator
Задача: понять какие NE представляют одно и то же.
Сложность: эвристики, машинное обучение, словари.
Вход: очередь NE и текст страницы.
Решение: использовать Illinois NE Similarity Metric.cogcomp.cs.illinois.edu/page/software_view/NESim
Реализация: Illinois NESim + custom, несколько Amazon EC2.
![Page 13: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/13.jpg)
17 октября 2015
![Page 14: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/14.jpg)
17 октября 2015
Pipeline: Relation Extractor
Задача: найти в тексте связки.Связка — то, что может связывать NE в предложении.
Сложность: эвристики, словари.
Вход: очередь страниц.
Решение: сформировать и пополнять словарь связок.
Реализация: custom, несколько Amazon EC2.
![Page 15: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/15.jpg)
17 октября 2015
![Page 16: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/16.jpg)
17 октября 2015
Pipeline: Temporal Expressions Extractor
Задача: найти в тексте упоминания дат в любом виде.
Сложность: эвристики, словари.
Вход: очередь страниц.
Решение: Illinois Temporal Expression Extractor.
Реализация: Illinois TE Extractor, несколько Amazon EC2.
![Page 17: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/17.jpg)
17 октября 2015
![Page 18: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/18.jpg)
17 октября 2015
Pipeline: Sentence Detector
Задача: разбить текст на предложения.
Сложность: эвристики, машинное обучение.
Вход: очередь страниц.
Решение: Stanford Tokenizer, LingPipe Sentence Detection или ANNIE Sentence Splitter.
Реализация: Stanford Tokenizer, несколько Amazon EC2.
![Page 19: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/19.jpg)
17 октября 2015
Pipeline: Fact Extractor
Задача: выделить факты.Факт — это один или больше NE, связка и, возможно, дата.
Сложность: эвристики.
Вход: выделенные NE, связки, Теmporal Expressions, границы предложений.
Решение: custom.
Реализация: custom, несколько Amazon EC2.
![Page 20: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/20.jpg)
17 октября 2015
![Page 21: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/21.jpg)
17 октября 2015
Pipeline: Fact Merger
Задача: выбросить дублирующиеся факты.
Сложность: эвристики.
Вход: выделенные факты, бд фактов.
Решение: custom.
Реализация: custom, несколько Amazon EC2.
![Page 22: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/22.jpg)
17 октября 2015
![Page 23: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/23.jpg)
17 октября 2015
Pipeline: Theme Detector
Задача: определить тему текста.
Сложность: машинное обучение.
Вход: текст страницы.
Решение: Stanfod MaxEnt Classifier.
Реализация: Stanfod MaxEnt Classifier, несколько Amazon EC2.
![Page 24: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/24.jpg)
17 октября 2015
Pipeline: Feedback Cycle
Задача: дать контроль на каждом шаге.
Сложность: зависит от шаге.
Вход: степень уверенности компонента в его результатах.
Решение: custom.
Реализация: custom, UI, несколько Amazon EC2.
![Page 25: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/25.jpg)
17 октября 2015
![Page 26: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/26.jpg)
17 октября 2015
![Page 27: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/27.jpg)
17 октября 2015
Начало
Объем: 4 млн документов в сутки.
Скорость: 30 минутный интервал после появления новости.
Решение: AWS EC2, DynamoDB, SQS, RDS, S3.
![Page 28: Программирование и лингвистика: как понять язык и извлечь знания из текстов](https://reader037.vdocuments.mx/reader037/viewer/2022102720/587d4d361a28ab7c638b7987/html5/thumbnails/28.jpg)
17 октября 2015
Топология