A TABELA DE EXTRACÇÃO DE CAMPOS

 

A tabela de extracção de campos é um ficheiro utilizado pelo CDS/Isis para actualização do ficheiro inverso (índice), para a reformatação de estruturas de dados na troca de informação e ainda para a criação de chaves de ordenação alfabética de relatórios.

A construção da tabela de extracção implica que se tenha em conta, sempre que possivel, os tipos de pesquisa pretendidos e a forma de consulta da base de dados com vista a obter resultados precisos e pertinentes.

O CDS/Isis disponibiliza um grande número de funcionalidades para garantir o êxito dos processos de recuperação da informação, como sejam:

  • 8 técnicas de indexação diferentes, de tal forma que um mesmo campo pode originar diferentes entradas nos indíces
  • A extração das chaves é feita através de uma linguagem de formatação, o que permite analizar e realizar transformações sobre os dados dos campos antes de gerar a entrada nos indíces.
  • Transparência no uso de maiúsculas, minúsculas ou caracteres acentuados dos termos usados na pesquisa
  • Identificação precisa de cada chave do indíce, o que facilita determinar a sua origem (mfn, campo, ocurrência e posição relativa dentro del campo) e a utilização de operadores posicionais de pesquisa.

A tabela de extracção de campos é um ficheiro do tipo TXT o qual é composto por três colunas onde se identificam os seguintes elementos:
ID       TI       Formato de extracção
ID = Identificação da chave Identifica a etiqueta (tag) do campo que se utilizará para qualificar a pesquisa. As chaves definidas em cada linha terão, no ficheiro inverso, a identificação que for especificada nesta coluna
TI = Técnica de indexação Especifica a técnica de indexação a aplicar sobre o resultados das linhas obtidas com a execução do formato de extracção sobre um registo da base de dados
Formato de extracção Especifica o formato de extracção que será aplicado sobre a base de dados

 

O ficheiro inverso que contem os indíces do CDS/Isis consta de cinco elementos:

 

Termo de pesquisa (chave)
Id
Mfn
Número de Ocurrencia
Número de Secuencia

O valor indicado na coluna 1 da FST gera a componente ID do ficheiro inverso, a qual atribui uma identificação a cada uma das chaves geradas pelo formato de extracção. Esta identificação poderá ser utilizada posteriormente, para qualificar as pesquisas que sejam feitas sobre a base de dados. Geralmente é utilizada como ID a mesma etiqueta (tag) que é indicada na tabela de definição de campos, mas em alguns casos pode-se optar por uma etiqueta com outro valor para obter uma forma diferente de indexação.

Por exemplo: consideremos que a base de dados contem 3 campos para a entrada de autores:

10: Autor-pessoa a nivel analítico
16: Autor-pessoa de monografia
23: Autor-pessoa a nivel de colecção

Para efeitos de pesquisa todos os autores devem ser considerados de forma idêntica, independentemente do tipo de documento onde aparecem referidos. Então, iremos atribuir na FST um ID 10 para todas as chaves que sejam criadas a partir dos campos 10, 16 e 23 com o objectivo de efectuar a pesquisa por autor, qualquer que seja o tipo de documento.

Portanto, se a FST especifica:

10 0 (v10/)(v16/)(v23/)

ao executar a pesquisa Amaro, Jorge Luis /(10) sobre o índice teremos como resultado todos os registos que possuem a entrada Amaro, Jorge Luis extraída tanto do campo 10, como do campo 16 ou do campo 23; desta forma serão recuperados os registos independentemente do tipo de autor que esteja registado na base de dados.

A atribuição de um Id único para várias etiquetas da base de dados permite facilitar ao utilizador a formulação das expressões de pesquisa de modo a realizar pesquisas genéricas (localizar um termo existente em qualquer campo), ou pesquisas qualificadas (localizar um termo particular, qualificado a partir do Id definido na FST). O âmbito de cada pesquisa dependerá assim das decisões tomadas na altura de definir as chaves da FST.

