Openlibrary: Método para converter LCCs em nomes de classe LCC

Criado em 23 abr. 2020  ·  5Comentários  ·  Fonte: internetarchive/openlibrary

Os LCCs podem ser exibidos como um caminho para baixo na árvore de classificação. Eles fornecem informações úteis que desejamos exibir ao usuário. Para fazer isso, precisamos ser capazes de decodificar o LCC em classes. (Este problema se separou de # 3290)

Descreva o problema que você gostaria de resolver

Quer ser capaz de obter os dados corretos de maneira programática:

| Amostra de LCC de um livro real | Resultado Esperado |
| - | - |
| F1047 .C95 | [
("História das Américas", ( F )),
("British American (including Canada)", (F1001, F1145.2) ),
("América Britânica", (F1001, F1145.2) ),
("Canadá", (F1001, F1145.2) ),
("Províncias Marítimas", (F1035.8) ),
("Ilha do Príncipe Eduardo", (F1046, F1049.7) ),
] |
| NC760 .B2813 2004 | [
("Artes Visuais", (N) ),
("Desenho. Design. Ilustração", (NC) ),
("Assuntos especiais", (NC760, NC825) ),
] |
| QH81 .C3525 1996 | [
("Ciência", (Q) ),
("História Natural - Biologia", (QH) ),
("História Natural (Geral)", (QH1, QH278.5) ),
] |
| RF290 .E73 2009 | [
("Medicamento", (R) ),
("Otorrinolaringologia", (RF) ),
("Otologia. Doenças do ouvido", (RF110, RF320) ),
] |
| NB699.N4 B4 1969b | [
("Artes Visuais", (N) ),
("Escultura", (NB) ),
("História", (NB60, NB1115) ),
] |

Consulte https://github.com/internetarchive/openlibrary/issues/3290 para obter mais exemplos; não a tabela lá está faltando a primeira classe LCC.

Proposta e restrições

  • [] Precisa de uma função que, dada uma string, LCC inserida por humanos da Open Library, retorna uma lista de classes LCC
  • [] Cada classe também deve incluir um intervalo de LCCs ou um prefixo de LCC (ver exemplos acima)

Notas:

  • Para este estágio, embora os LCCs forneçam informações além do primeiro dígito (por exemplo, NB699.A14), esse recurso será considerado completo uma vez que as classes são dadas para o LCC até, mas não incluindo, o primeiro número de cortador (ou seja, não incluindo "A14" em "NB699.A14"). Estas são expansões que podemos fazer em edições futuras.
  • Expansão opcional (não necessária para fechar este problema; pode ser feita em uma edição futura): deve passar os nomes das classes LCC por meio de i18n.
  • Os exemplos acima são gerados usando https://www.loc.gov/catdir/cpso/lcco/ . O resultado não precisa ser _idêntico_ ao anterior, mas deve ser muito semelhante.

Contexto adicional

Acionistas

@cclauss @BrittanyBunk

Librarians @cclauss 2 Identifiers Feature Request

Comentários muito úteis

O próximo passo é quando @cclauss tiver um método que ele acha que está pronto, ele ou eu podemos adicioná-lo à IU e colocá-lo em dev.openlibrary.org para teste :) Isso parece correto @cclauss ?

Todos 5 comentários

@cdrini Existem dois contornos, o LCCO e os contornos de programação. @cclauss estava usando os esquemas de programação: https://www.loc.gov/aba/cataloging/classification/. Devemos usar o LCCO se o trabalho de @cclauss for baseado nos horários?

Embora incompleto, o LCCO é muito mais fácil de trabalhar, porque os cronogramas terão subclasses onde a indentação é tanto para frente quanto para trás e idk como visualizar ou programar isso de uma forma que facilite aos visualizadores e codificadores. O LCCO apenas avança, então as classes sempre vêm uma após a outra (não antes e depois uma da outra).

Um exemplo seria quando se parecer com isto nas programações:
------ subclasse 1
subclasse 2
------ subclasse 3

Tipo, como isso pode ser representado facilmente? Não pode. No entanto, o LCCO pode, porque se parece com isto:
subclasse 1
---- subclasse 2
------- subclasse 3

Isso é fácil de representar. O único problema com o LCCO é que não é a lista completa de classes e subclasses, está incompleta. Os horários são os completos.

Esse é o meu dilema atual, onde algo precisa ser sacrificado: 1) integridade, 2) precisão na representação.

A escolha é sua e de @cclauss . Acho que devido à integridade e ao fato de ser oficial, as programações são a melhor escolha - já que sempre podemos encontrar uma maneira de representar as informações, mas não podemos obter facilmente o que está faltando.

Eu acredito que @cclauss está usando os dumps de https://github.com/thisismattmiller/lcc-pdf-to-json. Acho que usá-los parece melhor, porque podemos fazer algo funcionar e experimentar para ver como se "sente": +1: O que quer que escolhamos não está definido na pedra. Sempre podemos ajustá-lo para lidar com mais complexidade se acharmos necessário :)

Um sistema complexo que funciona invariavelmente evoluiu de um sistema simples que funcionava. A proposição inversa também parece ser verdadeira: um sistema complexo projetado do zero nunca funciona e não pode ser feito para funcionar. Você tem que começar de novo, começando com um sistema simples de trabalho. - John Gall

@cdrini concordou. Vamos ver o que já está sendo usado antes de assumir mais :) Dito isso, o que vem a seguir?

O próximo passo é quando @cclauss tiver um método que ele acha que está pronto, ele ou eu podemos adicioná-lo à IU e colocá-lo em dev.openlibrary.org para teste :) Isso parece correto @cclauss ?

Esta página foi útil?
0 / 5 - 0 avaliações