109 lines
7.1 KiB
Markdown
109 lines
7.1 KiB
Markdown
# Инструкция по разметке relevance set v1
|
||
|
||
## Цель
|
||
|
||
Набор проверяет, находит ли поиск нужные документы по реальным формулировкам
|
||
пользователей. Он не должен подгоняться под текущую выдачу: сначала фиксируются
|
||
запросы и релевантные документы, затем считается baseline и меняется
|
||
ранжирование.
|
||
|
||
## Подготовка
|
||
|
||
Создайте игнорируемую Git рабочую копию:
|
||
|
||
```bash
|
||
mkdir -p data/search
|
||
cp backend/search/relevance-set-v1.template.json data/search/relevance-set-v1.json
|
||
```
|
||
|
||
Сохраните идентификаторы `ru-01`–`ru-25` и `ky-01`–`ky-25`. Заполняйте
|
||
`query` и `relevant_document_codes`; остальные поля и структуру JSON не меняйте.
|
||
|
||
## Выбор запросов
|
||
|
||
- Используйте 25 русских и 25 кыргызских запросов, реально заданных или
|
||
сформулированных носителем языка для практической юридической задачи.
|
||
- Не переводите русский набор дословно на кыргызский: оба набора должны
|
||
отражать естественные формулировки своего языка.
|
||
- Записывайте исходную формулировку без улучшения под поисковик. Допустимы
|
||
разговорные слова, распространённые сокращения и опечатки.
|
||
- Не используйте персональные данные, закрытые материалы и сведения, которых
|
||
нет в публичном корпусе Минюста.
|
||
- Не включайте запрос, если нельзя установить хотя бы один релевантный документ.
|
||
- Не повторяйте один информационный запрос в нескольких близких формулировках.
|
||
|
||
Проверьте разнообразие набора: названия и номера актов, вопросы по жизненной
|
||
или рабочей ситуации, короткие тематические запросы, органы принятия, статусы и
|
||
даты. Это ориентир, а не квота: реальные запросы важнее искусственного баланса.
|
||
|
||
## Критерий релевантности
|
||
|
||
Документ релевантен, если его текст или реквизиты непосредственно отвечают
|
||
информационной потребности запроса. Добавляйте все такие документы, а не только
|
||
первый результат.
|
||
|
||
Не отмечайте документ релевантным только потому, что он:
|
||
|
||
- содержит отдельные слова запроса;
|
||
- упоминает нужный акт без ответа на запрос;
|
||
- относится к близкой теме;
|
||
- является утратившей силу редакцией, когда запрос явно требует действующую
|
||
норму, либо наоборот.
|
||
|
||
Если запрос допускает несколько самостоятельных правильных документов,
|
||
добавьте коды каждого из них. Код берите из поля `document_code`, а не из ID
|
||
фрагмента или редакции.
|
||
|
||
## Разметка одного запроса
|
||
|
||
1. Зафиксируйте исходную формулировку `query` и информационную потребность до
|
||
оценки выдачи нашего поиска.
|
||
2. Юрист устанавливает релевантные акты по содержанию и реквизитам документов.
|
||
Используйте ЦБД Минюста как авторитетный источник для проверки текста,
|
||
статуса и редакции акта. Порядок выдачи ЦБД не является объектом оценки и не
|
||
переносится в эталон.
|
||
3. Запишите уникальные `document_code` всех документов, которые прямо отвечают
|
||
на запрос. Спорные документы передайте на независимую проверку.
|
||
4. Зафиксируйте согласованный набор до просмотра результатов OpenSearch и
|
||
сохраните его отдельно от рабочих данных.
|
||
5. Проверьте запрос во внутренней лаборатории (`/review`): оцените фактические
|
||
результаты OpenSearch в исходном порядке, сохраните снимок и комментарии.
|
||
Лаборатория проверяет качество нашей поисковой системы, а не ЦБД Минюста.
|
||
|
||
Пример структуры (код условный):
|
||
|
||
```json
|
||
{
|
||
"id": "ru-01",
|
||
"language": "ru",
|
||
"query": "как зарегистрировать общественное объединение",
|
||
"relevant_document_codes": ["12345"]
|
||
}
|
||
```
|
||
|
||
## Проверка качества
|
||
|
||
Второй человек должен проверить формулировку, язык и полный список релевантных
|
||
документов для каждого запроса. Спорные случаи обсуждаются до единого решения;
|
||
результат голосования или непроверенную разметку в baseline не включайте.
|
||
|
||
Перед запуском убедитесь, что:
|
||
|
||
- заполнены ровно 50 записей: 25 `ru` и 25 `ky`;
|
||
- все запросы непустые и различаются по информационной потребности;
|
||
- у каждой записи есть хотя бы один уникальный `document_code`;
|
||
- язык запроса совпадает с `language`;
|
||
- JSON не содержит комментариев и дополнительных полей.
|
||
|
||
Оценщик дополнительно проверит структуру файла. После ручной проверки
|
||
зафиксируйте копию набора и не меняйте её при настройке поиска:
|
||
|
||
```bash
|
||
PYTHONPATH=backend python3 -m search.evaluate_relevance \
|
||
data/search/relevance-set-v1.json \
|
||
> data/search/baseline-v1.json
|
||
```
|
||
|
||
Разбирайте запросы с низкими Recall@10 и MRR@10 по отдельности. Меняйте веса,
|
||
анализаторы или словари только после сохранения исходного baseline.
|