PDF 1.392kB - Hochschule Ulm

hs.ulm.de

PDF 1.392kB - Hochschule Ulm

Web-Anwendung für die semantische Suche

auf Grundlage des

Unified Medical Language System (UMLS)

und des Yahoo! Search BOSS API

Bachelorarbeit an der Hochschule Ulm

Fakultät Informatik

Studiengang Medizinische Dokumentation und Informatik

Vorgelegt von

Marcus Willma

August 2010

Gutachter:

Prof. Dr. Jochen Bernauer

Prof. Dr. Thorsten Hasbargen


Eigenständigkeitserklärung

Diese Abschlussarbeit wurde von mir selbständig verfasst. Es wurden nur

die angegebenen Quellen und Hilfsmittel verwendet. Alle wörtlichen und

sinngemäßen Zitate sind in dieser Arbeit als solche kenntlich gemacht.

Ort, Datum und Unterschrift


Zusammenfassung

Suchmaschinen sind ein zentraler Bestandteil der modernen digitalen Welt.

Zum Finden von Dokumenten sind sie eine unabdingbare Notwendigkeit

geworden, denn die Zahl der im Web verfügbaren und von den Suchmaschinen

indexierten Dokumente steigt stetig. Doch Suchmaschinen wie Yahoo!

sind dahingehend unpräzise, da sie Suchanfragen nur wortbasiert verarbeitet.

Einige moderne Ansätze befassen sich daher mit der Analyse von Suchanfragen.

Zentrale Probleme dabei bilden die Bestimmung der Semantik, das

Auflösen von syntaktischen Mehrdeutigkeiten und das Erkennen einer Absicht

sprachlicher Äußerungen.

Diese Arbeit befasst sich mit der semantischen Analyse von Suchanfragen,

Abbildung dieser auf den UMLS Metathesaurus und die anschließende Erweiterung

der Anfragen um semantische Informationen aus diesem. Es wird

untersucht, inwieweit sich die Suche durch die Erweiterung von Suchanfragen

mit semantischen Informationen verbessern lässt.

Dabei werden Suchanfragen in einzelne Worte zerlegt, welche wiederum

auf ihre korrekte Schreibweise überprüft werden. Anschließend werden

Wortstämme gebildet und zu einer Anfrage kombiniert, welche

kookkurrente Synonyme und Vorzugsbenennungen aus dem Thesaurus beschafft.

Die ursprüngliche Suchanfrage wird dann um diese erweitert und

an das Yahoo! Search BOSS API gesendet. Die Suchergebnisse werden dem

Nutzer angezeigt und zusätzlich werden die semantischen Informationen

klassifiziert nach semantischen Typen dargestellt.

Die in dieser Arbeit entstandene Anwendung ist eine Kombination verschiedener

Ansätze, welche sich im Gesamtkonzept für die semantische Suche,

bevorzugt im medizinischen Bereich, eignet.


Danksagung

Die Bachelorarbeit entstand unter der Leitung von Prof. Dr. Jochen Bernauer

in der Fakultät Informatik der Hochschule Ulm, Hochschule für Technik,

Informatik und Medien.

Ich möchte mich zunächst beim gesamten Lehrpersonal der Hochschule Ulm

für die exzellente Ausbildung im Bereich der medizinischen Dokumentation

und Informatik, welche mir mit der Vermittlung aller nötigen Grundlagen

das Verfassen dieser Arbeit ermöglichte, bedanken.

Herrn Prof. Bernauer danke ich insbesondere für die bereitgestellte Thematik,

für das zur Verfügung gestellte Labor, in dem ich mich überwiegend in

Ruhe dieser Arbeit widmen konnte sowie für die hervorragende Unterstützung

und die stets kritischen Betrachtungen und Anregungen. Durch seine

freundliche und engagierte Betreuung hat mir diese Arbeit sehr viel Freude

bereitet.

Weiterhin danke ich Herrn Michael Matt für die Bereitstellung aller notwendigen

technischen Ressourcen und die Beratung bei Fragen im Bereich

der Datenbankadministration.

Herrn Andreas Mack danke ich für die Ratschläge bezüglich der Projektplanung

im Bereich der Softwareentwicklung.

Mein Dank gilt auch Jenny Millarch und Claudia Nasenberg, welche diese

Arbeit, sowohl inhaltlich als auch formal, stets kritisch evaluiert haben.

Ganz besonders möchte ich mich jedoch bei meiner Mutter Kathrin Willma,

Frau Annelore Schaar und Frau Bärbel Krämer bedanken, denn ihre Unterstützung

während meiner Schulzeit, hat es mir letztendlich erst ermöglicht

dieses Studium aufzunehmen und nun auch erfolgreich abzuschließen. Ich

bin ihnen dafür dankbar, dass sie immer an mich geglaubt und mir damit

die Möglichkeit gegeben haben, neue Chancen und Perspektiven wahrzunehmen.


Inhaltsverzeichnis

1 Einleitung ................................................................................................... 1

2 Theoretische Grundlagen .......................................................................... 3

2.1 Arbeitsweise von Suchmaschinen ............................................................... 3

2.1.1 Gewichtungsmethoden ........................................................................ 3

2.1.2 Rankingmethoden ................................................................................ 4

2.1.3 Suchmaschinenarten ............................................................................ 4

2.2 Ausgangssituation ....................................................................................... 5

2.2.1 Kurzer Rückblick .................................................................................. 5

2.2.2 Aktueller Stand ..................................................................................... 5

2.2.3 Aktuelle Entwicklungen ....................................................................... 6

2.3 Alternative Suchansätze ............................................................................. 7

2.3.1 Soziale Suchdienste .............................................................................. 7

2.3.2 Semantische Suchdienste ..................................................................... 7

2.3.3 Konvergente Suchdienste .................................................................... 8

2.4 Potenzielle Suchansätze .............................................................................. 9

2.4.1 Potenzielle konvergente Suchansätze ................................................. 9

2.5 Eigener Ansatz ........................................................................................... 10

2.5.1 Anfragetypen ...................................................................................... 10

2.5.2 Nutzertypen. ....................................................................................... 10

2.5.3 Nutzerverhalten ................................................................................. 11

2.5.4 Qualitätskriterien ............................................................................... 12

2.5.5 Mögliche Ansatzpunkte ...................................................................... 13

2.5.6 Lösungsansatz ..................................................................................... 13

2.6 Ziel dieser Arbeit ........................................................................................ 14

3 Technische Grundlagen ........................................................................... 15

3.1 Hunspell ..................................................................................................... 15

3.1.1 NHunspell ........................................................................................... 15

3.2 C# und das .NET Framework ..................................................................... 16

3.2.1 ASP.NET ............................................................................................... 17

3.2.2 ADO.NET.............................................................................................. 17


3.3 UMLS .......................................................................................................... 18

3.3.1 UMLS – Metathesaurus ....................................................................... 19

3.4 Yahoo! Search BOSS API ........................................................................... 22

3.5 GermaNet ................................................................................................... 22

4 Umsetzung ................................................................................................ 23

4.1 Anwendungsfälle ....................................................................................... 23

4.1.1 Absetzen einer Suchanfrage durch den Nutzer ............................... 23

4.1.2 Prüfung der Grammatik ..................................................................... 23

4.1.3 Ermitteln von UMLS-Konzepten ........................................................ 23

4.1.4 Ermitteln und Darstellen der Suchergebnisse durch das System ... 24

4.2 Analyse der Anforderungen ....................................................................... 25

4.2.1 Rahmenbedingungen ......................................................................... 25

4.2.2 Funktionelle Anforderungen ............................................................. 26

4.2.3 Nicht-funktionelle Anforderungen .................................................... 27

4.3 Potenzielle Ansätze .................................................................................... 28

4.3.1 Absetzen der Suchanfrage durch das System ................................... 28

4.3.2 Suche in Domänen .............................................................................. 30

4.3.3 Auslesen der Suchergebnisse............................................................. 31

4.3.4 Grammatikprüfung ............................................................................ 32

4.3.5 Quelle der UMLS-Konzepte ................................................................ 32

4.3.6 Ermitteln von Synonymen und Vorzugsbenennungen.................... 33

4.3.7 Semantische Analyse .......................................................................... 33

4.3.8 Erweitern der Suchanfragen ............................................................. 34

4.4 Ausgewählter Ansatz ................................................................................. 35

4.5 Vorgehensweise und Probleme .................................................................. 37

4.5.1 UMLS Installation ............................................................................... 37

4.5.2 UMLS Import ....................................................................................... 38

4.5.3 UMLS-Abbildung ................................................................................. 39

4.5.4 Übersetzung ........................................................................................ 39

4.5.5 Stoppwörter ........................................................................................ 40

4.5.6 Wortstämme ....................................................................................... 41

4.5.7 GermaNet-Integration ........................................................................ 42


4.5.8 Länge der URL .................................................................................... 43

4.5.9 Zwischenspeichern ............................................................................. 43

4.5.10 Indizes der Datenbank .................................................................... 43

4.6 Software Design ......................................................................................... 44

4.6.1 Klassenarchitektur ............................................................................. 44

4.7 Implementierung ....................................................................................... 46

4.7.1 Global.asax.cs ..................................................................................... 46

4.7.2 GUI.aspx.cs .......................................................................................... 46

4.7.3 SearchEngine.aspx.cs ......................................................................... 50

4.7.4 StringAnalyzer.aspx.cs ....................................................................... 53

4.7.5 SpellChecker.aspx.cs .......................................................................... 54

4.7.6 SqlHandler.aspx.cs ............................................................................. 55

4.7.7 URLCreator.aspx.cs ............................................................................ 59

4.7.8 XMLCreator.aspx.cs ............................................................................ 59

4.7.9 XMLReader.aspx.cs ............................................................................ 60

5 Ergebnisse ................................................................................................ 61

5.1 Die Benutzerschnittstelle ........................................................................... 61

5.2 Validierung der Funktionalität.................................................................. 63

5.3 Validierung der Qualität ............................................................................ 64

5.4 Erprobung der semantischen Suche .......................................................... 65

5.5 Evaluation der Software ............................................................................ 67

6 Diskussion und Ausblick ......................................................................... 69

Abkürzungsverzeichnis ................................................................................. 71

Literaturverzeichnis ...................................................................................... 73

Abbildungsverzeichnis .................................................................................. 77

Tabellenverzeichnis ....................................................................................... 78

Anhang ............................................................................................................ 79

A Anwendungsfalldiagramm ........................................................................ 79

B Zustandsdiagramm .................................................................................... 80

C Klassendiagramm ...................................................................................... 81


D Aktivitärsdiagramm .................................................................................. 82

E Grafische Nutzeroberfläche ....................................................................... 83

F UMLS Entitätsdiagramm ........................................................................... 84

G UMLS Tabellen ........................................................................................... 85

H UMLS Tabellenbeschreibung ..................................................................... 86

I Testergebnisse ............................................................................................ 87

J Compact Disk ........................................................................................... 107


Einleitung

1 Einleitung

Mit dem exponentiellen Wachstum des Internets und der damit verbundenen

Flut von Milliarden Dokumenten sind Internet-Suchmaschinen eine unabdingbare

Notwendigkeit geworden. Heute sind Suchmaschinen die meistgenutzten

Webanwendungen. 90% aller Deutschen benutzen sie regelmäßig

zu Recherchezwecken und die Vielfalt ist groß. Allein in Deutschland stehen

weit mehr als 100 Suchmaschinen zur Verfügung [Lew08]. Dabei werden

unterschiedliche Ansätze zur Wiederbeschaffung der Dokumente genutzt,

was zu einer Vielzahl verschiedener Ergebnismengen führt.

Trotz dieser Vielfalt ist ein nicht ignorierbares Oligopol drei großer algorithmischer

Suchmaschinen zu erkennen. Google, Yahoo! und MSN beherrschen

den Suchmaschinenmarkt und scheinen durch die hohe Akzeptanz

der Nutzer, deren Bedürfnisse bestens befriedigen zu können. Ihre Vormachtstellung

wird in der Öffentlichkeit oft kritisiert, denn der Schluss liegt

nahe, dass diese Marktkonstellation eine Gefahr für die Informationsvielfalt

und –auswahl im Internet in sich birgt. Nicht zuletzt, weil hinter diesen

Diensten kommerzielle Unternehmen stehen und schließlich bietet die Kontrolle

der Information in einer Informationsgesellschaft eine undenkbar

große Macht in sich.

Die große Zahl an Webseiten macht es für Menschen fast unmöglich sich

einen allumfassenden Überblick, über alle Dokumente zu einer Thematik, zu

verschaffen. Man erhält stets einen verhältnismäßig sehr kleinen Ausschnitt

aus dem gesamten Datenbestand, welcher zuvor automatisch mit Algorithmen

von Computern ermittelt wurde. Umso wichtiger ist es, dass diese mit

Maschinen erstellte Vorauswahl möglichst viele, für den Suchenden relevante,

Ergebnisse liefert.

1


Einleitung

Es ist jedoch sehr schwer für einen Computer die Intention einer Suchanfrage

zu ermitteln, da er diese prinzipiell wortbasiert verarbeitet. Insbesondere,

wenn der Nutzer keinerlei Suchtechniken anwendet, führt die Komplexität

der Sprache zu einem für Maschinen unverständlichen Wortgeflecht.

Ungeachtet der aktuellen Marktsituation drängen seit geraumer Zeit stetig

neue alternative Suchansätze auf den Markt. Alle befassen sich mit der

Thematik, die algorithmische Suche durch das Einbringen menschlicher

geistiger Leistungen zu verbessern. In dieser Arbeit wird einer dieser Ansätze

aufgegriffen und untersucht [Lew06a, Lew08, Maa09a].

In Kapitel 2 werden zunächst alle theoretischen Grundlagen erläutert, die

ein Verständnis für die Thematik ermöglichen. Es wird geklärt, wie algorithmische

Suchmaschinen arbeiten, wie sich die Situation in jüngster Vergangenheit

bis heute entwickelt hat, welche alternativen Suchansätze es

gibt, wie diese funktionieren und warum sie auf den Suchmaschinenmarkt

treten, um schließlich den in dieser Arbeit erarbeiteten Lösungsansatz zu

präsentieren. Kapitel 3 wird daraufhin alle verwendeten Technologien und

Begrifflichkeiten einführen, woraufhin Kapitel 4 detailliert den verwendete

Ansatz dargestellt.

2


Theoretische Grundlagen

2 Theoretische Grundlagen

2.1 Arbeitsweise von Suchmaschinen

Am Anfang stehen Suchmaschinenroboter, die sogenannten Gatherer oder

Crawler. Sie folgen, wie ein normaler Internetnutzer auch, Hyperlinks und

geben die somit aufgefundenen Dokumente an den Indexer weiter. Der

Indexer analysiert die Dokumente und erstellt, unter Nutzung bestimmter

Gewichtungsmethoden, eine strukturierte Datenbank. Eine Software, welche

Suchanfragen beantwortet, findet nun passende Dokumente in der Datenbank,

unterzieht sie einem Ranking-Verfahren und gibt sie schließlich

sortiert wider [Kar, Lew01, Lew05].

2.1.1 Gewichtungsmethoden

Durch die Gewichtung wird der allgemeine Wert eines Dokumentes bestimmt.

Zum Einen kann danach gewichtet werden, wie oft ein Suchbegriff generell

in einem Dokument vorkommt und wie häufig der Begriff mit Wörtern in

der vom Indexer erstellten Datenbank übereinstimmt.

Weiterhin wird die Position des Suchbegriffes im Dokument bewertet. Denn

steht ein Suchbegriff im Meta-Tag, in der Überschrift oder in der URL eines

Dokuments, so ist davon auszugehen, dass sich das Dokument höchstwahrscheinlich

intensiv mit der Semantik oder Problematik des Begriffes beschäftigt

und somit hochgradig relevant ist.

Eine wichtige Rolle spielt auch, wie häufig auf ein Dokument verlinkt wurde,

denn häufig verlinkte Dokumente scheinen offensichtlich einen qualitativ

hochwertigen Inhalt zu besitzen und wurden daher von anderen Internetnutzern

für gut befunden. Wichtig ist hierbei auch, wie relevant ein Dokument

ist, von dem der Link ausgeht, denn ein Link von einer relevanten Seite

hat mehr Gewicht, als der von einer weniger relevanten. Dabei wird

demnach das Verlinken von Dokumenten, als intellektuelle Leistung von

Nutzern zur Gewichtung dieser Dokumente, verwendet [Dop09, Kar].

3


Theoretische Grundlagen

2.1.2 Rankingmethoden

Das Ranking bestimmt, in welcher Reihenfolge die gefundenen Dokumente

dem Suchenden präsentiert werden.

Zum Einen kann der Suchmaschinenbetreiber dem meistbietenden Kunden

den besten Rang zuordnen, dies wird Rank-by-Cash genannt. Beim Ranking

nach Klickhäufigkeit geht man davon aus, dass eine häufig besuchte Seite

auch oft gesucht wird.

Weiterhin kann man ein Ranking auch nach Grad der Verlinkung durchführen.

Stark verlinkte Seiten haben bereits eine hohe Gewichtung und werden

auch als Hub bezeichnet. Sie gelten als Knotenpunkte im Rankinggeflecht

und haben daher einen hohen Rang. Die von einem Hub verlinkten Seiten

haben ebenfalls einen hohen Rang, da sie sich offensichtlich mit der gleichen

Thematik beschäftigen wie der Hub, von dem der Link ausgeht [Dop09,

Kar, Lew04].

2.1.3 Suchmaschinenarten

Indexbasierte Suchmaschinen erstellen einen Index, bestehend aus allen zuvor

beschafften Dokumenten und unterziehen diesen Gewichtungs- und

Ranking-Verfahren.

Metasuchmaschinen hingegen verhalten sich wie Internetnutzer, sie stellen

Suchanfragen an mehrere indexbasierende Suchmaschinen und ordnen die

gelieferten Ergebnissen in einem Ranking.

Echtzeitsuchmaschinen arbeiten wie Metasuchmaschinen, allerdings mit

dem Unterschied, dass sie sich aus den gelieferten Ergebnissen einen eigenen

kleinen Index anlegen und diesen auswerten.

Schließlich gibt es noch verteilte Suchmaschinen, welche eine Suchanfrage

an viele einzelne Computer mit eigenen Suchmaschen schicken und die so

gelieferten Ergebnisse repräsentieren.

Echtzeitsuchmaschinen und verteilte Suchmaschinen haben eine verschwindend

kleine Bedeutung, da die populärsten Suchmaschinen durch

indexbasierte Suchmaschinen repräsentiert werden [Kar].

4


Theoretische Grundlagen

2.2 Ausgangssituation

Suchmaschinen sind vergleichsweise jung und sehr eng verbunden mit der

Entwicklung des Internets und dessen wichtigstem Dienst, dem World Wide

Web.

2.2.1 Kurzer Rückblick

Erst 1989 begannen Forscher des schweizerischen Kernforschungsinstituts

CERN Dokumente elektronisch zu verknüpfen, um den Wissensaustausch

zwischen Wissenschaftlern zu verbessern. Doch bereits nach kurzer Zeit

war die Menge der verlinkten Dokumente zu groß, um für Menschen weiterhin

überschaubar zu sein. Somit wurde bereits 1990 der erste Verzeichnisdienst

für FTP-Dateien entwickelt, allerdings mussten die Dateien noch

manuell katalogisiert werden. 1993 löste dann der erste Suchroboter die

Verzeichnisdienste langsam aber stetig ab. Ab Mitte der 90er Jahre entstanden

im universitären Umfeld eine Vielzahl von algorithmischen Suchmaschinen,

welche Dokumente indexierten und sie automatisch nach einem

Ranking-Verfahren sortierten. Das Ranking war allein abhängig vom Auftreten

bestimmter Schlüsselwörter in einem Dokument [Lew08, Maa09a].

2.2.2 Aktueller Stand

Vergleichsweise spät trat 1998 Google auf den Suchmaschinenmarkt. Google

verwendete zusätzlich zum herkömmlichen Ranking ein eigens entwickeltes

Page-Rank-Verfahren, welches die Linkpopularität eines Dokumentes bewertete.

Trotz spätem Start hat Google durch dieses Verfahren seither weltweit

den größten Marktanteil, zu sehen in Tabelle 1. In Deutschland liegt er

derzeit bei ca. 90% [Lew08].

Marktanteile

im Juli 2009

Anzahl der Suchanfragen

im Juli 2009 in Mio.

Google 67.5% 76.684

Yahoo! 7.8% 8.898

MSN 2.9% 3.317

Tabelle 1: Marktanteile und Suchanfragen weltweit [SEW]

5


Online-Werbeausgaben in Mio. Euro

Theoretische Grundlagen

2.2.3 Aktuelle Entwicklungen

Haupteinnahmequelle für Suchmaschinen ist Werbung und genau diese

Suchmaschinenwerbung weist im Vergleich zu traditionellen Werbeformen

überdurchschnittliche Wachstumsraten auf. Dabei legen Werbekunden

Suchbegriffe fest, bei deren Eingabe durch den Nutzer ihre Internetpräsenz

angezeigt wird. Diese spezifische Einblendung von Werbung erhöht die

Wahrscheinlichkeit, dass ein Suchender auf diese auch reagiert. Geld verdient

der Suchmaschinenbetreiber letztendlich über das sogenannte

Pay-per-Click-Verfahren, wonach ein festgelegter Betrag, je Klick auf die

Werbung, vom Werbekunden zu zahlen ist.

Auf Basis dieses Verfahrens erzielen die großen Suchdienste Einnahmen in

Milliardenhöhe. Allen voran erzielt Google 99% seines Gewinns aus Werbung,

mit 1 Mrd. USD pro Quartal. Aufgrund dieses wirtschaftlichen Potenzials

drängen alternative Suchdienste immer mehr auf den Markt, um vom

lukrativen Geschäft mit der Suchmaschinenwerbung zu profitieren [Lew08,

Maa09a, Sch09]. Tabelle 2 zeigt die Entwicklung der Online-

Werbeinvestitionen in Deutschland von 2004 bis 2010.

5.000

4.500

4.000

3.500

2450

3.000

2.500

2.000

1503

1923

2168

1.500

904

1867

1.000

1476

1624

535

1190

500 385

850

110 395

60 105 155 215 268 308 339

0

2004 2005 2006 2007 2008 2009 2010

Affiliative Netzwerke Suchwortvermarktung Klassische Onlinewerbung

Tabelle 2: Werbeinvestitionen in Deutschland [OVK]

6


Theoretische Grundlagen

2.3 Alternative Suchansätze

2.3.1 Soziale Suchdienste

Die Intention von sozialen Suchdiensten liegt darin, die Informationsbedürfnisse

von Suchenden nicht mit Hilfe von Suchmaschinenrobotern zu

erfüllen, sondern dies über eine Community mit altruistisch agierenden

Freiwilligen zu realisieren.

Ein Beispiel dafür sind soziale Bookmark-Dienste, bei denen ein Nutzer anderen

Nutzern seine Lesezeichen zur Verfügung stellt, wodurch dauerhaft

eine von Menschen erstellte Treffermenge erzeugt wird. Die Treffer werden

mittels Tags, dies sind frei wählbare Stichworte, welche einen Treffer möglichst

passend charakterisieren, markiert. Im Laufe der Zeit entsteht durch

dieses Verfahren eine Folksonomie, eine von Menschen definierte Klassifikation

von Internetadressen. Vertreter solcher Dienste sind zum Beispiel

Mister Wong, Furl und del.icio.us.

Ein weiteres Beispiel für soziale Suchdienste sind Frage-Antwort-Dienste.

Bei diesen handelt es sich um eine Art Forum, in dem man einer Community

gegenüber Fragen formulieren kann. Die Community kann diese dann entsprechend

beantworten und diskutieren. Aktuelle Untersuchungen dazu

sind in [Maa09] zu finden. Eine wichtige Rolle in diesem Bereich bilden derzeit

Yahoo! Clever, Lycos iQ und guteFrage.net [Lew08, Lew08a, Lew08b,

Maa09a].

2.3.2 Semantische Suchdienste

Semantische Suchdienste beschäftigen sich mit der Möglichkeit dem Inhalt

einer Webseite eine Bedeutung zuzumessen und diese zu verknüpfen.

Grundlegende Möglichkeiten bieten derzeit Ontologien und Mikroformate.

Nähere Untersuchungen dazu sind in [Wel09] zu finden. Trotz beachtlicher

Fortschritte in der Forschung in diesem Bereich gibt es kaum erfolgreiche

Vertreter solcher Dienste. Selbst der lange entwickelte Suchdienst Powerset,

der in der Presse als “Google-Killer“ gehandelt wurde, ist derzeit nur als

Wikipedia-Suchmaschine aktiv. Weiterhin zu nennen seien hier die deutsche

Suchmaschine SemaGER und Hakia [Lew08, Maa09a].

7


