Openlibrary: Метод преобразования LCC в имена классов LCC

Созданный на 23 апр. 2020  ·  5Комментарии  ·  Источник: internetarchive/openlibrary

LCC могут отображаться как путь вниз по дереву классификации. Они предоставляют полезную информацию, которую мы хотим показать пользователю. Для этого нам нужно иметь возможность декодировать LCC в классы. (Эта проблема отделилась от # 3290)

Опишите проблему, которую хотите решить

Хотите иметь возможность программно получать данные справа:

| Образец LCC из реальной книги | Ожидаемый результат |
| - | - |
| F1047 .C95 | [
("История Америки", ( F )),
(«Британский американец (включая Канаду)», (F1001, F1145.2) ),
(«Британская Америка», (F1001, F1145.2) ),
("Канада", (F1001, F1145.2) ),
(«Приморские провинции», (F1035.8) ),
("Остров принца Эдуарда", (F1046, F1049.7) ),
] |
| NC760 .B2813 2004 | [
("Визуальные искусства", (N) ),
(«Рисование. Дизайн. Иллюстрация», (NC) ),
(«Специальные предметы», (NC760, NC825) ),
] |
| QH81 .C3525 1996 | [
("Наука", (Q) ),
(«Естественная история - биология», (QH) ),
(«Естествознание (Общее)», (QH1, QH278.5) ),
] |
| RF290 .E73 2009 | [
(«Медицина», (R) ),
(«Оториноларингология», (РФ) ),
(«Отология. Заболевания уха», (РФ110, РФ320) ),
] |
| NB699.N4 B4 1969b | [
("Визуальные искусства", (N) ),
(«Скульптура», (NB) ),
(«История», (NB60, NB1115) ),
] |

См. Https://github.com/internetarchive/openlibrary/issues/3290 для получения дополнительных примеров; не в таблице отсутствует первый класс LCC.

Предложение и ограничения

  • [] Требуется функция, которая по заданной строке LCC, введенной человеком из Open Library, возвращает список классов LCC.
  • [] Каждый класс также должен включать в себя либо диапазон LCC, либо префикс LCC (см. Примеры выше)

Примечания:

  • На этом этапе, хотя LCC предоставляют информацию, превышающую первую цифру (например, NB699.A14), эта функция будет считаться завершенной после того, как классы для LCC будут указаны до, но не включая, номер первого резца (т. Е. Не включая «A14» в "NB699.A14"). Это расширения, которые мы можем сделать в будущих выпусках.
  • Необязательное расширение (не требуется для закрытия этой проблемы; может быть выполнено в будущем выпуске): следует передавать имена классов LCC через i18n.
  • Приведенные выше примеры созданы с использованием https://www.loc.gov/catdir/cpso/lcco/ . Результат не обязательно должен быть _ идентичным_ приведенному выше, но он должен быть очень похожим.

Дополнительный контекст

Заинтересованные стороны

@cclauss @BrittanyBunk

Librarians @cclauss 2 Identifiers Feature Request

Самый полезный комментарий

Следующий шаг - когда у @cclauss есть метод, который, по его мнению, готов, он или я могу добавить его в пользовательский интерфейс и разместить на dev.openlibrary.org для тестирования :) Кажется, это правильно @cclauss ?

Все 5 Комментарий

@cdrini Есть два плана: LCCO и план расписания. @cclauss использовал схемы расписания: https://www.loc.gov/aba/cataloging/classification/. Должны ли мы использовать LCCO, если работа @cclauss основана на расписании?

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

Например, в расписании это выглядит так:
------ подкласс 1
подкласс 2
------ подкласс 3

Например, как это легко представить? Не может. Однако LCCO может, потому что выглядит так:
подкласс 1
---- подкласс 2
------- подкласс 3

Это легко представить. Единственная проблема с LCCO заключается в том, что это не полный список классов и подклассов, он неполный. Расписание является полным.

Это моя нынешняя дилемма, когда нужно чем-то пожертвовать: 1) полнотой, 2) точностью представления.

Выбор за вами и

Я считаю, что @cclauss использует дампы с https://github.com/thisismattmiller/lcc-pdf-to-json. Я думаю, что использовать их лучше всего, потому что мы можем заставить что-то работать и поэкспериментировать с этим, чтобы увидеть, как оно «ощущается»: +1: Что бы мы ни выбрали, это не высечено в камне. Мы всегда можем настроить его, чтобы справиться с большей сложностью, если сочтем нужным :)

Всегда обнаруживается, что сложная работающая система произошла от простой работающей системы. Обратное утверждение также кажется верным: сложная система, разработанная с нуля, никогда не работает и не может работать. Вы должны начать все сначала с работающей простой системы. - Джон Галл

@cdrini согласился. Давайте разберемся с тем, что уже используется, прежде чем брать больше :) Тем не менее, что дальше?

Следующий шаг - когда у @cclauss есть метод, который, по его мнению, готов, он или я могу добавить его в пользовательский интерфейс и разместить на dev.openlibrary.org для тестирования :) Кажется, это правильно @cclauss ?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги