Участник:Andrey Kruglov/Всякая всячина по коду OpenCorpora
Устройство примеров
Пулы -- таблица `morph_annot_pools`. Например. Пул "Существительное, мн. ч.: именительный / винительный #20" - это pool_id=193 pool_type=7 статус = 9(в архиве)
Задание - хранится в таблице `morph_annot_samples`. Имеет внешний ключ к пулу (`pool_id`) и к ещё какой-то таблице (`tf_id`) Набор инстансов заданий формируется функцией get_annotation_packet
Ответы размечающих хранятся в таблице `morph_annot_instances` (3-4 записи на задание). По факту задание которое видит пользователь -- это конкретный инстанс задания, ничейных инстансов нет Кроме instance_id и указания на sample_id хранится два поля - user_id (чей ответ) и answer (что за ответ, номер нажатой кнопки)
Ответы модератора хранятся в таблице `morph_annot_moderated_samples`. Структура аналогична структуре таблице `morph_annot_instances` (только нет инстансов -- ответ модератора один). В ней user_id - ссылка на модератора, answer - код ответа, status - статус ответа (ОК/Частично правильно/Нет правильного разбора/Опечатка/Неснимаемая)
Связи в словаре
Как минимум я знаю три:
- миллион -> млн (FULL-CONTRACTED)
- миллион -> миллионный (CARDINAL-ORDINAL)
Ещё есть
- этот -> етот (NORM-ORPHOVAR) тж. см. полчаса -> получас (NORM-ORPHOVAR)
Посмотреть, где они хранятся и какие есть ещё.
Добавление текста в пустом рабочем окружении
См. инструкцию и делай аналогично:
1. Открываем тексты - редактор источников /books.php и добавляем нужную структуру книг.
Данные хранятся в базе в таблице books, предусмотрена иерархическая структура.
Обязательно должно быть два уровня иерархии!! (Далее на это неявно опираются другие страницы)
Уточнить термины: как называется верхний уровень иерархии (записи в books с parent_id =0), как второй уровень.
2. Открываем: Контроль качества - Координация заливки /sources.php и вносим url и заголовок.
Провязку добавлять существующую, новая привязка на чистой вики не работает (написать issue, разобраться)
3. Перейти по ссылке в колонке “Провязка”, кликнуть по "Добавить текст в эту книгу"
Здесь в чистой опенкорпоре замечен баг: зависает на поиске абзаца (issue)
Вот и всё, текст добавлен -- можно переходить к разбору морфологии и синтаксиса.
ЗЫ Хорошую вводную статью про токенизацию можно найти тут: http://opencorpora.org/doc/articles/2012_MIEM.pdf
Редактор граммем
Сразу как залогинились в пустое рабочее окружение -- нужно заполнить справочники проекта.
Первый из них -- редактор граммем: /dict.php?act=gram
Добавление суперпользователей
После регистраци первого пользователя нужно добавить ему права.
Судя по lib/lib_users.php (функции user_has_permission и is_admin) вполне достаточно проставить по вкусу едички в таблице user_permissions, больше ничего не нужно.
О работе со Smarty
Если вы как и я имеете общее представление о шаблонизаторах, но конкретно со Smarty не работали, то начнём с базового.
Я когда писал инструкцию по настройке виртуалки не стал включать в неё пункт про проверку работы Smarty -- должно и так всё заработать.
Вот этот пропущенный пункт.
Соберём небольшую тестовую страничку с минимальным шаблоном Smarty и убедимся, что всё работает нормально.
На smarty.net есть тривиальный пример, слегка переделаем его чтобы читался тот же конфиг, что и в OpenCorpora:
Сама страница - файл test_smarty.php в /var/www/html:
<?php //define('SMARTY_DIR', '/var/www/html/vendor/smarty/smarty/distribution/libs/'); require_once(SMARTY_DIR . 'Smarty.class.php'); $smarty = new Smarty(); $config = parse_ini_file('config.ini', true); $smarty->template_dir = $config['smarty']['template_dir']; $smarty->compile_dir = $config['smarty']['compile_dir']; $smarty->config_dir = $config['smarty']['config_dir']; $smarty->cache_dir = $config['smarty']['cache_dir']; $smarty->assign('name', 'Katherine'); //** раскомментируйте следующую строку для отображения отладочной консоли //$smarty->debugging = true; $smarty->display('static/test_smarty.tpl'); ?>
И ещё понадобится сам шаблон страницы -- файл test_smarty.tpl в /var/www/html/templates/static:
{* Smarty *} Привет, {$name}! Добро пожаловать в Smarty!
В принципе, заработать должно сразу. Если что-то не работает -- выше ссылка на пример, там всё крайне подробно расписано.