Theoretische Grundlagen

2.3.3 Konvergente Suchdienste

Konvergente Suchdienste versuchen die Vorteile semantischer, sozialer und

algorithmischer Suchdienste zu vereinen oder zumindest ihre Nachteile zu

minimieren.

Wikia Search kombiniert algorithmische mit sozialer Suche. Dabei wird ein

eigener Index angelegt, welcher von Nutzern frei editiert werden kann. Der

Suchdienst Twine vereint Komponenten sozialer Netzwerke mit semantischer

Suche in einer explizit persönlich kombinierbaren Suche. Clickstream

wiederum nutzt implizite Informationen, die Nutzer beim surfen im Internet

hinterlassen. Dazu gehören unter anderem besuchte Links und Seitenverweildauern

[Lew08].

Die folgende schematische Darstellung zeigt, wie sich die verschiedenen

Suchdienste, bezogen auf die semantische Fundierung und Integration einer

Community, voneinander abgrenzen.

Abbildung 1: Typen von Suchdiensten [Lew08]

8


Theoretische Grundlagen

2.4 Potenzielle Suchansätze

Auch wenn sich alternative Suchansätze heute noch lange nicht gegen die

marktführenden algorithmischen Suchmaschinen durchsetzen können,

heißt dies nicht, dass sie generell ungeeignet für die Suche sind.

2.4.1 Potenzielle konvergente Suchansätze

In [Lew08], [See08] und [Maa09a] kommt man zu dem Schluss, dass alternative

Web 2.0 Dienste allein die Suche bislang nicht verbessern, jedoch

durchaus Potenzial, besonders durch die Integration solcher Dienste in algorithmische

Vorgehensweisen, vorhanden ist und es lohnenswert erscheint

vor diesem Hintergrund weitere Forschungen anzustellen.

Die großen Suchmaschinen bieten dafür bereits seit einiger Zeit entsprechende

Programmierschnittstellen an [Tos09]. Des Weiteren werden in diesen

Publikationen konvergente Suchansätze sehr ausführlich und umfangreich,

mit besonderem Augenmerk auf die Kombination von algorithmischen

Suchmaschinen mit sozialen Suchdiensten, untersucht. Wie Suchmaschinen

von sozialer Software profitieren wird auch in [Lew09] ausführlich

diskutiert.

Die Möglichkeit der Kombination von semantischen Suchdiensten wird hier

allerdings oft kurz erwähnt oder überhaupt nicht betrachtet.

Aktuelle Entwicklungen zeigen jedoch, dass die großen Suchmaschinenbetreiber

bereits seit einiger Zeit daran arbeiten, ihre Suche mit Semantik zu

verbessern. Meldungen wie die in [Wei] verdeutlichen dies. Dabei wird oft

berichtet, dass die Entwicklung geeigneter Methoden zur semantischen Analyse

des Webs und die damit verbundene Verbesserung der Suchergebnisrelevanz

einen erheblichen Marktvorteil bieten werden.

9


Theoretische Grundlagen

2.5 Eigener Ansatz

Um herauszufinden, wo genau Verbesserungsbedarf besteht, wird zunächst

erläutert, wie sich Nutzer generell verhalten, welche Anfrage-, Nutzertypen

es gibt und was die Qualität einer Suchmaschine ausmacht.

2.5.1 Anfragetypen

Die Intention von Suchanfragen kann nach informationsorientiert, navigationsorientiert

und transaktionsorientiert klassifiziert werden.

Ist eine Suchanfrage informationsorientiert, so möchte sich der Nutzer zu

einem Thema umfangreich informieren, folglich mehrere passende Dokumente

zu einem Thema betrachten.

Navigationsorientierte Suchanfragen haben zum Ziel, eine bestimmte Seite

zu finden oder wieder zu finden. Es wird demzufolge nach einer Homepage

gesucht.

Transaktionsorientierte Suchanfrage sind ähnlich, jedoch werden hier Seiten

gesucht, auf denen eine Transaktion ausgeführt, dementsprechend ein

Produkt gekauft oder eine Datei heruntergeladen, wird [Lew05, Sto06].

2.5.2 Nutzertypen.

Nach [Sto06] gibt es drei Typen von Nutzern: Information Professionals, professionelle

Endnutzer und Laiennutzer.

Information Professionals sind typischerweise Informationswissenschaftler

und daher Experten im Finden von Dokumenten. Sie arbeiten mit professionell

ausgearbeiteten Suchanfragen, entwickeln Recherchestrategien und

kennen den Inhalt von Datenbanken.

Ein professioneller Endnutzer ist Experte auf einem bestimmten Gebiet und

sucht daher Informationen in einem bestimmten Bereich, in ihm bekannten

fachspezifischen Datenbanken und Suchmaschinen.

Laiennutzer kennen weder Recherchestrategien, noch Datenbanken und

suchen überwiegend privat und gelegentlich beruflich. Der Umfang der

Suchanfragen ist in der Regel sehr beschränkt [Lew05, Sto06].

10


Theoretische Grundlagen

2.5.3 Nutzerverhalten

„Der hohe Marktanteil von Google ist nicht die Folge einer reduzierten Angebotsvielfalt,

sondern einer geringen Nutzervielfalt.“ [Neu05]. Dieses Zitat wird

von der Aussage in [Mac03] „Die meisten Nutzer sind nicht willens, bei der

Formulierung ihres Suchziels allzu viel kognitive und zeitliche Energie aufzuwenden.“

unterstrichen. Verschiedene Untersuchungen zum Nutzerverhalten,

zusammengefasst in [Sto06], zeigen dies.

Demnach werden bei weniger als 10% der Anfragen boolesche Operatoren

verwendet, obwohl die Hälfte der Nutzer angibt diese zu kennen und 20%

angeben sie öfters zu verwenden. Dazu kommt, dass die Hälfte aller Anfragen

mit diesen Operatoren fehlerhaft sind, wobei die Fehlerquote bei der

Verwendung von Plus-/Minuszeichen bei 66% lag.

Obwohl 59% der Nutzer die Profisuche kennen, wird sie von nur 14% öfter

genutzt. Ebenso die More-like-this Funktion wird von nur ca. 5% genutzt.

Auch die Auswertung der Suchergebnisse durch die Nutzer ist sehr interessant.

Durchschnittlich wird von 80% der Nutzer nur die erste Ergebnisseite

betrachte. Bei den meisten Suchmaschinen werden auf dieser maximal 10

Suchergebnisse angezeigt. Tatsächlich werden jedoch oft nur solche Ergebnisse

angesehen, die ohne Scrollen auf den ersten Blick sichtbar sind. Dies

führt dazu, dass pro Session nur etwa 5 Dokumente tatsächlich gesichtet

werden.

Die durchschnittliche Länge einer Suchanfrage liegt bei nur 2,6 Termen. Je

geringer die Länge der Suchanfrage und damit sinkender Spezifizierung,

desto weniger greifen die verwendeten Rankingmethoden.

Laut [Sto06] verändert sich das beschriebene Nutzerverhalten im Laufe der

Zeit kaum. Es wird sogar beobachtet, dass die Zahl der gesichteten Dokumente

weiter abnimmt, jedoch die Zahl der Suchbegriffe immerhin durchschnittlich

etwas steigt [Lew08a, Lew08b].

11


Theoretische Grundlagen

2.5.4 Qualitätskriterien

Wenn man bedenkt, dass oftmals tausende Suchergebnisse zurückgeliefert

und wie wenige dieser Ergebnisse letztendlich vom Nutzer gesichtet werden,

wird klar, wie wichtig gute Ranking- und Gewichtungsverfahren sind.

Generell lässt sich die Qualität von Suchmaschinen nicht mit einzelnen Kriterien,

sondern nur durch Kombination verschiedener Kriterien, beurteilen.

Die Qualität des von der Suchmaschine erstellten Index wird zum einen

durch die Größe des Datenbestandes und damit die Abdeckung des Webs

bestimmt. Dies beinhaltet die Abdeckung bestimmter Sprachräume und

Länder sowie die Aktualität des Datenbestandes und die Überschneidung

des eigenen Index mit den Indizes anderer Suchmaschinenbetreiber. Täglich

entstehen etwa 320 Mio. neue Webseiten, wohingegen 20% aller Webseiten

in einem Jahr wieder verschwinden. In einem Jahr ändern sich auch 80%

aller Links und 50% aller Inhalte von Webseiten. Aktualität spielt daher eine

wesentliche Rolle [Lew06].

Generell muss beachtet werden, dass keine Suchmaschine das gesamte Web

abdeckt, wobei die genaue Größe des Webs unbekannt ist, jedoch bekannt

ist, dass große Suchmaschinen einige Milliarden Dokumente indiziert haben.

Genauere aktuelle Untersuchungen fehlen, allerdings gibt es Schätzwerte.

So wurde für 2005 errechnet, dass die 3 größten Suchmaschinen etwa

57-76% des gesamten Webs indiziert hatten. Damals wurde die Anzahl aller

Webseiten auf 11,5 Mrd. geschätzt. Aktuelle Zahlen liegen derzeit nicht vor,

es wird allerdings davon ausgegangen, dass die Situation, aufgrund des sich

rasant ändernden Webs, heute schon eine ganz andere sein kann [Lew07a].

Die weiteren Kriterien können zumeist nur subjektiv beurteilt werden, denn

die Qualität der Suchresultate kann einerseits über die Nutzerzufriedenheit

oder über die Überschneidung mit Topergebnissen anderer Suchdienste beurteilt

werden. Gleiches gilt für die Beurteilung der Qualität von Suchfunktionen,

Nutzerfreundlichkeit und Benutzerführung [Sto00, Neu05, Lew07].

12


Theoretische Grundlagen

2.5.5 Mögliche Ansatzpunkte

Generell muss weiterhin beachtet werden, an welchen Stellen man die Suche

verbessern kann. Hier kann beim Suchenden, beim Webautor und bei

der Suchmaschine angesetzt werden.

Die Suche kann zum einen erheblich verbessert werden, indem der Nutzer

sich erweiterte Suchtechniken aneignet. Doch wie bereits betrachtet, wollen

oder können die meisten Nutzer dies nicht.

Zur besseren Indizierbarkeit könnte der Webautor Metadaten vergeben,

welche den Inhalt seiner Webseite mit Stichwörtern beschreiben. Dies wird

jedoch häufig falsch angewandt oder durch beabsichtigt falsche Metatags

missbraucht.

Suchmaschinen können ihre Suchergebnisse mit oder ohne Nutzerinteraktion

aufwerten, zum Einen durch eine Popularitätsanalyse oder Zitationsbewertung

und zum Anderen ist die Analyse der Verlinkungshäufigkeit geeignet

[Lew01].

2.5.6 Lösungsansatz

Da die Verbesserung der Suche auf Seiten der Suchmaschinen und Webautoren

hier nicht realisierbar und wie gezeigt, die Unterstützung der Nutzer

notwendig erscheint, setzt diese Arbeit an der Verbesserung der Anfragen

auf Seiten der Suchenden an. Dabei werden deren Anfragen semantisch

analysiert und mit geeigneten Informationen so erweitert, dass die an die

Suchmaschine gestellte Anfrage letztendlich möglichst präzise Ergebnisse

liefert.

13


Theoretische Grundlagen

2.6 Ziel dieser Arbeit

Trotz Marktübermacht der herkömmlichen algorithmisch arbeitenden

Suchmaschinen steigt die Popularität alternativer Suchdienste. Ihre Verwendung

und Kombination zu konvergenten Suchdiensten bietet großes Potential.

Zur Erhöhung der Relevanz von Suchanfragen bieten sich auf Seiten

der Nutzer viele Ansatzpunkte.

Ziel dieser Arbeit ist es, die Kombination von algorithmischen Suchmaschinen

mit semantischen Suchansätzen daraufhin zu überprüfen, inwieweit

die Entwicklung, Realisierung und Nutzung eines solchen konvergenten

Suchansatzes sinnvoll ist. Dazu wird eine Applikation entworfen und implementiert,

welche Suchanfragen auf Seiten des Nutzers manipuliert.

Dabei wird insbesondere die Anreicherung von Suchanfragen mit semantischen

Informationen betrachtet. Als Datengrundlage für semantische Informationen

wird dabei der UMLS Metathesaurus der National Library of

Medicine genutzt. Suchergebnisse werden von dem großen Vertreter für algorithmische

Suchmaschinen Yahoo!, über das von ihm angebotene Yahoo!

Search BOSS API, bezogen.

Konkret sind das Yahoo! Search BOSS API und der UMLS Metathesaurus zu

analysieren. Es sind Suchanfragen im Deutschen durch Wortmatch auf das

UMLS abzubilden. Weiterhin muss eine Grammatikprüfung durchgeführt

werden und die Option zur Suche in bestimmbaren Domänen vorhanden

sein. Primär steht am Ende die Generierung von erweiterten Suchanfragen

durch Integration kookkurrenter Synonyme und Vorzugsbenennungen,

eventuell auch durch Erweiterung mit präpositionalen Phrasen.

Zu untersuchen ist, inwieweit dieses Verfahren sinnvoll ist und welche Möglichkeiten

das UMLS bietet um Suchanfragen mit Semantik anzureichern

und wie das Yahoo! Search BOSS API darauf reagiert. Am Ende dieser Arbeit

wird das entstandene Programm hinsichtlich seiner Eignung validiert und

evaluiert.

14


Technische Grundlagen

3 Technische Grundlagen

3.1 Hunspell

Hunspell ist ein Open Source Programm zur Grammatikprüfung und morphologischen

Analyse von komplexen Sprachen und wurde ursprünglich für

die ungarische Sprache entwickelt. Es basiert auf dem Standardprogramm

für Rechtschreibprüfung von Open Office, genannt MySpell. Diese wurde

lange Zeit im Open Source Office Paket Open Office verwendet, wo es schließlich

2006 durch Hunspell abgelöst wurde. Hunspell ist weiterhin abwärtskompatibel

zu MySpell-Wörterbüchern und zusätzlich stellt Open Office aktuell

Wörterbücher für 98 Sprachen bereit. Heute wird Hunspell in vielerlei

Open Source Software verwendet, unter anderem in der IDE für TeX/LaTeX,

Browsern wie Google Chrome, Mozilla Firefox und Opera, dem Betriebssystem

Apple Mac OS X. Es bietet auch vielerlei Programmierschnittstellen, unter

anderem für Java, Delphi, Perl, Python und .NET. Die Programmierschnittstelle

für .NET heißt NHunspell [Hun, OOD].

3.1.1 NHunspell

NHunspell ist unter GPL, LGPL und MPL lizensiert, welche eine kommerzielle

Nutzung erlauben. Zunächst von Maierhofer Software entwickelt, bietet es

die Dienste Hunspell, MyThes und Hypen für das .NET Framework an.

Mit Hunspell-Bibliotheken kann eine Grammatikprüfung auf einzelne Wörter

durchgeführt werden. MyThes-Bibliotheken bieten einen Thesaurus zum

Auffinden von Synonymen und mit Hyphen-Bibliotheken können Wörter in

Silben getrennt oder der Wortstamm ermittelt werden [Mai, NHu].

Die für diese Arbeit verwendete Bibliothek von NHunspell liegt in der Version

NHunspell 0.9.6 vor. Diese beinhaltet Hunspell in Version 1.2.12, Hyphen

in Version 2.5 und eine aktuelle Implementierung von MyThes.

15


Technische Grundlagen

3.2 C# und das .NET Framework

Für die Implementierung wird C# und das .NET-Framework in der Version

3.5 SP1 verwendet. Als Entwicklungsumgebung dient das Microsoft Visual

Studio 2008 in der Version 9.0.30729.2.

Mit .NET spielt es keine Rolle mehr, in welcher Sprache man programmiert,

da alle .NET-konformen Sprachen auf die gleiche Klassenbibliothek zurückgreifen.

Somit ist die Effizienz und Leistungsfähigkeit einer Anwendung unabhängig

von der verwendeten Programmiersprache. Diese Sprachunabhängigkeit

ermöglicht das Interagieren von Klassen, die in verschiedenen

Sprachen geschrieben wurden. Die Richtlinien, die eine Programmiersprache

erfüllen muss um .NET-kompatibel zu sein sind in dem CLS-Standard

definiert.

Durch die Verwendung der CLR wird mit .NET Plattformunabhängigkeit gewährleistet.

Üblicherweise kompiliert ein Compiler den Quellcode in einen

für den Computer verständlichen Maschinencode. Dieser unterscheidet sich

je nach Prozessorarchitektur eines Computers. Durch die CLR wird allerdings

ein virtueller Prozessor simuliert, welcher immer die gleiche Architektur

hat. Durch die Nutzung der CLR kann man eine Anwendung somit unabhängig

von der physikalischen Prozessorarchitektur ausführen. Dabei

wird erst während der Laufzeit der Anwendung entsprechender Maschinencode

erzeugt.

C# ist eine neue Programmiersprache, die mit der Veröffentlichung des .NET

Frameworks im Jahr 2002 zur Verfügung gestellt wurde und deren Wurzeln

in den Sprachen C und C++ liegt [Küh08].

Tabelle 3 veranschaulicht das .NET Framework. Es zeigt den Aufbau von der

jeweiligen Programmiersprache bis hinunter zum Betriebssystem.

16


Technische Grundlagen

3.2.1 ASP.NET

Innerhalb des .NET Frameworks bildet ASP.NET ein Subsystem zur Erstellung

serverseitiger Webapplikationen. Es funktioniert wie ein HTML- und

JavaScript-Generator, der sich eng an geltende HTML-Spezifikationen hält,

so dass ein ASP.NET-Programm problemlos mit jedem Browser ausgeführt

werden kann. Der Vorteil dieser serverseitigen Ausführung liegt darin, dass

an den Client nur minimale Hardware und Softwareanforderungen gestellt

werden. Dieser stellt lediglich einen Request an den Server, welcher das

ASP.NET-Programm ausführt, HTML-Code generiert und diesen als Response

an den Client zurück übermittelt. Der Client muss diese Response lediglich

in seinem Browser anzeigen [Loh03].

3.2.2 ADO.NET

ADO.NET ist eine Datenbankzugriffstechnologie, welche die Entwicklung

effizienter mehrschichtiger Datenbankanwendungen erlaubt. Es stellt vier

verbindungsorientierte Objekte, für die Verbindung zu vier verschiedenen

Datenprovidern, bereit. Unabhängig von der Providerwahl können mit verbindungsunabhängigen

Objekten abgefragte Daten vollständig in .NET gehalten

werden. Die Schnittstellen und damit die Funktionalitäten bleiben

dabei unabhängig vom Provider die gleichen. Es ergibt sich daher eine zweischichtige

Klassenarchitektur. Diese Architektur ermöglicht die Abkopplung

der Datenbankschicht vom eigentlichen Programmcode und erlaubt den

Austausch des jeweiligen Datenproviders, ohne den Programmcode überarbeiten

zu müssen [Küh08].

VB C++ C# JScript J#

Common Language Specification

ASP.NET

ADO.NET

Basisklassen-Bibliothek

Common Language Runtime

Betriebssystem

Tabelle 3: Architektur des .NET-Framework [Sch07]

17


Technische Grundlagen

3.3 UMLS

Ziel des UMLS der National Library of Medicine ist es, die Entwicklung von

Computersystemen zu ermöglichen, welche sich so verhalten, als würden sie

die Sprache der Biomedizin und Gesundheit verstehen. Es stellt sowohl Daten

für Systementwickler, als auch Such- und Berichtsfunktionen für weniger

technisch ambitionierte Nutzer bereit.

Es gibt drei sogenannte UMLS Knowledge Sources (Abbildung 2), den Metathesaurus,

welcher über 1 Mio. biomedizinische Konzepte aus über 100

Quellen enthält, das Semantic Network, welches 133 Kategorien und 54 Beziehungen

zwischen ihnen definiert und das SPECIALIST Lexikon, welches

lexikalische Informationen und Programme zur Sprachverarbeitung beinhaltet.

Das System kann sowohl im Internet, als auch lokal mit dem Programm

MetamorphoSys auf einem Computer installiert und somit genutzt werden

[NLM].

Abbildung 2: Die Knowledge Sources [NLM]

18


Technische Grundlagen

3.3.1 UMLS Metathesaurus

Der UMLS Metathesaurus ist eine große, multilinguale Datenbank, welche

Informationen über biomedizinische Konzepte, deren Bezeichnung und Beziehung

zueinander, enthält. Er enthält über 5 Mio. Begriffe, welche je nach

Bedeutung über 1 Mio. Konzepten zugeordnet sind, die durch einen eindeutigen

Schlüssel identifiziert werden können. Somit werden verschiedene Begriffe

aus unterschiedlichen Quellen, die aber die gleiche Bedeutung haben

zu einem sogenannten Konzept zusammengefasst.

Die vielen verschiedenen Begriffe sind in unterschiedlichen Kategorien klassifiziert,

wobei ein Begriff zu mehreren Kategorien gehören kann. Deren

Verteilung zeigt Abbildung 3.

Abbildung 3: Verteilung des Vokabulars [NLM]

Die Daten des UMLS Metathesaurus wurden ursprünglich im ORF-Format

zur Verfügung gestellt. Seit dem Jahr 2004 werden sie auch im RRF-Format

angeboten. Mit diesem wird die detaillierte Semantik jedes Terms deutlich

dargestellt und es bietet eine bessere Repräsentation der Konzeptnamen,

Quellen und hierarchischen Informationen.

Ein Term unter allen Begriffen in einem Konzept ist immer als Vorzugsbenennung

markiert. Solche, die nicht als Vorzugsbenennung markiert sind,

werden als Synonyme einer dieser angesehen[NLM].

19


Technische Grundlagen

Wenn dem UMLS Metathesaurus ein Konzept hinzugefügt wird, erhält es

einen eindeutigen Schlüssel und wird in die Struktur des UMLS Metathesaurus

eingebunden. Diese Struktur hat vier Ebenen, dargestellt in Abbildung 4.

Die oberste Ebene bildet als eindeutiger Schlüssel für ein Konzept der CUI.

Ein CUI kann mehrere lexikalische Bezeichnungen beinhalten, welchen als

eindeutiger Schlüssel ein LUI zugeordnet ist. Ein LUI verweist wieder auf

mehrere lexikalisch variable Buchstabenfolgen, den String, welcher wiederum

mit dem eindeutigen Schlüssel SUI identifiziert werden. Jeder Variation

in der Buchstabenfolge, Groß-/Kleinschreibung und Sprache wird ein eigener

SUI zugeordnet. Jedem String, der ein Konzept aus einer bestimmten

Quelle repräsentiert, wird wiederum ein AUI zugeordnet. Weiterhin werden

alle Konzepte unter 154 semantischen Typen, wie “Sign or Symptom“ oder

“Substance“, klassifiziert[NLM].

Abbildung 4: Ebenen der Metathesaurusstruktur [NLM]

20


Technische Grundlagen

Das UMLS wird 2-mal im Jahr aktualisiert, im Mai (AA Veröffentlichung) und

im November (AB Veröffentlichung). Die aktuelle Datengrundlage in der

Version UMLS2010AA, vom 03.05.2010 enthält 2.201.360 Konzepte (CUI) mit

9.976.458 Konzeptnamen (AUI). Davon sind 8.246.528 eindeutige Konzeptnamen

(SUI) und 7.491.548 eindeutige normalisierte Konzeptnamen (LUI).

Die Konzepte stehen in 20 verschiedenen Sprachen zur Verfügung. Ihre Verteilung

wird in Tabelle 4 dargestellt. Als Quelle für deutsche Konzeptnamen

gelten die deutschen Übersetzungen von ICD-10, UMDNS, MeSH, ICPC,

MedDRA und WHOART.

Für die Nutzung des UMLS Metathesaurus ist die Registrierung bei der NLM,

Department of Health and Human Services erforderlich [NLM]. Hier wurde

der UMLS Metathesaurus in der Version UMLS2010AA, vom 03.05.2010

verwendet.

Sprache

Anzahl

Konzeptnamen

Anteil am

Metathesaurus

Anzahl

Quellen

Anteil am

Metathesaurus

Englisch 6.714.525 67,30% 103 66,03%

Spanisch 1.796.444 18,01% 6 3,85%

Japanisch 281.867 2,83% 2 1,28%

Niederländisch 218.794 2,19% 6 3,85%

Französisch 189.364 1,90% 5 3,21%

Deutsch 181.697 1,82% 6 3,85%

Portugiesisch 152.972 1,53% 4 2,56%

Italienisch 133.779 1,34% 4 2,56%

Tschechisch 126.920 1,27% 2 1,28%

Russisch 104.333 1,05% 1 0,64%

Schwedisch 26.311 0,26% 2 1,28%

Finnisch 25.489 0,26% 2 1,28%

Koreanisch 11.001 0,11% 1 0,64%

Kroatisch 8.228 0,08% 1 0,64%

Lettisch 1.391 0,01% 1 0,64%

