Vb.61: Universelle Auswertung

Bernhard Eversberg EV at buch.biblio.etc.tu-bs.de
Mo Mär 18 12:16:59 CET 1996


Verlautbarung 61 der Entwicklungsabteilung
----------------

Universelle Auswertungsmethodik                  FTP file:
-------------------------------                  param/auswert.lzh

"Im Prinzip geht das mit 'allegro', man muesste NUR ein paar Parameter-
dateien schreiben..."

Wer kennt die Situation nicht, wo man instinktiv weiss, dass eine Aufgabe
mit "allegro" im Prinzip zu loesen ist - aber in der Praxis fehlt einem
die Zeit, es zu parametrieren. Statistische Auswertungen fallen in diesen
Bereich. Neben dem Aufgabenbereich der rechnerischen Auswertungen (Export-
typ R) gibt es die zahlenmaessigen Auswertungen von Kategorieinhalten.
Nur um diese soll es hier gehen. Die typische Situation ist doch, dass der
Chef ruft: "Schnell, Frau Schneckler, ich brauche eine Liste der am meisten
vergebenen Signaturgruppen!" oder: "Ich muss wissen, welche 20 Komponisten
in unserer Musikdatenbank am haeufigsten vertreten sind!"
Was dann? Dem Mann erzaehlen, dass das nicht so einfach ist?

Versuchen kann man, wenn das auzuwertende Kriterium indexiert ist,
im Register geeignet zu trunkieren und mit <Strg>+F10 dann einen
negativen Schwellenwert einzustellen. Nicht immer kommt man so zum Ziel.
Im Namensregister z.B. sieht man i.d.R. nicht, ob eine Person Komponist 
oder sonst etwas ist.

Bisher wurde mit dem Exporttyp C und der Stapeldatei COUNT.BAT
nur das minimalste Gerippe fuer solche Auswertungen angeboten. Deshalb
wurden schon vielerorts eigene Parameter entwickelt - oder eben nicht, 
weil die Zeit nicht reichte, und wichtige Fragen blieben unbeantwortet. 
Das soll ein Ende haben.

Verwandt mit dieser Thematik ist die von H. Allers erfundene Kategorien-
besetzungsstatistik, die ja sogar als Spezialregister angelegt und dann
staendig online benutzt werden kann. Fuer manche Zwecke ist das ok oder 
sogar ausserordentlich hilfreich, aber es gibt drei Nachteile:

--  Die Registereintraege sind alphabetisch geordnet, nicht nach der
    Haeufigkeit

--  Es ist viel "Overhead" damit verbunden (Platz, Indexierzeit)

--  Mehrfach besetzte Kategorien erschweren den Ueberblick oder machen
    ihn unmoeglich.


