-
Notifications
You must be signed in to change notification settings - Fork 2
Wikidata Matchingverfahren
Um wie hier beschrieben, Wikidata für die Ortsverschlagwortung in der NWBib benutzen zu können, müssen zunächst die in der NWBib enthaltenen Textstrings (derzeit in lobid im Feld "coverage" enthalten) auf Wikidata-Einträge gematcht werden. Auf dieser Wikiseite wird das dabei angewendete Verfahren sowie seine Ergebnisse beschrieben.
Die folgende Übersicht stellt dar, zu welchen Notationen es überhaupt GSW gibt, wieviele das jeweils sind und welche distinkten Strings (GSW) vergeben sind.
Notation | Content | # Titel mit Notation | # Titel mit zusätzlicher GSW | enthaltene Textstrings | n/a/m |
---|---|---|---|---|---|
99 | Städte, Kreisfreie Städte, Gemeinden, Ortsteile plus teilweise Stadtbezirke und (leider auch andere wie z.B. Klöster etc.) | 276139 | 276139 | hier | a |
97 | (Land)Kreise | 14368 | 14429 | hier | a |
96 | Regierungsbezirke | 1562 | 1565 | hier | a |
74 | Kleinere weltliche Territorien in Westfalen | 534 | 515 | hier | m |
72 | Kleinere geistliche Territorien in Westfalen | 41 | 39 | "Hochstift Corvey" (38), "Höxter" (8), "Corvey" (2), "Herford (Reichsstift)" (1) | m |
54 | Kleinere weltliche Territorien im Rheinland | 130 | 109 | hier | m |
52 | Kleinere geistliche Territorien im Rheinland | 51 | 37 | "Stift Essen" (26), "Kloster Werden" (6), "Reichsabtei Kornelimünster" (4), "Reichsabtei Burtscheid" (2) | m |
37 | Katholische Kirche. Dekanate | 28 | 28 | hier | n |
36 | Katholische Kirche. Diözesen | 1993 | 1969 | hier | a |
35 | Evangelische Kirche. Kirchenkreise | 212 | 200 | hier | a |
28 | Eifel | 2715 | 688 | "Nordeifel" (389), "Hohes Venn" (130), "Monschauer Land" (76), "Rureifel" (52), "Kalkeifel (33), "Mechernicher Voreifel" (13), "Kalterherberg" (1), Eifel" (1) | m |
24 | Niederrhein-Gebiet | 6333 | 1259 | hier | |
14 | Sauerland | 3173 | 512 | hier | |
12 | Weserbergland | 1850 | 1469 | hier | |
10 | Westfälische Bucht | 4521 | 4313 | hier |
Im hbz wurde für das Matching folgendes Verfahren entwickelt:
- Alle Verwaltungseinheiten in NRW werden per SPARQL mit dieser Query aus Wikidata abgezogen.
- Mit den Wikidata-Enträgen aus 1.) wird ein Elasticsearch-Index gebaut, in dem sich folgende Informationen wiederfinden: Wikidata-ID, Typ, Name und Aliasse des Eintrags (nur die deutschsprachigen), Geokoordinaten sowie der Name der übergeordneten Verwaltungseinheit. Ein Beispiel:
{
"hits":{
"total":1,
"max_score":6.1295004,
"hits":[
{
"_index":"geo_nwbib-20180626-0909",
"_type":"wikidata-geo",
"_id":"Q897382",
"_score":6.1295004,
"_source":{
"spatial":{
"id":"http://www.wikidata.org/entity/Q897382",
"label":"Ehrenfeld",
"geo":{
"lat":50.9464,
"lon":6.91833
},
"type":[
"http://www.wikidata.org/entity/Q15632166"
]
},
"aliases":[
{
"language":"de",
"value":"Köln/Ehrenfeld"
},
{
"language":"de",
"value":"Köln-Ehrenfeld"
}
],
"locatedIn":{
"language":"de",
"value":"Köln-Ehrenfeld"
}
}
}
]
}
}
- Beim Aufbau des lobid-Indexes wird der Suchindex aus 2.) mit den Orts-Texteinträgen aus der NWBib abgefragt, wobei die Suche für eine bestimmte Notation auf einen oder mehrere Wikidata-Klassen beschränkt wird (siehe https://git.io/fNsLq). Das erste Ergebnis wird – soweit es einen Score von > x hat – in die lobid Daten übernommen.
Bei der schrittweisen Verbesserung des Verfahrens wurde die Gewichtung der einzelnen Felder angepasst. Momentan wird das Label etwa fünfmal so stark gewichtet wie variante Name, die wiederum doppelt so stark gewichtet sind wie das Label der übergeordneten Einheit (siehe die momentane ElasticSearch-Indexing-Konfiguration).
Mit diesem Matchingverfahren und einem Mindestscore wird von den 289.607 NWBib-Titeln mit coverage-Feld 287.242 Titeln ein Wikidata-Eintrag zugeordnet, das sind über 99%. Die Matchings sind dokumentiert in einer CSV-Datei, die alle gematchten Strings, deren Vorkommen in den Daten, die gematchtete QID und den Score enthält.
Es gibt 2365 Titel ohne Wikidata-Match** (1014 Textstrings). Hier eine Liste der nicht gematchten Textstrings nach der Häufigkeit ihres Vorkommens in NWBib-Titeln sortiert. Die Ursache von Nicht-Matchings ist zumeist, dass die entsprechende Einheit nicht (mehr) eine von den administrativen Einheiten ist, die für das Matching von Wikidata geholt werden (Regierungsbezirk, Landkreis, kreisfreie Stadt, Gemeinde, Ortsteil, Stadtteil von Düsseldorf oder Köln) oder dass es schlicht keinen entsprechenden Wikidata-Eintrag gibt. Unten gibt es eine strukturierte Übersicht über die Ursachen für ein nicht erfolgtes Matching.
Die Ergebnisse sind zu einem großen Teil sehr zufriedenstellend. Wir gehen davon aus, dass die meisten Matchings automatisiert übernommen werden können.
Wir haben alle Matchings von Strings mit einem Vorkommnis in NWBib-Titeln von ≥20 überprüft. Derzeit ist der höchste Score eines nicht (ganz) korrekten Matchings – die genannte Landkreisproblematik ausgenommen – 3,88. Das Problem ist hier aber nicht das Verfahren, sondern dass es schlicht keinen vollständig zum String passenden Eintrag in Wikidata gibt. (In diesem Fall wurde "Köln-Süd" auf Neustadt-Süd, Köln gematcht, was ja nicht unbedingt falsch ist. Es gibt einfach keine Verwaltungseinheit names "Köln-Süd", weshalb der Match eigentlich besser nicht sein kann.)
Das heißt, dass ein niedriger Matchingscore Hinweis auf Strings sein kann, zu denen es – aus verschiedenen Gründen – keinen passenden Wikidata-Eintrag einer Verwaltungseinheit in NRW gibt.
- Stadtbezirke von Wuppertal
- Vohwinkel (Stadtbezirk von Wuppertal) wird derzeit gematcht auf http://www.wikidata.org/entity/Q15110959
- Wuppertal-Ronsdorf, derzeit http://www.wikidata.org/entity/Q15111937
- Wuppertal-Cronenberg, derzeit http://www.wikidata.org/entity/Q1140913
- ...
- Remscheid-Lennep -> http://www.wikidata.org/entity/Q18923118
- Stadtbezirke von Bonn
- Bonn-Beuel, derzeit http://www.wikidata.org/entity/Q2130101
- Bonn-Bad Godesberg, derzeit http://www.wikidata.org/entity/Q1279445
- ...
- Stadtbezirke von Velbert (außer Neviges)
- "Graefenthal " und "Goch-Gräfenthal"
- Rees-Schledenhorst -> https://www.wikidata.org/wiki/Q1775996
- Weilerswist-Vernich -> https://www.wikidata.org/wiki/Q1012061
- Groß Vernich -> https://www.wikidata.org/wiki/Q1012061
- Aspel, Rees -> https://de.wikipedia.org/wiki/Haus_Aspel
- Rüthen-Körtlinghausen -> https://www.wikidata.org/wiki/Q1595804
- Reuschenberg <Elsdorf, Erftkreis> -> https://www.wikidata.org/wiki/Q15790363
- Erkrath-Neandertal -> https://www.wikidata.org/wiki/Q47012158
- "Engelskirchen-Braunswerth" -> Villa, siehe https://www.wikidata.org/wiki/Q15852896
- Köln-Michaelshoven -> Diakonie, siehe https://www.wikidata.org/wiki/Q1208265
- Wuppertal-Burgholz -> Wald: https://www.wikidata.org/wiki/Q1355524
- Halle-Tatenhausen -> Wald/Naturschutzgebiet: https://www.wikidata.org/wiki/Q2395497
- Viersen-Johannistal -> Klinik: https://de.wikipedia.org/wiki/Heil-_und_Pflegeanstalt_S%C3%BCchteln-Johannistal_%E2%80%93_Abteilung_Waldniel
- Solingen-Rupelrath -> Pfarre/Kapelle: https://www.wikidata.org/wiki/Q1566786
- Wülfrath-Oberdüssel -> Gemarkung: https://www.wikidata.org/wiki/Q2123445
- Ennepetal-Milspe
- Gladbeck-Butendorf
- "Sevelen " und "Issum-Sevelen" (Issum ist vorhanden: https://www.wikidata.org/wiki/Q243337)
- Sennelager-Thune (Sennelager gibt es: https://www.wikidata.org/wiki/Q883649)
- Mönchengladbach-Hermges
- Heid <Wenden, Olpe>
- Hagen-Nahmer
- "Arrode <Werther, Westfalen>" bzw. "Werther-Arrode"
- Kirchlinde
- Heiligenhaus-Hofermühle
- Remscheid-Bliedinghausen
- Köln-Hohenlind
- Feldhausen
- Ahle
- Spork <Bocholt, Borken, Borken>
- Rahm
- Müssingen
- Mönchengladbach-Geistenbeck
- Hagen-Halden
- Gerlingen <Wenden, Olpe>
- Esbeck
- Barendorf
- Anröchte-Klieve
- Wunderthausen-Diedenshausen (Für Wunderthausen und Diedenshausen existieren separate Einträge)
- Stockum
- Soest-Ardey
- Recklinghausen-Hillen
- Münster-Gittrup
- Köln-Severinsviertel
- Herscheid-Kiesbert
- Hagen-Oege
Wurden mittlerweile ergänzt, siehe https://github.com/hbz/lobid-resources/pull/854
- Kamp <Düsseldorf>
- Hamm-Nord -> vielleicht "Hamm-Norden" (https://www.wikidata.org/wiki/Q19687910)?
- Hagen-Kabel
- Bonn- Bad Honnef
- Grevenbroich-Welchenberg (ist Berg, Pfarrei, Kloster, Kinderheim...)