Dänisch 723 0,01% 1 0,64%

Norwegisch 722 0,01% 1 0,64%

Ungarisch 718 0,01% 1 0,64%

Baskisch 695 0,01% 1 0,64%

Hebräisch 485 0,00% 1 0,64%

Tabelle 4: Konzeptnamen und Quellen nach Sprachen [NLM]

21


Technische Grundlagen

3.4 Yahoo! Search BOSS API

Das Search BOSS API von Yahoo! ist frei verfügbar und ermöglicht es Drittentwicklern

die Yahoo!-Suche zu nutzen und durch das Einbringen eigener

Daten, eigenem Inhalt oder eigener Technologie eine neue Suchanwendung

zu entwickeln. Man erhält demnach implizit Zugriff auf den Index, das Ranking

und die Relevanz-Algorithmen von Yahoo!.

Für das Yahoo! Search BOSS API existieren derzeit keine Restriktionen bezüglich

der täglichen Anzahl an Anfragen an den Service, der Repräsentation

und Verschneidung der Suchergebnisse und der Schlüsselwörter. Weiterhin

ist die Vermarktung als White-Label-Produkt erlaubt. Das Unternehmen

kündigt jedoch an, in Zukunft eine Gebührenstrategie für die Nutzung

dieses API anzuwenden, so dass sie bald nicht mehr frei zur Verfügung stehen

wird.

Für die Nutzung des Yahoo! Search BOSS API ist eine BOSS App ID erforderlich,

welche die Registrierung bei Yahoo! erfordert [YDN].

3.5 GermaNet

GermaNet ist ein lexikalisch-semantisches Netz, welches deutsche Nomen,

Verben und Adjektive, in Beziehung setzt. Dabei werden die Wörter in lexikalische

Einheiten, welche ein gemeinsames Konzept ausdrücken, zusammengefasst.

Diese sogenannten “Synsets“ werden dann semantisch in Beziehung

gesetzt. Derzeit enthält GermaNet 73.686 konzeptuelle und 3.515 lexikalische

Relationen. Es basiert auf der gleichen Technologie wie das englische

WordNet und enthält ausschließlich Wortstämme.

Seit 1997 wird es vom Seminar für Sprachwissenschaften und Computerlinguistik

der Universität Tübingen entwickelt und ist aktuell in der multilingualen

lexikalisch-semantischen Datenbank EWN integriert.

Für die Nutzung von GermaNet ist die Registrierung beim Seminar für

Sprachwissenschaften und Computerlinguistik der Universität Tübingen erforderlich.

Die dort in einer Datenbank verwalteten Daten werden im XML-

Format zur Verfügung gestellt. Die verwendete Datengrundlage von GermaNet

liegt in der Version GermaNet 5.3, vom April 2010, vor [SFS].

22


Umsetzung

4 Umsetzung

Im Folgenden wird die Vorgehensweise bei der Umsetzung des in Kapitel

2.5.6 beschriebenen Lösungsansatzes dargestellt.

4.1 Anwendungsfälle

Zunächst erfolgt die Analyse der Problemstellung und damit der genauen

Anforderungen, durch Formulierung konkreter Anwendungsfälle. Das vollständige

Anwendungsfalldiagramm kann in Anhang A eingesehen werden.

Dabei ist zu beachten, dass neben dem Nutzer an sich, auch alle beteiligten

Fremdsysteme als Akteure angesehen werden.

4.1.1 Absetzen einer Suchanfrage durch den Nutzer

Der Nutzer kann eine ganz gewöhnliche Suchanfrage in ein Textfeld eingeben

und wie gewohnt durch Betätigen der Eingabetaste oder Drücken eines

Knopfes die in das Textfeld eingegebene Suchanfrage absenden. Er hat dabei

die Möglichkeit durch die Auswahl einer Top Level Domäne oder Webseite

seine Suche zu spezifizieren. Nach Absenden der Suchanfrage erhält er eine

Ergebnisliste mit zu seiner Anfrage passenden Suchergebnissen. Dieser

Schritt erfolgt in der grafischen Nutzeroberfläche.

4.1.2 Prüfung der Grammatik

Die eingegebenen Wörter werden einer Grammatikprüfung unterzogen. Anschließend

wird dem Nutzer gezeigt, ob die Grammatik der von ihm eingegebenen

Wörter korrekt ist. Ist sie nicht korrekt, so erhält er einen Vorschlag

für weitere Schreibweisen. Akteur ist hier NHunspell.

4.1.3 Ermitteln von UMLS-Konzepten

Die Suchbegriffe werden in einer SQL-Anfrage kombiniert, welche der

Suchanfrage entsprechende Wörter im UMLS sucht. Anschließend werden

die Konzepte dieser Wörter ermittelt. Weiterhin wird die Gesamtheit aller

der Konzepte entsprechenden Wörter und dazu kookkurrente Wörter in Synonyme

und Vorzugsbenennungen unterteilt und unter semantischen Typen

klassifiziert. Akteur ist hier der UMLS Metathesaurus.

23


Umsetzung

4.1.4 Ermitteln und Darstellen der Suchergebnisse durch das System

Die aus dem UMLS erhaltenen Wörter und Wortgruppen werden an die ursprüngliche

Anfrage angehängt. Es wird eine URL erzeugt, welche die allgemeinen

Suchoptionen und die erweiterte Anfrage enthält.

Nach Interaktion dieser URL mit dem entsprechenden Yahoo! Search BOSS

API, werden die gefundenen Ergebnisse entgegengenommen. Anschließend

werden dem Nutzer die Suchergebnisse präsentiert. Diese enthalten zum

Einen die Überschrift des gefundenen Dokumentes als Link, zum Anderen

eine kurze Zusammenfassung zu diesem. Weiterhin werden Datum der letzten

Aktualisierung, Größe in Bytes, Sprache und URL angezeigt. Bei Überschrift,

Zusammenfassung und URL sind Wörter fett gedruckt, sobald sie

analog zu Begriffen aus der Suchanfrage erscheinen.

24


Umsetzung

4.2 Analyse der Anforderungen

4.2.1 Rahmenbedingungen

Die Rahmenbedingungen werden maßgeblich von der zur Verfügung stehenden

Hardware und Software bestimmt und schränken demnach die

Menge an Lösungsansätzen und möglichen Umsetzungen stark ein. Die

Rahmenbedingungen für diese Arbeit werden in der folgenden Tabelle 5

aufgeführt und erläutert.

Rahmenbedingung

Implementierung

als Webanwendung

Programmierung

Entwicklungsumgebung

Datenbankserver

Semantische Informationen

Suchmaschinen-API

Format der Suchergebnisse

Sprache der Suchanfragen

Beschreibung

Das System ist als Webapplikation zu implementieren, so dass

es ausschließlich mit einem Webbrowser gesteuert werden kann.

Es ist die objektorientierte Programmiersprache C# zu verwenden.

Dies ermöglicht eine Modularisierung und Wiederverwendung

von schon vorhandenem Code.

Programmiert wird in der Entwicklungsumgebung Microsoft Visual

Studio.

Als Speicherort für den UMLS Metathesaurus dient ein Microsoft

SQL Server.

Grundlage für semantische Informationen bietet der UMLS Metathesaurus

in der neusten Version.

Zur Beschaffung von Suchergebnissen ist das Yahoo! Search

BOSS API zu nutzen.

Die Suchergebnisse werden strukturiert im XML-Format bezogen.

Die Suchanfragen sind für die Nutzung im Deutschen abzubilden.

Tabelle 5: Rahmenbedingungen

25


Umsetzung

4.2.2 Funktionelle Anforderungen

Funktionelle Anforderungen sind solche, die notwendig sind um dem jeweiligen

Akteur, die in den Anwendungsfällen formulierten Aktionen, zu ermöglichen.

Die folgende Tabelle 6 führt diese auf.

Funktionelle

Anforderung

Absetzen von

Suchanfragen

Suche in Domänen

Struktur der

Suchergebnisse

Grammatikprüfung

Ermitteln der

Konzepte

Ermitteln der

Synonyme und

Vorzugsbenennungen

Semantische

Analyse

Erweitern der

Suchanfragen

Beschreibung

Dies ist eine Grundfunktion des Systems und liefert als Resultat

Suchergebnisse.

Der Suchende hat die Möglichkeit in verschiedenen Top Level

Domänen oder aber bestimmten Webseiten nach Dokumenten

zu suchen.

Suchergebnisse beinhalten Überschrift, Link, Datum, Größe,

Kurzzusammenfassung, Sprache und URL zu einem Dokument.

Die in einer Suchanfrage eingegebenen Wörter werden auf ihre

richtige Schreibweise hin überprüft. Bei falscher Schreibweise

erfolgt ein Vorschlag auf ähnliche Wörter.

Die einzelnen in der Suchanfrage eingegebenen Worte werden

im UMLS Metathesaurus auf einzelne Wörter abgebildet und

die dazugehörigen Konzepte ermittelt.

Die in den Konzepten des UMLS Metathesaurus enthaltenen

Synonyme und Vorzugsbenennungen werden ermittelt.

Suchanfragen werden semantisch analysiert. Dies beinhaltet

die Ermittlung statistisch verwandter Begriffe, sowie die Klassifizierung

nach semantischen Typen.

Suchanfragen werden mit Vorzugsbenennungen und Synonymen

erweitert, welche zuvor durch Wortabbildung aus dem

UMLS beschafft wurden.

Tabelle 6: Funktionelle Anforderungen

26


Umsetzung

4.2.3 Nicht-funktionelle Anforderungen

Nicht-funktionale Anforderungen wie Datenschutz und Datensicherheit, Genauigkeit,

Zuverlässigkeit, Reaktionsgeschwindigkeit beschreiben nicht direkt

die Funktionalität, sondern gewünschte, aber nicht notwendige Qualitätsmerkmale.

Tabelle 7 zeigt die hier betrachteten Anforderungen.

Nicht-Funktionale Beschreibung

Anforderung

Grafische Die grafische Nutzeroberfläche muss intuitiv nutzbar sein und kein

Nutzeroberfläche Vorwissen voraussetzen.

Datenvermeidung Für den Betrieb sind keine unnötigen Daten zu erheben. Sofern

nicht durch andere Funktionen erfordert, sollen insbesondere keine

Benutzernamen oder Passwörter verwendet werden.

Reaktionsgeschwindigkeit

anderen Internetanwendungen.

Das System besitzt Antwort- und Reaktionszeiten, verbgleichbar zu

Datenbasis Die Grunddatenbasis für das UMLS ist so abzulegen, dass sie die

Integration weiterer Datenquellen erlaubt.

Suchoptionen Der Nutzer hat sowohl die Möglichkeit der normalen, als auch der

semantischen Suche. So kann er die Ergebnisse beider vergleichen.

Dokumentformate Der Suchende hat die Möglichkeit, den Typ der gelieferten Dokumente

selbst zu bestimmen.

Sprache

Es besteht die Möglichkeit auch in anderen Sprachen als der Deutschen

semantisch zu Suchen.

Präpositionale Zur weiteren Spezifikation der Suchanfragen ist die Erweiterung der

Phrasen

Suchanfrage mit präpositionalen Phrasen zu realisieren.

Semantische

Informationen

Dem Nutzer werden Verwandte Begriffe, klassifiziert nach semantischen

Typen in einer Baumansicht gezeigt, mit deren Auswahl er

seine Suche spezifizieren kann.

Tabelle 7: Qualitätsanforderungen

27


Umsetzung

4.3 Potenzielle Ansätze

Potentielle Ansätze bieten sich dort an, wo die Rahmenbedingungen es zu

lassen und die funktionelle Anforderungen erfordern. Nicht-funktionelle

Anforderungen sind insoweit vernachlässigbar, dass sie zum eigentlichen in

2.5 und 2.6 geschilderten Ansatz und Ziel in erster Linie nicht beitragen.

4.3.1 Absetzen der Suchanfrage durch das System

Das Absetzen einer Suchanfrage erfolgt wie im Anwendungsfall in Kapitel

4.1.1 beschrieben. Für die interne Verarbeitung dieser stehen verschiedene

Ansätze zur Option. Suchdienste wie Google, Yahoo! und MSN bieten entsprechende

Schnittstellen an. Für diese Arbeit ist die Verwendung des

Yahoo! Search BOSS API durch die Rahmenbedingungen in Kapitel 4.2.1 vorgegeben,

allerdings kann die Anfrage an diese, mit universellen BOSS API

Argumenten, unterschiedlich stark spezifiziert werden. Die folgende Tabelle

8 zeigt die einzelnen Argumente.

Spezifikation

start

count

lang

region

strictlang

format

callback

sites

style

Beschreibung

Bestimmt die ordinale Position des ersten Suchergebnisses in der zurückgelieferten

Ergebnismenge. Dies ist wichtig wenn mehr als 50 Ergebnisse

empfangen werden.

Anzahl der auf eine Anfrage zu liefernden Ergebnisse. Eine Response

liefert maximal 50 Resultate.

Gibt an, in welcher Sprache die Dokumente gesucht werden. Etwaig

erscheinen hier auch Dokumente anderer Sprachen.

Bestimmt, aus welchem Land das Dokument stammt und muss parallel

zur Sprache definiert werden.

Aktiviert, erlaubt es keine Ausnahmen bei der Sprache der gelieferten

Dokumente.

Ergebnisse können in XML oder JSON empfangen werden.

Legt den Namen einer Callback-Funktion fest. Dies ist nur im JSON-

Format möglich.

Begrenzt die Suche auf Vordefinierte Domänen und Webseiten.

Bestimmt, ob analoge Suchbegriffe fett dargestellt werden.

Tabelle 8: Universelle BOSS API Argumente [YDN]

28


Umsetzung

Weiterhin kann die Anfrage mit optionalen BOSS API Argumenten erweitert

werden. Mit dem Argument filter können Dokumente mit pornografischem

und mit Hass in Beziehung stehendem Inhalt ausgefiltert werden.

Das type bestimmt, in welchem Format die zu suchenden Dokumente vorliegen

müssen. Es kann aus acht Spezifikationen gewählt werden, welche sich

beliebig miteinander kombinieren lassen. Diese sind html, text, pdf, msexcel

(xls, xla, xl), msword, ppt, msoffice (xl, msword, ppt) und nonhtml (text, pdf, xl,

msword, ppt).

Mit dem abstract Argument lässt sich bestimmen, ob die für Suchergebnisse

typischen Kurzbeschreibungen lang oder kurz geliefert werden. Standardmäßig

sind sie kurz und können durch die Spezifikation long bis zu 300 Zeichen

lang sein.

Für das Argument view gibt es eine Reihe von Spezifikationen, die in der folgenden

Tabelle 9 erläutert werden. Diese können ebenfalls beliebig miteinander

kombiniert werden.

Spezifikation

keyterms

searchmonkey_feed

searchmonkey_rdf

delicious_toptags

delicious_saves

language

Beschreibung

Gib einzelne Schlüsselwörter und Phrasen zu jedem Suchergebnis.

Liefert, wenn verfügbar, strukturierte Datenauszeichnungen zu

einem Suchergebnis im RSS-Format.

Liefert, wenn verfügbar, strukturierte Datenauszeichnungen zu

einem Suchergebnis im RDF-Format.

Es wird gezeigt, mit welchem Bookmark das Dokument markiert

wurde und wie oft.

Gibt an, wie oft dieses Dokument als Bookmark gespeichert

wurde.

Identifiziert die Sprache des Dokuments.

Tabelle 9: Spezifikationen des Argumentes view [YDN]

Die Spezifikationen searchmonkey_feed und searchmonkey_rdf sind ausschließlich

im XML-Format verfügbar und unterstützen eine Reihe von offenen

Standards für Mikroformate, wie XHTML, XFN, FOAF, Dublin Core,

SIOC, OWL, UMBEL und viele weitere [YDN].

29


Umsetzung

Die Interaktion mit dem Yahoo! Search BOSS API erfolgt mit dem Aufruf einer

URI, die sich aus den beschriebenen Argumenten zusammensetzt und

hat folgende Form:

http//boss.yahooapis/ysearch/{web|news|images}/v1/{Anfrage}?appid={BOSSAppID}

[&lang=de&start=0&count=50&style=raw®ion=de&abstract=long&sites={domäne}

&strictlang={0|1}&format={xml|json}&filter={-porn,-hate}

&type={html,text,pdf,xl,msword,ppt,msoffice,nonhtml}

&view={keyterms,searchmonkey_feed,searchmonkey_rdf,delicious_toptags,delicious_saves,

language}]

Durch die Verwendung eines “-“ Operators vor einer Spezifikation kann sie

von der Suche ausgeschlossen werden. Diese können vor Suchbegriffen, Dokumenttypen,

Webseiten und Domänen zum Einsatz kommen. Weiterhin

kann nach Webseiten, Nachrichten und Bildern gesucht werden und wie

bereits in Kapitel 3.4 erwähnt, ist eine BOSS App ID erforderlich [YDN].

4.3.2 Suche in Domänen

Für die Suche in bestimmten Domänen bietet das Yahoo! Search BOSS API

zwei Möglichkeiten. Zum Einen kann das, wie bereits in Kapitel 4.3.1 beschriebene,

sites genutzt werden, bei dem man eine oder mehrere URLs

oder eine Domäne spezifiziert, in denen gesucht werden sollen.

Für die Suche nach Dokumenten in Webseiten oder Domänen empfiehlt Yahoo!

jedoch das Argument site, welches noch vor die Spezifikation der BOSS

App ID. Eine Begründung dafür wird von Yahoo! jedoch nicht formuliert. Im

Gegensatz zu sites erfolgt beim site Argument der Ausschluss von Webseiten

und Domänen nicht durch setzten eines “-“ Operators vor der Spezifikation,

sondern direkt vor dem Argument [YDN].

30


Umsetzung

4.3.3 Auslesen der Suchergebnisse

Wie bereits in Kapitel 4.3.1 beschrieben können Suchergebnisse im JSON

oder XML-Format bezogen werden. Die Rahmenbedingungen in Kapitel

4.2.1 geben jedoch die Nutzung von XML als Übertragungsformat vor. Potentielle

Ansätze ergeben sich hier beim Lesen von XML.

Zum einen kann die XML-Datei mit DOM gelesen, verwaltet und geändert

werden. In .NET gibt es dafür eine entsprechende Klasse. DOM orientiert

sich an der Baumstruktur eines Dokumentes und repräsentiert es als Hierarchie

von Knoten-Objekten. Dabei wird das gesamte Dokument in den Arbeitsspeicher

geladen, wonach sich DOM für die Verarbeitung sehr großer

Dokumente nicht eignet, jedoch für den kontrollierten Zugriff auf einzelne

Teile eines Dokumentes. Es ermöglicht die Werte eines Attributs oder den

Inhalt eines Elementes zu bearbeiten und Knoten einzufügen oder zu entfernen.

Alternativ dazu stellt .NET auch eine XmlReader-Klasse bereit, mit welcher

ein schreibgeschützter Vorwärtszugriff auf ein XML-Dokument ermöglicht

wird. Dabei wird sichergestellt, dass die syntaktische Struktur wohlgeformt

ist, wobei das Dokument nicht zwischengespeichert wird. Eine aktuelle Implementierung

des XmlTextReader, mit welchem Informationen über Inhalt

und Knotentypen gelesen werden können, ermöglicht eine hohe Leistung.

Des Weiteren besteht die Möglichkeit einen SAX-Reader zu verwenden. Dieser

arbeitet im Gegensatz zum XmlReader nach dem sogenannten Push-

Modell, der XmlReader jedoch im Pull-Model. Das Pull-Modell bietet gegenüber

dem Push-Model wesentliche Vorteile in Bezug auf Zustandsverwaltung,

selektive Verarbeitung, Schichtung, Vermeidung von zusätzlichen Zeichenfolgenkopien

und Verarbeitung mehrerer Eingabe-Streams, weshalb

der SAX-Reader hier nicht weiter erläutert wird [MSDN].

31


Umsetzung

4.3.4 Grammatikprüfung

Die Grammatikprüfung lässt sich auf unterschiedliche Arten realisieren, da

sie in den Rahmenbedingungen nicht näher spezifiziert ist.

Zum Einen bietet Yahoo! in seinem Search BOSS API eine sogenannte

Spelling Suggestion an. Um diese zu nutzen erzeugt man ähnlich wie in Kapitel

4.3.1 auch eine URL, nur dass an Stelle von web, news oder images als

Spezifikation spelling mitgegeben wird. Als Ergebnis werden Korrekturvorschläge

geliefert, wenn die Grammatik nicht korrekt war [YDN].

Aspell ist eine freie Software zur Rechtschreibprüfung unter Unix und Windows

und unterstützt 70 Sprachen. Seit 2008 wird es jedoch für Windows

nur noch spärlich aktualisiert [Asp].

Im Gegensatz zu Aspell wird Hunspell momentan stetig aktualisiert und stellt

umfangreiche Sprachbibliotheken bereit. Weiterhin existiert mit NHunspell

eine aktuelle Schnittelle für .NET, die genutzt werden kann [NHu].

Alternativ bietet die National Library of Medicine über ihren Server, den sogenannten

UMLSKS, den Zugriff auf einen Webservice für Spelling Suggestions

an [NLM].

4.3.5 Quelle der UMLS-Konzepte

Den Rahmenbedingungen in Kapitel 4.2.1 entsprechend sind semantische

Informationen und damit auch Konzepte aus dem UMLS Metathesaurus zu

beschaffen. Als Speicherort für diesen dient dabei ein MS SQL Server. Das

Ermitteln der Konzepte durch das Abbilden von Wörtern, erfolgt demnach

durch das Ausführen einer dafür geeigneten SQL-Anfrage an die Datenbank.

Als Alternative bietet sich hier ebenfalls wieder ein Web Service des

UMLSKS an, welcher Zugriff auf alle drei Knowledge Sources gewährt. Dabei

werden neun Methoden angeboten, mit denen ein Konzept ermittelt werden

kann. Die Ermittlung der Konzepte wird hier mit der Übergabe einer Wortkette

an eine dieser Methode realisiert [NLM].

32


Umsetzung

4.3.6 Ermitteln von Synonymen und Vorzugsbenennungen

Die Ermittlung von Synonymen kann auf verschieden Wegen realisiert werden,

da der UMLS Metathesaurus Synonyme nach verschiedenen Aspekten

klassifiziert.

Die Klassifikation nach dem TTY ordnet einem Begriff den Status in seiner

Quelle zu. Diese beinhaltet die Klassifikation zu verschiedener Vorzugsbenennungen

und Synonymen, aber auch 254 weitere Zuordnungen zu unter

Anderem Diagnosen und klinischen Medikamenten.

ISPREF gibt den Atom-Status an und damit, ob die Buchstabenfolge im jeweiligen

Konzept bevorzugt ist oder nicht.

Mit STT wird angegeben, ob eine Buchstabenfolge die bevorzugte Form für

einen Begriff oder eine Variante in der Wortreihenfolge oder Schreibweise

darstellt.

Bei der Klassifikation nach TS wird eindeutig nach Vorzugsbenennung und

Synonym unterteilt. Diese Zuordnung richtet sich dabei auf die Beziehung

einer lexikalischen Bezeichnung, identifiziert durch einen LUI, zu einem

Konzept [NLM].

4.3.7 Semantische Analyse

Die semantische Analyse hat die Ermittlung kookkurrenter Konzepte und

semantischer Typen eines Konzeptes zum Ergebnis.

Dies kann zum Einen durch den Aufruf eines UMLSKS Web Services zu realisieren.

Zum Andern gelingt dies über eine SQL-Abfrage auf die entsprechenden

beiden Tabellen einer eigenen UMLS Datenbank.

33


Umsetzung

4.3.8 Erweitern der Suchanfragen

Bei der Erweiterung der Suchanfragen um semantische Informationen kann

auf verschiedene Weise vorgegangen werden. Da die Suchanfrage des Nutzers

nicht ersetzt wird, bleibt sie in ihrer ursprünglichen Form erhalten und

wird erweitert.

Erhobene semantische Informationen sind konkret semantische Typen sowie

kookkurrente Vorzugsbenennungen und Synonyme. Diese können mit

“AND“-Operatoren verknüpft werden, so dass Suchergebnisse angezeigt

werden, welche die Kombination aller Begriffe enthalten. Verwendet man

“OR“-Operatoren, so muss nur einer der Begriffe im Suchresultat vorhanden

sein.

Wird keine Phrasensuche verwendet und gibt es mehrere Suchbegriffe, so

können diese in beliebiger Reihenfolge im Suchergebnis vorhanden sein.

Setzt man die Suchbegriffe in doppelte Anführungszeichen, so ist die Phrasensuche

aktiviert und es wird nur nach der vorgegebenen Kombination der

Begriffe gesucht.

34


Umsetzung

4.4 Ausgewählter Ansatz

Für die Bildung der URL, zur Interaktion mit dem Yahoo! Search BOSS API,

