Целью работы является создание системы, позволяющей извлекать упоминания объектов из текстов на русском языке. Задачу извлечения объектов можно разделить на две части: обнаружение терминов (англ. term detection) и определение значений терминов (англ. disambiguation). Извлечение терминов заключается в выделении в тексте подстрок, являющихся упоминаниями конкретных объектов (люди, предметы, города, и т.п.). Под определением значений терминов подразумевается выбор конкретного значения каждого термина (назначение каждому термину идентификатора объекта из некоторой базы знаний).
Предлагается разработать две системы:

  1. Систему, которая на вход получает текст на русском языке, а на выходе отдает координаты терминов в этом тексте.
    Например,
    «Спортивный арбитраж сократил срок дисквалификации Марии Шараповой» -> (0, 19), (50, 65)
  2. Систему, которая на вход получает текст на русском языке и координаты терминов в этом тексте, а на выходе отдает значение для каждого термина (идентификатор статьи русской Википедии).
    Например, «Спортивный арбитраж сократил срок дисквалификации Марии Шараповой», (0, 19), (50, 65) -> {(0, 19): https://ru.wikipedia.org/wiki/Спортивный_арбитражный_суд, (50, 65): https://ru.wikipedia.org/wiki/Шарапова,_Мария_Юрьевна}

 

Практическое задание - правила игры

Инструкция по разметке (манифест)

Примеры разметки и частые вопросы: Examples_and_FAQ.pdf

Система для разметки и автоматической проверки: http://objects.at.ispras.ru

Загружаемый файл должен представлять собой zip архив с любым именем. Архив должен обязательно содержать:

  • классификатор в файле solution.py. В файле должен содержаться класс Solution. В классе должны присутствовать методы
    • train(self, training_corpus). На вход метод train получает список размеченных сообщений. Метод train ничего не возвращает. Внимание: метод train будет вызываться отдельно, так что не стоит вызывать его в конструкторе класса. Также для ускорения проверки рекомендуется сохранять натренированные модели с помощью библиотеки Pickle, и присылать их вместе с решением, если позволяет размер. При наличии сохраненных моделей функция train должа автоматически загружать их.
    • get_terms (self, text), который получает на вход неразмеченное сообщение и возвращает список аннотаций для терминов, найденных в тексте.
    • get_meanings(self, text, terms), который на вход получает текст и список терминов (аннотаций) и возвращает хэш-таблицу с отображением из аннотации термина в значение термина. (см. пример в начале файла).
  • (Пустой) файл __init__.py в корне архива. (Требования к пакетам Python).
  • Описание применяемых алгоритмов в файле description.txt
  • Все используемые внешние библиотеки, кроме библиотек описанных выше.

Шаблон решения: solution.zip (25.10.2016)

Реализация метрик для тестирования и перекрестной проверки: eval.py