
ABBYY Labs? Что это?
Идея студенческих лабораторий очень проста: мы собираем команду студентов, которые занимаются решением задач под руководством наших специалистов. В МФТИ это проходит в рамках годового курса «Инновационный практикум». Цель проекта – дать возможность студентам в процессе обучения решать задачи, в большей степени приближенные к реальным, чем это бывает в обычном учебном процессе. И «погрузить» их при этом в соответствующее окружение: среда, в которой проходит разработка, – реально действующая IT-компания.
Проекты прошлых лет
Распознавание формул
Постановка задачи:
Студенческие лаборатории ABBYY
Решение задачи:
ABBYY Labs – what's new?
Постановка задачи:

Решение задачи:

Текущие проекты
Приложение для Android
ABBYY Labs: Проект «FromWord» — играем словами на Android
Вопросно-ответная система
ABBYY Labs. Проект «Q&A»: начало
+↓

Вопросно-ответная система

+↓
Кратко о проекте:
Задача: Иметь возможность найти часть ранее загруженного текста, наиболее полно отвечующую на вопрос пользователя, заданный на естественном языке.
Текущее состояние: Можно пощупать ручками!
Будущее: Туманно. Зависит от реакции и платёжеспособности аудитории.
Поэтому: Не проходите мимо!
Под катом ссылка на демо-пример, и вообще, логическое продолжение прошлой части.
Принцип работы
Заранее загружаются тексты, с которыми планируется работать. После обработки этих текстов появляется возможность задавать вопросы по ним на естественном языке и, что важно, получать ответы :). Под это дело уже готов API. Ребятам видится, что данный сервис может быть хорош для использования на сайтах с большим количеством текстовой информации, например, на форумах, в медицинских и юридических справочниках. Если же хабралюд предложит новую область применения — разработчики будут только рады.Языковой барьер — не проблема, пока мы говорим об английском и русском (в том смысле, что по русскому тексту можно задавать вопрос на английском и наоборот). В будущем список «родных» для механизма языков будет расти.
Ребята очень просили рассказать про организацию движка. Я в их описании понял чуть меньше половины (читай — ничего), поэтому помещаю его под спойлер
Устрашающие слова: эллипсис, морфологическое описание, дерево, граф
- Обработка текстов
- Получили от Compreno разбор текста в виде xml
- Каждое предложение текста представляет собой дерево (в общем случае лес, если предложение сложное). Узел такого дерева – это слово (или словосочетание, например, когда в предложении есть фразеологизм) в предложении. Причем в каждой вершине, хранится морфологическое описание данного слова (т.е. падеж, число, род и т.д.) Две связанных вершины дерева представляют собой словосочетание.
- В общем случае предложение представляет собой несколько деревьев (например, две части сложносочиненного предложения), и поэтому для каждого предложения создаётся чисто технический узел, не несущий никакой информации, за который подвешиваются деревья из предложения. А они в свою очередь подвешиваются к корню текста. Таким образом для любого текста мы получаем одно дерево разбора.
- Затем добавляем недревесные связи (анафоры и эллипсисы)
- Аналогичное дерево строится и для вопроса
- Далее осуществляется поиск
- Пробегаем по всем предложениям текста и сравниваем все узлы из вопроса со всеми узлами из этого предложения. Сравнение происходит по их морфологическим и семантическим описаниям. Такое сравнение позволяет отождествлять не только синонимы, но и схожие слова из разных языков (слова со схожим значением). И результатом сравнения является коэффициент схожести контента узлов в паре.
- Далее обрабатываются анафорические связи, и для некоторых пар (узел из предложения – узел из вопроса), пересчитывается коэффициент.
- Повторно сравниваются все узлы вопроса со всеми узлами предложения, но теперь с учетом детей. В результате каждая пара узлов получает коэффициент структурной схожести (это число, характеризующее схожесть поддеревьев по строению).
- На следующем этапе сравниваются уже целые поддеревья. Описать процесс сравнения поддеревьев словами сложно, поэтому попробуем провести аналогию (не совсем адекватную). Пусть есть две сети дорог, представляющие собой деревья. Выберем узел в каждой сети и поместим туда по близнецу, которые любят ходить по одинаковым (или очень похожим) дорогам. И, собственно, просим их ходить по ним, подсчитывая суммарную похожесть. Помещая их изначально в различные пары узлов, можно найти ту пару, начиная от которой суммарная похожесть окажется наибольшей. Это число и запоминается для данного предложения, как его вес.
- В качестве ответов выбираются предложения с наибольшим весом.
Прочие важные штуки
Скорость. Работает не то, чтобы молниеносно, но тому есть свои причины: держится всё это хозяйство в амазоновском облаке на самом дешёвом инстансе (который бесплатный для тестовых целей). Поэтому на скорость не пеняйте!Качество поиска ответа.

Возможности по улучшению. В случае поиска по материалу с заранее известной тематикой, сервис может быть сконфигурирован с учётом её, что повысит релевантность поиска. Скорость, как уже было сказано, тоже может быть увеличена путём предоставления более мощного инстанса в облаках.
Самое главное. Ссылка-то, вот она!
Achtung! На данный момент ответ можно искать по одному из 3 текстов (загрузка новых отключена для избежания хабраэффекта), среди которых
Хочется знать мнение пользователей Хабра: где ещё можно использовать данный сервис? Ну и критики давайте, критики :)