werden die universellen BOSS API Argumente start, count, lang, region,

strictlang und format genutzt, da diese für jede Anfrage deklariert werden

müssen. Um die Nutzerfreundlichkeit zu gewährleisten, sind die drei

Sprachparameter über die grafische Oberfläche manipulierbar.

Das Argument callback wird nicht verwendet, da es nur in Zusammenhang

mit dem JSON-Format genutzt werden kann. Ebenso wird hier das Argument

sites nicht deklariert, da an dessen Stelle das von Yahoo! empfohlene site

genutzt wird. Weil style nur deklariert werden muss, wenn der Standardwert

für diesen geändert werden soll, wird ihm auch kein Wert zugeordnet.

Die Voreinstellung bleibt somit vorhanden, denn der Fettdruck von Wörtern,

die analog zur Suchanfrage sind, trägt zur Nutzerfreundlichkeit bei.

Als optionale BOSS API Argumente werden type, abstract und view verwendet.

Der Dokumenttyp ist dabei vom Nutzer bestimmbar. Indem der Wert

des Arguments abstract auf long gesetzt wird, kann dem Nutzer ein größtmöglicher

Einblick in ein Dokument gewährt werden. Als einzige Spezifikation

für den Parameter view wird language verwendet, um die Sprache eines

Dokumentes zu identifizieren und dem Nutzer kenntlich zu machen.

Schlüsselwörter, Bookmarks und Mikroformate werden nicht ermittelt, da

sie im Wesentlichen nicht zur Erfüllung der Aufgabenstellung beitragen.

Ebenso wird das Argument filter nicht genutzt, da es die spätere Evaluation

verfälschen könnte. Die Verwendung von Operatoren wie “-“ wird nur in

der Suchanfrage zum Ausschluss von Suchbegriffen und nicht für Argumente

verfügbar sein.

Das Lesen der von dem Yahoo! Search BOSS API zurückgelieferten XML-

Datei erfolgt mit einem XmlTextReader, da der kontrollierte Zugriff auf einzelne

Dokumententeile hier nicht notwendig ist und sich die Dateigröße in

Grenzen hält, so dass ein einfacher Vorwärtszugriff ausreicht. Weiterhin ist

die Manipulation dieser Dateien nicht notwendig und die Verwendung eines

XmlTextReader bietet eine bessere Leistung gegenüber DOM, so dass die

Reaktionsgeschwindigkeit der Anwendung erhöht wird.

35


Umsetzung

Für die Grammatikprüfung ist die Spelling Suggestion der BOSS API ungeeignet,

da sie keine Spezifikation der Sprache zulässt und demnach nur in

der englischen Sprache arbeitet. Somit ist sie für eine Grammatikprüfung im

Deutschen ungeeignet. Aspell kommt auf Grund der mangelnden Aktualität

für Windowsplattformen ebenfalls nicht in Frage. Da Hunspell stetig aktualisiert

wird und mit NHunspell eine Schnittstelle für .NET zur Verfügung steht

kommt es hier zu Einsatz.

Entsprechend der Rahmenbedingungen wird der UMLS Metathesaurus in

einem MS SQL Server gespeichert und die semantische Analyse auf dessen

Daten in der Datenbank durchgeführt.

Bei der Ermittlung der Synonyme wird die Kombination der Argumente

ISPREF, STT und TS verwendet. Es wird dabei nach einer Buchstabenfolge

gesucht, welche im jeweiligen Konzept, in Wortreihenfolge und Schreibweise

bevorzugt ist, jedoch lexikalisch, im Bezug auf ein entsprechendes Konzept,

ein Synonym oder eine Vorzugsbenennung darstellt. Somit ist sichergestellt,

das unkonventionelle Schreibweisen und Wortgruppen von der Suche

ausgeschlossen sind. TTY wird nicht genutzt, da es keine klare Klassifizierung

nach Synonymen und Vorzugsbenennungen zulässt.

36


Umsetzung

4.5 Vorgehensweise und Probleme

4.5.1 UMLS Installation

Die ca. 3,8 GB großen Daten für die Installation des UMLS nötigen Dateien

wurden vom UMLSKS heruntergeladen und mittels einer MD5-Datei auf Integrität

geprüft. Mit dem Programm MetamorphoSys wurden die Daten für

die UMLS Knowledge Sources, im von der NLM empfohlenen RRF-Format,

entpackt. Dabei besteht die Möglichkeit die Daten den eigenen Bedürfnissen

entsprechend auszuwählen. Zunächst hat man die Wahl entweder nur alle

Daten mit dem Restriktionslevel 0, demnach aus Quellen, die keine weiteren

Lizenzen erfordern, oder diese und zusätzlich noch Daten aus SNOMEDCT,

zu entpacken. Hier wurden alle Level 0 Daten samt SNOMEDCT ausgewählt.

Weiterhin lassen sich automatisch SQL-Scripts zum Definieren von Tabellen

und Indizes für MS Access 2003, MySql 5.0 und Oracle 10g erstellen. Es ist

unbedingt darauf zu achten, dass lange Datenfelder auf eine Länge von 4000

Zeichen begrenzt werden. Dies ist wichtig, da einige Datenbankmanagementsysteme

eine Maximale Feldlänge von 4000 Zeichen erlauben. Es sollte

auch in Unicode, zur Auswahl stehen UTF-8, UTF-16BE und UTF-16LE, encodiert

werden, um sprachspezifische Sonderzeichen darstellen zu können.

Hier wurde UTF-8 ausgewählt, da im Internet am weitesten verbreitet ist

[W3T]. Es empfiehlt sich auch hier wieder MD5-Dateien erstellen zu lassen,

um die Integrität zu gewährleisten.

Nachdem diese Einstellungen vorgenommen sind, kann bestimmt werden,

welche Daten entpackt werden sollen. Hier wurden alle Daten aus englischen

und deutschen Quellen ausgewählt. Im nächsten Schritt können Terme

zum Einen nach Priorität geordnet und zum Anderen die Unterdrückung

einiger Terme veranlasst werden. Hier wurden die Standardeinstellungen

beibehalten und damit sind alle Einstellungen vorgenommen. Es empfiehlt

sich diese zu speichern um sie bei erneuter Installation nicht noch einmal

vornehmen zu müssen. Nach Abschluss der Installation liegen alle Daten in

RFF-Dateien auf der Festplatte vor.

37


Umsetzung

4.5.2 UMLS Import

Da als Speicherort ein MS SQL Server gewählt wurde, ist das Laden der RFF-

Daten problematisch und aufwendig, weil es keine Möglichkeit gibt, automatisch

SQL-Scripts für MS SQL Server erstellen zu lassen. Weiterhin existiert

keine genaue Dokumentation der Datenbankstruktur des UMLS Metathesaurus.

Unter [NLM] ist ausschließlich ein Entity-Diagram aus dem Jahr 2009,

mit der Anmerkung, dass ein Entity-Relationship-Diagramm bald folgen

wird, verfügbar. Dieses kann in Anhang F eigesehen werden. Es lassen sich

die Datentypen der einzelnen Felder und die mit “*“ gekennzeichneten

Schlüssel ablesen. Es ist jedoch keine Unterscheidung von Primär- und

Fremdschlüsseln möglich. Dass diese Darstellung veraltet ist lässt sich daran

erkennen, dass sie mit den Deklarationen in den automatisch erstellbaren

SQL-Scripts in Teilen nicht übereinstimmt.

Es wurde zunächst versucht die Daten mit einem anderen DBMS importieren

und dann in MS SQL Server zu überführen. Der Import in MS Access

2003 scheiterte daran, dass die maximale Tabellengröße in einer MS Access

Datenbank bei 2 GB liegt. Da aber einige RRF-Dateien größer sind, wurde

weiter versucht, mit MySQL 5.0 zu arbeiten. Der Import in Datenbank verlief

problemlos. Daraufhin wurde versucht ein Verbindungsserver auf Serversystemebene

zu erstellen, über welchen die Daten übergeben werden können.

Da Verbindungsserver jedoch OLE DB Treiber benötigen um miteinander

zu kommunizieren und diese für MySQL nicht verfügbar sind, scheiterte

auch dieser Versuch.

Ressourcen für einen Import in eine Oracle 10g-Datenbank standen nicht

zur Verfügung, so dass versucht wurde die Datenbankstruktur aus den vorhandenen

SQL-Scripts zu erschließen und in MS SQL-Syntax zu überführen.

Dabei ist insbesondere darauf zu achten, dass Text in Unicode encodiert ist

und dementsprechend Datenfelder für MS SQL als “nchar“ oder “nvarchar“

definiert werden. Nachdem dies abgeschlossen war, konnten alle für den

Import nötigen Tabellen erstellt werden. Beim Import ist darauf zu achten,

dass die Konvertierung von Zeichenketten vom Wert “null“ in Felder vom

Typ “Integer“ einen Fehler auslöst, der zum Abbruch der Transaktion führt.

Diese müssen ignoriert werden.

38


Umsetzung

4.5.3 UMLS-Abbildung

Das Abbilden von Suchbegriffen auf den UMLS Metathesaurus gestaltet sich

problematisch. Zunächst wurde versucht einzelne Worte aus Suchanfragen

auf einzelne Worte in der Tabelle MRXW_GER abzubilden. In dieser Tabelle

ist ein Wort jedem Konzept zugeordnet, in dem es vorkommt. Diese Vorgehensweise

hat den Nachteil, dass stets sehr viele Konzepte abgebildet werden,

die allerdings nicht miteinander in Beziehung stehen. So werden bei

der Suche nach “Schmerzen im Ohr“, nach Entfernen der Stoppwörter und

Wortstammbildung je die Konzepte zu dem Wort “%Schmerz%“ und

“%Ohr%“ ermittelt. Eine Suche nach Konzepten für das gemeinsame Auftreten

dieser Begriffe ist nicht möglich. Es besteht die Möglichkeit, die Überschneidung

der gefundenen Konzepte zu ermitteln. Einfacher ist es jedoch

in der Tabelle MRCONSO nach Konzepten zu suchen, in denen mehrere Begriffe

vorkommen, denn diese enthält nicht nur einzelne Wörter, sondern

auch Wortgruppen.

Ein weiteres Problem bilden Umlaute, da nicht alle Wörter in beiden

Schreibweisen vorhanden sind. So ergibt die Suche nach “%Entzündung%“

81 Konzepte, die nach “%Entzuendung%“ aber 245. Daher ist es nötig Wörter

mit Umlauten zu identifizieren und die Abbildung der Suche auf den

UMLS Metathesaurus beide Schreibweisen einzubeziehen.

4.5.4 Übersetzung

Der UMLS Metathesaurus unterstützt viele Sprachen, dies bedeutet allerdings,

dass jede Sprache eine eigene Tabelle hat, in der einzelne Wörter einem

Konzept zugeordnet werden und dass diese Wörter in Wortgruppen

dann auch in der Tabelle “MRCONSO“ vorhanden sind. Semantische Typen,

Definitionen und Beschreibungen sind weiterhin auf Englisch dargestellt.

Da in dieser Arbeit auch eine Klassifizierung von deutschen Begriffen unter

semantischen Typen erfolgen soll, wurden die semantischen Typen in Tabelle

“MRSTY“ frei übersetzt und in einer neu angelegten Tabelle “MRSTY_GER“

gespeichert.

39


Umsetzung

4.5.5 Stoppwörter

Eine Suchanfrage kann bestimmte und unbestimmte Artikel, Konjunktionen

und Präpositionen enthalten, welche im Sprachgebrauch häufig vorkommen,

jedoch für die inhaltliche Erschließung von Dokumenten keine Relevanz

haben. Solche Wörter werden im Information Retrieval “Stoppwörter“

genannt. Es ist notwendig, diese aus der Suchanfrage zu entfernen, um beim

Abbilden der Kernwörter auf den UMLS Metathesaurus ein besseres Resultat

zu erzielen.

Dazu wurde eine Liste von Stoppwörtern erarbeitet und in eine eigens dafür

angelegte “STOPWORDS“-Tabelle, in der UMLS-Datenbank, importiert. Als

Quelle für diese Wörter dienten die Tabelle “sys.fulltext_system_stopwords“

des MS SQL Server 2008, das Dokument unter “http://feya.solariz.de/wpcontent/uploads/stoppwords.txt“

und Präpositionen von “canoo.net“. Nachdem

alle Doubletten entfernt wurden ergab sich eine Liste von 2674 Stoppwörtern.

Diese wurden mit dem willkürlich erstellten Schlüssel “1031“ in die

entsprechende Tabelle geladen. Dieser Schritt wurde auch ebenfalls für die

englische Sprache durchgeführt. Hier galten als Quellen

“http://en.wikipedia.org/wiki/List_of_English_prepositions“, “ftp://ftp.cs.corn

ell.edu/pub/smart/english.php“, “http://www.englishclub.com/grammar/prep

ositions-list.htm“, “http://abcteach.com/free/l/list_prepositions.pdf“ und wieder

die Tabelle “sys.fulltext_system_stoppwords“. Nachdem wieder alle

Doubletten entfernt wurden, blieben 633 ergaben sich 633 Wörter, welche

mit dem Schlüssel “1033“ in die entsprechende Tabelle geladen wurden.

40


Umsetzung

4.5.6 Wortstämme

Um beim Abbilden der Suchbegriffe auf den UMLS Metathesaurus eine größere

Treffermenge von Konzepten zu erhalten, wurde versucht von allen

Suchbegriffen der Wortstamm zu bilden. Dies ist sinnvoll, da die Suche im

UMLS Metathesaurus nach “%Schmerzen%“ 207 Konzepte liefert, wohingegen

die Suche nach dem Wortstamm “%Schmerz%“ mehr als das Doppelte,

555 Konzepte liefert.

Zunächst wurden die entsprechenden Möglichkeiten von NHunspell genutzt,

um den Wortstamm zu ermitteln. Dieser verlangsamt jedoch die Reaktionszeit

der gesamten Applikation erheblich. So wurde gemessen, dass bei einer

Anfrage von 40 Sekunden Dauer, ca. 30 Sekunden zur Wortstammbildung

benötigt wurden. Daher wurde in Betracht gezogen, für diese Aufgabe einen

Web Service zu nutzen, um die Rechenzeit zu verkürzen.

Als geeignet erschien zunächst der Web Service Baseform aus dem Projekt

Wortschatz der Universität Leipzig. Für einfache Anfragen kann dieser frei

genutzt werden. Zur Authentifizierung jeder Anfrage muss ein Login mit

Passwort erfolgen. Hier scheiterte dieser Ansatz, da die Authentifizierung an

den Apache Axis Server der Universität Leipzig nicht möglich war. Von Seiten

der Abteilung für Sprachverwaltung werden Probleme im Zusammenspiel

mit dem .NET Framework und dem Apache Axis Server vermutet.

Mit Hinsicht auf die Funktionalität und Vernachlässigung der Reaktionszeit

wurde letztendlich wieder NHunspell genutzt um Wortstämme zu ermitteln.

41


Umsetzung

4.5.7 GermaNet-Integration

Die Daten in GermaNet werden als eine Gesamtheit von 55 XML-Dateien zur

Verfügung gestellt. Es wurden alle Wörter in die Tabelle “GermaNet“, in der

verwendeten UMLS-Datenbank, geladen und nach Verben, Adjektiven und

Nomen klassifiziert.

Bei der späteren Implementierung werden Suchbegriffe in Wörter ohne Umlaute

und Wörter mit Umlauten, in Adjektive, Verben, Nomen und Nichtdefinierbar,

eingeteilt. So ergeben sich acht Möglichkeiten ein Wort zu typisieren.

Um alle daraus resultierenden 64 Kombinationsmöglichkeiten auf

SQL-Abfragen an den UMLS Metathesaurus abzubilden fehlte am Ende dieses

Projektes die Zeit, so dass die Begriffe nach ihrer Typisierung in diese

acht Gruppen am Ende wieder, nach Wörtern mit Umlauten und ohne Umlaute,

klassifiziert werden. Eine komplette Darstellung der Komplexität von

GermaNet in einer Datenbank wurde hier aus Zeitgründen ebenfalls nicht

durchgeführt.

Da die Integration von GermaNet keine funktionelle Anforderung ist, wurde

sie bei der Implementierung nicht weiter berücksichtigt. Somit konnte

letztendlich die Lauffähigkeit der eigentlichen Anwendung aufrecht erhalten

werden.

42


Umsetzung

4.5.8 Länge der URL

Es wurde festgestellt, dass das Yahoo! Search BOSS API bei Erhalt einer URL,

welche weit mehr als 2000 Zeichen enthält, keine Ergebnisse liefert, auch

wenn Suchbegriffe mit “OR“-Operatoren verknüpft sind. Genaue Angaben

zur maximalen Länge existieren nicht, weder in der Spezifikation RFC1738

für URLs oder in der RFC3986 für URIs, noch in den Dokumentationen von

Yahoo!. Es wird angenommen, dass die maximale Länge bei 2048 Zeichen

liegt. Dementsprechend wird beim Erstellen der um Synonyme erweiterten

Suchanfrage ein Limit von 1700 gesetzt. Zuzüglich der Standard-URL von ca.

250 Zeichen Länge ergibt sich eine maximale URL-Länge von 1950 Zeichen.

4.5.9 Zwischenspeichern

Auf eine Suchanfrage an das Yahoo! Search BOSS API erhält man eine XML-

Datei mit maximal 50 Suchergebnissen. Um die nächsten oder vorherigen

bis zu 50 Suchergebnisse einzusehen, muss die entsprechende URL ausgelesen

und wieder ein Request an das Yahoo! Search BOSS API gesendet werden.

Um die URL auslesen zu können muss die ursprüngliche Response von

Yahoo! aufrechterhalten, die Datei gepuffert oder lokal gespeichert werden.

Daher werden hier die Ergebnisse stets lokal zwischengespeichert.

4.5.10 Indizes der Datenbank

Zur Verbesserung der Reaktionsgeschwindigkeit des Gesamtsystems empfiehlt

es sich, Daten des UMLS Metathesaurus, auf welche oft zugegriffen

wird, zu indexieren. Die größte hier verwendete Tabelle besitzt über 19 Mio.

Datensätze. Die durchschnittliche Zugriffszeit lag vor der Indexierung bei

ca. 30 Sekunden, danach bei einer Sekunde.

Die Indexierung gestaltete sich problematisch, da eine maximale Schlüssellänge

von 900 Bytes erlaubt ist, die Tabelle “MRCONSO“ jedoch in der Spalte

“STR“ sehr lange Daten mit bis zu 4000 Zeichen enthält, so dass die maximale

Länge leicht überschritten wurde. Es wurden die Daten aus der Tabelle

“MRCONSO“ in eine neue Tabelle “MRCONSO900“ kopiert. Dabei wurden die

Daten in der Spalte “STR“ auf eine Länge von 400 Zeichen verkleinert.

43


Umsetzung

4.6 Software Design

4.6.1 Klassenarchitektur

Beim Anlegen einer ASP.NET Web Applikation wird zunächst ein Web-Form

mit entsprechender Code-Behind-Klassendatei erstellt. Die in dem Web-

Form, hier GUI.aspx genannt, implementierten Websteuerelemente können

über die Code-Behind-Klasse, hier GUI.aspx.cs genannt, direkt angesprochen

werden. Diese wird vom Nutzer ausgelöste Ereignisse in der grafischen

Oberfläche entgegennehmen und Ergebnisse dieser anzeigen.

Weiterhin wird je eine Klasse zur Kommunikation mit der UMLS-Datenbank

und mit dem Yahoo! Search BOSS API erstellt. Zentrale Schnittstelle zwischen

der GUI.aspx.cs und den weiteren Funktionsklassen übernimmt eine

SearchEngine.cs genannte Klasse. Sie wird von der GUI.aspx.cs-Klasse aufgerufen

und alle in einem Ereignis eines Websteuerelements übergebenen Parameter

werden an diese weitergegeben.

Es wird eine Global.asax.cs Datei erstellt. Diese enthält Methoden, welche

auf Applikationslevel-Ereignisse reagiert. Hier wird sie genutzt, um bei Applikationsstart

die Verbindung zur UMLS-Datenbank herzustellen, welche bei

Applikationsende wieder geschlossen wird.

Einen allgemeinen Überblick der primären Struktur bietet das Zustandsdiagramm

in Anhang B. Es zeigt die Beziehung der soeben eingeführten

Klassen.

Des Weiteren ist die Erstellung einer Klasse zur Zerlegung und Analyse der

Suchanfrage sinnvoll. Diese kann einzelne Wörter nach bestimmten Kriterien

extrahieren und entsprechend in Listen ablegen. Die hier erstellte Klasse

nennt sich StringAnalyzer.cs.

Die einzelnen Wörter können dann an eine weitere Klasse übergeben werden,

welche NHunspell aufruft und somit eine Grammatikprüfung auf jedes

einzelne Wort durchführen kann. Diese wird hier als SpellChecker.cs implementiert.

44


Umsetzung

Ist die semantische Suche aktiviert, so werden die auf Rechtschreibung geprüften

Wörter an die SqlHandler.cs Klasse übergeben, welche die Wörter

dann auf den UMLS Metathesaurus abbildet. Ist die semantische Suche nicht

aktiviert, so bleibt dieser Schritt aus.

Schließlich werden alle Suchbegriffe zu einer neuen Suchanfrage kombiniert

und an die URLCreator.cs-Klasse übergeben, welche die URL zur Interaktion

mit dem Yahoo! Search BOSS API herstellt.

Diese wird an die XMLCreator.cs Klasse übergeben, welche die URL wiederum

absendet und entsprechend Suchergebnisse im XML-Format entgegennimmt.

Diese werden als “searchresults.xml“ lokal gespeichert.

Mit einer XMLReader.cs Klasse kann die gespeicherte Datei beliebig oft ausgelesen

werden. Das Vollständige Klassendiagramm kann in Anhang C und

ein Aktivitätsdiagramm zur Implementierung in Anhang D eingesehen werden.

Diese Architektur ermöglicht das einfache Austauschen einzelner Elemente,

insbesondere der SearchEngine-Klasse.

Eine Übersicht über die in der Datenbank gespeicherten Tabellen befindet

sich in Anhang G und deren Beschreibung in Anhang H.

45


Umsetzung

4.7 Implementierung

4.7.1 Global.asax.cs

Application_Start()

Hier wird nach Applikationsstart eine Verbindung zum UMLS Metathesaurus,

mit Name und Adresse der Datenbank, Sicherheitskonzept und Connection

Timeout instanziiert. Die Authentifizierung erfolgt dabei über die Anmeldeinformationen

des Windows-Kontos. Das Timeout wird auf “0“ gesetzt,

so dass keine implizite Unterbrechung der Verbindung von Seiten der Applikation

erfolgen kann.

Application_End()

Die in Application_Start() instanziierte Datenbankverbindung wird hier explizit

beim Beenden der Applikation geschlossen.

4.7.2 GUI.aspx.cs

Page_Load()

Hier wird bei jedem Aktualisieren des Web-Form zum Einen der Cursorfokus

auf das Eingabefeld für die Suchbegriffe, zum Anderen ein HiddenField

auf den Suchen-Knopf gelegt, so dass er beim Betätigen der Entertaste ein

Event erzeugt.

SuchenButton_Click()

Beim betätigen des Suchen-Knopfes wird die Klasseneigene Methode

search() aufgerufen und dabei 2 leere Zeichenketten, für einen semantischen

Typ und den ihm zugeordneten Begriff, übergeben. Fehler werden

abgefangen und die Fehlermeldung im Element für Suchergebnisse angezeigt.

search()

Dieser Methode werden 2 Zeichenketten übergeben, eine für einen semantischen

Typ und eine für den dazugehörigen Begriff. Hier werden zunächst

die Parameter für Domäne, Sprache, Region, strikte Sprachfilterung, Dateityp,

Sprachbibliothekspfad und Pfad der XML-Datei für Suchergebnisse, mit

Werten belegt. Dann wird die Suchabfrage als Zeichenkette gespeichert und

anschließend die SearchEngine instanziiert.

46


Umsetzung

Daraufhin wird der Zeichenkette mit der Suchanfrage an die Methode

getSpell() der SearchEngine übergeben und als Ergebnis eine Zeichenkette

empfangen, welche auf einem Label in der Nutzeroberfläche angezeigt wird.

Dann wird überprüft, ob die Checkbox zur Aktivierung der semantischen

Suche angeklickt wurde. Ist dies der Fall, so wird die Zeichenkette mit der

Suchanfrage an die Methode getSemanticSearchResults() der SearchEngine

übergeben. Als Rückgabewert wird eine Liste mit Suchergebnissen entgegengenommen.

Daraufhin wird die klasseneigene Methode setTreeView()

aufgerufen. Wurde die Checkbox nicht angeklickt, so wird die Zeichenkette

mit der Suchanfrage an die Methode getSearchResults() der SearchEngine

