Upload
hb-technologies-ag
View
257
Download
6
Embed Size (px)
DESCRIPTION
User Manual Semantic Expander.
Citation preview
User Manual
.NET 4.0 Komponente zur Erstellung einer
expandierten Liste für Ihre Suche
HB Technologies AG
Pauk-ehrlich-Str. 5
D-72076 Tübingen
Telefon (0 70 71) 97 61-1
Fax (0 70 71) 97 61-90
www.h-net.com
Semantic Expander V1.0 2 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
Inhaltsverzeichnis
1 Überblick 3
1.1 Anwendungsbereich 3
1.2 Lieferumfang 4
1.3 Anforderung an die IT-Infrastruktur 5
1.4 Lizenzbedingungen 5
1.5 Lizenzierung 6
2 Technische Umsetzung 6
2.1 Architekturüberblick 6
2.2 Klassen und Methoden 9
2.2.1 Klasse Expander 9
2.2.2 Klasse WeightedSearchTerm 10
2.2.3 Klasse ExpanderRangeLevel 10
3 Anwendung 11
3.1 Installation 11
3.2 Einrichten eines Projekts 12
3.3 Referenzieren der SemanticExpander-Komponente 13
3.4 Entwicklung der Applikation 14
Semantic Expander V1.0 3 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
1 Überblick
Bestehende Ansätze zum Suchen können durch eine semantische Komponente verbessert
werden. Bei der semantischen Suche wird nicht allein nach dem jeweils eingegebenen Begriff
gesucht, sondern es werden auch Begriffe mit einbezogen, die verwandt sind beziehungsweise
innerhalb eines Wissensbereichs nach inhaltlichen Gesichtspunkten in der Nähe liegen. Diese
Ausweitung wird mittels der Software-Komponente SemanticExpander generiert und
ermöglicht. Die Vorteile des SemanticExpander auf einen Blick:
schnelle und unkomplizierte Einbindung in Ihren Quellcode
Ein Vielfaches an Suchergebnissen und neuen, bisher unbekannten Verknüpfungen zum
eigentlichen Suchbegriff im Vergleich zur einfachen Suche
Ergebnis langjähriger Arbeit im Bereich semantischer Technologien
1.1 Anwendungsbereich
Nutzen Sie die Softwarekomponente SemanticExpander für Ihre bestehende Suchanwendung.
Sie ist schnell zu integrieren und erweitert Ihre Suche um ein Vielfaches an Ergebnissen. So
können bestehende Ansätze zum Suchen durch unsere semantische Komponente verbessert
werden. Bei der semantischen Suche wird nicht allein nach dem jeweils eingegebenen Begriff
mittels Volltextsuche gesucht, sondern es werden auch Begriffe mit einbezogen, die verwandt
sind beziehungsweise innerhalb eines Wissensbereichs nach inhaltlichen Gesichtspunkten in
der Nähe liegen. Diese Ausweitung des Suchbegriffs wird im vorgeschalteten Schritt der
semantischen Expansion realisiert. Hierbei können Sie den Verwandtschaftsgrad im Bereich von
1 (sehr nah) bis 15 (weit entfernt) selbst wählen und bestimmen.
Die Ermittlung sinnverwandter Begriffe
Bei der Ermittlung sinnverwandter Begriffe sind prinzipiell verschiedene Ansätze denkbar:
Auslesen von Begriffen aus Thesauri oder beispielsweise die Extraktion von Wissen aus der
Online-Enzyklopädie Wikipedia durch eine Wortanalyse oder durch Textmining. Letzteres
kommt im hier beschriebenen semantischen Expander zum Einsatz. Mittels konfigurierter
Schnittstelle wird aus den Wikipedia-ArtikeIn eine Topic Map erzeugt (Schritt1). Vorteile einer
Topic Map sind zweifelsohne der Status eines ISO-Standards und die Vielzahl an
Anwendungsmöglichkeiten durch andere Applikationen (u.a. aus unserem Haus).
Anschließend wird der relevante Kontext eines gegebenen Begriffs durch Traversieren dieser
Topic Map ermittelt (Schritt 2). Welche Ebenen zum relevanten Kontext gehören, wurde bereits
durch die Wahl des zulässigen Verwandtschaftsgrades bestimmt. Als Ergebnis erhält man eine
sogenannte expandierte Liste (Schritt 3), die nun für die eigentliche Suche genutzt werden kann.
Semantic Expander V1.0 4 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
Das nachfolgende Schaubild visualisiert den Ablauf der semantischen Expansion mit den zuvor
beschriebenen Schritten:
Abbildung 1 Ablauf der Expansion
1.2 Lieferumfang
Der Semantic Expander wird zum Herunterladen als Zip-Datei angeboten. Diese gepackte
Installationsdatei besteht aus insgesamt vier Bibliotheken, die zur semantischen Suche in Ihre
bestehende Anwendung eingebaut werden kann. Zusätzlich wird neben eines Produktflyers und
dieser Dokumentation eine Demoversion bereitgestellt, welche den Mehrwert des
SemanticExpander einer exemplarischen Suche verdeutlicht. Im Folgenden die mitgelieferten
Daten der Zip-Datei auf einen Blick:
SemanticExpander.dll
Semantics.dll
TopicMapBase.dll
Microsoft.Practices.Unity.dll
Microsoft.Practices.ObjectBuilder2.dll
Microsoft.Practices.EnterpriseLibrary.Common.dll
Semantic Expander V1.0 5 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
1.3 Anforderung an die IT-Infrastruktur
Beim SemanticExpander handelt es sich nicht um eine ablauffähige Anwendung, sondern um
eine dynamische Klassenbibliothek im DLL-Format. Die Bibliothek wurde in Visual Studio 2010
in C# mit dem .NET Framework 4.0 entwickelt. Entsprechend ist eine installierte
Laufzeitumgebung von .NET in der Version 4.0 für den Ablauf Voraussetzung und muss
bereitgestellt werden. Die Anwendung benutzt weitere externe Standard-Bibliotheken der H-
Maps Programmsuite (TopicMapEngine und TopicMapImport).
Zur Erweiterung bestehender Suchapplikationen um eine semantische Komponente kann die
Bibliothek eingebunden werden. Die Methode und Properties der Bibliothek, insbesondere die
Expansion von Suchbegriffen, können über definierte Schnittstellen angesprochen werden.
Das Modul ist für gewöhnliche Office-PCs ohne spezielle Ausstattung konzipiert. Es werden alle
Betriebssysteme ab Windows XP SP2 unterstützt.
1.4 Lizenzbedingungen
Beim SemanticExpander handelt es sich um eine .NET 4.0 Komponente zur Erweiterung Ihrer
Suche um eine expandierte Liste in der Version 1.0 Copyright ©2011 by HB Technologies AG
(h-net.com). Alle Rechte vorbehalten.
Für die Benutzung gelten die folgenden Lizenzbedingungen:
1. Mit Annahme dieser Lizenzbedingungen erwirbt der Lizenznehmer ein zeitlich
unbegrenztes, örtlich nicht beschränktes einfaches nichtausschließliches Nutzungsrecht
dieses Produktes. Die Nutzung dieses Produktes zur Entwicklung von Applikationen ist nur
dem Lizenznehmer gestattet. Die Lizenz ist für einen Arbeitsplatz gültig. Die Weitergabe
dieses Produktes als Bestandteil einer vom Lizenznehmer entwickelten Applikation ist
nicht beschränkt.
2. Die in diesem Produkt enthaltenen Programme und sonstigen Dateien dürfen weder im
Quelltext noch als ausführbare Programme - auch nicht in veränderter Form - zur
Entwicklung von Applikationen an Dritte weitergegeben, verliehen oder gleichzeitig auf
mehreren Computern eingesetzt werden. Auch die Installation einer Lizenz auf mehr als
einem Gerät oder mehrfache Nutzung im Netz - zum Beispiel in Firmen, Schulen oder
Universitäten - ist untersagt.
3. Alle weitergehenden Rechte bleiben dem Copyright-Inhaber vorbehalten. Die gelieferte
Software darf weder disassembliert, dekompiliert oder anderweitig rückübersetzt werden.
4. Programm und Dokumentation wurden sorgfältig erstellt und geprüft. Außer im Falle
grober Fahrlässigkeit oder Vorsatz übernimmt die HB Technologies AG keine Haftung für
etwaige Schäden, die auf Verwendung der Software oder der Dokumentation
zurückzuführen sind. Desweiteren wird, sofern nicht ausdrücklich schriftlich zugesichert,
keine Gewähr für die Verträglichkeit dieser Software mit irgendwelchen anderen
Programmen oder Hardware-Bestandteilen übernommen.
Semantic Expander V1.0 6 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
5. Die Lizenzbedingungen erstrecken sich ebenfalls - auch ohne erneute Mitteilung - auf alle
eventuellen Updates oder Ergänzungen.
6. Sollte einer der vorangegangenen Punkte ungültig werden, bleiben die restlichen davon
unberührt.
1.5 Lizenzierung
Die Software-Komponente SemanticExpander wird Entwicklern zunächst als lizenzfreie
Testversion angeboten, damit die Eigenschaften de Komponente im Zusammenhang mit einer
geplanten Anwendung ausprobiert werden können. Die Funktionalität der lizenzfreien Version ist
nicht eingeschränkt. Soll der SemanticExpander in einer Anwendung an Endkunden
weitergegeben werden, ist es erforderlich eine Entwicklerlizenz zu erwerben. Andernfalls
erscheint während der Benutzung der Anwendung ein Hinweis darauf, dass es sich um eine
unlizenzierte Version handelt.
2 Technische Umsetzung
In den folgenden Kapiteln wird auf die technischen Details des SemanticExpander genauer
eingegangen und erklärt wie die Komponente in Ihre Anwendung integriert werden kann. Nach
einem kurzen Architekturüberblick werden die unterschiedlichen Klassen und Methoden
vorgestellt, bevor es an die eigentliche Integrationen geht.
2.1 Architekturüberblick
Die Bibliothek für die semantische Expansion besteht aus einem einzelnen Paket mit dem
Namen SemanticExpander. Die generelle Softwarearchitektur dieses Pakets ist in folgender
Abbildung dargestellt.
Semantic Expander V1.0 7 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
Abbildung 2 Softwarearchitektur
Wesentlicher Kern des Pakets ist die Klasse Expander. Diese definiert die Methode
ExpandTerm(), in welcher die eigentliche Funktionalität zur semantischen Expansion
implementiert ist. Außerdem sind in diesem Paket die zur Unterstützung der Expansion
benötigte spezifische Eingabetyp ExpanderRangeLevel und der Ausgabe/Ergebnistyp
WeightedSearchTerm für das Verfahren enthalten.
Semantic Expander V1.0 8 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
Verfahren
Das Verfahren zur Expansion eines Suchbegriffs zur einer ganzen Liste sinnverwandter Begriffe
erfolgt in zwei Schritten. Im ersten Schritt werden über die öffentlich zugängliche Schnittstelle zu
Wikipedia ein oder – bei Mehrdeutigkeit – mehrere Artikel zum betreffenden Begriff aus
Wikipedia ausgelesen. Aus den ausgelesenen Artikeln wird eine Topic Map erzeugt. Hierzu
werden die Artikeltexte nach Begriffen, die Verweise auf andere Wikipedia-Artikel darstellen,
extrahiert und als Topics repräsentiert. Zusätzlich werden die zwischen den Begriffen
bestehenden Beziehungen als Assoziationen in der resultierenden Topic Map abgebildet.
Die eigentliche Begriffsexpansion geschieht in einem zweiten Schritt durch Traversierung der
zuvor erzeugten Topic Map. Zunächst werden die zum Suchbegriff passenden Topics
identifiziert (Topics, deren Namen mit dem jeweiligen Begriff übereinstimmt). Von diesen
ausgehend werden die über Assoziationen verbundenen, benachbarten Topics besucht und
deren Elemente (Namen und Varianten) als verwandte Begriffe gesammelt.
Das Modul zur semantischen Expansion greift dabei auf bestehende Komponenten der H-Maps
Programmsuite zurück. Dies sind insbesondere das Topic Maps Basispaket zur internen
Repräsentation der angelegten Topic Map sowie die Semantikkoponente, in der verschiedene
Verfahren zum semantischen Mining und der semantischen Expansion implementiert sind.
Eingabeparameter
Die Methode ExpandTerm() nimmt drei Eingabeparameter entgegen:
1. Suchbegriff
2. Sprache
Momentan werden nur die Sprachen Deutsch und Englisch unterstützt. Wählt man eine
andere Sprache, wird dies als Fehler behandelt und eine Ausnahme ausgelöst.
3. Ein sogenannter ExpanderRangeLevel
Das Verfahren zur Traversierung der Topic Map kann mit 13 Parametern sehr fein
gesteuert werden. Vereinfacht gesagt, kann über diese Parameter der traversierte
Bereich in der Topic Map (und somit die Genauigkeit der inhaltlich verwandten Begriffe)
je nach Bedarf eingestellt werden. Die Wahl sinnvoller Parameterwerte setzt allerdings
eine genaue Kenntnis über Begrifflichkeit und den Aufbau von Topic Maps voraus, was
die Verwendung kompliziert.
Um diese Komplexität zu reduzieren, werden der Methode nicht solche frei wählbaren
Parameterkombinationen übergeben, sondern die obengenannte ExpanderRangeLevel. Dies
sind Konstanten von 1 bis 15, die intern auf eine sinnvolle Kombination von Parametern
abgebildet werden. Der Wert 1 stellt die restriktivste Einstellung dar, mit steigenden Werten
nimmt der traversierte Bereich zu, das Maß an inhaltlicher Übereinstimmung entsprechend ab.
Ausgabeparameter
Ergebnis ist die expandierte Liste inhaltlich verwandter Begriffe. Die Einträge der Liste sind vom
Typ WeightedSearchTerm. Objekte dieses Typs enthalten neben dem eigentlichen Begriff eine
zusätzliche Gewichtung, die als Maß für die inhaltliche Übereinstimmung mit dem
ursprünglichen Suchbegriff dient. Die zurückgelieferte Liste ist absteigend nach dieser
Gewichtung sortiert.
Semantic Expander V1.0 9 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
2.2 Klassen und Methoden
2.2.1 Klasse Expander
Die Klasse Expander stellt die zentrale Klasse der Komponente dar. Die Ermittlung des
semantischen Kontexts zu einem gegebenen Suchbegriff geschieht in der Methode
ExpandTerm. Als Ergebnis wird die expandierte Liste mit den sinnverwandten Begriffen
zurückgeliefert.
Methode ExpandTerm
List<WeightedSearchTerm> ExpandTerm(string searchTerm, CultureInfo
cultureInfo, ExpanderRangeLevel rangeLevel)
Beschreibung
Führt die semantische Expansion aus. Hierzu werden zum gegebenen Begriff
searchTerm sinnverwandte Begriffe auf Basis einer ad hoc generierten Topic Map
ermittelt und als Ergebnis zurückgegeben.
Rückgabewert
Die Liste der ermittelten sinnverwandten Begriffe. Jeder Begriff trägt eine Gewichtung,
die seine Relevanz angibt. Die Sortierung der Liste ist absteigend nach Gewichtung.
Parameter
searchTerm Der Begriff, zu dem der semantische Kontext ermittelt werden soll.
cultureInfo Die Sprache, aus der der Suchbegriff stammt und sinnverwandte Begriffe
gesucht werden. Unterstützt werden Deutsch und Englisch, andere
Sprachen führen zu einer Ausnahme.
rangeLevel Die Einstellung, über die festgelegt wird, wie restriktiv die inhaltliche
Übereinstimmung mit dem gegebenen Begriff searchTerm sein soll.
Programm-Beispiel
string searchTerm = “Note”;
string language = “de”;
CultureInfo cultureInfo = new CultureInfo(language);
ExpanderRangeLevel rangeLevel = ExpanderRangeLevel.Level1;
// (1) Create a new instance of the semantic expander
SemanticExpander expander = new SemanticExpander();
// (2) Perform the semantic expansion
List<WeightedSearchTerm> weightedSearchTerms =
expander.ExpandTerm(searchTerm, cultureInfo, rangeLevel);
Siehe auch
WeightedSearchTerm, ExpanderRangeLevel
Semantic Expander V1.0 10 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
2.2.2 Klasse WeightedSearchTerm
Die Ergebnisse der semantischen Expansion sind vom Typ WeightedSearchTerm. Jede
Instanz dieser Klasse repräsentiert einen sinnverwandten Begriff, dessen Relevanz durch eine
Gewichtung angegeben ist.
Eigenschaft Term
String Term
Beschreibung
Setzt und bestimmt den sinnverwandten Begriff, der Teil des semantischen Kontexts ist.
Dieser Term ist Ergebnis der semantischen Expansion und kann etwa als Suchbegriff für
nachgelagerte Suchen benutzt werden.
Eigenschaft Weighting
double Weighting
Beschreibung
Setzt und bestimmt die Gewichtung des Begriffs Term. Die Gewichtung ist ein Maß für
die Relevanz des Terms, also dem Grad an Übereinstimmung mit dem
korrespondierenden Suchbegriff.
2.2.3 Klasse ExpanderRangeLevel
Über die Konstanten des Enumerationstyps ExpanderRangeLevel kann der Prozess zur
semantischen Expansion konfiguriert werden. Über sie wird festgelegt, wie restriktiv die
inhaltliche Übereinstimmung sinnverwandter Begriffe mit einem gegebenen Suchbegriff sein soll.
Der Wert Level1 stellt die restriktivste Einstellung dar, mit steigenden Werten nimmt der
traversierte Bereich zu, das Maß an inhaltlicher Übereinstimmung entsprechend ab.
public enum ExpanderRangeLevel
{ Level1, // lowest range level with lowest precision
Level2,
Level3,
Level4,
Level5,
Level6,
Level7,
Level8,
Level9,
Level10,
Level11,
Level12,
Level13,
Level14,
Level15 // highest range level with lowest precision}
Semantic Expander V1.0 11 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
3 Anwendung
In diesem Kapitel wird die Integration des Semantic Expanders in eine Anwendung Schritt für
Schritt beschrieben
1. Installation
2. Einrichten eines Projekts
3. Erstellen einer minimalistischen Demoanwendung
4. Einbinden/Einbauen des Semantic Expanders in die Demoanwendung
Die exemplarische Anwendung ist dabei bewusst einfach gehalten und beschränkt sich im
Wesentlichen auf die Funktionalität des Semantic Expanders. Es wird eine WPF-Anwendung mit
einem Dialog entwickelt, über dessen Bedienelemente die benötigten Parameterwerte für die
ExpandTerm Methode des Expanders eingegeben werden können. Die resultierenden
Ergebnisse der semantischen Expansion werden in Form einer Tabelle aufgelistet.
3.1 Installation
Die Semantic Expander-Komponente wird als gepacktes Archiv im ZIP-Format ausgeliefert. Zur
Installation genügt es, das Archiv in einem beliebigen Verzeichnis zu entpacken. Im Beispiel
wird der Inhalt des Expander-Archivs im Verzeichnis C:\Temp\Semantic_Expander_V1.0
abgelegt.
Abbildung 3 Inhalt des entpackten Semantic Expander-Archivs
Wie in Abbildung 3 ersichtlich, sind in dem Semantic Expander-Archiv sämtliche benötigten
Bibliotheken, insbesondere die zu referenzierende Hauptbibliothek SemanticExpander.dll,
sowie die für die verschiedenen unterstützten Sprachen benötigten Ressourcendateien
enthalten.
Semantic Expander V1.0 12 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
3.2 Einrichten eines Projekts
Als Entwicklungsumgebung für das Beispielprojekt wird Visual Studio verwendet. Im folgenden
Screenshot sind sämtliche relevanten Angaben zum Anlegen des Projekts rotumrandet
hervorgehoben:
Abbildung 4 Einstellungen zum Anlegen eines neuen Projekts
1. Über die Schaltfläche „New Project…“ wird der Dialog zum Einrichten des Projekts
aufgerufen.
2. Wichtig ist, das „.NET Framework 4“ auszuwählen. Dies ist eine Grundvoraussetzung für
die Verwendung des Semantic Expanders, kleinere Versionsnummern des Frameworks
führen bei der späteren Einbindung des Semantic Expanders zu Übersetzungsfehlern.
3. Als Anwendungstyp wird „WPF Application“ gewählt.
4. Der Projektname ist frei wählbar, im Beispiel wird das Projekt als
SemanticExpanderWpfDemo benannt.
5. Das Projektverzeichnis ist ebenfalls frei wählbar.
Semantic Expander V1.0 13 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
3.3 Referenzieren der SemanticExpander-Komponente
Um die Methoden des SemanticExpander in der Beispielanwendung ansprechen zu können,
muss zunächst eine Referenz auf die zentrale Bibliothek SemanticExpander.dll der
Komponente gesetzt werden. Hierzu ist durch Rechtsklick auf den Knoten References im
Solution Explorer ein Kontextmenü zu öffnen und der Menüpunkt „Add Reference“ anzuklicken:
Im sich daraufhin öffnenden Dateidialog wechselt man auf den Reiter „Browse“ und navigiert im
Verzeichnisbaum in den Ordner, in dem die SemanticExpander-Komponente wie im letzten
Abschnitt beschrieben entpackt wurde.
Semantic Expander V1.0 14 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
Die auszuwählende Bibliothek SemanticExpander.dll kann per Doppelklick auf den
Dateiknoten oder alternativ nach dem Selektieren des Dateinamens durch Bestätigen mit dem
„OK“ Button übernommen werden.
Im Solution Explorer ist anschließend die gesetzte Referenz auf die Bibliothek als neuer Knoten
sichtbar, wie im nachfolgenden Screenshot ersichtlich:
3.4 Entwicklung der Applikation
Wie eingangs des Kapitels erwähnt, wird als Beispiel eine WPF-Anwendung entwickelt, die aus
einem einzelnen Dialog mit Eingabefeldern für die drei Parameterwerte Suchterm, Sprache und
Rangelevel sowie einer Tabellendarstellung für die Ergebnisliste besteht.
Zunächst wird daher in Visual Studio in der XAML-Datei MainWindow.xaml das Layout für den
Dialog entworfen. Das resultierende Layout ist in Abbildung 5 dargestellt. Die Auswahl für den
gewünschten Wert des ExpanderRangeLevels erfolgt dabei über eine Combobox.
Die Befüllung dieser Combobox mit den Konstanten der ExpanderRangeLevel Enumerations-
typs erfolgt automatisiert per Datenbindung. Dieser Enumerationstyp ist in der zuvor
referenzierten Bibliothek SemanticExpander der Semantic Expander-Komponente im
Namensraum HuH.TopicMaps.Semantics.Expansion definiert. Um die Konstanten aus
ExpanderRangeLevel verwenden zu können, muss die Bibliothek im Wurzelelement der
XAML-Datei referenziert und ihr ein Namensraum-Präfix zugewiesen werden. Dies erfolgt in der
rotumrandeten Anweisung in Abbildung 5.
Semantic Expander V1.0 15 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
Abbildung 5 Dialog-Layout der Demoanwendung
Die Bedienung der Demoapplikation soll derart gestaltet sein, dass nach Eingabe der benötigten
Werte die semantische Expansion des eingetragenen Suchterms durch Anklicken der
Schaltfläche „Expand“ angestoßen wird. Die expandierte Liste wird daraufhin im unteren Bereich
des Dialogs in Form einer Tabelle angezeigt.
Notwendig ist daher die Implementierung einer Methode ExpandButton_Click als Event-
Handler, die beim Anklicken der „Expand“ Schaltfläche aufgerufen wird und die semantische
Expansion ausführt. Die Implementierung erfolgt in der Klasse MainWindow.xaml.cs und wird
im Folgenden genauer beschrieben.
Alle Klassen sowie der Enumerationstyp ExpanderRangeLevel in der Bibliothek
SemanticExpander sind im Namespace HuH.TopicMap.Semantics.Expansion definiert.
Um die Typen des Semantic Expanders verwenden zu können, müssen sie daher zu Beginn
mittels der using Direktive importiert werden:
Semantic Expander V1.0 16 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
In der Methode ExpandButton_Click werden zunächst als Vorbereitung die eingegebenen
Werte aus der Dialogmaske in lokale Variablen übertragen. Dies sind zum einen der eigentliche
Suchterm sowie das Kürzel für die Sprache aus den Textfeldern tbxSearchTerm bzw.
tbxLanguage. Das Sprachkürzel wird als Konstruktorargument zur Instanziierung eines
CulturInfo Objekts verwendet. Schließlich wird der selektierte Eintrag in der Combobox in
den entsprechenden ExpanderRangeLevel Wert konvertiert:
Als nächstes wird mit dem Operator new die Instanz des SemanticExpander angelegt. Die
Klasse besitzt nur den Standardkonstruktor, der keine Argumente entgegennimmt:
Schließlich kann die eigentliche semantische Expansion ausgeführt werden, indem die Methode
ExpandTerm auf der soeben angelegten Instanz des SemanticExpander aufgerufen wird. Als
Eingabeparameter werden der Suchterm searchTerm, die CultureInfo-Instanz, welche die
Sprache kapselt sowie die ExpanderRangeLevel Konstante rangeLevel übergeben:
Als Ergebnis wird die Liste der expandierten Suchbegriffe des Typs WeightedSearchTerm
zurückgegeben. Dies sind die sinnverwandten Begriffe, die im semantischen Kontext des
eingegeben Suchbegriffs stehen und aus der ad-hoc generierten Topic Map ermittelt wurden.
Sie sind absteigend nach Gewichtung (Relevanz) geordnet. Innerhalb übereinstimmender
Gewichtungen wird nach alphabetischer Reihenfolge sortiert.
Im letzten Schritt wird diese expandierte Ergebnisliste an ein DataGrid-Steuerelement über-
geben, die mittels Datenbindung und DataTemplate-Vorlage das gewünschte Aussehen erhält.
Semantic Expander V1.0 17 HB Technologies AG – Paul-Ehrlich-Str. 5 - 72076 Tübingen - www.h-net.com
Nachfolgend wird nochmal das komplette Listing der Methode ExpandButton_Click aufgeführt,
um die einzelnen Schritte übersichtlich in ihrer Gesamtheit zu sehen:
Abschließend soll anhand eines Beispiels das Aussehen sowie die Bedienung der kleinen
Demoanwendung illustriert werden. Zum Suchbegriff „Note“ werden inhaltlich verwandte
deutschsprachige Begriffe gesucht. Als ExpanderRangeLevel wird der Wert Level1 gewählt,
also die restriktivste Einstellung. Nachdem alle Angaben wie gewünscht eingegeben sind und
die Expansion ausgeführt worden ist, werden die expandierten sinnverwandten Begriffe mit ihren
Gewichtungen tabellarisch aufgeführt. In Abbildung 6 ist der Dialog der Demoanwendung mit
den eingegebenen Beispieldaten und der resultierenden Ergebnisliste illustriert.