lalsnivts / multimedia_corpus

multimedia corpus by Timofey Arkhangelskiy
1 stars 0 forks source link

Схема данных в корпусе #1

Closed gisly closed 8 years ago

gisly commented 8 years ago

Необходимо описать данные для мультимедийного корпуса. Для каждой сущности написать, какие свойства у нее есть и какого они типа (строка n символов/число/дата и т. п.)

Например, если бы нужно было описать сущность "человек", мы бы написали так: человек -фамилия (строка, 100 символов) -отчество (строка, 100 символов) -имя (строка, 100 символов) -дата рождения (дата) -пол (например, число: 1--женский, 0--мужской)

deer95 commented 8 years ago

Возможно, можно так:

Таблица Текст номер текста (счетчик) текст (строка, 1000 символов) номер медиазаписи (число) номер населенного пункта (число) номер даты (число) номер информанта (число)

Таблица Словоформа номер словоформы (счетчик) словоформа (строка, 20 символов) номер текста (число) Где-то здесь нужна связь один ко многим от Текста к Словоформе, только я не могу понять, в каком именно месте.

Таблица Морфема номер морфемы (счетчик) морфема (строка, 10 символов) номер текста (число) номер словоформы (число) Здесь тоже нужна связь один ко многим.

Таблица Медиа номер медиазаписи (счетчик) видео- / аудиозапись (гиперссылка) время произнесения слова (время) словоформа (число)

Таблица Населенный пункт номер населенного пункта (счетчик) название посёлка / города (строка, 50 символов)

Таблица Дата записи номер даты (счетчик) дата записи (дата)

Таблица Информант номер информанта (счетчик) ФИО (строка, 100 символов)

gisly commented 8 years ago

Все очень хорошо! Несколько соображений

1) связи продумываем все в одну сторону: в сторону "большего" объекта.

Например, вы хотите, чтобы морфема ссылалась на словоформу. Тогда в таблицу "Морфема" добавляем поле "Номер словоформы", куда будет записываться номер словоформы. Так сделаем связь "один ко многим" между словоформой и ее морфемами.

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

Кроме того, достаточно одной связи, потому что они же транзитивны. Т. е. можно сделать связь от морфемы к словоформе, а от словоформы к предложению. А связи от морфемы к предложению не делать. В любом случае, если даже понадобится такая связь, ее можно построить автоматически

2) В нашей логике мы синхронизируем именно предложение с интервалом времени. Отдельные словоформы не синхронизируем. Мне кажется, что такую разметку мы просто никогда не сделаем из-за трудоемкости (и частого отсутствия пауз между словоформами) Из этого следует, что должна быть таблица предложений. От таблицы "Словоформа" тогда идет связь именно к таблице "Предложение".

Таблица "Текст" тоже нужна, но в ней нужно хранить именно атрибуты текста (автор, дата, место записи и т. п.). А от таблицы "Предложение" идет связь к таблице "Текст"

3) Хорошо, что таблица медиа отдельная. Но в нашей логике время произнесения — это характеристика конкретного предложения. Т. е. эти поля лучше перенести в таблицу "Предложение". Лучше сделать отдельные поля: начало произнесения и конец произнесения (скажем, числа — миллисекунды). А то, какой медиафайл используется, — это свойство текста в целом. У нас, как правило, один аудио и видео (ноль или один). Поэтому можно сделать два поля в таблице текстов: "номер медиазаписи аудио" и "номер медиазаписи видео". И добавить поле "тип файла" в таблицу "Медиа".

4) Еще нужно поработать с полями таблиц. Можно посмотреть на то, что у нас есть в Elan, а также подумать, какие поля интересны пользователю-лингвисту. Например, у морфемы есть: -собственно текст морфемы -ее порядковый номер внутри словоформы -ее глосса -ее тип (префикс/суффикс, а может, клитика какая-то)

У предложения есть текст в графике языка и есть перевод.

Предлагаю дополнить поля

5) Таблица "Дата записи": мне не очень понятно, зачем она. Просто такие таблицы, как "Нас. пункт" действительно нужны: это справочники, т. е. разумно их вынести отдельно. Но дата записи скорее всего будет мало повторяться у разных текстов, поэтому можно прямо в таблицу текстов добавить поле "Дата записи".

6) Лучше следовать принципу атомарности, т. е. по максимуму все хранить в разных полях. Например, вместо единого поля ФИО лучше сделать отдельные (фамилия, имя, отчество)

deer95 commented 8 years ago

Новая версия таблиц, старалась исправлять согласно вашим замечаниям. Правда, возможно, что-то из недочетов еще осталось.

Таблица Текст номер текста (счетчик) номер медиазаписи (число) номер населенного пункта (число) номер экспедиции (число) номер информанта (число)

Таблица Предложение номер предложения (счетчик) номер текста (число) текст предложения (строка, 500 символов) перевод предложения (строка, 500 символов) начало предложения (число, мс) конец предложения (число, мс)

Таблица Словоформа номер словоформы (счетчик) номер предложения (число) текст словоформы (строка, 20 символов) перевод словоформы (строка, 50 символов) часть речи словоформы (число: 0 - глагол, 1 - сущ, 2 - прилаг, 3 - нареч, 4 - местоим, 5 - числит, 6 - предлог, 7 - частица, 8 - неопознанный объект)

Таблица Морфема номер морфемы (счетчик) номер словоформы (число) номер морфемы внутри словоформы (число, отсчитывается от корня. корень = 0) текст морфемы (строка, 10 символов) глосса (строка, 10 символов) тип морфемы (число: 0 - корень, 1 - префикс, 2 - суффикс, 3 - клитика)

Таблица Медиа номер медиазаписи (счетчик) тип файла (число: аудио = 0, видео = 1) медиазапись (гиперссылка)

Таблица Населенный пункт номер населенного пункта (счетчик) название посёлка / города (строка, 50 символов)

Таблица Экспедиция номер экспедиции (счетчик) дата начала (дата) дата конца (дата) краткое описание (строка, 1000 символов)

Таблица Информант номер информанта (счетчик) фамилия (строка, 50 символов) имя (строка, 50 символов) отчество (строка, 50 символов)

gisly commented 8 years ago

Добавила скрипты для БД Postgres (https://github.com/lalsnivts/multimedia_corpus/commit/240821c34348568cad37f4a4ee5746165ac4e5d4)