übergeben und ebenfalls eine Liste mit Suchergebnissen entgegengenommen.

Im nächsten Schritt wird die ArrayList mit den Suchergebnissen ausgelesen

und diese in der grafischen Oberfläche in dem Element für Suchergebnisse

angezeigt. Dabei ist jedes Suchergebnis eine Zeichenkette.

Dann wird über die Methode getHits() der SearchEngine die Anzahl der

Suchergebnisse auf der aktuellen Seite, die Zahl der totalhits und deephits

ermittelt. Diese werden auf dem entsprechenden Label in der Nutzeroberfläche

angezeigt. Es wird die Seitenzahl “1“ festgelegt und im dafür bestimmten

Label angezeigt.

Fehler werden abgefangen und die Fehlermeldung im Element für Suchergebnisse

angezeigt.

setTreeView()

Diese Methode hat die Aufgabe den TreeView zu aktualisieren. Dieser kann

Daten strukturiert in einer Baumansicht mit Knotenpunkten darstellen. Sein

Inhalt wird zunächst gelöscht und anschließend 3 Listen Instanziiert. Die

Listen für Konzepte, deren Begriffe und semantische Typen werden über

den Aufruf der Methoden getCUI(), getCOC() und getSTY() der SearchEngine

mit Zeichenketten gefüllt. Ist die Liste für semantische Typen leer, so wird

ein entsprechender Text über dem TreeView angezeigt.

47


Umsetzung

Enthält sie einen semantischen Typen, so wird wieder eine entsprechende

Meldung angezeigt und der TreeView um einen Knoten für den semantischen

Typ erweitert. Die Liste mit Konzepten und der semantische Typ werden

mit der Methode getCOCbySTY() an die SearchEngine übergeben und alle

Begriffe zu diesem Typ als Liste von Zeichenketten entgegengenommen und

im TreeView angezeigt.

Wenn mehr als ein semantischer Typ gefunden wurden, so wird genauso

verfahren, mit dem Unterschied, dass sich der angezeigt Text unterscheidet

und mehrere Knoten für semantische Typen erzeugt werden.

Fehler werden abgefangen und die Fehlermeldung im Label über dem

TreeView angezeigt.

SelectedNodeChanged()

Wählt der Nutzer einen Knoten im TreeView aus, so wird hier zunächst ermittelt,

ob der angewählte Knoten ein semantischer Typ oder ein einzelner

Begriff ist. Da semantische Typen keine Elternelemente haben, gilt dies als

Identifikationskriterium.

Wurde ein Begriff ausgewählt, so wird sein semantischer Typ und er selbst,

ausgelesen. Der Begriff wird im Textfeld angezeigt und schließlich wird

überprüft, ob die semantische Suche aktiviert ist. Ist sie aktiviert so wird wie

in SuchenButton_Click() verfahren. Ist sie nicht aktiviert, so wird der ausgewählte

Begriff und sein semantischer Typ mit der klasseneigenen search()-

Methode übergeben und der ausgewählte Knoten auf “nicht ausgewählt“

gesetzt, damit die SelectedNodeChanged()-Methode auch beim Klick auf den

selben Knoten wieder durch0 ein Event aufgerufen werden kann.

Wurde ein semantischer Typ ausgewählt, so wird dieser ausgelesen und zusammen

mit einer leeren Zeichenkette wieder an search() übergeben, danach

wird die Methode setTreeView() aufgerufen.

Fehler werden abgefangen und die Fehlermeldung im Element für Suchergebnisse

angezeigt.

48


Umsetzung

VorherigeButton_Click()

Diese Methode wird bei Klick auf den Knopf für das Anzeigen der vorigen 10

Suchergebnisse aufgerufen.

Dabei wird der Knopf für das Anzeigen der nächsten 10 Suchergebnisse

sichtbar. Es wird eine SearchEngine mit dem Pfad der XML-Datei

“searchresults.xml“ instanziiert. Über die Methode getPrevPage() der

SearchEngine werden die vorigen 10 Suchergebnisse als Liste von Zeichenketten

entgegengenommen und im Element für diese angezeigt. Es wird die

neue Seitenzahl ermittelt, indem die Alte aus dem entsprechenden Label

ausgelesen und um 1 dekrementiert wird. Ist die neue Zahl “1“, so wird der

Knopf für die vorherigen Ergebnisse unsichtbar.

Fehler werden abgefangen und die Fehlermeldung im Element für Suchergebnisse

angezeigt.

NächsteButton_Click()

Bei Klick auf den Knopf für das Anzeigen der nächsten 10 Suchergebnisse

wird diese Methode aufgerufen.

Dabei wird der Knopf für das Anzeigen der vorherigen 10 Suchergebnisse

sichtbar. Es wird eine SearchEngine mit dem Pfad der XML-Datei

“searchresults.xml“ instanziiert. Über die Methode getNextPage() der

SearchEngine werden die nächsten 10 Suchergebnisse als Liste entgegengenommen

und im Element für diese angezeigt. Es wird die neue Seitenzahl

ermittelt, indem die Alte aus dem entsprechenden Label ausgelesen und um

1 inkrementiert wird. Ist das Zehnfache der neuen Zahl kleiner als die Gesamtzahl

der Suchergebnisse, so wird weiter geprüft, ob Zehnfache der Seitenzahl

größer oder gleich 1000 ist, da die maximale Zahl an Suchergebnissen

1000 ist. Ist dies der Fall, so wird der Knopf für das Anzeigen der nächsten

10 Ergebnisse unsichtbar. Das gleiche geschieht, wenn das Zehnfache

der Seitenzahl größer oder gleich die Zahl der Suchergebnisse wird. Letztendlich

wird die Seitenzahl im dafür vorgesehenen Label angezeigt.

Fehler werden abgefangen und die Fehlermeldung im Element für Suchergebnisse

angezeigt.

49


Umsetzung

4.7.3 SearchEngine.aspx.cs

getSemanticSearchResults()

Hier wird zunächst ein StringAnalyzer, mit der Übergabe der Zeichenkette

mit der Suchanfrage, instanziiert. Beim Aufruf dessen Methode

getSearchWords() wird eine Liste aller Suchbegriffe entgegengenommen.

Eine weitere Liste erhält nur Suchbegriffe ohne Umlaute, über den Methodenaufruf

getMatchWords(). Begriffe mit Umlauten werden über

getUmlautWords() entgegengenommen.

Dann wird eine Datenbankverbindung hergestellt und mit der aus der Klasse

Global.asax.cs ersetzt. Sie wird bei der Erstellung des SqlHandler mit

übergeben.

Daraufhin wird ein SpellChecker instanziiert und die Sprache mit

setLanguage() festgelegt.

Weiterhin werden alle Wörter in den Listen matchWordList und umlaut-

WordList mit der Methode stem() des Spellchecker auf ihren Wortstamm reduziert

und anschließend über die Methoden des sqlHandlersgetAdjective(),

getVerb(), getNoun() und getUndefined() in Listen für Adjektive, Verben, Nomen

und nicht definierbare Wortarten gespeichert.

Anschließend werden für Wörter mit Umlauten über die Methode checkUmlaut()

des StringAnalyzer ihre weiteren Schreibweise ermittelt und ebenfalls

in der entsprechenden Liste gespeichert.

Ist eine der acht Listen nicht leer, so werden sie mit der Methode getCUI()

an den sqlHandler übergeben. Als Ergebnis wird eine Liste mit Zeichenketten

für Konzeptschlüssel empfangen. Dann wird eine Liste der den Konzepten

entsprechenden Begriffe über die Methode getCOC() des sqlHandlers ermittelt,

bei der die Liste der Konzeptschlüssel und der semantische Typ als

Zeichenkette übergeben werden. Eine Liste der den Konzepten entsprechenden

semantischen Typen wird über die Methode getSTY() des

sqlHandler, bei Übergabe der Konzeptschlüsselliste und einer Zeichenkette

für einen semantischen Typ, geliefert.

50


Umsetzung

Die Liste der den Konzepten entsprechenden Begriffe wird daraufhin mit

der Methode deleteStopwords() von Stoppwörtern befreit.

Nun wird die Suchanfrage als Zeichenkette gebildet. Sie enthält die ursprüngliche

Anfrage, mit zusätzlich allen den Konzepten entsprechenden

Begriffen. Diese sind in doppelten Anführungszeichen und “OR“-Operatoren

angehängt. Übersteigt der neue Zeichenkette eine Länge von 1700 Zeichen,

so wird das Anhängen abgebrochen.

Anschließend wird die Zeichenkette mit der erweiterten Anfrage bei der Instanziierung

eines URLCreator übergeben. Mit seiner Methode createURL(),

wird eine Zeichenkette mit der erzeugten URL empfangen und bei der Instanziierung

eines XMLCreator übergeben. Mit dem Aufruf der Methode

createXML() wird lokal eine XML-Datei “searchresults.xml“ mit Suchergebnissen

erzeugt.

Diese wird dann ausgelesen. Ist dabei die Anzahl der Suchergebnisse “0“, so

wird ein neuer Zeichenkette mit erweiterter Suchanfrage erzeugt, welche

ein Wort weniger enthält, als die zuvor. Dies geschieht solange, bis die Anzahl

der Ergebnisse nicht mehr “0“ oder kein Wort zum abziehen vorhanden

ist. Letztendlich wird eine Liste mit Suchergebnissen als Zeichenkette zurückübergeben.

Fehler werden abgefangen und die Fehlermeldung als Zeichenkette

in der Liste für Suchergebnisse gespeichert.

getCOCbySTY()

Die Methode getCOC() des sqlHandler wird hier, mit Übergabe einer Liste

von Konzepten und einem semantischen Typ, aufgerufen. Die zurückgelieferten

Begriffe werden alphabetisch sortiert in eine Liste gespeichert, welche

dann zurückübergeben wird. Fehler werden abgefangen und die Fehlermeldung

als Zeichenkette in der Liste für Begriffe gespeichert.

getHits()

Hier wird eine Zeichenkette empfangen, die readHits()-Methode eines

xmlReader aufgerufen und eine Zeichenkette zurückübergeben. Bei einem

Fehler wird die Fehlermeldung ebenfalls als Zeichenkette zurückgeliefert.

51


Umsetzung

getPoints()

Diese Methode nimmt eine Zeichenkette entgegen und generiert Punkte

nach jeder dritten Stelle, zur besseren Lesbarkeit von langen Zahlen. Es

wird eine bearbeitete Zeichenkette zurückübergeben. Bei einem Fehler wird

die Fehlermeldung als Zeichenkette zurückgeliefert.

getSearchResults()

Hier wird ein URLCreator mit der Übergabe einer Zeichenkette für die Suchanfrage

instanziiert. Die mit dem Methodenaufruf createURL() erhaltene

URL wird an einen XMLCreator übergeben, welcher mit createXML() eine

lokale XML-Datei “searchresults.xml“ mit Suchergebnissen erzeugt. Diese

kann von einem XMLReader mit dem Methodenaufruf readXML() ausgelesen

und zurückübergeben werden. Fehler werden abgefangen und die Fehlermeldung

als Zeichenkette in der Liste für Suchergebnisse gespeichert.

getSpell()

Mit Übergabe einer Zeichenkette wird hier zunächst mit der Suchanfrage

ein StringAnalyzer instanziiert, welcher beim Methodenaufruf

getSearchWords() eine Liste mit Suchbegriffen zurückliefert. Diese wird einem

SpellChecker bei seiner Instanziierung mitgegeben. Mit dem Aufruf

setLanguage() wird durch Übergabe eines Sprachcodes die Sprache festgelegt.

Die als Ergebnis des Methodenaufrufs checkSpell() erhaltene Zeichenkette

wird zurückübergeben. Fehler werden abgefangen und die Fehlermeldung

als Zeichenkette zurückgeliefert.

getNextPage()

Hier wird mit der Methode readNextURL() eines XMLReader die URL für die

nächsten 10 Suchergebnisse ausgelesen. Diese wird einem XMLCreator

übergeben, welcher mit createXML() eine XML-Datei “searchresults.xml“

erzeugt. Diese wird wieder mit readXML() eines XMLReader ausgelesen. Die

erhaltene Liste mit Suchergebnissen wird zurückübergeben. Bei einem Fehler

wird die Fehlermeldung als Zeichenkette in der Liste für Suchergebnisse

gespeichert.

52


Umsetzung

getPrevPage()

Hier wird analog wie in getNextPage() gearbeitet, mit dem Unterschied, dass

zu Beginn mit readPrevURL() des XMLReader die URL für die vorherigen 10

Suchergebnisse ausgelesen wird.

4.7.4 StringAnalyzer.aspx.cs

getSearchWords()

Mit dem regulären Ausdruck “[\wÄäÖöÜüÁáß\‘]+“ werden hier alle Buchstabenfolgen

in der hier übergebenen Zeichenkette erkannt und in eine Liste

gespeichert. Dabei werden die Sonderzeichen “ä“, “ö“, “ü“, “á“ in Groß- und

Kleinschreibung, “ß“ und einfache Anführungszeichen berücksichtigt. Diese

Liste wird zurückübergeben. Bei einem Fehler wird die Fehlermeldung

als Zeichenkette in der Liste gespeichert.

getMatchWords()

Hier wird analog wie in getSearchWords() verfahren, mit dem Unterschied,

dass jede Buchstabenfolge mit der klasseneigenen Methode checkUmlaut()

darauf überprüft wird, ob es Umlaute enthält. Es werden alle Wörter ohne

Umlaute als Zeichenkette in einer Liste gespeichert.

getUmlautWords()

Hier wird analog wie in getMatchWords() verfahren, nur dass hier alle Wörter

mit Umlauten als Zeichenkette in einer Liste gespeichert werden.

checkUmlaut()

Diese Methode erhält eine Zeichenkette und überprüft jeden Buchstaben

dieser darauf, ob es ein Umlaut ist. Wird ein Umlaut erkannt, so wird er

durch eine alternative Schreibweise ersetzt. So wird dann zum Beispiel aus

“Ä“ ein “Ae“. Wenn am Ende die ursprüngliche Zeichenkette identisch mit

der neuen ist, so wird “null“ zurückübergeben. Hat sich die Buchstabenfolge

verändert, so wird die bearbeitete Zeichenkette übergeben. Bei einem Fehler

wird die Fehlermeldung als Zeichenkette zurückgeliefert.

53


Umsetzung

4.7.5 SpellChecker.aspx.cs

setLanguage()

Hier wird ein Sprachcode entgegengenommen und die Sprache für

NHunspell konfiguriert. Es werden der Sprachcode und die Dateipfade für

Hunspell, Hyphen und MyThes angegeben.

checkSpell()

In dieser Methode wird zunächst eine SpellEngine instanziiert und ihr eine

Sprache hinzugefügt. Danach wird eine SpellFactory mit der Übergabe der

Sprachkonfiguration erstellt. Es wird jedes Wort mit der Methode Spell() der

SpellFactory auf korrekte Schreibweise geprüft. Ist der Begriff korrekt, so

wird er in eine Zeichenkette mit HTML-Elementen eingefügt und zurückübergeben.

Ist der Begriff nicht korrekt, so werden mit dem Methodenaufruf Suggest()

der SpellFactory alternative Begriffe ermittelt und in eine Zeichenkette mit

HTML-Elementen gespeichert. Dann werden die Ressourcen der SpellEngine

und der SpellFactory wieder freigegeben und die Zeichenkette mit den Ergebnissen

zurückübergeben. Bei einem Fehler werden, sofern sie instanziiert

sind, die Ressourcen der SpellEngine und der SpellFactory freigegeben

und die Fehlermeldung als Zecihenkette zurückübergeben.

stem()

Hier wird eine Liste mit Zeichenketten entgegengenommen und daraufhin

zunächst wieder eine SpellEngine und eine SpellFactory instanziiert. Mit dem

Methodenaufruf Stem() der SpellFactory und Übergabe einer Zeichenkette,

werden Wortstämme geliefert. Diese beinhalten das ursprüngliche Wort,

sowie Groß- und Kleinschreibung. War die Wortstammbildung erfolgreich,

so wird daher nur das letzte überlieferte Wort als Wortstamm in eine Liste

gespeichert. War die Wortstammbildung nicht erfolgreich, so wird das ursprüngliche

Wort als Ergebnis in eine Liste gespeichert. Am Ende werden

die Ressourcen der SpellEngine und der SpellFactory wieder freigegeben und

die Ergebnisliste zurückübergeben. Bei einem Fehler werden, sofern sie instanziiert

sind, die Ressourcen der SpellEngine und der SpellFactory freigegeben

und die Fehlermeldung als Zeichenkette in die Liste gespeichert.

54


Umsetzung

4.7.6 SqlHandler.aspx.cs

getCUI()

Die hier empfangenen acht Listen werden zunächst zusammengefasst in eine

wordList, welche alle Wörter ohne Umlaute enthält und eine umlautList,

welche alle Wörter mit Umlauten enthält. Dann erfolgt das Erstellen von

SQL-Abfragen, wobei stets beidseitig mit “%“ trunkiert wird.

Enthalten beide Listen Zeichenketten, so erhält man bei der Suche nach beispielsweise

“Entzündung in der Sehnenscheide“ folgende Abfrage:

Dabei wird jedes Wort mit Umlaut, mit allen Wörtern ohne Umlaut über einen

“AND“-Operator und jede dieser Kombinationen mit einem “OR“-

Operator verknüpft.

Enthält nur die wordList Zeichenketten, so erhält man bei der Suche nach

beispielsweise “Schmerzen in der Brust“ folgende Abfrage:

Dabei werden alle Wörter mit “AND“-Operatoren verknüpft um eine Beziehung

zwischen ihnen herzustellen.

Enthält nur die umlautList Zeichenketten, so erhält man bei der Suche nach

beispielsweise “Schädigung der Füße durch Übergewicht“ folgende Abfrage:

Dabei werden alle Wörter mit “OR“-Operatoren verknüpft.

55


Umsetzung

Die jeweilige Abfrage wird mit einem DataAdapter an die Datenbank übermittelt,

wobei das Timeout der Abfrage auf “0“ gesetzt wird, so dass sie nicht

implizit von Seiten der Applikation beendet werden kann. Die erhaltenen

Datensätze mit den Konzeptschlüsseln als Zeichenketten werden in die

DataTable eines DataSet abgelegt. Dort können sie beliebig ausgelesen und

in eine Liste gespeichert werden. Am Ende werden die Ressourcen der

DataTable, des DataSet und des DataAdapter freigegeben und die Liste mit

den Konzepten zurückübergeben.

Bei einem Fehler werden, sofern sie instanziiert sind, die Ressourcen der

DataTable, des DataSet und es DataAdapter freigegeben und die Fehlermeldung

als Zeichenkette in einer Liste gespeichert und übergeben.

getCOC()

Es werden eine Liste mit Konzepten und ein semantischer Typ als Zeichenkette

übergeben. Ist die Liste nicht leer, so wird eine Anfrage erstellt. Ist die

Zeichenkette, welche den semantischen Typ repräsentiert leer, so wird nach

den Konzepten entsprechenden Begriffen gesucht, unabhängig vom semantischen

Typ. Es werden dann zwei Abfragen durchgeführt, die wie folgt

strukturiert sind:

Die Tabellen “MRCOC“, “MRSTY_GER“ werden über die gemeinsamen Konzeptschlüssel

mit der Tabelle “MRCONSO900“ über einen “inner join“ zusammengeführt,

somit nur dort, wo er in beiden Tabellen vorhanden ist.

56


Umsetzung

Es wird eine Anfrage durchgeführt, bei welcher der term status TS den Wert

“P“, englisch für “prefered“ hat und einmal “S“, englisch für “synonym“. Im

Weiteren sind beide Abfragen identisch. Konzepte werden mit “OR“-

Operatoren verknüpft und es wird nur nach Begriffen gesucht, bei denen

die Häufigkeit der Kookkurrenz vorhanden ist. Es wird dann nach der

Summe der Häufigkeit der Kookkurrenzen absteigend sortiert.

Am Ende steht eine Liste, an deren Spitze zunächst Vorzugsbenennungen

und dann Synonyme stehen, welche jeweils nach Summe der Häufigkeit der

Kookkurrenz geordnet sind.

Wurde ein semantischer Typ angegeben, so ergibt sich folgende Anfrage,

welche wieder zweimal aufgerufen wird, einmal mit term status “P“ und

einmal “S“:

Hier wird nach allen Begriffen gesucht, die dem semantischen Typ “Zeichen

oder Symptom“ zugeordnet sind. Sortiert wird am Ende alphabetisch.

Alle in dieser Methode durchgeführten Abfragen haben eine Liste zum Ergebnis,

welche mit den jeweils ermittelten Begriffen gefüllt ist. Diese wird

am Ende zurückübergeben.

Bei einem Fehler werden, sofern sie instanziiert sind, die Ressourcen der

DataTable, des DataSet und es DataAdapter freigegeben und die Fehlermeldung

als Zeichenkette in einer Liste gespeichert und übergeben.

57


Umsetzung

getSTY()

Diese Methode erhält ebenso wie getCOC(), eine Liste mit Konzepten und

einen semantischen Typ als Zeichenkette. Wurde ein semantischer Typ definiert,

so wird er in eine Liste gespeichert und diese zurückübergeben. Wurde

kein semantischer Typ definiert, so wird eine SQL-Anfrage gebildet, die

wie auch in getCOC() die Tabellen “MRCONSO900“, “MRCOC“ und

“MRSTY_GER“ zusammenführt. Die Abfrage sucht nach allen den Konzepten

entsprechenden semantischen Typen, speichert diese in eine Liste welche

dann zurückgegeben wird. Die SQL-Abfrage hat folgende Struktur:

deleteStopwords()

Diese Methode empfängt eine Liste mit Suchbegriffen. Mit einer SQL-

Abfrage auf die Tabelle “STOPWORDS“ werden alle Stoppwörter einer Sprache

ermittelt und in eine weitere Liste geschrieben. Dann werden alle Wörter

in der einen Liste, mit denen in der anderen verglichen. Enthalten beide

Listen das gleiche Wort, so wird es aus der empfangenen Liste entfernt. Am

Ende wird die bearbeitete Liste zurückübergeben.

Bei einem Fehler werden, sofern sie instanziiert sind, die Ressourcen der

DataTable, des DataSet und es DataAdapter freigegeben und die Fehlermeldung

als Zeichenkette in einer Liste gespeichert und übergeben.

getAdjective()

Es wird eine Liste mit Suchbegriffen entgegengenommen und für jedes Wort

wird eine SQL-Abfrage auf die Tabelle “GermaNet“ durchgeführt, welche

nach dem Wort als Adjektiv sucht. Gefundene Begriffe werden in eine Liste

gespeichert und diese schließlich zurückbergeben.

58


Umsetzung

Bei einem Fehler werden, sofern sie instanziiert sind, die Ressourcen der

DataTable, des DataSet und es DataAdapter freigegeben und die Fehlermeldung

als Zeichenkette in einer Liste gespeichert und übergeben.

getVerb()

Hier wird analog wie in getAdjective() vorgegangen, mit dem Unterschied,

dass nach Worten als Verb gesucht wird.

getNoun()

Es wird hier analog wie in getAdjective() vorgegangen, mit dem Unterschied,

dass nach Worten als Nomen gesucht wird.

getUndefined()

Hier wird analog wie in getAdjective() vorgegangen, mit dem Unterschied,

dass nach Worten gesucht wird, für welche keine Wortart ermittelt werden

kann.

4.7.7 URLCreator.aspx.cs

createURL()

Es wird eine URL als Zeichenkette erzeugt, welche zurückübergeben wird.

Fehler werden abgefangen, wobei dann die Fehlermeldung als Zeichenkette

übergeben wird.

4.7.8 XMLCreator.aspx.cs

createXML()

Hier wird ein HTTP-Web-Request mit der Übergabe der entsprechenden URL

erzeugt. Es wird ein Response-Stream einer HTTP-Web-Response mit einem

Stream-Reader ausgelesen und mit einem Stream-Writer in die lokale XML-

Datei “searchresults.xml“ geschrieben.

Ist das Schreiben abgeschlossen, so werden der Stream-Reader und der

Stream-Writer geschlossen.

Tritt ein Fehler auf, wird dieser abgefangen und sofern sie instanziiert sind,

der offenen Stream-Reader oder Stream-Writer geschlossen.

59


Umsetzung

4.7.9 XMLReader.aspx.cs

readXML()

Es wird zunächst ein Reader für XML und eine Liste für Suchergebnisse instanziiert.

Daraufhin werden einzelne Suchergebnisse aus der XML-Datei

“searchresults.xml“ ausgelesen und in Zeichenketten mit HTML-Elementen

in der Suchergebnisliste gespeichert.

Wurden alle Suchergebnisse ausgelesen, so wird der Reader für XML geschlossen

und die Suchergebnisliste zurückgegeben.