Das Ziel war, eine universelle Methodik zu entwickeln, und zwar

 o  beliebige Kategorien sollen auswertbar sein, auch mehrere verschiedene 
    in einem Durchlauf

 o  Mehrfachbesetzungen innerhalb einer Kategorie sollen zerlegt werden
    koennen,

 o  oder wahlweise nur der Anfangsteil einer Kategorie beruecksichtigt
    werden, bis zu einem bestimmten Trennzeichen.

 o  Als Ergebnis soll auch eine nach Haeufigkeit geordnete Liste moeglich sein.

 o  Schwellenwerte sollen vorgebbar sein ("nur Faelle mit mindestens N
    oder hoechstens M Eintraegen sollen in der Liste stehen")
    (D.h. nur die ganz grossen oder die ganz kleinen Werte, oder aber
    die mittleren.)

 o  Ausserdem soll die Methode weitestgehend unabhaengig vom Kategoriesystem
    sein, d.h. die Parameterdateien sollen fuer jede CFG funktionieren.

Die letzte Forderung bedeutet, dass in den Parametern keine spezifischen
Kategorien stehen duerfen. Die einzigen unspezifischen, die in jeder
Konfiguration vorkommen, sind aber #u1 und #u2 und die #u-Variablen! 
Wie also soll das gehen?

Zum Einsatz kommen: 

 -- die Option -U : damit kann man beim Programmaufruf (presto oder srch)
    Inhalte fuer Nutzervariablen vorgeben. Ein solcher Inhalt kann z.B.
    eine Liste von Kategorienummern sein! 

 -- der Manipulationsbefehl w : damit kann man einen Arbeitstext als
    Kategorienummer interpretieren lassen, und die betreffende Kategorie
    wird automatisch zum Arbeitstext gemacht, den man wiederum in eine
    #u-Variable kopieren kann,

 -- ak-Befehle mit #u-Variablen statt echten Kategorien.

****  Fuer den eiligen Leser  *****************************************

Wer sich mit der Theorie nicht lange aufhalten will, braucht nur dieses
zu wissen:

Es gibt drei Dateien:

COFI.BAT      steuern den gesamten Ablauf, zu starten vom CockPit
COSU.BAT      (COunt FIelds bzw. COunt SUbfields)

C-FI.APR      macht im ersten Durchlauf (per presto oder srch) 
C-SU.APR      Man braucht nur zu kopieren, z.B. 
              copy C-FI.APR C-FI.PPR 
              wenn man mit P.CFG arbeitet.
              Es erfolgt Aufbereitung einer sortierfaehigen Datei COUNT.
              Mit asort wird daraus  COUNT.ALG
        
COUNT2.APR    Nach dem Sortieren mit A-SORT wird hiermit die Liste
              erstellt. Diese braucht man nicht zu kopieren, denn das
              kann immer mit A.CFG ablaufen (die sortierte Datei, also
              COUNT.ALG, enthaelt nur #u1 und #u2).

Zwecks Anwendung baut man sich folgende Zeilen bei den "Eigenen Routinen"
in die .OPT-Datei ein:

R Auswertungen, & , Haeufigkeits-Auswertungen von Kategorieinhalten
S Feldinhalte, COFI.BAT, Statistik der Inhalte von Feldern, auch MehrfachFelder
S Teilfelder, COSU.BAT, Statistik der Inhalte von Teilfeldern

Heraus kommt eine Datei COUNT, in der die ausgewerteten Inhalte alpha-
betisch stehen, und wahlweise eine Datei COUNTS, in der sie aufsteigend
oder absteigend nach Anzahl geordnet stehen. Ausserdem die Gesamtsumme 
und die Anzahl der unterschiedlichen Eintraege.

****  Ende fuer eilige Leser  *****************************************

Wer es genauer wissen will, kann hier weiterlesen:

Der Ablauf, gesteuert von COFI.BAT, sieht so aus:

1. Verschiedene Fragen sind zu beantworten:

   Minimalwert?         Daraus wird %MIN%

   Maximalwert?         Daraus wird %MAX%

   Beide Fragen koennen mit <Enter> uebergangen werden, dann gelten die
   Werte 0 bzw. 1000000, d.h. keine Schwellen.

2. Welche Kategorien sollen ausgewertet werden?
   Man gibt eine oder mehrere Kategorienummern, getrennt durch Komma,
   also z.B. (bei A.CFG)  #40,#402,#403   
   wenn man die Verfasser (bis zum dritten) auswerten will.
   Es kann leider nicht eine Gruppe von Kategorien hier mit einer
   einzigen Angabe wie #40. oder so zusammengefasst werden.
   (Das Zeichen '#' kann entfallen, also auch 40,402,403 ist moeglich)
   Daraus wird zunaechst  %c1%  gemacht.

Die Punkte 3. und 4. sehen bei COSU.BAT etwas anders aus. Leider kann man
die Teilfelder nicht per Option -U von aussen vorgeben. Daher wird die
Datei C-SU.APR zum editieren vorgelegt, mit sachdienlichen Hinweisen.

3. Welches Zeichen ist das Trennzeichen?  (;  ¶  .... b=Leerzeichen)
   Eines der elf Zeichen   ; ¶ b - / . , ( * ' : 
   kann man eingeben. Wenn ein anderes gewuenscht wird, muss man 
   in C-FI.APR eingreifen. Die Stellen sind kommentiert.
   Am gewaehlten Zeichen werden die Kategorien zerlegt. Nur ein Zeichen
   ist moeglich, das fuer alle Kategorien benutzt wird.
   Daraus wird zunaechst  %c2% 

4. Waehlen Sie: 1 = nur den Anfangsteil auswerten (Ende beim Trennzeichen)
                2 = jeden Teil auswerten (auch Teile zwischen den Trennzeichen)
   Das laesst sich nur mit 1 oder 2 beantworten. Das wird in %C3" gespeichert.

Jetzt kommt eine Kontroll-Anzeige, wo man nochmal sieht, was jetzt als
Vorgabe benutzt wird. Wenn irgendwas nicht stimmt, antwortet man mit n,
und es geht nochmal bei 1. los.
Wenn man 'j' gesagt hat:

5. Wie soll die Auswertung erfolgen?
       1 : mit Volltextsuche  
       2 : als Ergebnismenge (Export mit F4)
   Bei 1 wird srch aufgerufen, dann muss man einen Volltext-Suchbegeiff
   eingeben, bei 2 wird presto aufgerufen, dann muss man eine Ergebnismenge
   bilden und sie per F4 exportieren.
   Beim Aufruf wird   -Uc1%C1% -Uc2%C2% -Uc3%C3%  mitgegeben, 
   d.h. es entstehen die Uservariablen #uc1 , #uc2 , #uc3.
   Diese werden in C-FI.APR verwertet.

6. Es entsteht die Datei COUNT, mit  ASORT  wird sie sortiert. 
   Das Ergebnis ist dann COUNT.ALG

7. SRCH verarbeitet COUNT.ALG zu der Ergebnisliste  COUNT.
   Dabei werden mit  -Umi%min% -Umx%max%   die Schwellenwerte dem
   Programm uebergeben.

8. Es wird gefragt:  Sortieren? a=aufsteigend, b=absteigend, n=nein
   Antwort 'a' oder 'b' bewirkt, dass  COUNT  nochmal sortiert wird. 
   Die Anordnung ist so, dass dann eine auf-/absteigend nach Zahlen sortierte 
   Liste COUNTS entsteht, waehrend COUNT alphabetisch geordnet ist.
   Die nach Zahlen sortierte Liste wird dann auch noch angezeigt, und die
   Frage 8. wird wiederholt, damit man evtl. nochmal andersrum sortieren
   kann. (Es kommt absteigenden Sortieren MSDOS-SORT zum Einsatz)

9. Beide Listen sind ASCII-Textdateien, die man beliebig weiterverwerten
   kann.

Schematischer Ablauf von COFI.BAT bzw. COSU.BAT:

   Abfragen      Export mit           asort             Export mit
   vom        ----------------> COUNT -----> COUNT.ALG ------------> COUNT
   Benutzer      C-FI.APR / C-SU.APR                    COUNT2.APR
                 (srch/presto)                          (srch)
                                  asort
   wahlweise dann noch    COUNT ---------> COUNTS


Bei sehr grossen Datenbanken muss man sich natuerlich ein paar Gedanken
machen, wenn man die Volltextsuche einsetzt. Die Zwischendateien COUNT
und COUNT.ALG werden dann u.U. reichlich gross: man muss bedenken, dass
die Schwellenwerte erst beim zweiten Durchlauf greifen koennen, wenn
das Material sortiert ist! 

Wer sich angestachelt fuehlt, die Methodik zu erweitern oder aehnlich
allgemeingueltige Parametrierungen zu erstellen, sei dazu ausdruecklich
ermuntert!
Moeglich ist natuerlich auch, den etwas primitiven Dialog (der nur aus
DOS-Batchbefehlen besteht) durch Einsatz eines "Batch-Enhancers" oder
anderer Mittel gewaltig zu verbessern.

-------------------------------------------------------

Was aber muss Frau Schneckler tun, um die Signaturenliste zu produzieren?
Das kommt drauf an, ob ihre Signaturen ein geeignetes Trennzeichen haben,
sonst muss sie zuerst einen Eingriff in C-FI.APR machen.
Aber nehmen wir mal an, die Signaturen haben ein Leerzeichen hinter
der Gruppenbezeichnung. Dann sind die Fragen so zu beantworten:

1.  Minimum   <Enter>     oder eine sinnvolle, nicht zu grosse Zahl
    Maximum   <Enter>

2.  90,902,903,904,905     wenn bis zu 5 Signaturen vorkommen koennen
    (oder 90,90a,90b,...   wenn Buchstaben statt Ziffern verwendet werden)

3.  b     (Leerzeichen ist Trennzeichen)

4.  1     (Nur Anfangsteil auswerten)

5.  1     (Volltextsuche)
          Als Suchwort 0 oder #90 eingeben

Dann heisst es nur noch abwarten, bis die Liste fertig ist.

MfG  B.E.



Mehr Informationen über die Mailingliste Allegro