Das Mehrebenen-Suchtool ANNIS für Entwickler

Werbung
Das MehrebenenSuchtool ANNIS für
Entwickler
Das Mehrebenen-Suchtool
ANNIS für Entwickler
Thomas Krause
Humboldt-Universität zu Berlin
LAUDATIO Workshop
2014-10-07
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
Das MehrebenenSuchtool ANNIS für
Entwickler
Überblick
●
Stand der Implementierung
●
Herausforderungen
●
Ausblick und Lösungsmöglichkeiten
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
Das MehrebenenSuchtool ANNIS für
Entwickler
Stand der Implementierung
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
●
●
Einführung
ANNIS ist eine Suchmaschine für linguistische
Korpora
ursprünglich für den Sonderforschungsbereich
632 entwickelt
Open-Source (Apache 2.0 Lizenz)
Entwicklung wird über GitHub organisiert:
https://github.com/korpling/ANNIS
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
4
Das MehrebenenSuchtool ANNIS für
Entwickler
●
ANNIS ist Theorie agnostisch
–
●
●
Modellierung linguistischer
Annotationen
nicht an ein bestimmtes Korpus oder
Annotationschema gebunden
verschiedene Annotationsebenen können
verschiedene Arten von Annotationen beinhalten
Abbildung verschiedener linguistischer
Annotationskonzepte (Token, Spannen,
Syntaxbäume, Dependenzen, Koreferenz, RST,
…) auf ein gemeinsames Modell
→ Graph
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
5
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
●
AQL
eigene Anfragesprache: ANNIS Query Language
–
Datenmodell des Graphen benötigt entsprechend
ausdruckstarke Anfragesprache
–
angelehnt an TIGERSearch-Anfragesprache
ist analog zu aussagenlogischer Formel aufgebaut:
term1 & term2 & (term3 | term4) & …
Term kann entweder Constraint auf einzelnen
Knoten sein oder die Beziehung zwischen zwei
Knoten beschreiben
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
6
Das MehrebenenSuchtool ANNIS für
Entwickler
&
&
&
&
&
&
AQL - Beispiel
pos=/V.FIN/
pos=/P.*/
"Zossener"
cat="S"
#1 ->dep[func="sbj"] #2
#2 .* #3
#4 > #1
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
7
Das MehrebenenSuchtool ANNIS für
Entwickler
AQL – wichtige
Operatoren
Operator-Klasse
Beispiele
Präzedenz
#1 . #2 (direkt)
#1 .* #2 (indirekt)
#1 .2,5 #2 (Bereichsangabe)
Dominanz
(impliziert Textabdeckung)
#1
#1
#1
#1
#1
Pointing Relation (immer
benannt)
#1 ->dep #2 (direkt)
#1 ->dep * #2 (indirekt)
Abgedeckter Text
#1
#1
#1
#1
#1
Wertevergleich
#1 == #2 (Annotationswert gleich)
#1 != #2 (Annotationswert ungleich)
A x y zB
> #2 (direkte Dominanz)
A
>* #2 (indirekt)
...
>edge #2 (direkt, benannt)
>[func=“HD“] #2 (direkt, mit Kantenannotation)
>4,6 #2 (Bereichsangabe)
B
_=_
_o_
_l_
_r_
_i_
#2 (identische Abdeckung)
#2 (Überlappung)
#2 (links-aligniert)
#2 (recht-aligniert) A AA
#2 (inkludiert)
B
AAA
BB
AAA
BB
vollständige Liste im eingebetteten Tutorial oder unter http://korpling.github.io/ANNIS/doc/dev-aql.html
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
8
Das MehrebenenSuchtool ANNIS für
Entwickler
Webfrontend
●
Architektur (1)
REST-Service
PostgreSQLDatenbank
Webfrontend
–
in Java und kleinen Teilen JavaScript implementiert
–
nutzt das GUI-Framework Vaadin
https://vaadin.com/
–
ruft den ANNIS-Service per REST-API auf
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
9
Das MehrebenenSuchtool ANNIS für
Entwickler
Webfrontend
●
Architektur (2)
REST-Service
PostgreSQLDatenbank
REST-Service
–
ebenfalls in Java implementiert
–
konvertiert AQL nach SQL
–
bildet relationale Ergebnisse in das Salt-Metadatenmodell
(Zipser 2010) ab
●
–
wird für die Visualisierung der Treffer genutzt
administrative Aufgaben wie z.B. Import und
Nutzerverwaltung
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
10
Das MehrebenenSuchtool ANNIS für
Entwickler
Webfrontend
●
Architektur (3)
REST-Service
PostgreSQLDatenbank
PostgreSQL-Datenbank
–
führt die eigentliche Suche aus
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
11
Das MehrebenenSuchtool ANNIS für
Entwickler
Übersicht zum
Datenmodell
ANNIS-Format
Importformat
● wird selten verändert
● CSV Dateien, die dem
normalisiertem Databankschema
entsprechen
Korpusdaten
werden konvertiert
Pepper
Konverter
(Zipser 2010)
Suchergebnisse
werden
abgebildet
Salt
Umwandlung
bei
Import
Datenbankschema in PostgreSQL
● optimiert für die Abfrage
● kann sich zwischen ANNISReleases ändern
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
12
Das MehrebenenSuchtool ANNIS für
Entwickler
Normalisiertes
Datenbankschema
(Rosenfeld 2010)
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
13
Das MehrebenenSuchtool ANNIS für
Entwickler
Normalisiertes
Datenbankschema
(Rosenfeld 2010)
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
14
Das MehrebenenSuchtool ANNIS für
Entwickler
Normalisiertes
Datenbankschema
(Rosenfeld 2010)
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
15
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
●
●
●
Komponenten
jede Kante wird einer Komponente
zugeordnet
Aufteilung der Komponenten in Typen
–
c (coverage) → Spannen
–
d (dominance) → Dominanzrelationen wie z.B.
Syntaxbäume
–
p (pointing relation)
component
id
integer
type
char(1)
namespace
varchar
name
varchar
außerdem Unterteilung nach Namen →
entspricht den Kantennamen in AQL
(z.B. „->dep“)
jede Komponente ist azyklisch (DAG)
ein Knoten kann Teil mehrerer Komponenten
sein
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
dominance, „edge“
pointing, „dep“
pointing, „order“
16
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
Erreichbarkeitsproblem
(1)
Problem:
Finde alle erreichbaren Knoten von einem
Ausgangsknoten in einer Komponente
Implementierung durch Traversierung bei jeder
Suchanfrage?
–
benötigt rekursives/iteratives SQL
–
sehr langsam
–
Statistik von PostgreSQL funktioniert schlecht
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
17
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
Erreichbarkeitsproblem
(2)
Lösung: vorberechnete
Intervall-Kodierung
–
depth-first Traversierung jeder
Komponente
–
Zuweisung „stretched pre- und
post-order“ (Grust 2004) für
jeden Knoten
für jeden Nachfolgeknoten gilt:
–
pre-Order ist immer größer
–
post-Order ist immer kleiner
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
1
2
v2
10
v1
3
5
LAUDATIO Workshop 2014-10-07
v3
4
v4
6
9
7
v5
8
18
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
Erreichbarkeitsproblem
(3)
Knoten n2 ist von n1
erreichbar wenn:
n1.pre < n2.pre und
n1.post > n2.post
lässt sich gut in SQL
formulieren und effizient über
Indizes abfragen
1
2
v2
3
5
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
10
v1
LAUDATIO Workshop 2014-10-07
v3
4
v4
6
9
7
v5
8
19
Das MehrebenenSuchtool ANNIS für
Entwickler
●
Erreichbarkeitsproblem
(4)
Problem: Zuweisung exakt einer Pre- und Post-Order für
jeden Knoten geht nur auf Bäumen, aber nicht auf DAGs
1
2
2
v2
X
3
4
9
3
5
4
Lizenz:
Creative Commons Namensnennung
4.0 International
10
v1
v4
Thomas Krause, HU Berlin
v3
6
5
9
8
7
v5
6
8
7
LAUDATIO Workshop 2014-10-07
20
Das MehrebenenSuchtool ANNIS für
Entwickler
●
Lösung: Umwandlung des DAGs in
einen Baum mit „virtuellen“ Knoten
–
●
rank-Tabelle
wenn Baum-Eigenschaft verletzt
→ Kopie des Unterbaums
rank-Tabelle speichert für jeden
Knoten alle pre/post-Order
Kombinationen
1
2
v2 9
3 v3 8
16
v1
X
10
v3
15
11 v4 12 13 v5 14
rank
pre
integer
post
integer
node_ref
integer
component_ref
integer
parent
integer
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
4 v4 5
6
v5
7
LAUDATIO Workshop 2014-10-07
21
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
●
Joins
Beispiel-AQL:
cat=“S“ & cat=“NP“ & #1
>* #2
benötigt Join auf 7 Tabellen:
–
2x node_annotation
–
2x node
–
2x rank
–
1x component
je mehr Knoten in der AQLAnfrage enthalten sind, um so
mehr Tabellen werden benötigt
→ in der Praxis viel zu
langsam
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
22
Das MehrebenenSuchtool ANNIS für
Entwickler
Normalisiertes
Datenbankschema
Lösung: materialisierter
Join der relevanten
Tabellen
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
23
Das MehrebenenSuchtool ANNIS für
Entwickler
Denormalisiertes
Datenbankschema
Lösung: materialisierter
Join der relevanten
Tabellen
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
24
Das MehrebenenSuchtool ANNIS für
Entwickler
Herausforderungen
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
25
Das MehrebenenSuchtool ANNIS für
Entwickler
Duplizierung durch
Annotationen
node_annotation
node_ref
name
value
0
pos
ADJA
0
lemma
mittel
0
morph
Pos.Nom.Sg.M
asc
id
token_index
span
0
0
mittlere
1
1
Betriebe
1
pos
NN
[...]
[...]
[...]
1
lemma
Betrieb
1
morph
Nom.Pl.Masc
facts
node
id
token_index
span
node_anno_name
node_anno_value
0
0
mittlere
pos
ADJA
0
0
mittlere
lemma
mittel
0
0
mittlere
morph
Pos.Nom.Sg.Masc
1
1
Betriebe
pos
NN
1
1
Betriebe
lemma
Betrieb
1
1
Betriebe
morph
Nom.Pl.Masc
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
26
Das MehrebenenSuchtool ANNIS für
Entwickler
●
weitere Probleme
weitere Duplizierungen falls Knoten mehrere
Kanten besitzen
●
viele NULL-Werte in ungenutzten Spalten
●
Indizes werden unnötig groß
●
duplizierte Tupel in Ergebnismenge machen
DISTINCT notwendig (sehr teuer bei vielen
Ergebnissen)
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
27
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
●
Gegenmaßnahmen
(1)
Anfragen zu Präzedenz und abgedecktem Text
werden nicht über Graphanfragen beantwortet
–
token_index: Index eines Token in der Kette aller
Token
–
left_token/right_token: Index des am weitesten
linken/rechten abgedeckten Token
Beispiel:
node . node →
n1.right_token + 1 = n2.left_token
erlaubt die Löschung der Coverage-Kanten
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
28
Das MehrebenenSuchtool ANNIS für
Entwickler
●
partionierte Indizes
●
„sample“ Spalten
●
Gegenmaßnahmen
(2)
–
für jeden Knoten und jede Knotenannotation wird für
genau eines der Tupel die „n_sample“ bzw. „na_sample“
Spalte auf TRUE gesetzt
–
bei Anfragen, die nur auf „node“ bzw. „node_annotation“
arbeiten, entstehen keine Duplikate, wenn nach der
sample-Spalte gefiltert wird
z.B. pos=“ART“ & pos=“NN“ & #1 . #2
partionierte Faktentabelle (pro Korpus)
http://www.postgresql.org/docs/9.1/static/ddl-partitio
ning.html
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
29
Das MehrebenenSuchtool ANNIS für
Entwickler
Partionierte Tabellen
●
Elterntabelle „facts“
●
für jedes Korpus: facts_<id>
●
–
erbt von Elterntabelle
–
Constraint corpus_ref = <id>
SELECT * FROM facts
WHERE corpus_ref IN (1, 2)
→ Anfrage wird nur auf facts_1 und facts_2
ausgeführt
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
30
Das MehrebenenSuchtool ANNIS für
Entwickler
●
benutzter Index größer als der verfügbare
Hauptspeicher („shared buffer“) →
Performance bricht ein
–
●
PostgreSQLEigenheiten
Faktentabelle verursacht aber große Indizes
Nutzung der Statistik der Elterntabelle (über
alle Korpora gemittelt) anstatt der selektierten
Kindertabellen
→ Statistik wird stark verzerrt
–
Workaround: bei Anfrage auf nur einem Korpus
direkt „facts_<id>“ abfragen
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
31
Das MehrebenenSuchtool ANNIS für
Entwickler
●
Statistik-Probleme
(1)
Fehler in der Abschätzung der Größe der
Zwischenergebnisse führen zu
–
nicht-optimaler Join-Reihenfolge
–
Auswahl ungeigneter Join-Implementierung (z.B.
Nested-Loop Join anstatt Merge Join bei zu kleiner
Schätzung)
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
32
Das MehrebenenSuchtool ANNIS für
Entwickler
●
in PostgreSQL wird für Spalten immer
statistische Unabhängigkeit angenommen
–
●
Einschränkung auf node_annotation_name und
node_annotation_value multipliziert die Selektivität
beider Spalten
Problem: Annotationschemata haben feste Werte
–
●
Statistik-Probleme
(2)
beim Wert „NP“ weiß man fast sicher, dass der Name
„cat“ ist
diese Abhängigkeit kann in PostgreSQL nicht
modelliert werden
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
33
Das MehrebenenSuchtool ANNIS für
Entwickler
●
Statistik-Probleme
(3)
Lösungsansatz:
–
Speicherung von Name und Wert in einer Spalte
–
z.B. als String „cat:NP“
–
oder als ID mit externer Tabelle aller
Annotationskombinationen
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
34
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
Potential für
Verbesserungen (1)
Annotationsarten haben verschiedene
strukturelle Grapheigenschaften
Beispiele:
●
●
●
●
Spannen sind immer Bäume mit maximaler Höhe 1
Token-Präzedenz lässt sich als Pfad ausdrücken (jeder
Knoten hat maximal eine Ausgangs- und eine
Eingangskante)
Dependenzgraphen sind keine DAGs sondern echte
Bäume
etc.
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
35
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
●
Potential für
Verbesserungen (2)
ANNIS hat eine Spezialbehandlung nur für
Präzedenz und Abdeckung
(token_index/left_token/right_token)
ansonsten immer gleiche Implementierung über
pre/post-Order
Statistik über Graphen (z.B. durchschnittlicher
fan-out) wird nicht von PostgreSQL benutzt
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
36
Das MehrebenenSuchtool ANNIS für
Entwickler
Ausblick und Lösungsmöglichkeiten
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
37
Das MehrebenenSuchtool ANNIS für
Entwickler
●
Ausblick (1)
Nutzung einer Graphdatenbank wie neo4j?
–
auf Traversierung optimiert
–
nutzt keine Indizes auf der Struktur des Graphen,
z.B. pre/post-Order für Bäume oder Ferrari-Index
(Seufert, 2013)
–
Anfragen in der Cypher-Anfragesprache müssen
mit Domainenwissen manuell optimiert werden
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
38
Das MehrebenenSuchtool ANNIS für
Entwickler
●
Ausblick (2)
Implementierung einer spezialisierten linguistischen
Suchmaschine, die auf Graphen basiert?
–
auch größere Korpora können bei effektiver Kodierung
im Hauptspeicher gehalten werden
–
Trennung in einen Speicher für Annotationen auf Knoten
und mehrere Speicher für jede Kantenart
–
jede Kantenart erhält eine spezifische Implementierung
des Kantenspeichers
–
jeder Typ von Kantenspeicher nutzt spezifische
Grapheigenschaften einer Annotationsart für die
effiziente Implementierung aus
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
39
Das MehrebenenSuchtool ANNIS für
Entwickler
Knotenspeicher
Ausblick (3)
Kantenspeicher 1
Token
Typ: Pfad
Kantenspeicher 2
Syntax
Typ: Baum
Modul zur
Abarbeitung der Anfrage
Kantenspeicher 3
Dependenz
Typ: Baum
Kantenspeicher 4
Topic
Typ: Spanne
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
40
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
Prototyp
erster rudimentärer Prototyp in C++ für dieses
Konzept
bisher implementiert
–
Import des ANNIS-Formats
–
schnelles Speichern und Laden der internen
Datenstrukturen (B+ Bäume)
–
Speicher für Knotenannotationen
–
Fallback-Kantenspeicher basierend auf Tiefensuche
–
Kantenspeicher für Pfade (z.B. Präzedenz)
–
Testfälle mit manuell implementierten Suchanfragen
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
41
Das MehrebenenSuchtool ANNIS für
Entwickler
Knoten
Knotenannotationen
Kanten
Kantenannotationen
Hauptspeicher
Prototyp
Tabellen- und
Indexgröße ANNIS 3.1
Prototyp Speicherverbrauch
Ridges Version 4.0
1.118.265
2.236.530
6.828.356
0
~300 MB
Tiger2
1.262.014
5.189.762
4.672.816
2.204.630
~600 MB
424 MB (Tabelle)
2276 MB (Index)
967 MB (Tabelle)
4696 MB (Index)
Kanten und Kantenannotationen inklusive Präzedenz und Abdeckung
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
42
Das MehrebenenSuchtool ANNIS für
Entwickler
Korpus
AQL
Anzahl
Treffer
Prototyp Anfragegeschwindigkeit
Ausführungszeit
ANNIS 3.1
Prototyp
Pfad-Kantenspeicher
Prototyp
Tiefensuche
0,5 Sekunden
0,6 Sekunden
0,6 Sekunden
4 Sekunden
0,6 Sekunden
0,7 Sekunden
0,5 Sekunden
0,7 Sekunden
Tiger2
cat
RIDGES
v4.0
pos="NN" 21.911
.2,10
pos="ART"
RIDGES
v4.0
tok .2,10 1.386.828 362 Sekunden
tok
373.436
gemessen auf Intel i7-4800MQ CPU @ 2.70GHz, alle PostgreSQL-Daten im HauptspeicherCache
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
43
Das MehrebenenSuchtool ANNIS für
Entwickler
Vielen Dank für die
Aufmerksamkeit!
Gibt es Fragen oder Vorschläge?
[email protected]
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
44
Das MehrebenenSuchtool ANNIS für
Entwickler
●
●
●
●
Literatur
Grust, T.; Keulen, M. V. and Teubner, J. (2004). Accelerating
XPath evaluation in any RDBMS, ACM Transactions on
Database Systems (TODS).
Rosenfeld, V. (2010). An implementation of the Annis 2 query
language, Technical report, Humboldt-Universität zu Berlin.
Seufert, S.; Anand, A.; Bedathur, S. and Weikum, G. (2013).
Ferrari: Flexible and efficient reachability range assignment for
graph indexing, Data Engineering (ICDE), 2013 IEEE 29th
International Conference on : Seiten 1009-1020.
Zipser, F.; Romary, L. (2010). A model oriented approach to
the mapping of annotation formats using standards, Workshop
on Language Resource and Language Technology Standards,
LREC 2010.
Lizenz:
Creative Commons Namensnennung
4.0 International
Thomas Krause, HU Berlin
LAUDATIO Workshop 2014-10-07
45
Herunterladen