Tritt ein Fehler auf, so wird, sofern er instanziiert ist, der Reader für XML

geschlossen und die Fehlermeldung als Zeichenkette in der Suchergebnisliste

gespeichert.

readNextURL()

Hier liest ein Reader für XML den Knoten “nextpage“ in der XML-Datei

“searchresults.xml“ aus und speichert ihn als Zeichenkette. Danach wird der

Reader für XML geschlossen und die Zeichenkette zurückübergeben.

Tritt ein Fehler auf, so wird, sofern er instanziiert ist, der Reader für XML

geschlossen und die Fehlermeldung als Zeichenkette zurückübergeben.

readPrevURL()

Hier wird analog wie in ReadNextURL() verfahren, mit dem Unterschied,

dass der Knoten “prevpage“ ausgelesen wird.

readHits()

Es wird analog wie in ReadNextURL() verfahren, mit dem Unterschied, dass

ein Attribut des Knotens “resultset_web“ ausgelesen wird. Das zu lesende

Attribut wird zuvor als Zeichenkette spezifiziert.

60


Ergebnisse

5 Ergebnisse

5.1 Die Benutzerschnittstelle

Hier wird die entstandene Nutzerschnittstelle mit einzelnen Ausschnitten

beschrieben. Die komplette grafische Oberfläche kann in Anhang E eingesehen

werden.

Der Nutzer hat die Möglichkeit vor Absenden

seiner Suchanfrage allgemeine und semantische

Suchoptionen, wie links im Bild zu sehen, zu

bestimmen.

Die Auswahl der Sprache, Region, strikte

Sprachfilterung und Dateityp wurden mit Radiobuttons

realisiert.

Dabei kann der Nutzer zwischen den Sprachen

Deutsch und Englisch wählen.

Ebenso kann für die Region, als Herkunftsort

der gelieferten Dokumente, Deutschland oder

USA ausgewählt werden.

Weiterhin hat der Nutzer die Wahl aus verschiedenen

Dateitypen. Von diesen kann immer

nur eine je Suchanfrage ausgewählt werden.

Domänen müssen manuell in ein dafür bestimmtes

Textfeld eingegeben werden. Mögliche

Schreibweisen sind darunter in Klammern dargestellt.

Die Aktivierung oder Deaktivierung der semantischen

Suche kann durch Anwählen einer einfachen

Checkbox, wie rechts zu sehen, durchgeführt

werden.

61


Ergebnisse

Die Suchanfrage wird schließlich in ein einfaches Textfeld eingegeben und

durch das Betätigen einer Schaltfläche abgesendet. Daraufhin werden die

Anzahl der Treffer und das Ergebnis der Grammatikprüfung angezeigt:

Darunter werden auf einer Seite maximal 10 Suchergebnisse in der üblichen

Struktur und Farbgebung der großen algorithmischen Suchmaschinen angezeigt.

Geblättert wird mit Schaltflächen zum Vor- und Zurückblättern zwischen

den nächsten oder vorherigen 10 Suchergebnissen. Die aktuelle Seite

wird zwischen diesen angezeigt:

Zu der gestellten Suchanfrage ermittelte kookkurrente Synonyme, Vorzugsbenennungen

und semantische Typen werden unter den semantischen

Suchoptionen in einer Baumstruktur dargestellte:

62


Ergebnisse

5.2 Validierung der Funktionalität

Das System wurde während der Entwicklung stets White-Box-Tests unterzogen.

Dabei wurden alle in Kapitel 4.2.2 aufgeführten Anforderungen auf

Funktionalität geprüft. Dies zeigt, dass die gewählten Ansätze bei der Implementierung

den Anforderungen in Kapitel 4.2, mit Bezug auf die Probleme

in Kapitel 4.5 gerecht werden und sich zur Untersuchung der eigentlichen

Problemstellung eignen. Die folgende Tabelle 10 veranschaulicht dies.

Anforderungen Probleme Lösung

Absetzen von

Suchanfragen

Kapitel 4.5.8

Länge der URL

Kapitel 4.7.3

getSemanticSearchResults()

Schrittweise Verringerung der URL-

Länge

Domänen Keine Kapitel 4.7.7

createURL()

Suchergebnisse Kapitel 4.5.9

Zwischenspeichern

Kapitel 4.7.8

createXML()

Ergebnisse werden lokal zwischengespeichert

Grammatikprüfung Keine Kapitel 4.7.5

checkSpell()

Konzepte Kapitel 4.5.5

Stoppwörter

Kapitel 4.5.6

Wortstämme

Kapitel 4.5.3

UMLS-Abbildung

Kapitel 4.7.6

deleteStopwords()

Kapitel 4.7.5

stem()

Kapitel 4.7.4

checkUmlau()

Synonyme Keine Kapitel 4.7.6

getCOC()

Semantische

Analyse

Kapitel 4.5.4

Übersetzung ins

Deutsche

Übersetzung durchgeführt

Erweitern von

Suchanfragen

Kapitel 4.5.8

Länge der URL

Tabelle 10: Validierung der Funktionalität

Kapitel 4.7.3

getSemanticSearchResults()

Schrittweise Verringerung der URL-

Länge

63


Ergebnisse

5.3 Validierung der Qualität

Entsprechend den Anforderungen aus Kapitel 4.2.3 wurde eine schlichte

grafische Oberfläche geschaffen. Es werden keine unnötigen Nutzerdaten

erhoben, allerding werden Suchergebnisse lokal zwischengespeichert. Im

Vergleich zur Reaktionszeit vor der Indexierung der Datenbanktabellen, hat

sich die Leistung danach erheblich verbessert, ist aber nicht vergleichbar

mit der von ähnlichen Internetanwendungen. Der UMLS Metathesaurus

wurde nach Lösung der Probleme in Kapitel 4.5.1 und 4.5.2 erfolgreich in

eine Datenbank gespeichert und ist erweiterbar. Der Nutzer hat die Möglichkeit

zwischen der semantischen und der normalen Suche, sowie aus Dateiformaten,

zu wählen. Das System ist so ausgelegt, dass alle Funktionalitäten,

welche in der deutschen Sprache zur Verfügung stehen auch auf die

englische Sprache anwendbar sind. Nachdem das Problem in Kapitel 4.5.7

nicht gelöst werden konnte, wurde auch die Erweiterung von Suchanfragen

mit präpositionalen Phrasen nicht implementiert. Die folgende Tabelle 11

gibt einen Überblick zur Implementierung nicht-funktionaler Anforderungen.

Anforderungen Probleme Lösung

Grafische Nutzeroberfläche Keine Anhang E

Datenvermeidung Kapitel 4.5.9

Zwischenspeichern

Reaktionsgeschwindigkeit Kapitel 4.5.10

Indexierung

Datenbasis Kapitel 4.5.1

UMLS-Installation

Kapitel 4.5.2

UMLS-Import

Lösung ungenügend, da

Suchergebnisse lokal abgelegt

werden

Lösung ungenügend, da nicht

vergleichbar mit anderen

Webanwendungen.

Erfolgreich implementiert

Suchoptionen Keine Erfolgreich implementiert

Dokumentformate Keine Erfolgreich implementiert

Sprache Keine Englische Sprache implementiert

Präpositionale Phrasen Kapitel 4.5.7

GermaNet-Integration

Nicht implementiert

Tabelle 11: Validierung der Qualität

64


Ergebnisse

5.4 Erprobung der semantischen Suche

Um einen groben Überblick zu erhalten, wie sehr die Suchergebnisse mit der

semantischen Suche des entwickelten Systems von den herkömmlichen

Suchergebnissen abweichen, wurde stichprobenartig getestet. Dabei wurde

sowohl die semantische Suche, als auch die normale Suche mit dem entwickelten

System durchgeführt. Es wurde keine Domäne bestimmt und als Dateiformat

wurde HTML ausgewählt. Es wurde nach Dokumenten aus

Deutschland in deutscher Sprache gesucht, wobei die strikte Sprachfilterung

aktiviert war.

Die eingegebenen Suchbegriffe wurden rein willkürlich und ohne zugrunde

liegendes Konzept gewählt. Daher kann dies nicht als repräsentative Evaluation

gesehen werden. Es wurden jedoch stets nur Begriffe gewählt, welche

bei der semantischen Suche auch semantische Informationen einbringen, da

andernfalls die Ergebnismengen identisch sind. Prinzipiell wurden dabei

zum Einen medizinische Fachbegriffe, Befunde und Symptome, zum Anderen

auch technische, abstrakte, gesellschaftliche und Laienbegriffe genutzt.

Die Suchergebnisse wurden nicht auf inhaltliche Relevanz hin untersucht.

Der durchgeführte Test verschafft lediglich einen groben Überblick über die

Abweichungen in den Suchergebnismengen.

Dafür wurde zum Einen die Überscheidung der Suchergebnisse von 20 Anfragen,

in den ersten zehn Suchergebnissen gemessen, da, wie in Kapitel

2.5.3 beschrieben, meist nur diese von Nutzern gesichtet werden. Es wurde

untersucht, wie oft die Ergebnisse generell übereinstimmen und wie oft diese

gleich gerankt sind. Als Messgröße wurde hier der Median gewählt, da

dieser prinzipiell von Extremwerten kaum beeinflusst wird und sich daher

zur Beurteilung von unsymmetrischen und schiefen Verteilungen eignet. Bei

der Überschneidung der Suchergebnisse ergab sich ein Median von 4, beim

Ranking ein Median von 1. Die Ergebnisse werden in Tabelle 12 dargestellt.

Die konkreten Ergebnisse dieses Tests sind in Anhang I einsehbar.

65


Ergebnisse

Es ist positiv zu bewerten, dass die Suche 40% der ursprünglichen Ergebnismenge

beibehält und dass unter diesen auch 25% der Ergebnisse das

gleiche Ranking aufweisen. Somit entsteht ein relativ solides Gleichgewicht

zwischen normalen und alternativen Suchergebnissen, bei teilweiser Aufrechterhaltung

der Relevanz in den Topergebnissen.

Der Nutzer erhält daher Ergebnisse, die sowohl nach herkömmlichen als

auch nach semantischen Aspekten relevant sind und damit auch Dokumente,

die er mit der Standardsuche eventuell nie gesichtet hätte.

Suchbegriff

#Überschneidungen #Gleiches Ranking

Neisseria Gonorrhoeae 9 4

Tripper 8 1

Mobilli 2 0

Masern 6 2

Angina Pectoris 9 1

Schmerzen in der Brust 7 0

Cephalgie 3 2

Kopfweh 0 0

Otitis Media 7 4

Schmerzen im Ohr 4 2

Modell 4 0

Schule 1 0

Krieg 3 1

Krankenversicherung 5 3

Musik 5 2

Computer 1 0

Datenbank 4 1

Information 1 1

Internet 0 0

Kunst 1 0

Tabelle 12: Testergebnisse der Untersuchung

66


Ergebnisse

5.5 Evaluation der Software

Die in dieser Arbeit entstandene Anwendung ist hinsichtlich des Gesamtkonzeptes

in Bezug auf die Erfüllung der Anforderung zur semantischen Suche

validiert. Eine umfangreiche Evaluation blieb jedoch, aufgrund mangelnder

Zeit, aus. Es ist erstrebenswert, eine Applikation zu entwickeln, welche

automatisiert Suchanfragen an das Yahoo! Search BOSS API richtet und

die Ergebnismengen hinsichtlich Überschneidung und Ranking, so wie es

hier stichprobenartig geschehen ist, vergleicht. Dies kann über das einfache

Auslesen der jeweiligen URL zu einem Dokument aus der XML-Struktur der

Suchergebnisse realisiert werden. Dies würde eine umfangreiche statistische

Auswertung ermöglichen.

Des Weiteren besteht Verbesserungsbedarf bei den einzelnen Komponenten

des Systems. Für das lokale Zwischenspeichern von Suchergebnissen stehen

in .NET bessere Alternativen zur Verfügung. Es kann programmtechnisch

mit einem Cache Objekt solange zwischengespeichert werden wie die Applikation

läuft. Session Objekte können die Daten jedes Nutzers in den Speicher,

auf einen State-Server oder in eine SQL Server Datenbank speichern.

Dies eignet sich jedoch nicht für das Ablegen großer Daten.

Die Reaktionsgeschwindigkeit der Anwendung ist aufgrund einzelner Komponenten

sehr langsam. Anfragen, welche wenige semantische Informationen

liefern, werden relativ zügig in etwa fünf Sekunden bearbeitet. Die

meiste Zeit wird dabei für die Grammatikprüfung und die Wortstammbildung

benötigt. Bestimmte Anfragen wie “Rezept“ liefern durch die beidseitige

Trunkierung sehr viele semantische Informationen, so dass die meiste

Zeit zur Beschaffung dieser Informationen aus dem UMLS Metathesaurus

benötigt wird.

Zum Einen könnte die Wortstammbildung extern über einen Web Service

realisiert werden. Dies würde eventuell die Rechenzeit bei einigen Anfragen

verkürzen. Möglichkeiten bietet der Webservice Baseform aus dem Projekt

Wortschatz der Universität Leipzig. Einen Web Service für die Grammatikprüfung

scheint es aktuell nicht zu geben.

67


Ergebnisse

Auch die Qualität des Vokabulars von NHunspell ist von großer Bedeutung.

Bei Anfragen mit medizinischen Fachbegriffen werden oftmals die Grammatik

und der Wortstamm nicht erkannt. Die Ausarbeitung eines fachspezifischen

Vokabulars, welcher auf das UMLS angewendet werden kann, ist hier

angebracht.

Die Ausarbeitung der Stoppwortliste erfolgte willkürlich aus verschiedenen

Quellen im Internet und in MS SQL Server, da es keine offiziellen Stoppwortlisten

zu geben scheint. Die Qualität des Vokabulars der Stoppwörter ist jedoch

auch von großer Bedeutung um irrtümliche Löschungen einzelner

Wörter zu vermeiden. Somit ist die Ausarbeitung einer geeigneten Auflistung

erstrebenswert.

Die Tabelle MRSTY wurde frei ins Deutsche übersetzt. Auch diese Übersetzung

bedarf eventuelle noch einer Überarbeitung durch qualifizierte Personen.

Da der Großteil des Vokabulars im UMLS Metathesaurus in der englischen

Sprache vorliegt, erlaubt die Implementierung dieser Sprache in der entstandenen

Anwendung direkten Zugriff auf dieses Vokabular. Anfragen in

der englischen Sprachen benötigen generell, im Vergleich zu Anfragen im

Deutschen, sehr lange. Dies liegt in dem sehr umfangreichen englischen Vokabular

begründet.

Die SQL-Anfragen zur Ermittlung der Konzepte sind bezüglich ihrer Qualität

nicht validiert. Sie sind jedoch der essentielle Teil der semantischen Analyse.

Ebenso ist die Ausarbeitung von Anfragen, welche mehr Kontrolle über das

Vokabular des UMLS erlauben, zu empfehlen. Denn die Suche nach “IPOD“

oder “Rezept“ bläht die Menge an semantischen Informationen, durch die

beidseitige Trunkierung, auf Kosten der Prozesszeit, auf. Jedoch ergibt die

Suche ohne Trunkierung oft kaum oder keine Ergebnisse. Hier muss eine

alternative Lösung gefunden werden.

Generell erlaubt die Anwendung intern wenig Kontrolle über das Vokabular

der Suchanfrage und des UMLS. Eine tiefgreifende Differenzierung derer

durch die Erkennung präpositionaler Phrasen und Wortarten könnte eine

bessere Kontrolle ermöglichen.

68


Diskussion und Ausblick

6 Diskussion und Ausblick

Die in dieser Arbeit entstandene Anwendung liefert nach semantischer Analyse

und anschließender Erweiterung von Suchanfragen mit kookkurrenten

Synonymen und Vorzugsbenennungen zuverlässig Suchergebnisse. Sie entstand

aus der Kombination verschiedener Ansätze, welche jeder für sich

Vor- und Nachteile bietet. An vielen Punkten besteht noch, wie im Kapitel

5.5 erläutert, Verbesserungsbedarf. Dennoch ist das entwickelte Gesamtkonzept,

wie in Kapitel 5.4 getestet, für die semantische Suche geeignet.

Der UMLS Metathesaurus hat eine sehr tiefe und feingranulare Struktur und

eignet sich daher sehr gut für die Analyse semantischer Zusammenhänge.

Doch genau diese Struktur macht die Analyse zu einem zeitintensiven Prozess,

insbesondere bei der Suche in der englischen Sprache, da das größte

Vokabular in dieser vorliegt. Weiterhin eignet sich das UMLS, aufgrund seiner

fachspezifischen Konzeption und sein damit auf den medizinischen Bereich

begrenztes Vokabular, nicht für eine allumfassende Suche. Allerdings

enthält es neben medizinischen Termini, Befunden, Viren, Bakterien und

Symptome erstaunlicherweise auch Begriffe zu Bereichen wie Gesellschaft,

Berufen, Amphibien und Freizeit oder qualitativen, quantitativen und

räumlichen Konzepten.

Das Yahoo! Search BOSS API eignet sich hervorragend für die Suche. Es ist

gut dokumentiert und einfach einzubinden. Allerdings liefert es nicht dieselben

Suchergebnisse wie die Originalsuche von Yahoo!. Dies liegt wohl darin

begründet, dass, wenn einige Parameter wie “Region“ nicht explizit definiert

werden, sie automatisch einen Wert zugewiesen bekommen. So kann

zum Beispiel stets nur in bestimmten Regionen und nicht weltweit gesucht

werden [YDN].

Der Schwerpunkt der semantischen Analyse liegt in der Kontrolle des Vokabulars.

Hier wurde schlicht nach Wörtern mit und ohne Umlaute differenziert,

welche nach Entfernung von Stoppwörtern und Bildung von Wortstämmen

in Kombination auf Konzepte im UMLS abgebildet wurden.

Dies ist eine sehr einfache Form zur Nutzung von Semantik und führt weniger

zu dem Problem, dass zu wenige semantische Informationen gefunden

69


Diskussion und Ausblick

werden, sondern zu viele. Teilweise wird der Nutzer mit diesen überschwemmt,

wodurch dann keine Suchergebnissen erhalten werden.

Eine genauere Analyse der Suchanfrage, durch tiefgreifende informationslinguistische

Verfahren, könnte Abhilfe schaffen. So wird hier zwar die

Wortstammbildung als Teil der morphologischen Analyse genutzt, jedoch

existieren dafür auch mehrere Ansätze neben dem hier verwendeten “Affix

Removal“, wie “Table Lookup“ und N-Gram-Methode. Weiterhin erscheint

eine Kontextanalyse durch Phrasenerkennung als sehr sinnvoll. Dies setzt

jedoch voraus, dass Stoppwörter zuvor noch nicht entfernt wurden, da diese

unter anderem auch Präpositionen enthalten. Auf ein prototypisches Verfahren

dafür wird in [Lew05] verwiesen. Dies führt zur Problematik von

Homonymen, Polysemen und Akronymen und deren Sonderformen, da diese

nur im Kontext erkannt werden können. Unter anderem könnte dabei

das Aufschlüsseln von Abkürzungen die Suche verbessern, wenn die Abkürzung

im vorhandenen Vokabular nicht vorhanden ist, jedoch die einzelnen

Begriffe dieser.

Weiterhin könnte vor der semantischen Analyse eine Klassifikation der

Suchanfrage in navigationsorientiert, informationsorientiert und transaktionsorientiert

erfolgen. Ein Algorithmus dafür wird in [Kan03] vorgestellt.

Nach einer Suchanfrage könnte den, von der Suchmaschine gelieferten, maximal

1000 URLs gefolgt und mit MS SQL Server eine Volltextanalyse, unter

Einbezug semantischer Informationen, durchgeführt werden. So kann je

nach Anfragetyp ein individuelles Ranking erfolgen.

Eine anschließende Clusteranalyse der einzelnen Suchergebnisse könnte

diese weiterhin nach bestimmten Aspekten wie Thematik und Quellen klassifizieren,

so dass der Nutzer durch Auswahl einzelner Cluster seine Suche

weiter spezifizieren kann.

Linguistische Analysen zur Syntax und Semantik scheitern oft an ungenügend

ausgearbeiteten Vokabularen und Konzepten. Die Ausarbeitung solcher

erfordert einen enormen Arbeitsaufwand, welche allerdings die Suche

erheblich verbessert. Bis dato ist eine semantische Suche nur fachspezifisch

sinnvoll.

70


Abkürzungsverzeichnis

Abkürzungsverzeichnis

ADO ActiveX Data Objects

API Application Programming Interface

ASP Active Server Pages

AUI Atom Unique Identifier

BOSS Build Your Own Search Service

ca.

circa

CERN Conseil Européen pour la Recherche Nucléaire

CLR Common Language Runtime

CLS Common Language Specification

CUI Concept Unique Identifier

DB

Database

DBMS Database Management System

DBS Database System

DOM Document Object Model

EWN EuroWordNet

FOAF Friend Of A Friend

FTP File Transfer Protocol

GB

Giga Byte

GPL General Public License

GUI Graphical User Interface

HTML Hypertext Markup Language

HTTP Hypertext Transfer Protocol

ICD International Classification of Diseases

ICPC International Classification of Primary Care

IDE Integrated Development Environment

JSON Java Script Object Notation

LAT Language

LGPL Lesser General Public License

LUI Lexical Unique Identifier

MD5 Message-Digest Algorithm 5

MedDRA Medical Dictionary for Regulatory Activity

MeSH Medical Subject Headings

Mio. Millionen

MPL Mozilla Public License

MS Microsoft

Mrd. Milliarden

71


Abkürzungsverzeichnis

NLM National Library of Medicine

OLEDB Object Linking and Embedding Database

ORF Original Release Format

OS

Operating System

OWL Web Ontology Language

PDF Adobe Portable Document Format

PPT Microsoft Power Point

RRF Rich Release Format

SAX Simple API for XML

SIOC Semantically Interlinked Online Communities

SNOMEDCT Systemized Nomenclature of Medicine Clinical Terms

SP

Service Pack

SQL Structured Query Language

STR String

STT String Type

SUI String Unique Identifier

TS

Term Status

TTY Term Type in Source

UMBEL Upper Mapping and Binding Exchange Layer

UMDNS Universal Medical Device Nomenclature System

UML Unified Modeling Language

UMLS Unified Medical Language System

UMLSKS Unified Medical Language System Knowledge Source Server

URI Uniform Resource Identifier

URL Uniform Resource Locator

USA United States of America

USD United States Dollar

UTF-8 8-bit Universal Character Set Transformation Format

UTF-16BE Universal Mutiple-Octet Coded Character Set Transformation

Format for 16 Planes of Group 00 Big Endian

UTF-16LE Universal Mutiple-Octet Coded Character Set Transformation

Format for 16 Planes of Group 00 Little Endian

VB

Visual Basic

WHOART World Health Organization Adverse Drug Reaction Terminology

XFN Extensible Hypertext Markup Language Friends Network

XHTML Extensible Hypertext Markup Language

XML Extensible Markup Language

72


Literaturverzeichnis

Literaturverzeichnis

[Asp] GNU Aspell, Homepage, http://aspell.net (Zugriff : 13.06.2010)

[Dop09]

[Kan03]

[Kar]

[Küh08]

[Hun]

Dopichaj, P. (2009), Handbuch Internet-Suchmaschinen, AKA Verlag

Heidelberg, Kapitel Ranking-Verfahren für Web-

Suchmaschinen, pp. 101-115.

Kang, In-Ho; Kim, G. (2003), Query Type Classification for Web

Document Retrieval, in 'Annual ACM Conference on Research

and Development in Information Retrieval Proceedings of the

26th annual international ACM SIGIR conference on Research

and development in informaion retrieval'.

Karzauninkat, Stefan, Die Suchfibel – Alles über Suchmaschinen,

http://www.suchfibel.de/ (Zugriff: 14.07.2010)

Kühnel, A. (2008), Visual C# 2008, Galileo Computing

Hunspell, Homepage,

http://hunspell.sourceforce.net (Zugriff: 14.07.2010).

[Lew01] Lewandowski, Dirk (2001), Find what I mean not what I say -

Neuere Ansätze zur Qualifizierung von Suchmaschinen-

Ergebnissen, BuB - Forum für Bibliothek und Information 53, 381-

386.

[Lew04]

[Lew05]

Lewandowski, Dirk (2004), Bewertung von linktopologischen Verfahren

als bestimmender Ranking-Faktor bei

WWWSuchmaschinen, in 'Wissensorganisation und gesellschaftliche

Verantwortung: Gesellschaftliche, ökonomische und technische

Aspekte. Proceedings der 9. Tagung der Deutschen Sektion

der Internationalen Gesellschaft für Wissensorganisation

(Wissensorganisation 2004)‘.

Lewandowski, Dirk (2005), Web Information Retrieval – Technologien

zur Informationssuche im Internet, DGI: Marlies Ockenfeld