Neste momento existem 8 técnicas de indexação:

0 Adiciona ao ficheiro inverso cada linha gerada através do formato de extracção
1 Adiciona ao ficheiro inverso cada sub-campo gerado através do formato de extracção
2 Adiciona ao ficheiro inverso os elementos delimitados pelos caracteres ... gerados através do formato de extracção
3 Adiciona ao ficheiro inverso os elementos delimitados pelos caracteres /.../ gerados através do formato de extracção
4 Adiciona ao ficheiro inverso cada palavra gerada através do formato de extracção
5 Igual à técnica 1, adicionando um prefixo a cada chave criada
6 Igual à técnica 2, adicionando um prefixo a cada chave criada
7 Igual à técnica 3, adicionando um prefixo a cada chave criada
8 Igual à técnica 4, adicionando um prefixo a cada chave criada

As técnicas 2 e 3 têm efeitos semelhantes na criação da chave; a diferença provem do tipo de delimitador utilizado para identificar as palavras chave. No caso do delimitador ... este poderá ser escondido através do recurso à declaração de modo MHx ou MDx, no formato de extracção. O delimitador /.../ não permite esta facilidade e estará sempre visivel tanto nas listagens impressas como na visualização no écran.

Quando se aplica uma FST sobre um registo, para obter uma chave, a ordem das operações é a seguinte:

  1. O formato de extracção aplicado sobre o registo permite obter a lista de chaves
  2. Sobre esta lista é aplicada a técnica de indexação associada ao formato de extracção
  3. A cada chave individual, que resulte da aplicação da técnica de indexação sobre a lista de chaves, é atribuido o Id correspondente sendo então armazenada no ficheiro inverso.

    Exemplo: Consideremos o seguinte registo (no formato MARC):

35 :  $9(DLC) 90049743
10 :  ^a 90049743
20 :  ^a0387974490 (alk. paper)
40 :  ^aDLC^cDLC^dDLC
41 : 0^aeng^bfregerhebjapsparus
500: 0^aGC89^b.E54 1991
820: 0^a551.4/58$220
100:1 ^aEmery, K. O.^q(Kenneth Orris),^d1914-
245:10^aSea levels and tide gauges /^cK.O Emery, David G. Aubrey.
260:  ^aNew York :^bSpringer-Verlag,^cc1991.
300:  ^axiv, 237 p. :^bill., maps :^c29 cm.
500:  ^aIn English, with summaries in French, German, Hebrew, Japanese, Spanish, and Russian.
504:  ^aIncludes bibliographical references (p. 207-226) and indexes.
650: 0^aSea level.
650: 0^aSubsidences (Earth movements)
650: 0^aTide-gages.
650: 0^aDatabase management^xCongresses.
650: 0^aArtificial intelligence^xCongresses.
700:1 ^aAubrey, David G.
520:000113 35151
935:LA

do qual pretendemos obter as seguintes chaves:

