Участник:Andrey Kruglov/Всякая всячина по коду OpenCorpora

Материал из 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. Перейти по ссылке в колонке “Провязка”, кликнуть по "Добавить текст в эту книгу"

TokenizerAddingNewText.png

Здесь в чистой опенкорпоре замечен баг: зависает на поиске абзаца (issue)

Вот и всё, текст добавлен -- можно переходить к разбору морфологии и синтаксиса.

ЗЫ Хорошую вводную статью про токенизацию можно найти тут: http://opencorpora.org/doc/articles/2012_MIEM.pdf

Редактор граммем

Сразу как залогинились в пустое рабочее окружение -- нужно заполнить справочники проекта.

Первый из них -- редактор граммем: /dict.php?act=gram GrmEditor.png

Добавление суперпользователей

После регистраци первого пользователя нужно добавить ему права.

Судя по 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!

В принципе, заработать должно сразу. Если что-то не работает -- выше ссылка на пример, там всё крайне подробно расписано.