Редактор параллельных разметок (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Строка 11: Строка 11:
 
=== Что это за проект? ===
 
=== Что это за проект? ===
 
====Мотивировка====
 
====Мотивировка====
 +
 
Для разметки языковых данных в корпусах, базах данных и т.п. часто пользуются краудсорсингом, привлекая студентов, школьников, энтузиастов, низкооплачиваемых mechanical turks. Являясь непрофессионалами и не имея достаточного опыта, эти разметчики делают много ошибок, поэтому обычно одни и те же данные размечаются двумя-тремя-.. - пятью разметчиками. Нужен интерфейс для супервайзера-профессионала, который на основе этих параллельных разметок создаст правильную итоговую разметку. (Аналогично такую чистовую разметку делают на основе ответов нескольких автоматических разметчиков).
 
Для разметки языковых данных в корпусах, базах данных и т.п. часто пользуются краудсорсингом, привлекая студентов, школьников, энтузиастов, низкооплачиваемых mechanical turks. Являясь непрофессионалами и не имея достаточного опыта, эти разметчики делают много ошибок, поэтому обычно одни и те же данные размечаются двумя-тремя-.. - пятью разметчиками. Нужен интерфейс для супервайзера-профессионала, который на основе этих параллельных разметок создаст правильную итоговую разметку. (Аналогично такую чистовую разметку делают на основе ответов нескольких автоматических разметчиков).
  
 
====Что такое разметка?====  
 
====Что такое разметка?====  
 +
 
Токен (слово или другая единица языка) с приписанным ему набором тегов ("разбором"), ср. пример из древнерусского:<br />
 
Токен (слово или другая единица языка) с приписанным ему набором тегов ("разбором"), ср. пример из древнерусского:<br />
 
<ana lex="проблискатисѧ" gr="V,praes,sg,3p" source_el="ἀπαστράπτεται"/>проблискаѥтсѧ<br />
 
<ana lex="проблискатисѧ" gr="V,praes,sg,3p" source_el="ἀπαστράπτεται"/>проблискаѥтсѧ<br />
Строка 19: Строка 21:
 
[[Файл:IMAG1097.jpg|мини]]
 
[[Файл:IMAG1097.jpg|мини]]
  
====Интерфейс должен уметь:====
+
====Требования к разрабатываемой системе====
1) создавать "проект" и загружать исходные файлы (от двух до N файлов с xml-разметкой в юникоде)<br />
+
  
2) выравнивать данные из разных файлов по токенам (NB возможны мелкие расхождения)<br />
+
Система должна предоставлять следующие функции (I):
  
3) показывать расхождения (подсветкой?)<br />
+
# создавать "проект" и загружать исходные файлы (от двух до N файлов с xml-разметкой в юникоде)
 +
# выравнивать данные из разных файлов по токенам (NB возможны мелкие расхождения)
 +
# показывать расхождения (подсветкой?)
 +
# давать возможность пользователю выбрать один ("правильный"), кликнув на нем
 +
# автоматически выбирать "правильный", если разметки для токена везде совпадают
 +
# выделять или (как опция) автоматически выбирать наиболее вероятный разбор по принципу "большинство голосует" (если разметок 3 и больше)
 +
# давать возможность вручную написать новый разбор, если другие не годятся (в поле для редактирования)
 +
# сохранять итоговую разметку в xml-файл (токены, для которых ответ не выбран, остаются без разметки)
 +
# сохранять информацию о текущем состоянии в файл "проекта"
 +
# проверять валидность итогового xml-файла (с учетом п. 7)
 +
# сообщать, сколько разборов осталось неразмеченными (в status bar?), и переходить к следующему неразмеченному
 +
# давать возможность увидеть контекст (10 токенов слева и справа от текущего как сниппет) (NB всплывающее поле? в строке статуса по клику? отрисовывать его при каждом токене не хочется)
  
4) давать возможность пользователю выбрать один ("правильный"), кликнув на нем<br />
+
Дополнительные требования (II):
  
5) автоматически выбирать "правильный", если разметки для токена везде совпадают<br />
+
# отрисовывать блекло повторяющиеся разборы, чтобы они не отвлекали пользователя (совсем скрывать их нежелательно, чтобы пользователь видел, откуда пришел тот или иной разбор)
 +
# показывать [http://en.wikipedia.org/wiki/Cohen%27s_kappa каппу] inter-annotator agreement
 +
# ранжировать аннотаторов от "хороших" к "плохим" (по степени их согласования с большинством), сначала показывать "хороших", потом "плохих"
 +
