Dieser Suchdienst soll Ereignisdaten mit Sammlungen verknüpfen. Es werden Sammlungsdaten für die Suche verwendet, aber dieses Verhalten könnte mit Dataset-Maschinen-Tags überschrieben werden.
Dieser Dienst könnte die folgenden Parameter erhalten:
Wenn der Datensatz Maschinen-Tags enthält, verwenden wir sie und stoppen die Suche.
Der Dienst sollte zurückgeben, wie gut die Übereinstimmung ist (exakt, unscharf usw.). Exakte Übereinstimmungen treten nur auf, wenn Codes übereinstimmen und IDs übereinstimmen oder nicht widersprüchlich sind (z. B.: nur auf einer Seite vorhanden).
Noch etwas? Gibt es noch andere Parameter, die man berücksichtigen kann?
Ich habe in DEV eine erste Version des Suchdienstes für Sammlungen eingefügt (der die Maschinen-Tags immer noch nicht verwendet), um zu sehen, ob dies das ist, was wir erwartet haben.
Es gibt eine Liste mit Institutionsübereinstimmungen und eine weitere mit Sammlungsübereinstimmungen zurück. Es handelt sich um eine Liste, da Codes nicht eindeutig sind, sodass es Fälle geben kann, in denen wir mehrere Optionen haben können und wir nicht nach einem anderen Feld unterscheiden können.
Für jedes Spiel zeigt es:
exact
oder fuzzy
sein. exact
ist nur, wenn sowohl der Code als auch die Kennung übereinstimmen. Andernfalls sind es fuzzy
.CODE_MATCH
: es ignoriert den Fall nichtIDENTIFIER_MATCH
: es ignoriert den Fall nichtALTERNATIVE_CODE_MATCH
: es ignoriert den Fall nichtNAME_MATCH
: Es ignoriert die Groß-/Kleinschreibung und entfernt Akzente und Leerzeichen, führt jedoch keine Präfix- oder Suffixübereinstimmungen durchPROBABLY_ON_LOAN
: Dies passiert, wenn die Eigentümerinstitution und die Institution nicht identisch sindINST_COLL_MISMATCH
: Dies geschieht, wenn die Institution einer Sammlung nicht in den übereinstimmenden Institutionen vorhanden ist.Wenn es Institutionsübereinstimmungen gibt, stimmt eine Sammlung nur dann ungenau überein, wenn sie zu einer der übereinstimmenden Institutionen gehört. Exakte Sammlungsübereinstimmungen werden immer zurückgegeben.
Sie können diese Beispiele überprüfen, um zu sehen, wie der Dienst funktioniert:
INST_COLL_MISMATCH
PROBABLY_ON_LOAN
Übersehe ich etwas @MortenHofft @timrobertson100 ?
Ich habe die Maschinen-Tag-Prüfung nach dem Format hinzugefügt, das vorerst bereits in Pipelines verwendet wurde:
processing.gbif.org
institutionCode
: ordnet einen Institutionscode einer GrSciColl-Institution zucollectionCode
: ordnet einen Sammlungscode einer GrSciColl-Sammlung zucollectionToInstitutionCode
: ordnet einen Sammlungscode einer GrSciColl-Institution zu. Ich würde es wahrscheinlich in collectionCodeToInstitution
(TBD) umbenennen.institutionToCollectionCode
: ordnet einen Institutionscode einer GrSciColl-Sammlung zu. Ich würde es wahrscheinlich in institutionCodeToCollection
(TBD) umbenennen.Der Wert der Tags sollte dem Muster {key}:{code}
folgen.
Es sieht gut aus - ich bin sehr gespannt, wie es auf tatsächliche Daten angewendet wird.
ausführlich oder nicht
Sollten wir eine "ausführliche" Option wie beim Spezies-Match haben?
Wenn wir uns vorstellen, dass jemand außer den Mitarbeitern dies verwendet, könnte es nützlich sein, nur eine match or none
-Option zu haben. Sagen Sie Plazi, wenn Sie es verwenden, um Links von Sammlungscodes in Artikeln zu erstellen.
// plain lookup - not verbose - will at most return one institution and one collection.
{
institutionMatch: {
matchType: 'NONE'
},
{
collectionMatch: {
matchType: 'FUZZY',
reasons: ['SAME_NAME', 'SAME_CODE', 'SAME_COUNTRY'],
entity: {
...
}
}
}
}
// verbose option
// could be like the one running in dev
{
"institutionMatches": [],
"collectionMatches": [
...
]
}
bei der Benennung
die Artenübereinstimmungs-API verwendet matchType
anstelle von type
und die Cluster verwenden reasons
anstelle von remarks
.
Echte Daten
Bevor ich es mit echten Daten ausführe, frage ich mich, ob es sich lohnen würde, nur die 500 wichtigsten eindeutigen Kombinationen aus Institutionscode/ID, Sammlungscode/ID zu überprüfen und einige davon manuell zu bewerten. Wir könnten etwas lernen (sagen wir, wir müssen versuchen, ID und Code umzudrehen)
Was macht ein Match aus?
Wann, glauben Sie, wird dies ein Match auslösen?
Land als Disambiguator
Wäre es sinnvoll, Land als Suchparameter hinzuzufügen? Bei der Indizierung von Vorkommen könnten wir das Land des Herausgebers hinzufügen, um es eindeutig zu machen, wenn es beispielsweise 2 Übereinstimmungen in der Sammlung gibt? Oder macht man das besser, indem der Verbraucher die Ergebnisse iteriert?
Ich habe gerade versucht, anhand eines CSV-Extrakts, den ich vor einiger Zeit hatte, eine Übereinstimmung herzustellen.
Die CSV-Datei ist eindeutig institutionId, institutionCode, datasetKey, publisherKey
mit einer Vorkommensanzahl für jeden.
Ich habe alles mit mehr als 2500 Vorkommen genommen und versucht, sie mit dem Dienst abzugleichen.
105,871,241 occurrences had a single match
24,553,278 with an exact singular match
27,113,941 occurrences had multiple matches
34,998,066 occurrences had no match
2,374 combinations was tested against the service (multiple can be the same since it included dataset and publisher)
Das ist kein schlechter Anfang. Die Qualität der Matches habe ich allerdings nicht bewertet.
_Was macht eine Übereinstimmung aus?_
Wann, glauben Sie, wird dies ein Match auslösen?
- Nur genau?
- Fuzzy, aber nur ein Ergebnis
- Exakte Institution, aber nur eine unscharfe Sammlung?
Damit meinen Sie die nicht ausführliche Version, in der wir nur 1 Übereinstimmung anzeigen, oder?
Es könnte so etwas sein:
Denkst du, wir sollten auch einen allgemeinen Spielstatus angeben?
_Was macht eine Übereinstimmung aus?_
Wann, glauben Sie, wird dies ein Match auslösen?
- Nur genau?
- Fuzzy, aber nur ein Ergebnis
- Exakte Institution, aber nur eine unscharfe Sammlung?
Damit meinen Sie die nicht ausführliche Version, in der wir nur 1 Übereinstimmung anzeigen, oder?
Ich meinte die Verwendung in Pipelines zum Zuweisen von GrSciColl-IDs zu Vorkommen. Ich hatte mir vorgestellt, dass dieser Service die Entscheidung und alle Logik beinhaltet. Wie funktioniert es bei anderen Suchdiensten?
Das erinnert mich daran, dass Sie neulich erwähnt haben, dass Sie erwogen haben, alle übereinstimmenden IDs zum Vorkommensindex hinzuzufügen.
Ich denke, es gibt 2 mögliche Versionen:
Ich bin eher für Version 2. Hinzufügen einer GrSciColl-ID zu einem Vorkommen nur, wenn wir 1 sichere Übereinstimmung haben. Keine Reihe von Kandidatenübereinstimmungen. Und wenn wir mehr Übereinstimmungen wollen, wenden wir uns an die Verlage, um entweder GrSciColl oder den Vorkommen bessere Kennungen hinzuzufügen. Oder wir fügen den Datensätzen gegebenenfalls Maschinen-Tags hinzu.
Wenn es sinnvoll ist, alle Kandidaten indizieren zu lassen, könnten wir dann ein separates Feld dafür in Betracht ziehen?
Sollte Der Dienst Flags zurückgeben. FUZZY COLLECTION CODE-ÜBEREINSTIMMUNG. KEINE SAMMLUNGSCODE-ÜBEREINSTIMMUNG. Ähnlich wie beim Art-Match-Service.
Ich kann mir diese Flaggen vorstellen:
AMBIGUOUS_INSTITUTION
: mehr als 1 Institution wurde gefunden und wir konnten das Unentschieden nicht lösenAMBIGUOUS_COLLECTION
: wie oben, aber für SammlungenFUZZY_INSTITUTION_MATCH
: 1 Institution stimmte überein, aber verschwommenFUZZY_COLLECTION_MATCH
: wie oben, aber für SammlungenINSTITUTION_NAME_USED
: Das Feld institutionCode
enthält den Institutionsnamen anstelle des CodesOWNER_INSTITUTION_NAME_USED
: wie oben, aber für die EigentümerinstitutionCOLLECTION_NAME_USED
: wie oben, aber für SammlungenNO_COLLECTION_CODE_MATCH
: Der angegebene Code stimmt nicht übereinNO_INSTITUTION_CODE_MATCH
: wie obenNO_COLLECTION_ID_MATCH
: Die angegebene ID stimmt nicht übereinNO_INSTITUTION_ID_MATCH
: wie obenINSTITUTION_COLLECTION_MISMATCH
: Die gefundene Sammlung gehört nicht zur passenden InstitutionBEARBEITEN: Die INSTITUTION_NAME_USED
können möglicherweise entfernt und nur die FUZZY_INSTITUTION_MATCH
für diese Fälle verwendet werden. Ich wüsste nicht, was für Verlage nützlicher wäre
Ich mag es – ich habe den Eindruck, dass viele Verlage diese Flaggen schätzen und danach handeln. Dies gibt ihnen die Einblicke, um Daten zu ändern und den Abgleich zu verbessern.
Der Dienst gibt jetzt eine Antwort zurück wie:
{
"institutionMatch": {
...
},
"collectionMatch": {
...
},
alternativeMatches {
institutionMatches: []
collectionMatches: []
}
}
Die alternativen Übereinstimmungen werden nur angezeigt, wenn der Parameter verbose
auf „true“ gesetzt ist. Die Fuzzy-Matches sind aus Performance-Gründen auf 20 Ergebnisse begrenzt.
Es wurde auch ein Country
-Parameter hinzugefügt, der verwendet wird, um Bindungen zu lösen: http://api.gbif-dev.org/v1/grscicoll/lookup?institutionCode=BR&country=BE&verbose=true
Eine Übereinstimmung findet statt, wenn eine dieser Bedingungen erfüllt ist:
Darüber hinaus werden Institutionen, deren Eigentümerinstitution sich von der Institution unterscheidet, nicht als Übereinstimmung angesehen. Auch Sammlungen, deren Institution nicht mit der von der Institution akzeptierten Übereinstimmung übereinstimmt, werden ebenfalls nicht als Übereinstimmung angesehen.
Ich habe die Flags nicht hinzugefügt, sondern stattdessen ein Statusfeld:
ACCEPTED
: akzeptierte ÜbereinstimmungAMBIGUOUS
: Es wurde mehr als 1 Ergebnis gefunden und wir konnten das Unentschieden nicht brechenAMBIGUOUS_MACHINE_TAGS
: wie oben, aber mit Maschinen-Tag-ÜbereinstimmungenAMBIGUOUS_OWNER
: Es gibt Ergebnisse, die aber nicht mit dem Eigentümer der Institution übereinstimmen, daher überspringen wir sie, um keine Links zu Leihsammlungen zu erstellenAMBIGUOUS_INSTITUTION_MISMATCH
: Es gibt Fuzzy-Matches, die aber nicht zu der passenden Institution gehörenDOUBTFUL
: Die gefundene Übereinstimmung ist unscharfDer Rest der Flags kann aus dem Feld reasons
des Spiels abgeleitet werden. Über dieses Feld können Probleme in Pipelines festgelegt werden.
Ich habe aus unseren Daten in PROD Kombinationen dieser Felder extrahiert, die in mehr als 1000 Datensätzen vorhanden sind:
v_institutionid
v_institutioncode
v_ownerinstitutioncode
v_collectioncode
v_collectionid
datasetkey
Außerdem habe ich das Land aus der Verlagsorganisation des Datensatzes übernommen.
Dann habe ich sie an den Suchdienst in UAT weitergegeben. Die Ergebnisse befinden sich in dieser Tabelle
Hilfreichster Kommentar
Ich habe gerade versucht, anhand eines CSV-Extrakts, den ich vor einiger Zeit hatte, eine Übereinstimmung herzustellen.
Die CSV-Datei ist eindeutig
institutionId, institutionCode, datasetKey, publisherKey
mit einer Vorkommensanzahl für jeden.Ich habe alles mit mehr als 2500 Vorkommen genommen und versucht, sie mit dem Dienst abzugleichen.
Das ist kein schlechter Anfang. Die Qualität der Matches habe ich allerdings nicht bewertet.