Skip to content

Latest commit

 

History

History
42 lines (29 loc) · 3.48 KB

hdp.md

File metadata and controls

42 lines (29 loc) · 3.48 KB

Описание формата HDP

Работая с языком часто приходится сталкиваться со структурой данных — мультисловарь взвешенных строк. Например у вас есть слово лето и ассоциации к нему:

жара 1.0
море 0.85
солнце 0.82
отдых 0.74
пляж 0.72
отдых на пляже 0.03

Вот и получается, что слову лето соответствует множество взвешенных слов-ассоциаций.

Соответственно набор взвешенных слов получил у нас название Doublap (double map). А словарь таких наборов — HDoublap (hierarchical double map). Или, сокращённо, HDP.

Формат записи на диск

Формат записи на диск прямо следует из устройства структуры данных:

  • строки, начинающиеся с # считаются комментариями;
  • пустые строки игнорируются;
  • строка, не начинающаяся с пробела является ключом первого уровня;
  • строка, начинающаяся с двух пробелов является ключом второго уровня, после которого через пробел следует вес. Вне зависимости от локали, десятичным разделителем является точка.
  • в ключах пробельные символы заменены знаком подчёркивания;

Таким образом пример выше будет записан в файле следующим образом:

лето
  жара 1.0
  море 0.85
  солнце 0.82
  отдых 0.74
  пляж 0.72
  отдых_на_пляже 0.03

Зачем ещё один формат?

Как мы уже писали выше, в компьютерной лингвистике иерархические взвешенные карты — естественная структура данных. Но если записать её в CSV, то сразу теряется наглядность и простота восприятия человеком.

HDP совмещает в себе естественное представления иерархии, с которым удобно работать человеку и простоту чтения такого формата машиной. Ещё одним важнейшим преимуществом является возможность поиска по файлу в формате HDP любым текстовым редактором с поддержкой регулярных выражений.

Формат данных имеет строго практическое назначение и подразумевает в качестве ключей слова и выражения русского и английского языка. Для записи произвольных данных, например где ключ первого уровня может начинаться с решётки, он не подойдет — но для этого всегда есть более детально проработанный CSV.