# вручную менять порядок показа их разборов
 +
# особым образом помечать сложные случаи, чтобы потом можно было к ним вернуться (+ переходить между ними), иметь возможность писать к ним комментарии
 +
# возможность оставить два и более разбора в итоговой разметке (такая потребность реально бывает)
 +
# убирать и добавлять токены в разметку (связано с тем, что границы между токенами требуется поменять вручную).
  
6) выделять или (как опция) автоматически выбирать наиболее вероятный разбор по принципу "большинство голосует" (если разметок 3 и больше)<br />
+
=== Чему вы научитесь? ===
  
7) давать возможность вручную написать новый разбор, если другие не годятся (в поле для редактирования)<br />
+
# Основы проектирования и разработки клиент-серверных приложений
 +
# Базовые знания Unix Shell
 +
# Работа с нереляционными базами данных
  
8) сохранять итоговую разметку в xml-файл (токены, для которых ответ не выбран, остаются без разметки)<br />
+
=== Какие начальные требования? ===
  
9) сохранять информацию о текущем состоянии в файл "проекта"<br />
+
# Основы HTML/CSS/JavaScript
 +
# Основы языка программирования Python
 +
# Представления о системах управления версиями
 +
# Базовые представления о базах данных
  
10) проверять валидность итогового xml-файла (с учетом п. 7)<br />
+
=== Какие будут использоваться технологии? ===
  
11) сообщать, сколько разборов осталось неразмеченными (в status bar?), и переходить к следующему неразмеченному<br />
+
* HTML/CSS, JavaScript, JQuery
 +
* Python 2.7
 +
* WebPy/Web2Py/Django
 +
* Ubuntu Linux/OpenSUSE/FreeBSD, GNU Emacs или Vim - на выбор
 +
* MongoDB
 +
* http-сервера Nginx, Gunicorn
  
12) давать возможность увидеть контекст (10 токенов слева и справа от текущего как сниппет) (NB всплывающее поле? в строке статуса по клику? отрисовывать его при каждом токене не хочется)<br />
+
=== Темы вводных занятий ===
  
Желательные фичи:
+
# Архитектура клиент-серверных приложений и основные принципы разработки
а) отрисовывать блекло повторяющиеся разборы, чтобы они не отвлекали пользователя (совсем скрывать их нежелательно, чтобы пользователь видел, откуда пришел тот или иной разбор)<br />
+
# Нереляционные базы данных, преимущества, недостатки, особенности использования
  
б) показывать [http://en.wikipedia.org/wiki/Cohen%27s_kappa каппу] inter-annotator agreement<br />
+
=== Направления развития ===
в) ранжировать аннотаторов от "хороших" к "плохим" (по степени их согласования с большинством), сначала показывать "хороших", потом "плохих"<br />
+
г) вручную менять порядок показа их разборов<br />
+
д) особым образом помечать сложные случаи, чтобы потом можно было к ним вернуться (+ переходить между ними), иметь возможность писать к ним комментарии<br />
+
е) возможность оставить два и более разбора в итоговой разметке (такая потребность реально бывает)<br />
+
ж) убирать и добавлять токены в разметку (связано с тем, что границы между токенами требуется поменять вручную).<br />
+
---
+
  
=== Чему вы научитесь? ===
+
# Усовершенствование архитектуры серверной части, развертывание кластера серверов с распределением нагрузки http-сервером, развертывание кластера БД с шардами и репликацией
---
+
  
=== Какие начальные требования? ===
+
=== Критерии оценки ===
---
+
  
=== Какие будут использоваться технологии? ===
+
# 4-5 - Клиент-серверное приложение, реализующее все функции из списка требований (I)
---
+
  
=== Темы вводных занятий ===
+
# 6-7 - Система, реализующая функции, перечисленные в Пункте (1), и, кроме того, имеющая защиту от использования незарегистрированными пользователями, предоставляющая возможность регистрации и входа в систему. Реализованы несколько функций из списка Дополнительных требований (II).
---
+
  
=== Направления развития ===
+
# 8-10 Система, реализующая функции, перечисленные в Пункте (2), и, кроме того, реализованы все функции из списка Дополнительных требований (II). Разработанная система полностью соответствует требованиям к архитектуре.
---
+
 
+
=== Критерии оценки ===
+
---
+

Версия 20:03, 1 декабря 2014

Ментор Фролов Дмитрий
Учебный семестр Весна 2015
Учебный курс 1-й курс



Что это за проект?

Мотивировка

