Die Skripte sind in Python implementiert. Zum Ausführen wird eine Version >= Python 2.6 benötigt. Der Code ist
stellenweise nicht Python 3.x kompatibel. Hier wird nun die Benutzung der Skripte erläutert.
Der Quellcode ist im svn https://ad-svn.informatik.uni-freiburg.de/student-projects/jan-kelch
hinterlegt.
Metadaten von zbmed/APS nach Index_APS.xml extrahieren und Fehler ins Error_APS.log schreiben:
python xml_meta_APS.py /nfs/raid1/zbmed/APS Index_APS.xml 2> Error_APS.log
Metadaten von zbmed/InformaHealthcare nach Index_IH.xml extrahieren und Fehler ins Error_IH.log schreiben:
python xml_meta_IH.py /nfs/raid1/zbmed/InformaHealthcare Index_IH.xml 2> Error_IH.log
Metadaten von Index_APS.xml und Index_IH.xml nach zbmed-test.xml mergen:
python merge_xml.py Index_APS.xml Index_IH.xml zbmed-test.xml
Texte von zbmed-test.xml referenzierten PDFs extrahieren und inklusive Metadaten in zbmed-test-text.xml schreiben:
python text4pdf_main.py /nfs/raid1/zbmed/ zbmed-test.xml zbmed-test-text.xml
Um die Listen zu generieren wird ein Wikipedia-Dump benötigt. Aus dem Dump werden die nötigen Informationen
mittels grep
extrahiert und mit vi
formatiert. Zu generierende Listen sind:
wiki-all-categorys: Liste mit allen Kategorien und deren übergeordneten Kategorien
wiki-entity-cat-nored: Liste mit allen kategorisierten Entitäten ohne Weiterleitungen
wiki-redirect: Liste mit allen Weiterleitungen
Genaue Angaben zu den Befehlen sind im (svn)/wikilists/README
nachzulesen.
Ausserdem benötigt, ist die Filterliste aus (svn)/wikilists/
:
wiki-categorys: Liste mit Kategorien zum filtern der Entitäten
Die Artikeltitel werden anhand der Kategorieliste zusammengestellt. Dazu kommen Weiterleitungen auf diese
Artikel. Die Texte werden dann nach Vorkommnissen aus dieser Zusammenstellung mittels regulären Ausdrücken
durchsucht. Gefundene Entitäten werden durch einen Wikilink ersetzt. Allgemein beschrieben wird aus
Entität
der Wikilink [[WikiArtikel|Entität]]
.
Folgend ein Beispielaufruf:
python sar_main.py wiki-categorys wiki-entity-cat-nored wiki-redirect zbmed-test-text.xml zbmed-test-entitytext.xml
Im Test dauerte die Suche durchschnittlich 1 Sekunde pro Dokument. Die anfängliche Zusammenstellung der Entitätsliste dauert im Moment ca. 5 Minuten bei rund 800 Kategorien. Bei 5000 Dokumenten kann man also mit einer Laufzeit von ca. 1.5 Stunden rechnen.
Für die Ground Truth-Texte werden Textdateien mit Dateinamen äquivalent zu den PDFs erwartet. Wird eine solche Datei für ein PDF gefunden, wird der Text im resultierenden HTML mit 4 Farben kodiert:
Grün: Entität richtig erkannt und richtig verlinkt
Gelb: Entität falsch erkannt
Orange: Entität richtig erkannt aber falsch verlinkt
Rot: Entität nicht erkannt
Ist keine Ground Truth Textdatei zu einem Text vorhanden, so werden erkannte Entitäten blau makiert und verlinkt.
Der URL-Typ kann frei gewählt werden.
Usage: html_main.py INPUT_XML OUTPUT_XML HTML_PATH URL_PART GroundTruthTXT_PATH
Für Lokale file:///...
-Verlinkungen z.B.:
python html_main.py zbmed-test-entitytext.xml ~/broccoli/data/zbmed-test-db.xml /nfs/raid1/kelchj/html file:///nfs/raid1/kelchj/html ../gt
Oder für http://...
-Verlinkung:
python html_main.py zbmed-test-entitytext.xml ~/broccoli/data/zbmed-test-db.xml /nfs/raid1/kelchj/html http://server/html ../gt
Die style.css
-Datei muss anschließend im zuvor angegebenen HTML-Pfad hinterlegt werden.