<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Autocorrection | museum-digital: blog</title>
	<atom:link href="https://blog.museum-digital.org/tag/autocorrection/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.museum-digital.org</link>
	<description>A blog on museum-digital and the broader digitization of museum work.</description>
	<lastBuildDate>Mon, 27 Nov 2023 14:10:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.museum-digital.org/wp-content/uploads/2020/01/cropped-mdlogo-code-512px-32x32.png</url>
	<title>Autocorrection | museum-digital: blog</title>
	<link>https://blog.museum-digital.org</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search museum-digital: blog" href="https://blog.museum-digital.org/wp-json/opensearch/1.1/document" />	<item>
		<title>Automatically enforcing consistent naming of places</title>
		<link>https://blog.museum-digital.org/2023/11/27/automatically-enforcing-consistent-naming-of-places/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Mon, 27 Nov 2023 14:10:12 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Autocorrection]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3978</guid>

					<description><![CDATA[Last week I wrote about how new actors find their way into museum-digital&#8217;s controlled vocabulary for actors during imports. One of the first steps detailed in the post is the automatic cleanup of the actor&#8217;s name and the application of some rules to ensure a consistent naming of actors. For time names a much more <a href="https://blog.museum-digital.org/2023/11/27/automatically-enforcing-consistent-naming-of-places/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Last week I wrote about how new actors find <a href="https://blog.museum-digital.org/2023/11/22/importing-actors/">their way into museum-digital&#8217;s controlled vocabulary for actors during imports</a>. One of the first steps detailed in the post is the automatic cleanup of the actor&#8217;s name and the application of some rules to ensure a consistent naming of actors.</p>



<p>For time names a much more extensive cleaning is done, both in the case of imports and when working directly in musdb. Time names in the sense of the controlled vocabulary of museum-digital describe clearly defined times. This may be timespans, years, or full dates. But the number of possible input values is thus already significantly limited. In fact, it is small enough, and timespans, years, etc. are uniform enough to allow the automatic parsing of time names. Where that is possible, they are automatically rewritten to their default form in the controlled vocabulary and automatically translated to some 30 languages.</p>



<p>In the case of place names a similar cleaning and consolidating of place names was limited to the simple stripping of leading and trailing spaces and commas and the removal of indicators for uncertainty (e.g. trailing question marks). Since the weekend, place names are more extensively rewritten to ease the work of the vocabulary editors and ensure a more immediately consistent data entry both in musdb and when importing.</p>



<h2 class="wp-block-heading">General rewriting</h2>



<h3 class="wp-block-heading">1. Simple spelling issues</h3>



<p>The very first step in rewriting entered place names remains the removal of superfluous characters. As such, duplicate white spaces, trailing commas, etc. are removed.</p>



<p><strong>Example</strong>: <code>, Berlin ,</code> &gt; <code>Berlin</code></p>



<h3 class="wp-block-heading">2. Removal of indicators for uncertainty</h3>



<p>Next, known indicators for uncertainty are used to update the dedicated flag describing the certainty of the link to the place and then stripped. As they indicate the relation between object and place, they are not actually part of the place name and can thus be removed safely.</p>



<p><strong>Example 1</strong>: <code>Berlin ?</code> &gt; <code>Berlin</code><br><strong>Example 2</strong>: <code>Maybe Budapest</code> &gt; <code>Budapest</code></p>



<h3 class="wp-block-heading">3. Removal of duplicates in enumerations</h3>



<p>Commas are used in input place names in two ways. On the one hand, they may be used to further specify a place name (<code>Beijing, PRC</code>), on the other, they are often used in import data to designate multiple space names at a time (<code>Beijing, Tokyo, Nairobi</code>; this contradicts the logic of a database altogether and needs to be cleaned up manually be the vocabulary editors).</p>



<p>In both cases, duplicate names in the enumeration are superfluous and can be removed.</p>



<p><strong>Example 1</strong>: <code>Berlin, Germany, Germany</code> &gt; <code>Berlin, Germany</code></p>



<h3 class="wp-block-heading">4. Language-dependent rewriting</h3>



<p>The next steps in rewriting entries depend on the language of the entry. In musdb, the language the user set to use musdb is used to guess the language they are entering data in. In the case of imports, the default language of the given instance of museum-digital that a museum imports to is used.</p>



<h4 class="wp-block-heading">4.1. Extension of common abbreviations</h4>



<p>Where there are abbreviations, there are also unabbreviated names. And surely, both will be used. Will inevitably leads to duplicate entries. In the case of some common abbreviations, they are thus automatically rewritten to a canonical form.</p>



<p><strong>Example (German)</strong>: <code>Adalberthstr. 12 (Berlin)</code> &gt; <code>Adalbertstraße 12 (Berlin)</code><br><strong>Example (Hungarian)</strong>: <code>Vaci u. 12 (Budapest)</code> &gt; <code>Vaci utca 12 (Budapest)</code></p>



<h4 class="wp-block-heading">4.2. Reordering names in commas based on indicators for more specific place names</h4>



<p>As stated above (3.), commas may either indicate a specification of a single place, or they may indicate that the entry actually refers to more than one place. Some components of a name can be used to almost certainly determine that the former is the case &#8211; and which place of the given list is the specific one and which one is a superordinate named mainly for clarification. Common such names are &#8220;street&#8221;, &#8220;plaza&#8221;, &#8220;pier&#8221;.</p>



<p>If there is exactly one comma and such a name component is encountered, the entered place name can be rewritten to contain the less specific name only in brackets.</p>



<p><strong>Example (German)</strong>: <code>Berlin, Adalberthstraße 12</code> &gt; <code>Adalbertstraße 12 (Berlin)</code><br><strong>Example (Hungarian)</strong>: <code>Vaci utca 12, Budapest</code> &gt; <code>Vaci utca 12 (Budapest)</code></p>



<p>If both names contain such an indicator, no rewriting is applied. <code>Vaci utca 12, Vaci utca 13</code>&#8216; is thus not rewritten.</p>



<h4 class="wp-block-heading">4.3. Budapest special: Extending the names of districts</h4>



<p>Street names in Budapest are usually referred to including the naming of the district. These districts are referred to in a number of ways. If they are referred to using roman numerals, this is automatically extended to the canonical form.<br>This rewrite is only applied if the language is set to Hungarian.</p>



<p><strong>Example</strong>: <code>Petőfi Sándor utca 3. Budapest, IV.</code> &gt; <code>Petőfi Sándor utca 3. (Budapest, 4. kerület)</code></p>



<h4 class="wp-block-heading">4.4. Reordering names in commas based on country names</h4>



<p>Similar to the rewrites described in 4.2., country names can be used to indicate a hierarchical relationship between two places in a comma-separated list. If one given name is a country name and the other is not, it is likely that the non-country name is part of the given country. The comma can be replaced with brackets while the name can be reordered into the preferred <code>specific (unspecific)</code> form.<br>This check is also applied to names separated by hyphens.</p>



<p><strong>Example (German)</strong>: <code>Budapest, Ungarn</code> &gt; <code>Budapest (Ungarn)</code><br><strong>Example (Hungarian)</strong>: <code>Berlin-Németország</code> &gt; <code>Berlin (Németország)</code></p>



<p>There are however some common cases in which this logic does not apply &#8211; significantly cardinal directions. If one such term is found to be the non-country part, the rewrite is not applied. As such <code>West-Deutschland</code> remains <code>West-Deutschland</code> without being rewritten.</p>



<p>The list of names of countries and historical countries used stems from Wikidata (thanks!).</p>



<h2 class="wp-block-heading">Where do these rewrites apply?</h2>



<p>The rewrites listed above are now implemented in musdb, the import tool, and nodac.</p>



<p>They have also been used to consolidate existing place names, allowing us to identify some 500 duplicate place entries over the weekend (that amounts to almost 0.7 percent of the whole vocabulary). Clearly, identifying similar cases of regularly appearing, varied ways to express the same thing, and determining a canonical way of naming places in such cases holds a lot of potential for reducing the editors workload and improving data quality for everybody.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Importing actors</title>
		<link>https://blog.museum-digital.org/2023/11/22/importing-actors/</link>
					<comments>https://blog.museum-digital.org/2023/11/22/importing-actors/#comments</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Wed, 22 Nov 2023 16:43:03 +0000</pubDate>
				<category><![CDATA[Importer]]></category>
		<category><![CDATA[nodac]]></category>
		<category><![CDATA[Autocorrection]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Imports]]></category>
		<category><![CDATA[Write-ups]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3922</guid>

					<description><![CDATA[A critical part of museum-digital is the usage of shared controlled vocabularies for actors, places, times, and tags. All museums using museum-digital use these same vocabularies for recording the creation of objects, their use, destruction, etc. Similarly, they are used for a rougher tagging of the objects. Only contacts who are recorded purely for internal <a href="https://blog.museum-digital.org/2023/11/22/importing-actors/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>A critical part of museum-digital is the usage of shared controlled vocabularies for actors, places, times, and tags. All museums using museum-digital use these same vocabularies for recording the creation of objects, their use, destruction, etc. Similarly, they are used for a rougher tagging of the objects. Only contacts who are recorded purely for internal purposes &#8211; like the current owners of objects &#8211; are kept in a separate, museum-specific address book.</p>



<p>On the one hand, using shared controlled vocabularies allows for a centralized editing team. Work that&#8217;s been done for one museum is available for all. This allows for a generally higher data quality, improved search options, etc. The only downside to centralized vocabularies is rules: Without everybody following a basic set of rules for the different vocabularies the vocabularies would surely be overcome by chaos quickly.</p>



<p>The two most basic rules are that 1) all entries need to be clearly identifiable and 2) actor names &#8211; from actual people to companies and governments to peoples &#8211; belong to the controlled vocabularies for actors; place names &#8211; cities, countries, streets &#8211; belong to the vocabulary for places, and so on. In effect, this means that an actor entry &#8220;Gaius Iulius Caesar&#8221; (better yet, &#8220;Gaius Iulius Caesar (-100&#8211;44)&#8221;) is a good one. It is clearly identifiable. An actor name &#8220;Bosch&#8221; should not end up in the controlled vocabularies &#8211; there are many people and companies sharing that name. If one means to actually record the German tool maker, one can specify as much using brackets and / or using the full name, e.g. &#8220;Robert Bosch GmbH&#8221; or &#8220;Bosch (tool making company)&#8221;.</p>



<p>musdb comes with selection lists enabling a simple reuse of existing vocabulary entries. Where a term or a name has not yet been recorded in museum-digital&#8217;s controlled vocabularies, the option to import vocabulary data from Wikipedia / Wikidata and the Gemeinsame Normdatei, and alternatively the need to add a description of at least ten characters enforce some level of identifiable and minimally researched entries.</p>



<p>And then there are imports. During imports, there is no way to force importing users to add additional data. To the contrary, especially during data migrations museums import data from different departments and different decades, leaving one with different spellings for the same person and a very varied quality of the recording overall. Importing thus often means bringing unclean, non-uniform data into the vocabularies. Often enough manual cleanup and enrichment are required to make the data usable &#8211; and to stop the &#8220;unclean&#8221; data from disturbing other users, e.g. by appearing in selection lists and then being falsely linked to another museums entries (a classic example are place entries like &#8220;Frankfurt&#8221;. Both Frankfurt an der Oder and Frankfurt am Main are significant places &#8211; how significant they are depends on where a museum may be located. Leaving the unidentifiable place (name) in the database will easily lead to other museums linking the same entry while actually referring to the <em>other</em> Frankfurt).</p>



<p>Automation can however significantly reduce the work of the colleagues manually editing the vocabularies while also allowing their efforts to have longer-lasting internal benefits to the system. The import tool thus features a number of checks to identify the entries actually referred to. Those checks relevant to the import of references to actors will be introduced over the rest of this blog post.</p>



<h2 class="wp-block-heading">Rough outline</h2>



<p>Actors from (or for) the controlled vocabularies usually enter museum-digital by being linked to objects via events. The same usually happens in the case of imports: The import data states that an object was, e.g., created by a given person. This translates to a new event (what happened to the object? And who did it when and where?) being created. The actor of this event is then set based on the provided name, optionally taking into accounts life dates and links to norm data repositories, in so far as they are made available in the import data.</p>



<h3 class="wp-block-heading">Preparation</h3>



<h4 class="wp-block-heading">Cleaning the name</h4>



<p>To identify the actor name, it is first cleaned and made slightly more uniform on a simple level of spelling.</p>



<ul class="wp-block-list">
<li>Leading and trailing spaces, semi colons, tab stops and newlines are removed</li>



<li>Duplicate white spaces are removed</li>



<li>Brackets of the different types (&#8220;()&#8221;, &#8220;{}&#8221;, &#8220;[]&#8221;) are replaced with simple brackets (&#8220;()&#8221;)</li>



<li>Unwanted components / specifiers of a name are removed (e.g. &#8220;mythological creature&#8221; or empty brackets)</li>



<li>Language-specific name components are replaced with their preferred variants in the vocabularies (German: &#8220;d.Ä.&#8221; is extended to &#8220;(der Ältere)&#8221; [the Elder])</li>



<li>Indicators for uncertainty are stripped from the name, e.g. trailing question marks. They are separately used to identify the certainty of an actor link in a dedicated fields that describes exactly that.</li>
</ul>



<p>Thus, a name stated in the import data as &#8220;; Hans Holbein d.Ä.?&#8221; will be imported as &#8220;Hans Holbein (der Ältere)&#8221;.</p>



<h4 class="wp-block-heading">Parsing life dates from the input name</h4>



<p>If no life dates have been provided explicitly in the import data, they may still be included as part of the actor name. Some museums whose database does not feature dedicated fields for an actor&#8217;s date of birth and death will append the years in brackets. Hence, a check is done to see if there are any brackets at the end of the name &#8211; and if so, whether the bracket contains a parsable time span. In this case, the time span identified will be used for the actor&#8217;s life dates and the brackets&#8217; content will removed from the name (it is not actually a part of the actor&#8217;s name after all).</p>



<p>&#8220;Hans Holbein (der Ältere) (1465-1524)&#8221; with no explicitly provided years of birth and death will thus be transformed to &#8220;Hans Holbein (der Ältere)&#8221;, born 1465 and dead since 1524.</p>



<h3 class="wp-block-heading">Identifying the actor</h3>



<p>After preparing the inputted actor data, it is checked against the database in various ways. The listed checks below take place in a chronological order. If one returns a positive result and works to identify the actor, no following checks are run.</p>



<h4 class="wp-block-heading">Checking based on norm data links</h4>



<p>If links to external norm data repositories (the Library of Congress authority files, the National Diet Library, the French National Library, etc.) are provided in the import data, the actor vocabulary at museum-digital is checked whether it contains an entry featuring the same external ID. If that is the case, this actor is doubtlessly identified.</p>



<h4 class="wp-block-heading">Checking global rewrites</h4>



<p>For many names, there are different spellings. Similarly, many people use different names over the course of their lives. But the person referred to stays the same.</p>



<p>As not all names are significant enough to be listed as synonyms in their own right, museum-digital features a global (though language-specific) list of &#8220;permanent rewrites&#8221;. If a museum exported a reference to a &#8220;Julius Caesar&#8221;, this will be automatically rewritten to &#8220;Gaius Iulius Caesar&#8221;, thus identifying the person of the same name.</p>



<p>This central list is built and extended as the vocabulary editors do their work. Whenever two actor entries are merged in <a href="https://en.about.museum-digital.org/software/nodac/">nodac</a>, editors have the option to mark the name of the actor being merged into the other as to be permanently rewritten.</p>



<h4 class="wp-block-heading">Checking institution-level rewrites</h4>



<p>Whenever a new actor entry is added through musdb or by the way of imports, this is marked down in the database. <em>Which museum</em> used <em>what term</em>, resulting in <em>which entry</em>. <em>Which entry</em> may in the future be updated to refer to another. This is most simply explained using an example from the realm of places &#8211; the above-used example of &#8220;Frankfurt&#8221;:</p>



<p>If a museum newly brings &#8220;Frankfurt&#8221; to the controlled vocabulary for places, an additional entry is made in the database to note that the museum was the first to add an entry named &#8220;Frankfurt&#8221;, and that that finally resulted in the creation of a new place with the ID #99999. The object data itself makes it clear that the museum actually referred to &#8220;Frankfurt am Main&#8221; (ID: #217). If the vocabulary editors thus merge &#8220;Frankfurt&#8221; (#99999) with &#8220;Frankfurt am Main&#8221; (#217), this obviously cannot be a permanent rewrite. But the museum-specific log can be updated: The museum entered &#8220;Frankfurt&#8221;, and it referred to the entry #217 (Frankfurt am Main). If the museum thus enters &#8220;Frankfurt&#8221; without any further specification in the future, the importer and musdb can automatically identify Frankfurt am Main as the place actually referred to. The same logic applies to the import of actor data.</p>



<p>This check is obviously based on the assumption of some level of uniformity between different workers at the same museum. If a museum in Frankfurt an der Oder has almost all of their employees referring to Frankfurt an der Oder as the <em>canonical</em> &#8220;Frankfurt&#8221;, except for one, this will obviously backfire. But it is to be hoped that this case is rare enough &#8211; and that such a very different colleague would recognize their own non-conformity and choose to use the full names for both places to be able to clearly document (and communicate overall) with their colleagues.</p>



<h4 class="wp-block-heading">Checking by name and life dates</h4>



<p>If all the above checks did not work, the actor&#8217;s name and life dates are checked against the controlled vocabulary for actors itself. Does anybody with the same name, who was born and died at the provided years, exist in the actor vocabulary (either going by the language-specific translation of the name or by the &#8220;base entry&#8221; of an any language).</p>



<p>If that is not the case, the actor likely does not exist in the database yet.</p>



<h3 class="wp-block-heading">Identification failed. Should a new entry be created?</h3>



<p>If the actor does not exist in the database yet, they need to be added. Maybe.</p>



<p>Some names are known to be in clear conflict with the rules of the vocabulary for actors.</p>



<h4 class="wp-block-heading">Checking the blacklist</h4>



<p>museum-digital keeps a centralized blacklist for actor names that are known to be in clear conflict to the rules of the actor vocabulary. This list mainly contains either deliberately unspecific actor names (&#8220;unknown&#8221;; &#8220;unidentified&#8221;) or very unspecific ones (&#8220;John&#8221; [a random given name without a family name], &#8220;painter&#8221; [the name of a profession, not even of the actor themselves]).</p>



<p>If the entered actor name is contained in this blacklist, the attempt to link any actor to the event is aborted. The free-text note about the event is instead extended to mark that an actor of the blacklisted name was noted to be related to the event.</p>



<h4 class="wp-block-heading">Checking if the actor is actually a place, time, or tag</h4>



<p>A classic problem is vocabulary entries being entered in an unsuitable vocabulary &#8211; often for simple reasons likely colleagues slipping to a wrong column when working with a table calculation program. And thus one is asked to import an actor &#8220;14th century&#8221;.</p>



<p>The &#8220;14th century&#8221; is obviously a time, not an actor. For this, too, there is a centralized list that can be extended using nodac. Whenever the vocabulary editors move an entry from one vocabulary to another, they have the option to mark the entry&#8217;s name as always being of the target type.</p>



<p>Say the 14th century was previously entered as a tag. A vocabulary editor moved the entry to the vocabulary for times and marked the string &#8220;14th century&#8221; as one always referring to a time. If one then attempts to link a new actor &#8220;14th century&#8221;, the import tool can automatically recognize that this name actually refers to a time and link a time instead of an actor to the event. The attempt to add an actor is thus redirected to a different category.</p>



<h3 class="wp-block-heading">All else failed: The actor is being added</h3>



<p>If all the above checks did neither result in identifying a pre-existing record, nor in identifying the input name as invalid in one way or another, the actor is added to the controlled vocabularies and linked to the event. The entry now needs to be cleaned and enriched manually by the vocabulary editors.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2023/11/22/importing-actors/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