Título (245) para ser recuperado por cada uma das palavras
Autores (100 e 700) para serem recuperados na forma completa (apelido + nome) e ainda por apelido ou nome
Assuntos (650) que podem ser recuperados pela frase completa ou por qualquer palavra
Idiomas (41) Todos os idiomas (nota: no sub-campo b do campo 41 os idiomas são incluidos em cadeia onde cada 3 caracteres representam o código de um idioma diferente
Publicação (260) tal como aparece no documento
Data de edição(260) tal como aparece no documento
Classificação LC (50) de tal forma que permita uma pesquisa geral pelo primeiro nível de classificação e pela classificaçao completa
Data de entrada na base de dados (5) para recuperar todos os títulos criados num ano, num mês ou num ano/mês e num ano/mês/dia

A Fst necessária para implementar esta especificação é a seguinte

Título (245)

245 4 v245^a

Autores (100 y 700)

100 0 v100^a/,(v700^a/)
100 4 v100^a/(v700^a/)

Assuntos (650)

650 1 (v650*2/)
650 4 (v650*2/)

Idiomas (41)

41  0 v41^a/v41^b.3/ v41^b*3.3/ v41^b*6.3/ v41^b*9.3/ v41^b*12.3/ v41^b*15.3/ v41^b*18.3

Publicação (260)

260 0 v260^b

Data de edição(260)

260 0 v260^c

Classificação LC (50)

50 0 v260^a/v260^a,v260^b

Data de entrada na base de dados (5)

5 0 v5.4/v5.6/v5

O conceito lógico de ficheiro inverso corresponde a um conjunto de 6 ficheiros físicos, 5 dos quais são índices de acesso para o dicionário de termos, o qual (com a extensão .ifp) inclue todas as chaves obtidas da base de dados através da aplicação da tabela de extracção de campos (fst) a cada um dos registos.

O dicionário de termos é uma lista alfbética de todos os pontos de acesso que foram extraídos da base de dados (com o auxilio da .fst) e cada chave tem associada uma lista de apontadores que definem a origem de onde se extraiu o termo. Esta lista de apontadores denominada "postings" tem 4 componentes:

  • Mfn do registo de onde se extraiu a chave
  • Id. do campo, tal como foi indicado na primeira coluna da FST
  • Número da ocorrência do campo de onde se extraiu a chave
  • Posição relativa da palavra dentro do campo do qual se extraiu a chave (quando o campo é indexado pela técnica 4)

Por exemplo, se o termo "Educação" aparece nos registos 1 e 20 do campo Assuntos (v76) e tambem se encontra no campo Título (v16) do registo 35: Métodos de educação à distância, ao aplicar a seguinte Fst sobre o registo:

76 0 (v76/)
16 4 v16

o dicionário de termos incluirá o termo Educação da seguinte forma:

EDUCACAO              1 76 1 1  
                              
20 76 1 1  
                               35 16 1 3

Foram criados três "postings" para o termo educação. O primeiro, 1 76 1 1 indica que a palavra chave provém do MFN 1, primeira ocorrência do campo 76 e está localizada no início do campo. O segundo apontador 20 76 1 1 especifica que tambem se encontra no Mfn 20, campo 76, primeira ocorrência e primeira palavra e por último, 35 16 1 3 indica que o registo 35 contem o termo educação, extraído do campo 16, primeira ocorrência sendo a terceira palavra do campo.

A técnica de indexação 0 coloca sempre o valor 1 como posição relativa da chave dentro do campo. As restantes técnicas de indexação fornecem a posição relativa da chave dentro do campo. Esta posição relativa permite a pesquisa por proximidade, dado que se torna possivel saber qual a distância entre palavras através da determinação da diferença relativa de cada posição.  A distância entre dois termos obtem-se através da diferença entre as suas posições relativas.

O valor do número da ocorrência é utilizado para aplicar o operador (F) de forma a determinar se, numa expressão de pesquisa, os termos estão na mesma ocorrência de um campo repetível.

Por exemplo, supondo que um registo contem o seguinte texto no campo Resumo

72: A educação presencial fortalece-se com a adequação...
72: A distância entre a aula e a biblioteca deve...

Se este campo for indexado da seguinte maneira: 72 4 (v72/) e posteriormente queremos recuperar todos os documentos cujo conteúdo faça referência a EDUCACAO A DISTANCIA, a expressão de pesquisa:

EDUCACAO (G) DISTANCIA

recupera o registo mencionado anteriormente mesmo que não haja uma referência explícita a Educação à distância, porém

EDUCACAO (F) DISTANCIA

não recuperará o registo. A razão está na diferença entre o operador (G), que não averigua qual a ocorrência de onde foi originada a chave, e o operador (F) que analiza o número da ocorrência de cada um dos "postings" dos termos recuperados.

Analizemos agora a FST que mencionamos no início desta página:

245 4 v245^a
Extrai o sub-campo do campo 245 e ao resultado aplica a técnica de indexação 4. Cada palavra obtida é adicionada ao ficheiro inverso com o identificador 245
100 0 v100^a/,(v700^a/)
Extrai o sub-campo do campo 100 e o sub-campo do campo 700. Analiza o resultado obtido identificando as linhas (técnica 0) e cada linha obtida é adicionada ao ficheiro inverso com o identificador 100. Note-se que o formato de extracção v100^a, v700^a não produziria os resultados desejados pelas seguintes razões:
  • a técnica de indexação 0 selecciona as linhas do campo obtidas através do formato de extracção. Como não está indicada a separação por linhas (/), o formato de extracção origina uma única cadeia de caracteres com todos os autores contíguos e desta cadeia apenas serão considerados os primeiros 30 caracteres para serem adicionados ao ficheiro inverso
  • o campo 700 é repetivel; portanto, se não for editado como um grupo repetivel o formato extrai todas as ocorrências do campo, criando uma única frase, e então cada autor não sería adicionado como chave independente ao ficheiro inverso
100 4 v100^a/(v700^a/)
Extrai o sub-campo dos campos 100 e 700 do registo. Cada ocorrência é colocada numa nova linha. Da lista criada extrai cada uma das palavras (técnica 4) e adiciona ao ficheiro inverso com o identificador 100. Cada palavra juntará o número da ocorrência, que ocupa o autor no campo, bem como a sua posição relativa dentro de cada ocorrência.
Se estamos a usar a indexação por palavras porque é necessário incluir as separações por linha para separar os campos e as ocorrências?
Pela seguinte razão: se não for incluída uma separação entre v100^a e v700^a, a última palavra de v100^a apareceria junto à primeira palavra da primeira ocorrência de v700^a, produzindo uma entrada errada no índice. De igual modo, se não forem separadas as ocorrências de v700 com uma mudança de linha, a primeira palavra da ocorrência seguinte apareceria junto da ùltima palavra da ocorrência anterior.
650 1 (v650*2/)
Neste exemplo vamos extrair cada sub-campo do campo 650 e para cada um, adicionamos uma entrada no ficheiro inverso com a identificação 650.

Porquê a declaração v650*2?
O registo apresentado no exemplo está catalogado no formato MARC e inclui os indicadores previstos que ficam antes do subcampo a:

650 0^aDatabase management^xCongresses.

650 0^aArtificial intelligence^xCongresses.

Se o formato da fst incluir (650 1 (v650/), serão considerados todos os sub-campos de cada uma das ocorrências do campo 650; portanto, a parte correspondente aos indicadores será considerada no sub-campo e teremos uma série de chaves geradas com os indicadores do campo 650. Ao indicar no formato de extracção a forma (v650*2/) estamos a obrigar ao deslocamento de 2 posições, em relação ao inicio do campo, para que os indicadores não sejam considerados.

Quando se aplica a técnica de indexação 1 é necessário verificar que o formato de extracção contem sub-campos; isto é, se colocamos como formato de extracção as chaves 650 1 mhu,(v650*2/) estaremos a criar chaves erradas já que, por definição, o Modo MHU substitui os sub-campos por caracteres de pontuação levando ao seu desaparecimento. Ao aplicar o formato de extracção sobre o registo e, neste caso, dado que apenas será criada uma única frase com todos os sub-campos o ficheiro inverso iria conter os primeiros 30 caracteres da frase obtida (por exemplo: ARTIFICIAL INTELLIGENCE. C0NGR), perdendo-se os pontos de acesso do registo.

650 4 (v650*2/)
Justificação idêntica à do caso anterior, excepto que são extraídas as palavras das linhas obtidas
v41^a/v41^b.3/ v41^b*3.3/ v41^b*6.3/ v41^b*9.3/ v41^b*12.3/ v41^b*15.3/ v41^b*18.3
Como o sub-campo b tem um padrão de entrada que especifica que cada idioma ocupa 3 posições, utilizando as opções de deslocamento e o comprimento poderemos enviar cada idioma para o ficheiro inverso
50 0 v260^a/v260^a,v260^b
Neste exemplo são criadas as chaves para cada classificação LC. A primeira chave v260^a permitirá realizar pesquisa por grupos temáticos. A segunda chave permitirá localizar um número de clasificação particular. De salientar a presença do sinal de mudança de linha (/), que obriga a serem criadas chaves independentes
v5.4/v5.6/v5
Com esta data de entrada do documento são criadas três chaves: a primeira v5.4 permite localizar rapidamente todos todos os documentos entrados num ano; a segunda v5.6 recuperará as entradas de um mês; e a terceira v5, as entradas correspondentes a cada dia. De notar que é mais eficiente criar estas três chaves (por ano, ano-mês e ano-mês-dia) para a recuperação da informação, em vez de uma única chave ao nível de ano, mês e día e aplicar o operador de truncatura à direita para fazer as pesquisas por ano e por ano e mês

É assim muito importante que o formato de extracção, a aplicar sobre o registo, esteja em consonância com a técnica de indexação; se assim não for poderá incorrer em erros na criação das chaves. Além disto, uma boa aplicação da linguagem de formatação permitirá criar as chaves mais adequadas que assegurem uma eficiente recuperação da informação. A compreensão do mecanismo de armazenamento das chaves e a escolha do operador de pesquisa mais adequado garantirá uma resposta precisa às necessidades de cada utilizador.


Uso de prefixos no processo de criação de chaves

Como o dicionário de termos é um ficheiro único com todas as chaves ordenadas alfabéticamente, estas misturam autores, títulos e palavras chave e, em geral, todos os campos indexados na FST .

Se pretendemos manter separadas estas chaves por tipo de campo de onde foram originadas, teremos duas possíveis soluções:

  1. Utilizar prefixos, no momento de criar as chaves de indexação, de forma a constituir sub-dicionáros no interior do dicionário de termos
  2. Criar dicionários de acordo com o conteúdo de cada um dos campos.

De acordo com a primeira opção, se a fst
Título (245) 245 4 v245^a
Autores (100 y 700) 100 0 v100^a/,(v700^a/)
100 4 v100^a/(v700^a/)
Assuntos (650) 650 1 (v650*2/)
650 4 (v650*2/)
Idiomas (41)
41  0 v41^a/v41^b.3/ v41^b*3.3/ v41^b*6.3/ v41^b*9.3/ v41^b*12.3/ v41^b*15.3/ v41^b*18.3
Publicação (260) 260 0 v260^b
Data de edição (260) 260 0 v260^c
Classificação LC (50) 50   0 v260^a/v260^a,v260^b
Data de entrada na base de dados (5) 5     0 v5.4/v5.6/v5

for modificada para
Título (245) 245 8 `/T:/`,v245^a
Autores (100 y 700) 100 0 "A:"v100^a/,(|A:|v700^a/)
100 8 `/A:/`,v100^a/(|A:|v700^a/)
Assuntos (650) 650 5 `/M:/`,(v650*2/)
650 4 `/M:/`,(v650*2/)
Idiomas (41)
41  8 `/I:/`,v41^a," "v41^b.3," "v41^b*3.3, " "v41^b*6.3, " "v41^b*9.3, " "v41^b*12.3, " "v41^b*15.3, " "v41^b*18.3
Publicação (260) 260 0 "E:"v260^b
Data de edição (260) 260 0 "F:"v260^c
Classificação LC (50) 50   0 "C:"v260^a/"C:"v260^a,v260^b
Data de entrada na base de dados (5) 5     0 "F:"v5.4/"F:"v5.6/"F:"v5

Como pode observar-se foram introduzidas as seguintes alterações:

Técnica Alterada para
1 5
4 8

As chaves que se estavam a indexar com a técnica 0, foram alteradas para adicionar um pré-literal com o prefixo que queremos utilizar para diferenciar os dados. Para as restantes técnicas de indexação (5, 6, 7 e 8) o prefixo deve ser incluido antes do formato de extracção, com a seguinte sintaxe:

  1. o prefixo fica colocado entre apóstrofes (literal não condicional)
  2. o literal correspondente ao prefixo fica colocado entre dois caracteres especiais que não estejam incluídos no prefixo.
    exemplo:`/A:/`
    `#A:#`

Para além de ser possivel ver o conteúdo de um campo de forma ordenada, sem o misturar com termos obtidos de outros campos, a pesquisa através de prefixo é mais rápida que a pesquisa qualificada; ou seja:

Procurar M:Educação é mais eficiente que Educação/(650) pois a pesquisa qualificada obriga a verificar cada um dos apontadores (postings) do termo.

Além disto, dependendo da experiência dos utilizadores finais e da capacidade do equipamento onde a base de dados fica instalada convirá indexar os dados de várias maneiras, com e sem prefixo, de modo a permitir maior flexibilidade nas pesquisas. Um maior número de chaves de pesquisa implica maior espaço em disco mas não necessáriamente menor velocidade de recuperação, dada a estrutura do ficheiro inverso (árvore B*) a qual se reorganiza constantemente para que a altura da árvore seja sempre a mesma em todos os seus ramos ( a altura da árvore reflecte o número de acessos necessários para localizar um termo do ficheiro inverso. (ver Estrutura do ficheiro inverso).

Os produtos da família CDS/Isis, exceptuando Isis/Dos e WinIsis permitem definir mais de um dicionário de termos para uma base de dados. Isto é, com o IsisDll, por exemplo, podemos criar um dicionário para autores, outro para títulos, etc. Contudo, para que os termos de diferentes campos se possam combinar entre si, numa mesma expressão de pesquisa, através dos operadores booleanos será necessário definir um dicionário geral que os agrupe a todos já que não é possivel cruzar os termos de vários dicionários. A facilidade de usar dicionários particulares substitui o uso de prefixos, para apresentar ao utilizador os termos extraidos de um campo particular, e permite operar lógicamente os termos de um mesmo dicionário.

Transparência no uso de maiúsculas, minúsculas e caracteres especiais

Uma das particularidades do mecanismo de pesquisa do CDS/Isis radica na transparência quanto ao uso de maiúsculas, minúsculas e caracteres especiais.

Para ser possivel este objectivo, todas as chaves são guardadas em maiúsculas no ficheiro inverso e, se tal for parametrizado, os caracteres acentuados são convertidos no seu equivalente em maiúsculas. No momento da pesquisa as respectivas expressões são transformadas igualmente em maiúsculas o que reduz os erros por deficiente digitação dos termos pelo utilizador. .

Para realizar a conversão das chaves e expressões de pesquisa, as estruturas CDS/Isis utilizam o ficheiro ISISUC.TAB que deverá estar em concordância com o conjunto de caracteres adoptado para a base de dados (ver Tabela de conversão de maiúsculas a minúsculas)

Quando se indexam os campos com a técnica 4 (por palavras) CDS/Isis utiliza a tabela ISISAC.TAB para estabelecer a composição do conceito "palavra"; isto é, la tabela ISISAC.TAB indica ao CDS/Isis quais os caracteres a considerar como alfabéticos, para formar as palabras. Qualquer caracter que não faça parte da ISISAC.TAB será considerado um separador e dará por terminada a palavra.

Suponhamos que na ISISUC.TAB estabelecemos como equivalente à letra ñ a sua expressão em maiúscula Ñ. Se em ISISAC.TAB não for incluido o código Ñ (165 em Ascii ou 209 en Ansi)

as palavras: aparecerão no índice como
niño NI O
cañería CA ERIA
cañaveral CA AVERAL
acuñación ACU ACION

isto é, cada palavra divide-se em duas, criando duas entradas no dicionário, já que ao não estar o ñ incluído em ISISAC.TAB passa a ser considerado como um separador equivalente a um sinal de pontuação.