Практическое задание 2016

Целью работы является создание системы, позволяющей извлекать упоминания объектов из текстов на русском языке. Задачу извлечения объектов можно разделить на две части: обнаружение терминов (англ. 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

7 thoughts on “Практическое задание 2016”

  1. Может ли анафора появляться в тексте раньше, чем полноценное упоминание объекта? Статьи часто начинаются с "пойман наркоман" или "президенты договорились", а кто пойман и какие президенты договорились вводится позже.

  2. Добрый день! не смогла куда написать, но, показалось, что в лекции 3, слайд 11 - опечатка. Возможно, во время лекции это заметили - не смотрела. (P(Sam| <s>) вроде должно быть 1/2?) </s>

    1. Биграмма "<s> Sam" встретилась в примере 1 раз - это числитель. Юниграмма "<s>" (условие) встретилась 3 раза - это знаменатель.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Спецкурс для студентов и аспирантов ВМК МГУ и ФКН ВШЭ