Целью работы является создание системы, позволяющей извлекать упоминания объектов из текстов на русском языке. Задачу извлечения объектов можно разделить на две части: обнаружение терминов (англ. term detection) и определение значений терминов (англ. disambiguation). Извлечение терминов заключается в выделении в тексте подстрок, являющихся упоминаниями конкретных объектов (люди, предметы, города, и т.п.). Под определением значений терминов подразумевается выбор конкретного значения каждого термина (назначение каждому термину идентификатора объекта из некоторой базы знаний).
Предлагается разработать две системы:
- Систему, которая на вход получает текст на русском языке, а на выходе отдает координаты терминов в этом тексте.
Например,
«Спортивный арбитраж сократил срок дисквалификации Марии Шараповой» -> (0, 19), (50, 65) - Систему, которая на вход получает текст на русском языке и координаты терминов в этом тексте, а на выходе отдает значение для каждого термина (идентификатор статьи русской Википедии).
Например, «Спортивный арбитраж сократил срок дисквалификации Марии Шараповой», (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
А хэш-теги в статье нужно рамечать?
Да
Может ли анафора появляться в тексте раньше, чем полноценное упоминание объекта? Статьи часто начинаются с "пойман наркоман" или "президенты договорились", а кто пойман и какие президенты договорились вводится позже.
"наркорурьер
разумеется, пойман наркокурьер
Из вопроса понятен ответ, но, на всякий случай: может.
Добрый день! не смогла куда написать, но, показалось, что в лекции 3, слайд 11 - опечатка. Возможно, во время лекции это заметили - не смотрела. (P(Sam| <s>) вроде должно быть 1/2?) </s>
Биграмма "<s> Sam" встретилась в примере 1 раз - это числитель. Юниграмма "<s>" (условие) встретилась 3 раза - это знаменатель.