Для разметки языковых данных в корпусах, базах данных и т.п. часто пользуются краудсорсингом, привлекая студентов, школьников, энтузиастов, низкооплачиваемых mechanical turks. Являясь непрофессионалами и не имея достаточного опыта, эти разметчики делают много ошибок, поэтому обычно одни и те же данные размечаются двумя-тремя-.. - пятью разметчиками. Нужен интерфейс для супервайзера-профессионала, который на основе этих параллельных разметок создаст правильную итоговую разметку. (Аналогично такую чистовую разметку делают на основе ответов нескольких автоматических разметчиков).

Что такое разметка?

Токен (слово или другая единица языка) с приписанным ему набором тегов ("разбором"), ср. пример из древнерусского:
<ana lex="проблискатисѧ" gr="V,praes,sg,3p" source_el="ἀπαστράπτεται"/>проблискаѥтсѧ
Параллельную разметку можно представить примерно так:

IMAG1097.jpg

Требования к разрабатываемой системе

Система должна предоставлять следующие функции (I):

  1. создавать "проект" и загружать исходные файлы (от двух до N файлов с xml-разметкой в юникоде)
  2. выравнивать данные из разных файлов по токенам (NB возможны мелкие расхождения)
  3. показывать расхождения (подсветкой?)
  4. давать возможность пользователю выбрать один ("правильный"), кликнув на нем
  5. автоматически выбирать "правильный", если разметки для токена везде совпадают
  6. выделять или (как опция) автоматически выбирать наиболее вероятный разбор по принципу "большинство голосует" (если разметок 3 и больше)
  7. давать возможность вручную написать новый разбор, если другие не годятся (в поле для редактирования)
  8. сохранять итоговую разметку в xml-файл (токены, для которых ответ не выбран, остаются без разметки)
  9. сохранять информацию о текущем состоянии в файл "проекта"
  10. проверять валидность итогового xml-файла (с учетом п. 7)
  11. сообщать, сколько разборов осталось неразмеченными (в status bar?), и переходить к следующему неразмеченному
  12. давать возможность увидеть контекст (10 токенов слева и справа от текущего как сниппет) (NB всплывающее поле? в строке статуса по клику? отрисовывать его при каждом токене не хочется)

Дополнительные требования (II):

  1. отрисовывать блекло повторяющиеся разборы, чтобы они не отвлекали пользователя (совсем скрывать их нежелательно, чтобы пользователь видел, откуда пришел тот или иной разбор)
  2. показывать каппу inter-annotator agreement
  3. ранжировать аннотаторов от "хороших" к "плохим" (по степени их согласования с большинством), сначала показывать "хороших", потом "плохих"
  4. вручную менять порядок показа их разборов
  5. особым образом помечать сложные случаи, чтобы потом можно было к ним вернуться (+ переходить между ними), иметь возможность писать к ним комментарии
  6. возможность оставить два и более разбора в итоговой разметке (такая потребность реально бывает)
  7. убирать и добавлять токены в разметку (связано с тем, что границы между токенами требуется поменять вручную).

Чему вы научитесь?

  1. Основы проектирования и разработки клиент-серверных приложений
  2. Базовые знания Unix Shell
  3. Работа с нереляционными базами данных

Какие начальные требования?

  1. Основы HTML/CSS/JavaScript
  2. Основы языка программирования Python
  3. Представления о системах управления версиями
  4. Базовые представления о базах данных

Какие будут использоваться технологии?

  • HTML/CSS, JavaScript, JQuery
  • Python 2.7
  • WebPy/Web2Py/Django
  • Ubuntu Linux/OpenSUSE/FreeBSD, GNU Emacs или Vim - на выбор
  • MongoDB
  • http-сервера Nginx, Gunicorn

Темы вводных занятий

  1. Архитектура клиент-серверных приложений и основные принципы разработки
  2. Нереляционные базы данных, преимущества, недостатки, особенности использования

Направления развития

  1. Усовершенствование архитектуры серверной части, развертывание кластера серверов с распределением нагрузки http-сервером, развертывание кластера БД с шардами и репликацией

Критерии оценки

  1. 4-5 - Клиент-серверное приложение, реализующее все функции из списка требований (I)
  1. 6-7 - Система, реализующая функции, перечисленные в Пункте (1), и, кроме того, имеющая защиту от использования незарегистрированными пользователями, предоставляющая возможность регистрации и входа в систему. Реализованы несколько функций из списка Дополнительных требований (II).
  1. 8-10 Система, реализующая функции, перечисленные в Пункте (2), и, кроме того, реализованы все функции из списка Дополнительных требований (II). Разработанная система полностью соответствует требованиям к архитектуре.