7.

73


Literaturverzeichnis

[Lew06]

[Lew06a]

[Lew 07]

[Lew07a]

[Lew08]

[Lew08a]

[Lew08b]

[Lew08c]

[Lew09]

[Loh03]

Lewandowski, Dirk (2006), Aktualität als erfolgskritischer Faktor

bei Suchmaschinen, IWP - Information: Wissenschaft und Praxis

57, 141-148.

Lewandowski, Dirk (2006), Zur Bewertung der Qualität von

Suchmaschinen, in 'Suchen und Finden im Internet'.

Lewandowski, Dirk; Machill, Marcel, B. M. (2007), Die Macht der

Suchmaschinen / The Power of Search Engines, Köln: Herbert von

Halem Verlag, Kapitel Mit welchen Kennzahlen lässt sich die

Qualität von Suchmaschinen messen?, pp. 243-258.

Lewandowski, Dirk; Höchstötter, N. (2007), Qualitätsmessung bei

Suchmaschinen System- und nutzerbezogene Evaluationsmaße,

Informatik Spektrum 30, 159-169.

Lewandowski, Dirk; Maaß, Christian (2008), Web-2.0-Dienste als

Ergänzung zu algorithmischen Suchmaschinen, Logos Verlag Berlin.

Lewandowski, Dirk (2008), Neue Entwicklungen im Bereich der

Suchmaschinen(technologie), info7 23, 29-35.

Lewandowski, Dirk (2008), Search engine user behaviour: How

can users be guided to quality content?, Information Services &

Use 28, 261-268.

Lewandowski, Dirk; Höchstötter, N. A. Spink, M. Z., (2008), Web

Searching: Multidisciplinary Perspectives, Berlin: Springer, chapter

Web Searching: A Quality Measurement Perspective, pp. 309-

340.

Lewandowski, Dirk (2009), Wie Suchmaschinen von Social Software

profitieren, in 'Proceedings des Workshops "Social Software

@ Work"'.

Lohrer, M. (2003), Einstieg in ASP.NET, Galileo Computing.

74


Literaturverzeichnis

[Maa09]

[Maa09a]

Maaß, Christian; Lewandowski, Dirk (2009), Frage-Antwort-

Dienste als alternativer Suchansatz?, in 'Information: Droge, Ware

oder Commons? Proceedings des 11. Internationalen Symposiums

für Informationswissenschaft (ISI 2009)'.

Maaß, Christian; Skusa, A. H. A. P. G. (2009), Handbuch Internet-

Suchmaschinen, AKA Verlag Heidelberg, chapter Der Markt für

Internet-Suchmaschinen, pp. 3-17.

[Mac03] Machill, Marcel; Neuberger, C.; Schweiger, W.; Wirth, W. (2003),

Wegweiser im Netz: Qualität und Nutzung von Suchmaschinen.

In: Wegweiser im Netz. Gütersloh, 2003.

[Mai]

[MSDN]

[NLM]

[Neu05]

[NHu]

[OOD]

[OVK]

Maierhofer Software Development, Homepage,

http://www.maierhofer.de (Zugriff: 14.07.2010).

Microsoft Developer Network

http://msdn.microsoft.com/de-de/default.aspx (Zugriff:

14.07.2010).

National Library of Medicine, UMLS,

http://www.nlm.nih.gov/research/umls/ (Zugriff: 14.07.2010).

Neuberger, C. (2005), 'Marktstrategien, Qualitätsaspekte, Regulierungsziele

- Angebot und Nutzung von Internet-

Suchmaschinen', Media Perspektiven 1, 2-13.

NHunspell, Homepage,

http://nhunspell.sourceforge.net (Zugriff: 14.07.2010).

Open Office Dictionaries,

http://wiki.services.openoffice.org/wiki/Dictionaries (Zugriff:

14.07.2010).

OVK, Werbeinvestitionen nach Segmenten,

http://www.ovk.de/online-werbung/daten-fakten/

werbeinvestitionen_nach_segmenten.html, (Zugriff:

14.07.2010).

75


Literaturverzeichnis

[Sch07]

[Sch09]

[See08]

Schmidt, U. (2007), Informatik Seminar, FH Wedel,

http://www.fh-wedel.de/~si/seminare/ws07/Ausarbeitung

/08.cil/cil01.htm#dotnet (Zugriff: 27.07.2010).

Schultz, C. D. (2009), Handbuch Internet-Suchmaschinen, AKA

Verlag Heidelberg, chapter Suchmaschinenmarketing, pp. 70-98.

Seehaus, Stefan (2008), Können Suchmaschinen von Sozialer

Software profitieren?, Information - Wissenschaft und Praxis 5,

293-296.

[SEW] SEW Staff, Global Search Market Share, July 2009 vs. July 2008,

http://searchenginewatch.com/3634922 (Zugriff: 14.07.2010).

[SFS]

[Sto00]

[Sto06]

[Tos09]

[W3T]

[Wei]

[Wel09]

[YDN]

SFS Tübingen, GermaNet,

http://www.sfs.uni-tübingen.de/lsd/ (Zugriff: 26.07.2010).

Stock, Wolfgang G. (2000), Checkliste für Retrievalsysteme - Qualitätskriterien

von Suchmaschinen, Password 5, 22-31.

Stock, Wolfgang G.; Lewandowski, Dirk (2006), Suchmaschinen

und wie sie genutzt werden, WISU 35, 1078-1083.

Tosques, Fabio; Mayr, P. (2009), Handbuch Internet-

Suchmaschinen, AKA Verlag Heidelberg, Kapitel Programmierschnittstellen

der kommerziellen Suchmaschinen, pp. 116-147.

W3Techs, Using of Character Encodings for Websites

http://w3techs/technologies/overview/character_encoding/all

(Zugriff: 16.06.2010)

Weigert M., Google kauft Freebase-Macher Metaweb,

http://netzwertig.com/2010/07/17/semantisches-web-google-

kauft-freebase-macher-metaweb/ (Zugriff: 14.07.2010).

Weller, K. (2009), Ontologien: Stand und Entwicklung der Semantik

für das World Wide Web, LIBREAS - Library Ideas 5(2/15), 5-

12.

Yahoo! Developer Network, Yahoo! Search BOSS

http://developer.yahoo.com/search/boss (Zugriff: 14.07.2010).

76


Abbildungsverzeichnis

Abbildungsverzeichnis

Abbildung 1: Typen von Suchdiensten [Lew08] ..................................................... 8

Abbildung 2: Die Knowledge Sources [NLM] ....................................................... 18

Abbildung 3: Verteilung des Vokabulars [NLM] ................................................... 19

Abbildung 4: Ebenen der Metathesaurusstruktur [NLM] ...................................... 20

77


Tabellenverzeichnis

Tabellenverzeichnis

Tabelle 1: Marktanteile und Suchanfragen weltweit [SEW] .................................... 5

Tabelle 2: Werbeinvestitionen in Deutschland [OVK] ............................................. 6

Tabelle 3: Architektur des .NET-Framework [Sch07]............................................ 17

Tabelle 4: Konzeptnamen und Quellen nach Sprachen [NLM] ............................. 21

Tabelle 5: Rahmenbedingungen .......................................................................... 25

Tabelle 6: Funktionelle Anforderungen ................................................................. 26

Tabelle 7: Qualitätsanforderungen ....................................................................... 27

Tabelle 8: Universelle BOSS API Argumente [YDN]............................................. 28

Tabelle 9: Spezifikationen des Argumentes view [YDN] ....................................... 29

Tabelle 10: Validierung der Funktionalität ............................................................ 63

Tabelle 11: Validierung der Qualität ..................................................................... 64

Tabelle 12: Testergebnisse der Untersuchung ..................................................... 66

78


Anhang

Anhang

A

Anwendungsfalldiagramm

79


Anhang

B

Zustandsdiagramm

80


Anhang

C

Klassendiagramm

81


Anhang

D

Aktivitärsdiagramm

82


Anhang

E

Grafische Nutzeroberfläche

83


Anhang

F

UMLS Entitätsdiagramm

84


Anhang

G

UMLS Tabellen

Tabelle

# Datensätze

(KB)

(KB) (KB)

Reserviert

Indizes Ungenutzt

Daten (KB)

MRSAT 32.077.022 8.812.040 5.904.296 40 2.907.704

MRREL 29.224.908 5.565.472 5.110.432 32 455.008

MRHIER 11.299.088 3.847.960 3.435.008 24 412.928

MRCONSO900 8.674.488 3.663.440 2.147.936 1.515.056 448

MRCOC 19.087.565 3.082.808 2.427.040 655.664 104

MRXW_ENG 29.999.335 2.827.400 2.539.360 8 288.032

MRXNW_ENG 29.940.092 2.726.288 2.532.784 16 193.488

MRCONSO 8.674.488 2.104.728 2.104.296 24 408

MRXNS_ENG 7.986.337 1.737.352 1.294.584 8 442.760

MRMAP 438.812 1.003.024 125.984 16 877.024

MRSTY 2.444.703 585.112 292.120 292.944 48

MRHIST 2.172.958 560.784 351.296 16 209.472

MRSMAP 261.474 136.080 51.608 16 84.456

MRCUI 459.704 119.632 30.632 16 88.984

MRDEF 138.049 77.920 74.448 56 3.416

MRXW_GER 463.470 45.640 41.232 8 4.400

MRAUI 165.847 43.720 21.840 8 21.872

DELETEDSUI 148.259 34.120 26.432 8 7.680

MRSTY_GER 102.218 27.104 13.056 13.944 104

DELETEDLUI 97.257 20.936 16.432 8 4.496

AMBIGLUI 161.437 7.304 7.272 8 24

AMBIGSUI 106.218 4.872 4.792 8 72

GermaNet 84.392 3.864 3.608 16 240

SRSTRE2 6.704 784 744 16 24

DELETEDCUI 3.347 648 440 8 200

MRDOC 2.627 528 376 16 136

MRSAB 162 336 256 16 64

STOPWORDS 3.307 144 112 16 16

MERGEDCUI 2.395 136 104 8 24

MERGEDLUI 1.635 136 80 8 48

MRFILES 46 80 8 16 56

MRCOLS 313 72 48 8 16

MRRANK 591 32 24 8 0

MRCXT 0 0 0 0 0

85


Anhang

H

UMLS Tabellenbeschreibung

Tabelle

AMBIGLUI.RRF

AMBIGSUI.RRF

CHANGE/DELETEDCUI.RRF

CHANGE/DELETEDLUI.RRF

CHANGE/DELETEDSUI.RRF

CHANGE/MERGEDCUI.RRF

CHANGE/MERGEDLUI.RRF

MRAUI.RRF

MRCOC.RRF

MRCOLS.RRF

MRCONSO.RRF

MRCUI.RRF

MRDEF.RRF

MRDOC.RRF

MRFILES.RRF

MRHIER.RRF

MRHIST.RRF

MRMAP.RRF

MRRANK.RRF

MRREL.RRF

MRSAB.RRF

MRSAT.RRF

MRSMAP.RRF

MRSTY.RRF

MRXNS_ENG.RRF

MRXNW_ENG.RRF

MRXW_ENG.RRF

MRXW_GER.RRF

Beschreibung

Ambiguous term identifiers

Ambiguous string identifiers

Deleted concepts

Deleted terms

Deleted strings

Merged concepts

Merged terms

AUI History

Co-occurring Concepts

Attribute Relation

Concept names and sources

CUI History

Definitions

Typed key value metadata map

Relation Relation

Computable hierarchies

Source-asserted history

Mappings

Concept Name Ranking

Related Concepts

Source Metadata

Simple Concept, Term and String Attributes

Simple Mappings

Semantic Types

Normalized String Index

Normalized Word Index

English Word Index

German Word Index

86


Anhang

I Testergebnisse

Normale Suchanfrage: Neisseria Gonorrhoeae

Erweiterte Suchanfrage:

Neisseria Gonorrhoeae OR "Neisseria gonorrhoeae" OR "Ophthalmie,

Neugebornen-" OR "Gonococcus neisseri" OR "gonokokkale Konjunktivitis

(Neugeborenes)" OR "gonokokkale Neugeborenenkonjunktivitis" OR

"Kojunktivitis durch Gonokokken Neugeborenes" OR "Konjunktivitis

Neugborenes NNB" OR "neonatale Konjunktivtis durch Neisseria

gonorrhoeae" OR "Ophthalmia neonatorum" OR "Ophthalmia neonatorum

(gonokokkal)"

Normale Suchanfrage

de.wikipedia.org/wiki/Neisseria_gonorrhoea

e

de.wikipedia.org/wiki/Neisseria

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Neisseria_gonorrhoea

e

de.wikipedia.org/wiki/Neisseria

medicalpicture.de/medicalPicture/...&nav1=2&languag

e=1&query=16905890

onmeda.de/lexika/krankheitserreger/az/neisseriaceae_gonorrhoeae.html

flexikon.doccheck.com/Neisseria_gonorrhoeae

pflegewiki.de/wiki/Neisseria_gonorrhoeae

infektionsnetz.at/view.php?name=BakterienNeisseria

Gonorrhoeae

onmeda.de/lexika/krankheitserreger/az/neisseriaceae.html

medlaborwm.de/index.php?...&task=view&id=174&It

emid=184

bionity.com/lexikon/d/Neisseria_gonorrhoeae

onmeda.de/lexika/krankheitserreger/az/neisseriaceae_gonorrhoeae.html

pflegewiki.de/wiki/Neisseria_gonorrhoeae

labor28.de/lab_mag/mrz2007/neisseria_gono

rrhoeae_7.html

onmeda.de/lexika/krankheitserreger/az/neisseriaceae.html

medicalpicture.de/medicalPicture/...&nav1=2&languag

e=1&query=16905890

infektionsnetz.at/view.php?name=BakterienNeisseria

Gonorrhoeae

flexikon.doccheck.com/Neisseria_gonorrhoeae

bionity.com/lexikon/d/Neisseria_gonorrhoeae

87


Anhang

Normale Suchanfrage: Tripper

Erweiterte Suchanfrage:

Tripper OR "Gonorrhoe" OR "Gonokokkeninfektion" OR "Gonokokkeninfektion,

nicht naeher bezeichnet" OR "Gonorrhoe NNB" OR "Tripper"

Normale Suchanfrage

de.wikipedia.org/wiki/Gonorrhoe

netdoktor.de/Krankheiten/Tripper

onmeda.de/krankheiten/tripper.html

tripper.de

onmeda.de/krankheiten/gonorrhoe.html

tripper20.dreipage.de/index.html

netdoktor.de/Krankheiten/Tripper/Symptome

chirurgie-portal.de/infektionen/gonorrhoetripper.html

radio-tripper.at

lastfm.de/tag/tripper

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Gonorrhoe

tripper.de

netdoktor.de/Krankheiten/Tripper

onmeda.de/krankheiten/gonorrhoe.html

onmeda.de/krankheiten/tripper.html

tripper-online.de

radio-tripper.at

netdoktor.de/Krankheiten/Tripper/Sympt

ome

lastfm.de/tag/tripper

medizinfo.de/hautundhaar/sex/gonorho

e.htm

88


Anhang

Normale Suchanfrage: Morbilli

Erweiterte Suchanfrage:

Morbilli OR "Masernvirus" OR "Morbillivirus" OR "Morbillivirusinfektionen"

OR "Hendra-Virus" OR "Morbilli-Virus" OR "Equines Morbillivirus"

Erweiterte Suchanfrage

infektionsnetz.at/InfektionenMorbilli.phtml

de.wikipedia.org/wiki/Hendra-Virus

de.wikipedia.org/wiki/Masernvirus

focus.de/schlagwoerter/themen/m/masernvi

rus

bionity.com/lexikon/d/Hendra-Virus

1-apo.de/informationen/masern-56

Normale Suchanfrage

1-apo.de/informationen/masern-56

gesundheit.de/lexika/medizin-lexikon/morbilli

medinfo.de/index-r-294-thema-Morbilli.htm

ellviva.de/Gesundheit/Masern-Morbilli.html

lifeline.de/cda/content-141801.html

gesundheit.de/lexika/medizin-lexikon/morbillibullosi

joernmeyer.wordpress.com/2009/03/16/morbil

li

netdoktor.de/Krankheiten/Masern

kinderarzt.at/de/lexikon/subject/morbilli

fernlehrgang-heilpraktiker.com/forum/...

medinfo.de/index-r-294-thema-

Morbilli.htm

textlog.de/16629.html

baby-und-familie.de/Masern

impfen.de/main/index.html?msgid=00771

89


Anhang

Normale Suchanfrage: Masern

Erweiterte Suchanfrage:

Masern OR "Masern-Mumps-Röteln-Vakzine" OR "Masern" OR "Masernvakzine"

OR "Masernvirus" OR "Subakute sklerosierende Panenzephalitis" OR

"Immunisierung gegen Masern" OR "Masernexposition" OR "Impfstoff, Masern-Mumps-Röteln-"

OR "Impfstoff, MMR-" OR "Masern-Mumps-Röteln-

Impfstoff" OR "MMR-Impfstoff" OR "MMR-Vakzine" OR "Rubella-Virus-

Infektion" OR "Rubeola" OR "Masernimpfstoff" OR "Morbilli-Virus" OR "Panenzephalitis,

subakute sklerosierende" OR "Leukenzephalitis, subakute

sklerosierende" OR "Leukenzephalitis, Van-Bogaert-" OR "Leukoenzephalitis,

subakute sklerosierende" OR "Leukoenzephalitis, Van-Bogaert-" OR "Masern-

Einschlußkörperenzephalitis" OR "SSPE" OR "subakute sklerosierende Panenzephalitis"

OR "Van-Bogaert-Leukenzephalitis" OR "Van-Bogaert-

Leukoenzephalitis"

Normale Suchanfrage

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Masern

onmeda.de/krankheiten/masern.html

de.wikipedia.org/wiki/MMR-Impfstoff

reisemed.at/masern.html

qualimedic.de/masern.html

curado.de/Masern-10010

welt.de/themen/Masern

impfschaden.info/de/masern.html

de.wikipedia.org/wiki/Masern

onmeda.de/krankheiten/masern.html

reisemed.at/masern.html

qualimedic.de/masern.html

dgk.de/gesundheit/.../krankheiten-von-abis-z/masern.html

aponet.de/arzneimittel_interaktiv/masern/in

dex.html

curado.de/Masern-10010

nlga.niedersachsen.de/live/live.php?...&arti

cle_id=19314&_psmand=20

medizinfo.de/hautundhaar/viren/masern.ht

m

kinderaerzte-imnetz.de/bvkj/krankheit/show.php3?id=29&n

odeid=60

dgk.de/gesundheit/.../krankheiten-von-a-bisz/masern.html

netdoktor.de/Gesund-Leben/.../Impfungen-

A-Z/Masern-Impfung-1355.html

90


Anhang

Normale Suchanfrage: Angina Pectoris

Erweiterte Suchanfrage:

Angina Pectoris OR "Angina pectoris" OR "Angina pectoris, instabile" OR

"Syndrom X" OR "Angina pectoris, Variant-" OR "stabile Angina pectoris" OR

"Angina infolge durch Belastung" OR "atypische Angina pectoris" OR "ANGI-

NA PECTORIS INSTABIL" OR "Angina" OR "ANGINA PECTORIS" OR "ANGINA

PECTORIS SYNDROM" OR "Angina pectoris, nicht naeher bezeichnet" OR

"Anginabeschwerden" OR "Anginaschmerz" OR "Anginasyndrom" OR "Angor

pectoris" OR "HERZSCHMERZEN" OR "ischaemischer Brustschmerz" OR "Stenokardie"

OR "Crescendo-Angina" OR "Ruheangina" OR "Präinfarktangina"

OR "instabile Angina" OR "Instabile Angina pectoris" OR "intermediaeres Koronarsyndrom"

OR "Angina pectoris in Ruhelage" OR "Angina, Präinfarkt-"

OR "Angina, Ruhe-" OR "Angina verschlechtert" OR "Angina pectoris mit

normalem Koronararteriogramm" OR "Angina, mikrovaskuläre" OR "Herzsyndrom

X" OR "mikrovaskulaere Angina pectoris" OR "X-Syndrom" OR "vasospastische

Angina" OR "Prinzmetal - Angina" OR "Prinzmetal-Angina" OR

"Anstrengungsangina" OR "ANGINA PECTORIS BEI BELASTUNG" OR "Angina

verursacht durch Anstrengung" OR "Angina verursacht durch Belastung"

Normale Suchanfrage

nam.de/ang.htm

1-apo.de/informationen/angina-pectoris-106

krautter-klempnow.de/Angina.htm

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Angina_pectoris

angina-pectoris.org

nam.de/ang.htm

netdoktor.de/Krankheiten/Angina-pectoris

herzberatung.de/angina_pectoris.html

theheart.de/kor_angin.htm

de.wikipedia.org/wiki/Angina_pectoris

netdoktor.de/Krankheiten/Angina-pectoris

herzberatung.de/angina_pectoris.html

netdoktor.de/Krankheiten/Anginapectoris/Symptome

kardionet.com/Herzkrankheiten/Angina_Int.

html

angina-pectoris.org

krautter-klempnow.de/Angina.htm

netdoktor.de/Krankheiten/Anginapectoris/Symptome

kardionet.com/Herzkrankheiten/Angina_Int.

html

pharmawiki.ch/wiki/index.php?wiki=Angina+pectoris

pharmawiki.ch/wiki/index.php?wiki=Angina+pectoris

91


Anhang

Normale Suchanfrage: Schmerzen in der Brust

Erweiterte Suchanfrage:

Schmerzen in der Brust OR "Angina pectoris" OR "Brustschmerzen" OR

"Brustkorbbeschwerden" OR "Brustschmerz" OR "Brustschmerzen die Skelettmuskulatur

betreffend" OR "Brustschmerz, linker Arm" OR "Brust

schmerzempfindlich" OR "BRUSTKORBSCHMERZ" OR "HERZSCHMERZEN"

OR "ischaemischer Brustschmerz" OR "Angina" OR "ANGINA PECTORIS" OR

"ANGINA PECTORIS SYNDROM" OR "Angina pectoris, nicht naeher bezeichnet"

OR "Anginabeschwerden" OR "Anginaschmerz" OR "Anginasyndrom"

OR "Angor pectoris" OR "Stenokardie" OR "Thoraxschmerzen" OR "unspezifischer

Brustschmerz" OR "Schmerz, Brust" OR "Schmerzen im Brustkorb" OR

"Brustschmerzen, nicht naeher bezeichnet" OR "BRUSTKORBSCHMERZEN"

OR "Brust-Distress" OR "BRUSTKORBBESCHWERDEN" OR "MASTALGIE" OR

"Mastodynie" OR "Schmerz Brust%2"Schmerz in der Brust" OR "empfindliche

Brueste" OR "Empfindlichkeit der Brueste" OR "schmerzhafte Brueste"

OR "Schmerzempfindlichkeit der Brust"

Normale Suchanfrage

de.wikipedia.org/wiki/Brustschmerz

Erweiterte Suchanfrage

brustkrebs-info.de/patienteninfo/index.php?id=3.4&stat=&substat=open

netdoktor.de/Symptome/Schmerzen-im-

Brustkorb-1977.html

edizin.de/de/a-z/beschwerden-von-a-z,s-

9l.brustschmerzen.html

brustkrebs-info.de/patienteninfo/index.php?id=3.4&stat=&substat=open

netdoktor.de/Symptome/Schmerzen-im-

Brustkorb-1977.html

edizin.de/de/a-z/beschwerden-von-a-z,s-

9l.brustschmerzen.html

netdoktor.de/Symptome/Brustschmerz-

Thoraxschmerz-9358.html

miomedi.de/gesundheit/.../mastodynie/sch

merzen-weibliche-brust.html

miomedi.de/gesundheit/.../mastodynie/sch

merzen-weibliche-brust.html

wild-undweiblich.de/index.php/beauty/blogging/schmerze

n-in-der-brust

board.netdoktor.de/Brustkrebs/schmerzenin-der-brust-q1292.html

wunschkinder.net/forum/read.php?5,5644465

wunschkinder.net/forum/read.php?5,5644465

forum.curado.de/schmerzen-in-der-brustt2073.html

ratgeber.web8000.de/html/schmerzen_in_der_br

ust.html

brustschmerzen.eu

de.wikipedia.org/wiki/Brustschmerz

forum.curado.de/schmerzen-in-der-brustt2073.html

yamedo.de/symptome/brustschmerzen.html

92


Anhang

Normale Suchanfrage: Cephalgie

Erweiterte Suchanfrage:

Cephalgie OR "Kopfschmerz" OR "Cephalalgia" OR "Cephalgia" OR

"CEPHALGIE" OR "KOPF SCHMERZHAFT" OR "KOPFSCHMERZEN" OR "Kopfschmerzen

(ex N02 N89 R09)" OR "Kopfschmerzen NNB" OR "Kopfschmerzerkrankungen"

OR "KOPFWEH" OR "Schmerz Kopf" OR "Zephalgie"

Normale Suchanfrage

cephalgie.com

cephalgie.de

cephalgie.eu

de.med.info/lexikon/c/cephalgie.html

de.wikipedia.org/wiki/Kopfschmerz

stirnkopfschmerz.de/cephalgie

onmeda.de/symptome/cephalgie.html

onmeda.de/symptome/cephalgietherapie-9712-4.html

1-

apo.de/informationen/kopfschmerzen

-53

pflegewiki.de/index.php?title=Cephalgie&redir

ect=no

Erweiterte Suchanfrage

cephalgie.com

cephalgie.de

kopfschmerzen.de

de.wikipedia.org/wiki/Kopfschmerz

zephalgie.eu

cephalgia.de

stern.de/kopfschmerz

kopf-schmerz.de

migraene-1.de

netdoktor.de/Krankheiten/.../Wissen/Kopfschmerzbei-Kindern-1260.html

93


Anhang

Normale Suchanfrage: Kopfweh

Erweiterte Suchanfrage:

Kopfweh OR "Kopfschmerz" OR "Cephalalgia" OR "Cephalgia" OR

"CEPHALGIE" OR "KOPF SCHMERZHAFT" OR "KOPFSCHMERZEN" OR "Kopfschmerzen

(ex N02 N89 R09)" OR "Kopfschmerzen NNB" OR "Kopfschmerzerkrankungen"

OR "KOPFWEH" OR "Schmerz Kopf" OR "Zephalgie"

Normale Suchanfrage

shgkopfweh.at

kopfwehkalender.ch

kopfwehkalender.ch/about.asp

shgkopfweh.at/forum

kopfweh.biz

ulri.ch/kopfweh/0dfr.htm

kopfschmerzen-stirn.de

headache.ch

netdoktor.de/Krankheiten/Kopfs

chmerzen

hat-kopfweh.de

Erweiterte Suchanfrage

cephalgie.com

cephalgie.de

kopfschmerzen.de

de.wikipedia.org/wiki/Kopfschmerz

zephalgie.eu

cephalgia.de

stern.de/kopfschmerz

kopf-schmerz.de

migraene-1.de

netdoktor.de/Krankheiten/.../Wissen/Kopfschmerz-bei-

Kindern-1260.html

94


Anhang

Normale Suchanfrage: Otitis Media

Erweiterte Suchanfrage:

Otitis Media OR "Otitis media" OR "Otitis media mit Erguß" OR "Otitis media,

eitrige" OR "rezidivierende Otitis media" OR "chronische Otitis media" OR

"Otitis media, seröse" OR "chronische seroese Otitis media" OR "Katarrh des

Mittelohrs" OR "Mittelohrentzuendung" OR "Mittelohrentzündung" OR "Mittelohrinfektion"

OR "OTITIS MEDIA" OR "Otitis media NNB" OR "Otitis media,

nicht naeher bezeichnet" OR "unspezifische Otitis media" OR "Mittelohrerguß"

OR "Leimohr" OR "Otitis media, sekretorische" OR "sekretorische Otitis

media" OR "seroese Otitis media (Leimohr)" OR "seroese Otitis media/verklebtes

Ohr" OR "unspezifische eitrige Otitis media" OR "Otitis media,

purulenta" OR "Eitrige Otitis media, nicht naeher bezeichnet" OR "Eitrige

und nicht naeher bezeichnete Otitis media" OR "eitrige und unspezifische

Otitis media" OR "Otitis media eitrig" OR "Otitis media eitrig NNB" OR "Otitis

media chronisch NNB" OR "Otitis media seroes NNB" OR "Otitis media seroes"

OR "Otitis media seroes chronisch" OR "Otitis media seroes chronisch

NNB" OR "Chronische seroese Otitis media"

Normale Suchanfrage

otitismedia.de

otitismediaacuta.de

myspace.com/otitismedia1

medizinfo.de/ohren/mitte/otitis_media.sht

ml

o-media.eu

onmeda.de/krankheiten/mittelohrentzuendung

.html

pharmawiki.ch/wiki/index.php?wiki=Otitis+media

patientenleitlinien.de/Mittelohrentzuendung/mittelohrentzue

ndung.html

medizinfo.de/kinder/fieber/otitismedia.htm

evidence.de/Leitlinien/leitlinienintern/.../otitis_media_start.html

regioactive.de/otitismedia

Erweiterte Suchanfrage

otitismedia.de

otitismediaacuta.de

de.wikipedia.org/wiki/Akute_Mittelohrentz%C3

%BCndung

medizinfo.de/ohren/mitte/otitis_media.shtml

de.wikipedia.org/wiki/Mittelohrentz%C3%BCn

dung

o-media.eu

de.wikipedia.org/wiki/Mittelohrentz%C3%

BCndung

de.wikipedia.org/wiki/Akute_Mittelohrentz

%C3%BCndung

pharmawiki.ch/wiki/index.php?wiki=Otitis+media

95


Anhang

qualimedic.de/ohrenschmerzen.html

fliegen-ohne-ohrenschmerzen.de

Erweiterte Suchanfrage

drdewes.de/symptome/ohrenschmerzen/ohr

enschmerzen.html

aponet.de/vorsorge/kind/schmerzen/06_07_

06_02_00_C_Kinder_sell.html

ohren-schmerzen.de

Normale Suchanfrage: Schmerzen im Ohr

Erweiterte Suchanfrage:

Schmerzen im Ohr OR "Ohrenschmerzen" OR "Ohrenschmerz" OR "OHREN-

SCHMERZEN" OR "Ohrschmerzen" OR "Otalgie" OR "Otalgie, unspezifisch"

OR "Schmerz im Ohr" OR "Schmerz, Ohr" OR "SCHMERZEN OHR"

Normale Suchanfrage

drdewes.de/symptome/ohrenschmerzen/oh

renschmerzen.html

aponet.de/vorsorge/kind/schmerzen/06_07

_06_02_00_C_Kinder_sell.html

apotheker.or.at/Internet/OEAK/Niederoesterreich/.

..

ohr-schmerz.de

ohren-schmerzen.de

ijournal.de/earplanes-hilfe-gegenohrenschmerzen-im-flugzeug

gutefrage.net/frage/schmerzen-im-ohr

hws-schmerzen.de

miomedi.de/gesundheit/.../ohrenschmerzen/

ohrenschmerzen-ursachen.html

apotheker.or.at/Internet/OEAK/Niederoesterreich/..

.

qualimedic.de/ohrenschmerzen.html

hno-forum.de/schlagworte/schmerzen-imohr

hno-forum.de/schlagworte/schmerzen-imohr

akohrakupunktur.de/html/beitraege/schmerz.html

onmeda.de/foren/forumhoersturz/1446244/read.html

96


Anhang

Normale Suchanfrage: Modell

Erweiterte Suchanfrage:

Modell OR "Modelle, biologische" OR "Modelle, chemische" OR "Modelle, statistische"

OR "Modelle, theoretische" OR "Computersimulation" OR "Modelle,

molekulare" OR "Krankheitsmodelle, Tier" OR "Modelle, genetische" OR

"Modelle, neurologische" OR "Modelle, kardiovaskuläre" OR "Modelle, Organisations-"

OR "Modelle, psychologische" OR "Modelle, Ausbildungs-" OR

"Neuronale Netzwerke (Computer)" OR "Knochenremodellierung" OR "Modelle,

anatomische" OR "Modelle, ökonomische" OR "Modelle, Pflege-" OR

"Ventrikuläre Umformung" OR "Modelle, immunologische" OR "Proportionale

Hazarddaten-Modelle" OR "Logistische Modelle" OR "Modelle, ökonometrische"

OR "Modelltiere" OR "Lineare Modelle" OR "Phantome" OR "Zahnmodelle"

OR "Xenotransplantat-Antitumormodellanalysen" OR "Modelle, Struktur-"

OR "Krankheitsmodelle, autoimmune, Nervensystem" OR "Airway

Remodeling" OR "Mi-2 NuRD-Komplex" OR "Biologische Modelle" OR "Chemische

Modelle" OR "Probabilistische Modelle" OR "Statistische Modelle" OR

"Theoretische Modelle" OR "Computermodelle" OR "Modelle, Computer-" OR

"Molekülmodelle" OR "Genetische Modelle" OR "Neurologische Modelle" OR

"Kardiovaskuläre Modelle" OR "Organisationsmodelle" OR "Psychologische

Modelle" OR "Ausbildungsmodelle" OR "Unterrichtsmodelle" OR "Modelle,

neurale Netzwerk-" OR "Perzeptrone" OR "Netzwerkmodelle"

Normale Suchanfrage

de.wikipedia.org/wiki/Modell

webspace.webring.com/people/cf/fpolzer

m-modell.de

mmodell.de

modellbahn-anlage.de

fgmodellsport.com

viessmann-modell.com

de.wikipedia.org/wiki/Modell_(Architektur)

modellraketen.org/index.php?id=349&L=1

v-modell.iabg.de/index.php

Erweiterte Suchanfrage

m-modell.de

modell-ovp.de

kuehn-modell.de/index.htm

panzer-modell.de

de.wikipedia.org/wiki/Modell

viessmann-modell.com

krick-modell.de

e-modell.de

v-modell.iabg.de/index.php

jann-modell.de

97


Anhang

Normale Suchanfrage

de.wikipedia.org/wiki/Schule

schule.at/index.php?url=themen&top_id=1701

Normale Suchanfrage: Schule

Erweiterte Suchanfrage:

Schule OR "Universitäten" OR "Schulen und Ausbildungsstätten" OR "Hochschulen,

medizinische" OR "Ausbildungsstätten, Krankenpflege-" OR "Hochschuleingangsprüfung"

OR "Hochschulen" OR "Medizinische Hochschulen"

OR "Krankenpflegeausbildungsstätten" OR "Krankenpflegeschulen" OR

"Aufnahmeprüfung, College-" OR "College-Aufnahmeprüfung" OR "Hochschul-Aufnahmeprüfung"

schule.at/index.php?url=schule&startseite=&start=1&anza

hl=1&land=9

schulweb.de

schule.de

muenchen.de/schule

schule-nuerensdorf.ch/index.html

schule.spiegel.de

sn.schule.de/index.php?auswahl=themen_i_tafel

zeit.de/gesellschaft/schule/index

Erweiterte Suchanfrage

vdab-schule.de

schule.at/index.php?url=themen&t

op_id=1633

schule.at/index.php?url=schule

schule.de

pg-schule.de

focus-schule.de

fortbildung.schule.bayern.de

schule.it

schule.zeit.de

ev-schule.de

98


Anhang

Normale Suchanfrage: Krieg

Erweiterte Suchanfrage:

Krieg OR "Belastungsstörungen, posttraumatische" OR "Krieg" OR "Veteranen"

OR "Biologische Kriegführung" OR "Nukleare Kriegsführung" OR

"Persian-Gulf-Syndrom" OR "Chemische Kriegführung" OR "Kriegsverbrechen"

OR "Zweiter Weltkrieg" OR "Irakkrieg, 2003 -" OR "Golfkrieg" OR "Erster

Weltkrieg" OR "Vietnam-Konflikt" OR "Amerikanischer Bürgerkrieg" OR

"Psychologische Kriegführung" OR "Koreakrieg" OR "Krimkrieg" OR "Amerikanische

Revolution" OR "Spanisch-Amerikanischer Krieg, 1898" OR "Russisch-Japanischer

Krieg" OR "Posttraumatische Stressfolgen" OR "Posttraumatische

Streßfolgen" OR "post-traumatisches Stresssyndrom" OR

"PTSD" OR "Kampfmuedigkeit" OR "Kriegsneurose" OR "Neurosen, posttraumatische"

OR "Posttraumatische Belastungsstoerung" OR "Posttraumatische

Belastungsstörung" OR "Post-traumatische Belastungsstörung" OR

"Posttraumatische Belastungsstörungen" OR "Post-traumatische Belastungsstörungen"

OR "Posttraumatische Neurosen" OR "Post-traumatische Neurosen"

OR "Kriegsveteranen" OR "Ausgediente Soldaten" OR "Atomkrieg" OR

"Golfkrieg-Syndrom" OR "Weltkrieg, 1939-1945" OR "Operation Wüstenschild"

OR "Operation Wüstensturm" OR "Persischer Golf-Krieg, 1991" OR

"Weltkrieg, 1914-1918" OR "Viet-Nam-Konflikt" OR "Vietnam-Konflikt, 1961-

1975" OR "Vietnamkrieg" OR "Indochinakrieg" OR "U. S. Bürgerkrieg, 1861-

1865"

Normale Suchanfrage

de.wikipedia.org/wiki/Krieg

de.wikipedia.org/wiki/Zweiter_Weltkrieg

krieg.de/index.html

krieg-online.de

krieg.ch

stupidedia.org/stupi/Krieg

weltkrieg2.de

de.wikiquote.org/wiki/Krieg

zitate.net/krieg.html

pfenz.de/wiki/Krieg

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Krimkrieg

de.wikipedia.org/wiki/Koreakrieg

veteranen.in

veteranen.in

krieg.ch

krieg.de/index.html

russisch-24.de

krieg-bau.de

krieg-online.de

krieg.info/index.html

99


Anhang

Normale Suchanfrage: Krankenversicherung

Erweiterte Suchanfrage:

Krankenversicherung OR "Versicherung, Kranken-" OR "Betriebskrankenversicherung"

OR "Versicherung, Kranken-, Leistung" OR "Krankenversicherung,

Heilmittel-" OR "Allgemeiner Krankenversicherungsschutz" OR "Krankenversicherung,

Zahnbehandlungs-" OR "Krankenversicherung für psychiatrische

Behandlung" OR "Krankenversicherung für ärztliche Behandlung"

OR "Versicherung, Krankenhausbehandlung-" OR "Krankenversicherung,

umfassende" OR "Krankenversicherung für chirurgische Behandlung" OR

"Krankenversicherung" OR "Betriebskrankenkasse" OR "Zahlungen von Dritten"

OR "Krankenversicherungsleistung" OR "Leistung, Krankenversicherungs-"

OR "Stationäre Krankenversicherung"

Normale Suchanfrage

krankenversicherung.net

1a-krankenversicherung.org

de.wikipedia.org/wiki/Gesetzliche_Krankenv

ersicherung

krankenversicherung.ch

krankenversicherung.net/gesetzlichekrankenversicherung

cecu.de/krankenversicherung.html

dkv.com

private-krankenversicherung.de

hansemerkur.de

krankenversicherung-individuell.de

Erweiterte Suchanfrage

krankenversicherung.net

1a-krankenversicherung.org

bkk.de

krankenversicherung.ch

gothaer-krankenversicherung.de

de.wikipedia.org/wiki/Gesetzliche_Kranken

versicherung

krankenversicherung.org

de.wikipedia.org/wiki/Betriebskrankenkass

e

abc-krankenversicherung.de

private-krankenversicherung.de

100


Anhang

Normale Suchanfrage: Musik

Erweiterte Suchanfrage:

Musik OR "Musik" OR "Musiktherapie"

Normale Suchanfrage

myvideo.de/Musik

new.de.music.yahoo.com

mp3.de

elixic.de

musik.aol.de

rautemusik.fm

de.wikipedia.org/wiki/Musik

besttips.de

einslive.de/musik

musicload.de

Erweiterte Suchanfrage

musiktherapie.de

new.de.music.yahoo.com

musik.ciao.de

musik.hitmeister.de

musik.aol.de

de.wikipedia.org/wiki/Musiktherapie

musik-service.de

de.wikipedia.org/wiki/Musik

myvideo.de/Musik

rautemusik.fm

101


Anhang

Normale Suchanfrage: Computer

Erweiterte Suchanfrage:

Computer OR "Bildinterpretation, computergestützte" OR "Computertomographie"

OR "Software" OR "Bildverarbeitung, computergestützte" OR

"Krankenunterlagenorganisation, computergestützte" OR "Computersimulation"

OR "Mensch-Computer-Schnittstelle" OR "Künstliche Intelligenz" OR

"Signalverarbeitung, computergestützte" OR "Röntgenbildinterpretation,

computergestützte" OR "Computergestütztes Lernen" OR "Einzelphotonen-

Emissionscomputertomographie" OR "Diagnostik, computergestützte" OR

"Emissionscomputertomographie" OR "Computeranwendung in der Biologie"

OR "Strahlentherapieplanung, computergestützte" OR "Computergestütztes

Design" OR "Chirurgie, computergestützte" OR "Neuronale Netzwerke

(Computer)" OR "Computergraphiken" OR "Computernetze" OR "Therapie,

computergestützte" OR "Tomographie, Spiral-Computer-" OR "Computersysteme"

OR "Automatische Datenverarbeitung" OR "Computersicherheit" OR

"Natürliche Sprache, Verarbeitung" OR "Computer" OR "Einstellung zu Computern"

OR "Strahlentherapie, computergestützte" OR "Ambulante Behandlung,

Informationssysteme" OR "Mikrocomputer" OR "Numerische Analyse,

computergestützte" OR "Arzneimitteltherapie, computergestützte" OR "Software

Design" OR "Computer, Handheld-" OR "Entscheidungsfindung, computergestützte"

OR "Kolonographie, Computer-tomographische" OR "Computerterminals"

OR "Computerperipherie" OR "Computernutzerschulung"

Normale Suchanfrage

computerbild.de

de.wikipedia.org/wiki/Computer

computer.shop.ebay.de

dell.de

ciao.de/Computer_533524_1

computer.de

mediamarkt.de/computer-buero

computer.t-online.de

computerhilfen.de

hoh.de

Erweiterte Suchanfrage

engel-computer.de

k-computer.de

software.magnus.de

z-software.net

kup-computer.de

computerbild.de

ggu-software.com

m-software.de

c-software.de

rabatt-computer.de

102


Anhang

Normale Suchanfrage: Datenbank

Erweiterte Suchanfrage:

Datenbank OR "Datenbank-Verwaltungssysteme" OR "Datenbanken, Fakten-"

OR "Datenbanken, genetische" OR "Datenbanken, Protein-" OR "Datenbanken,

bibliographische" OR "Datenbanken" OR "Datenbanken, Nukleinsäure-"

OR "National Practitioner Data Bank" OR "Datenbasen, Fakten-" OR "Genetische

Datenbanken" OR "Proteindatenbanken" OR "Bibliographische Datenbanken"

OR "Datenbasen" OR "Nukleinsäuredatenbanken" OR "Nationale

Datenbank für Medizinalberufe (USA)"

Normale Suchanfrage

de.wikipedia.org/wiki/Datenbank

datatron.de

eu-datenbank.de

de.wikipedia.org/wiki/Kategorie:Datenbank

datenbanken24.de/index.html

deutschebahn.com/.../presse/mediathek/bilddatenbank/bil

ddatenbank.html

coach-datenbank.de

datenbank.mecom.de

hai.ch/Datenbank/index.html

daad.de/deutschland/foerderung/stipendiendatenbank/004

62.de.html

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Datenb

ank

eu-datenbank.de

internet-datenbanken.de

datenbank.mecom.de

ft-datenbank.de

med-datenbank.de

ifa-datenbank.de

datatron.de

datenbank-portal.de

datenbank.dvd.de

103


Anhang

Normale Suchanfrage: Information

Erweiterte Suchanfrage:

Information OR "Informationspeicherung und -Retrieval" OR "Radiologie-

Informationssysteme" OR "Informationsdienste" OR "Informationsverbreitung"

OR "Psychische Prozesse" OR "Krankenhausinformationssysteme" OR

"Informationssysteme" OR "Offenlegung" OR "Informationsmanagement" OR

"Ambulante Behandlung, Informationssysteme" OR "Krankenhaus-

Apotheken-Informationssysteme" OR "Management-Informationssysteme"

OR "Datenausgabe" OR "Arzneimittelinformationsdienste" OR "Geographische

Informationssysteme" OR "Zugangsrecht zu Informationen" OR "Informationszentren"

OR "Silent-Information-Regulatorproteine, Saccharomyces

cerevisiae" OR "Giftinformations- und Behandlungszentren" OR "Kliniklabor-Informationssysteme"

OR "Informationspflicht gegenüber Dritten" OR

"Gesundheitsinformation für Verbraucher" OR "Informationstheorie" OR

"Operationsraum-Informationssysteme" OR "Personalstellen- und Einsatzplanungsinformationssysteme"

OR "Informationswissenschaften" OR "Integrated

Advanced Information Management Systems" OR "Off-Label Use" OR

"Informationsrechercheverhalten" OR "Denkprozesse" OR "Geistige Prozesse"

OR "Informationsverarbeitung, humane" OR "Offenlegung von Informationen"

OR "Computerunterstützte medizinische Dokumentation in der ambulanten

Behandlung" OR "Informationssystem, Krankenhaus-Apotheken-"

OR "Informationsdisplay" OR "SIR-Proteine, S. cerevisiae" OR "Vergiftungszentralen"

OR "Laborinformationssysteme"

Normale Suchanfrage

de.wikipedia.org/wiki/Information

information.de

disneychannel.de

zv-information.de

information-wissen-mehrwert.de

rcm-de.amazon.de/e/cm/privacy-policy.html?o=3

de.wikipedia.org/wiki/Information_Retrieval

capurro.de/info.html

patienten-information.de/?searchString=Post-Polio-

Syndrom:&searchBu...

patienteninformaton.de/?searchString=Krebs,+Schme

rzen+bei&searchB...

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Information

norton.de

patienten-information.de

de.wikipedia.org/wiki/Informations

management

orgel-information.de

colostrum-information.de

is.inf.uni-due.de

ic-information.com

we-information.com

fh-joanneum.at/ima

104


Anhang

Normale Suchanfrage: Internet

Erweiterte Suchanfrage:

Internet OR "Internet" OR "World Wide Web" OR "WWW"

Normale Suchanfrage

Erweiterte Suchanfrage

de.wikipedia.org/wiki/Internet

www.hr1.de

internet-abc.de

www.bafa.de

billiger-surfen.de

www.test.de

internet.de

www.elv.de

google.de

www.rewe.de

internet-xl.at

www.karstadt.de

1und1.de/index.php?&srcArea=ln&switchsite=adsl www.hotelplan.ch

go.microsoft.com/fwlink/?LinkId=105563

www.hr2.de

internet-abc.de/eltern/124216.php

www.fes.de

united-internet.de

www.obi.de

105


Anhang

Normale Suchanfrage: Kunst

Erweiterte Suchanfrage:

Kunst OR "Kunstfehler, ärztlicher" OR "Komposit-Kunststoffe" OR "Ärztliche

Kunstfehler" OR "Kochkunst" OR "Kunststoffzemente" OR "Kunst" OR

"Kunststoffe" OR "Medizin in der Kunst" OR "Kunstharze" OR "Anatomie in

der Kunst" OR "Kunsttherapie" OR "Kunstfehleranzeige" OR "Zahnprothese,

partielle, fixierte, kunstharzgeklebte" OR "Dentales Bindemittel, lichthärtend"

OR "Kunst- und Gestaltungstherapie" OR "Dentales Bindemittel, chemisch

härtend" OR "Ärztliche Behandlungsfehler" OR "Plastik" OR "Anzeige

eines Kunstfehlers" OR "Maryland-Brücke" OR "Geklebte, säurevorbehandelte

partielle Prothesen" OR "Kunstharzfixierte Brücke" OR "Kunstharzfixierte

partielle Prothesen" OR "Lichthärtung dentaler Kunststoffe" OR "Lichthärtung

dentaler Zemente" OR "Chemische Härtung, dentale Klebstoffe" OR

"Dentales Bindemittel, dualhärtend" OR "Dentales Bindemittel, selbsthärtend"

OR "Dualhärtung, Kunststoffzemente" OR "Selbsthärtung, dentale

Kunsstoffe" OR "Selbsthärtung, Dentalkunsstoffe"

Normale Suchanfrage

de.wikipedia.org/wiki/Kunst

de.wikipedia.org/wiki/Kunstgeschichte

livemaster.de

kunstunterricht.de

art-perfect.de

kunstsam.de

kunsthandwerkerportal.de

kunstmarkt.de

kunstwissen.de

museum-kunst-palast.de

Erweiterte Suchanfrage

kunst.eburg.de

kunststoffe.de

v-kunst.de

foto-kunst.info

de.wikipedia.org/wiki/Kunst

swr.de/kochkunst

kunst.blog.de

kunst-ev.de

de.wikipedia.org/wiki/Kunststoff

kunst-ist.net

106


Anhang

J Compact Disk

Die beigefügte Compact Disk beinhaltet eine lauffähige Version der in dieser

Arbeit entwickelten ASP.NET Web Applikation sowie alle SQL-Skripte, die

für die Implementierung der MS SQL Datenbank erforderlich sind.

107

Weitere Magazine dieses Users
Ähnliche Magazine