Propositions de la TEI pour l'indexation:
encodage de texte ou encodage de donnée ?
Lou Burnard
C'est quoi, l'indexation?
Un index, au sens classique, fournit une manière de flècher au sein d'un texte continu :
- des passages d'interêt, caracterisés d'une manière quelconque
- des références à des unités lexicales ayant un intérêt sémantique
- notamment les noms de lieux, de personnes, des évènements, ou des objets etc
Un index est donc un ensemble (d'habitude organisé et structuré) de pointeurs, chacun contenant un label, et une déscription
Balisage et indexation
‘Markup reflects a theory of text’ (Sperberg-McQueen, 1991)
On pourrait considérer que l'acte même de balisage serait une forme d'indexation...
- en balisant, nous choissisons une partie d'un texte et nous la catégorisons d'une manière quelconque
- ces catégories pourraient très bien correspondre avec les termes d'un index
Mais c'est habituel de distinguer
- l'annotation (le surajout des catégorisations) de
- l'indexation (l'indication des locations textuelles auxquelles ces catégorisations s'appliquent)
La balise <index>
La TEI propose un élément spécifique pour faciliter la création d'un index classique
- à chaque point de répérage ciblé par l'index on met une balise <index>
- on précise par un <term> l'entrée sous lequel on souhaite indexer ce point
- les <index> peuvent s'imbriquer
... The Tangerine Dream (où officiaent deux danseuses du ventre Zazou et Asiza)...
<p>... The Tangerine Dream <index>
<term>
<hi>Tangerine Dream</hi> Cabaret
parisien</term>
</index> (où officiaent deux danseuses du ventre Zazou et Asiza)...
<index>
<term>ZAZOUA danseuse du ventre</term>
</index>
<index>
<term>ASIZA danseuse du ventre</term>
</index> ... </p>
L'attribut
indexName permet de spécifier un index particulier:
<p>... The Tangerine Dream <index indexName="Index-des-lieux">
<term>
<hi>Tangerine
Dream</hi> Cabaret parisien</term>
</index> (ou officiaent deux danseuses du
ventre Zazou et Asiza)... <index indexName="Index-des-personnes">
<term>ZAZOUA danseuse
du ventre</term>
</index>
<index indexName="Index-des-personnes">
<term>ASIZA danseuse du ventre</term>
</index>
... </p>
On peut aussi specifier une hierarchie des termes :
<p>... The Tangerine Dream <index>
<term>Cabaret parisien</term>
<index>
<term>Tangerine Dream</term>
</index>
</index>...</p>
<p> ... Le Petit Casino <index>
<term>Cabaret parisien</term>
<index>
<term>Petit Casino</term>
</index>
</index>
</p>
Attention: comme ailleurs, la prise en charge de la création des indexes à partir de cette balisage n'est pas assurée par la TEI!
Indexation et représentation des expressions référentielles
- Pour construire un index des phrases démotiques ou exotiques, des passages jolis, des paragraphes controversés etc., l'usage de <index> peut tres bien suffir.
- Mais il n'est pas aussi bien adapté au cas plus typique: la construction d'un index des expressions référentielles
- Par ‘expression référentielle’ nous entendons tout mot ou phrase qui fait référence à une entité (une personne, un evenement, un lieu) dans le monde, par ex. un nom propre, un titre, etc.
- L'identification et l'annotation des expressions référentielles servent à traverser une frontière importante: des mots constitutifs d'un texte jusqu'aux entités signallées par ce texte... voire sa sémantique.
Révéler la vraie sémantique d'un document ... la rêve des indexeurs
Sommaire des propositions de la TEI pour les expressions référentielles
Quelques exemples des expressions qu'on pourrait souhaiter distinguer/annoter/indexer
<name>Nancy</name> est adorable...
<placeName>Nancy</placeName> est ma ville préférée ...
<rs>Elle</rs> est jolie.
- signaller la présence d'une référence : <name> et <rs>.
- distinguer plus nettement le type de référence : <persName>, <placeName>, <orgName> ...
- distinguer les composants de ces références (par ex <surname>, <location>, <addName> etc.)
- associer une référence avec un ensemble d'information concernant son référent (<person>, <place> etc.)
- pour la désambiguïser
- pour la sémanticiser
Grosse question : comment s'exprime la sémantique du balisage TEI ?
Encodage des références (1)
Un élément très générique est disponible en TEI : il s’agit de <rs>, qui signifie « expression référentielle » (referencing string)
Il peut contenir un nom propre, mais aussi un pronom, une périphrase, ou toute autre façon de référencer un objet identifiable
<rs>le président de la république</rs>
<rs>la personne que j'ai rencontrée dans la rue</rs>
<rs>sa ville préférée</rs>
Mais ceux-ci sont peut-etre plus douteux:
<p> D'<rs>une ville inconnue</rs> elle s'est
retirée dans une <rs>thébaïde</rs>
</p>
<rs>: une balise qui fait tout
<rs type="org">La famille</rs> s'était alors retirée en banlieue, à
<rs type="place">Villemomble</rs>, mais <rs type="person">Alfred</rs>
aimait se rendre à <rs type="place">Paris</rs> et
<date>un jour de 1917</date> alors qu'il sortait de
<rs type="place">la musée des Arts et Métiers</rs> il était tombé
inanimé dans <rs type="place">la rue</rs>....
Attention: les valeurs de l'attribut type ne sont pas forcément contrôlés de la TEI
Un élément plus spécifique existe pour distinguer les noms propres des autres types de référence: <name>...
<rs type="org">La famille</rs> s'était alors retirée en banlieue, à
<name type="place">Villemomble</name>, mais <name type="person">Alfred</name>
aimait se rendre à <name type="place">Paris</name> et <date>un jour de 1917</date>
alors qu'il sortait de <rs type="place">la musée des Arts et Métiers</rs> il était
tombé inanimé dans <rs type="place">la rue</rs>.
Des éléments plus précises...
Au lieu d'une balise <name type="xxx">, la TEI propose une balise <xxxName>
- <persName> : nom de personne
- <placeName> : nom de lieu
- <orgName> : nom d'organisation
- <geogName> : nom d'un entité geographique
Quel est l'interêt de ce type d'encodage (dite "sémantique")?
- mise en relation des textes
- traitement type TAL, cartographie, indexation...
- optimisation de recherche et moteur de recherche sémantique
- production de savoir par inférence (classification de documents par exemple)
- ... bref, utiliser un ensemble de textes comme une base de données
Encodage des références aux personnes
L'élément <persName> s'applique à tout nom propre ou périphrase qui fait référence à un personnage, réel ou imaginaire
<persName>Michel Eyquem de Montaigne</persName>
<persName>Christopher Robin</persName>
<persName>Geoffroy Grisegonelle</persName>
Les noms personnel peuvent avoir une structure intéressante et complexe...
Composants des noms de personnes
- <forename> : prénom, nom de baptême
- <surname> : nom de famille (hérité)
- <roleName> : titre officiel, rang, position dans la société
- <nameLink> : particule
- <genName> : attribut générationnel (Pline «le Jeune», Henri «IV»)
- <addName> : nom supplémentaire, par ex surnom, épithète, alias, périphrase descriptive
- ... et bien sur d'autre types de nom propre (<placeName>, <orgName> ... )
<persName>
<forename>Geoffroy</forename>
<genName>Ier</genName>
<roleName>comte d'<placeName>Anjou</placeName>
</roleName>
<nameLink>dit</nameLink>
<addName>Grisegonelle</addName>
</persName>
<persName xml:lang="ru">
<forename type="first">Владимир</forename>
<forename type="patronymic">Владимирович</forename>
<surname>Маяковский</surname>
</persName>
<persName xml:lang="ara">
<surname>بن نوح</surname>
<forename>الحسن</forename>
<addName type="kunyah">أبو منصور</addName>
<addName type="nisbah">القمري</addName>
</persName>
Encodage des références aux lieux
L'élément <placeName> s'applique à tout nom de lieu absolu ou relatif, reel ou imaginaire par ex. le nom d’un bâtiment, village, ville , pays ...
<placeName>Eglise Saint-Christophe à Tours</placeName>
Les éléments de ce type souvent s'imbriquent...
<placeName>Église
<persName>
<roleName>Saint</roleName>-Christophe
</persName>
à <placeName>Tours</placeName>
</placeName>
Encodage des références aux organisations
L'élément <orgName> s'applique au nom d’une organisation, d’une institution, d'une societe, ou même d'un tribu.
<orgName>Les Beatles</orgName>
<orgName>Microsoft Inc</orgName>
<orgName>Chapitre de <persName>
<roleName>Saint</roleName> Léon </persName>
</orgName>
Encodage des références aux objets geographiques
L'élément <geogName> s'applique aux noms ayant une caractéristique géographique (un mont, une fleuve, une vallée ... )
Il peut contenir un élément <geogFeat> qui s'applique a un nom commun (par ex. mont, fleuve, vallée, montagne...) contenu par le nom géographique
<geogName>
<geogFeat>Dune</geogFeat> de <name>Pilat</name>
</geogName>
Enrichissement progressif d'un texte
<p>La demande de construction a été addressée par le sieur <name>Hag Ahmed Mohamed</name>
pour bâtir son terrain à côté de la mosquée <name>Suyadi Mohamed el-Anouar</name>, sise
à chara <name>el-Sayeda Sekina</name>
</p>
<p>La demande de construction a été addressée par le sieur <persName>Hag Ahmed
Mohamed</persName> pour bâtir son terrain à côté de la mosquée <placeName>Suyadi
Mohamed el-Anouar</placeName>, sise à chara <name>el-Sayeda Sekina</name>
</p>
... sise à chara <placeName>el-
<persName ref="https://www.wikidata.org/wiki/Q584737"> Sayeda Sekina </persName>
</placeName>
Un <persName>n'est pas un <person>!
Dans un texte nous trouvons souvent plusieurs références à la même personne de manières différentes
...<persName>Clara Schumann</persName>
...<persName>Clara</persName>
...<persName>Frau Schumann</persName> ...
Nous considérons que tous ces noms réfèrent à la même personne. Comment le signaller ?
De même, il arrive que nous trouvons des noms identiques qui (à notre avis) réfèrent à des personnes différentes. Comment le signaller ?
La TEI propose deux attributs, disponibles sur tous les éléments de dénomination, pour spécifier à quelle entité on réfère :
- key pour spécifier un code prédéfini associé avec l'entité dénommée, d'un format arbitraire
- ref pour pointer sur une définition de l'entité dénommée : forcément un URI
...<persName ref="#CS">Clara Schumann</persName>
...<persName ref="#CS">Clara</persName>
...<persName ref="#CS">Frau Schumann</persName> ...
#CS
est un URI: il devrait correspondre à un autre élément de notre document (a priori un <person>)
Relier les noms propres à des ontologies externes
Toutes les balises de références textuelles permettent également ce type de connexion à des referentiels (ou ontologies) externes
- @ref : pointeur vers une définition
<persName ref="http://viaf.org/viaf/44499359"
type="person">Clara</persName>
- @key : utiliser un code quelconque
<persName key="Schumann, Clara (1819 1896)">Clara</persName>
Cette mécanisme permet la résolution des ambiguités en rendant explicite une interprétation du texte
Les entités TEI (1)
TEI propose des éléments spécifiques pour regrouper des informations concernant les entités nommées (en plus de leur noms):
- <person>, <place>, <event>
- ces éléments peuvent être regroupés en <listPerson>, <listPlace>, etc.
- des relations peuvent aussi aussi être modélisées, utilisant explicitement <relation> ou implicitement grâce au contexte
Par exemple voici notre connaissance d'un certain Wladimir Maïakowski :
<person xml:lang="fr" xml:id="VM1893">
<persName xml:lang="ru">Владимир Владимирович Маяковский</persName>
<persName>Wladimir Maïakowski</persName>
<birth when="1893-07-19">7 July (OS) 1893, <placeName ref="#BGDT">Baghdati,
Georgie</placeName>
</birth>
<death when="1930-04-14"/>
<occupation>
<p>Poète et dramaturge, l'un des plus éminents représentants du futurisme
de la Russie du début du XXe siècle.</p>
</occupation>
</person>
L'élément <person> (vel sim) ne contient pas une transcription, mais des annotations
Traits, états et événements
Le variéte des informations que l'on pourrait souhaiter retenir pour une entité nommée est vaste -- et donc impossible de standardiser de manière exhaustive. La TEI fournit trois éléments génériques, et quelques-uns plus spécifiques.
Les elements génériques:
- <state> : des traits : des caractéristiques qui en gros ne changent pas avec le temps
- <trait> : des états : des caractéristiques qui se maintiennent seulement pendant une durée définie
- <event> : des événements ou des incidents qui peuvent conduire à un changement d'état ou, moins fréquemment, à un changement de trait
Les éléments plus spécifiqes
Pour les personnes :
- états
- par ex <occupation> le métier, <residence> la résidence, <education>,l'éducation
- traits
- par ex <faith> la foi, <sex> le sexe, <socEcStatus>, le statut social
- événements
- par ex <birth> la naissance, et <death> la mort
Pour les lieux :
- états
- par ex <terrain>, <climate>, <location>, <population>
- noms (en ordre hiérarchique)
- par ex <bloc> (regroupement de pays), <country> (pays ou unité administratif pareil), <region> (sous-division administrative d'un pays), <settlement> (lieu d'habitation), <district> (sous-division de settlement)
Lieux
Pour les lieux, la TEI prévoit plusieurs types de déscription :
- le plus simple: nominatif
<place xml:id="LYON" type="city">
<placeName xml:lang="en">Lyons</placeName>
<placeName notAfter="0056">Lugdunum</placeName>
<placeName notBefore="1400">Lyon</placeName>
</place>
- ... ou bien en termes géopolitiques par rapport aux unités administratives <bloc>, <country>, <region>, <settlement>, <district> etc
<place xml:id="LYON" type="city">
<location>
<bloc>EU</bloc>
<country>France</country>
<region notAfter="2016">Rhone-Alpes</region>
</location>
</place>
- .. ou bien en termes de location physique <geo> et <offset>
<place xml:id="LYON" type="city">
<location>
<geo>45.769559 4.834843</geo>
</location>
<location>
<offset>au confluent des</offset>
<geogName>Rhône</geogName>
<geogName>Saône</geogName>
</location>
</place>
Notons que toutes ces données (même la dernière) sont des états -- elles peuvent changer avec le temps -- des attributs (notBefore etc.) sont disponibles pour associer une information avec le temps
Regroupements et responsabilités
On peut regrouper les entités dans une liste pour construire une espèce d'index :
<listPerson>
<head>Personnes citées dans ce document</head>
<person xml:id="AA1873">
<persName>Anna Akhmetova</persName>
</person>
<person xml:id="VM1893">
<persName>Vladimir Mayakovsky</persName>
</person>
</listPerson>
Et pareillement on peut regrouper des <place> dans une <listPlace>, des <event> dans un <listEvent> etc.
On peut indiquer l'agence responsable d'une annotation et sa certitude avec des attributs
resp et
cert, respectivement:
<org xml:id="MXY" type="tribu"
resp="#herodote">
<orgName>Les Maxyens</orgName>
<country>Lybie</country>
<desc>Selon Hérodote, c'était une tribu de Lybie occidentale qui disait être la
descendante des Troyens</desc>
</org>
<p> ... Il s'agit des <orgName resp="#LB" ref="#MXY" cert="low">maxiliens</orgName> ... </p>
Datation des propositions
- La plupart des informations associées avec une entité peut changer dans le temps
- par ex. occupation, adresse, mais aussi nom, affiliation réligieuse, sexe, etc.
- pour cette raison, tout élément déscriptif d'une entité est membre de la classe att.datable qui fournit plusieurs attributs utiles pour la normalisation des dates
- when : date exacte.
<date when="2012-10-02">Deux octobre 2012</date> ou
<date when="1552">M.D.LII</date>
- notBefore : indique la date la plus antérieure possible
C’était <date notBefore="2001">un ou deux ans</date> avant sa
naissance en <date when="2003">2003</date>.
- notAfter : indique la date la plus postérieure possible
Nous partirons d’ici <date notAfter="2012-03-31">deux mois maximum</date>
à partir de <date when="2012-01-31">ce jour</date>.
Autres calendriers
L'attribut calendar sert à indiquer le calendrier dans lequel une date est exprimée
<date calendar="#cal_AH" when="0676-06-08">20 Rajab, 56</date>
<calendarDesc>
<calendar xml:id="cal_AH">
<p>Anno Hegirae (Muhammedan Era)</p>
</calendar>
</calendarDesc>
Par défaut les dates sont normalisées par rapport au calendrier chrétien gregorien; l'attribut custom-when permet l'indication d'une normalisation par rapport au calendrier spécifié.
Epoques historiques
On peut définir un
<period> (époque) et référer à cela de la même manière :
<placeName period="#hellenistic">Stauropolis</placeName>
<category xml:id="hellenistic">
<catDesc>
<ref target="http://www.wikipedia.com/wiki/Hellenistic">Hellenistic</ref>: Se dit de
la periode <date notBefore="-0323" notAfter="-0031">après la mort d'Alexandre
jusqu'au <date when="-146">conquête romaine</date>
</date>
</catDesc>
</category>
ou, plus directement,
<placeName period="http://www.wikipedia.com/wiki/Hellenistic">Stauropolis</placeName>
Vers le "placeography"
Par exemple: le lieu de naissance de Mayakovsky
<place xml:id="BGDT">
<placeName xml:lang="ka">ბაღდათი</placeName>
<placeName xml:lang="en">Baghdati</placeName>
<placeName notAfter="1990"
notBefore="1940" xml:lang="ru">Маяковский</placeName>
<location type="geopolitical">
<country>Georgia</country>
<region>Imereti</region>
</location>
<location type="physical">
<offset>West of</offset>
<placeName>
<geogFeat>River</geogFeat>
<geogName>Khanistskali</geogName>
</placeName>
<geo>42.102298,42.832947</geo>
</location>
<population when="2007">
<p>4,700 people</p>
</population>
</place>
Les éléments TEI prévus pour l'encodage des entités ressemblent plus aux notices textuelles qu'aux données structurées. Ils sont (apparemment) destinés à être lus par un humain et non pas par un automat.
Les relations entre les lieux
La TEI propose des méthodes simples pour indiquer
- des relations de synomonie
- des relations hiérarchiques
<place xml:id="LT">
<country>
<placeName xml:lang="lt">Lietuva</placeName>
<placeName xml:lang="fr">Lituanie</placeName>
<placeName xml:lang="en">Lithuania</placeName>
</country>
<place xml:id="LT-VN">
<settlement>Vilnius</settlement>
</place>
<place xml:id="LT-KA">
<settlement>Kaunas</settlement>
</place>
</place>
... mais comment indiquer d'autre relations, par ex ‘Vilnius est la capitale de Lietuva’ ou ‘Kaunas est loin de Vilnius’ ?
Les relations personnelles
- <relation> (relationship) est concu pour décrire une relation parmi des personnes spécifiques
- name
- fournit un nom pour le type de relation dont elle est une instance.
- active
- identifie les personnes actives dans une relation non-mutuelle (par ex. le père et la mère dans la relation "ancêtre de")
- passive
- identifie les personnes ‘passives’ dans une relation non-mutuelle (par ex les enfants dans la relation "ancêtre de")
- mutual
- identifie toutes les personnes concernées par une relation réciproque (par ex les frères et les soeurs dans la relation "même-génération")
Exemples
<person xml:id="jsbach">
<persName>Johann Sebastian Bach</persName>
</person>
<person xml:id="mbbach">
<persName>Maria Barbara Bach</persName>
</person>
<person xml:id="cdbach">
<persName>Catharina Dorothea Bach</persName>
</person>
<person xml:id="ghbach">
<persName>Gottfried Heinrich Bach</persName>
</person>
<relation type="marriage"
mutual="#jsbach #mbbach" from="1707" to="1720"/>
<relationGrp type="children"
subtype="first-marriage">
<relation name="parent" active="#jsbach"
passive="#cdbach"/>
</relationGrp>
<relationGrp type="children"
subtype="second-marriage">
<relation name="parent" active="#jsbach"
passive="#ghbach"/>
</relationGrp>
L'élément <relation> pourrait également servir à représenter des relations entre lieux :
<relation type="capitalCity"
active="#LT-VN" passive="#LT"/>
<relation type="farApart"
mutual="#LT-VN #LT-KA"/>
N'oublions pas qu'un nom peut être considéré un entité!
Pour certaines raisons (onomastique, étymologie...) les noms propres existent indépendamment de leur relation à une entité.
Les éléments <nym> et <listNym> peuvent être utilisés pour rappeler une information concernant un nom considéré comme une entité, et l'attribut nymRef peut être utilisé pour lui associer le ou les noms..
<nym xml:id="VLAD">
<nym>
<form xml:lang="ru">Владимир</form>
<etym>from <lang>Slavonic</lang> Влад (rule) + мѣр (fame), changed by folk
etymology into мир (world)</etym>
<nym>
<form>Vlad</form>
</nym>
<nym>
<form>Volodya</form>
</nym>
</nym>
<nym>
<form xml:lang="da">Valdemar</form>
</nym>
<nym>
<form xml:lang="de">Waldemar</form>
</nym>
</nym>
<forename type="first" nymref="#VLAD">Владимир</forename>
Quoi faire avec toutes ces balises?
- on peut extraire ses propres indexes : simple affaire de transformation
- on peut construire une cartographie
- on peut entrelacer ses données avec celles d'autres
Exemples : le projet ReNom ; le projet Pelagios ; le projet MoEML
Index des personnes : exemple
Comment effectuer ce balisage ?
Rappel: il nous faut des moyens ...
- d'identifier automatiquement les phrases nominatives
- de retrouver ces phrases dans des référentiels appropriés
- et ainsi de désambiguïser les références
La reconnaissance automatique des ‘entités nommées’ -- NER -- est devenu une application classique dans le domaine de TAL
Les référentiels se prolifèrent en format "linked open data" (LOD)
Outil typique de cet approche: Recogito
Voir le tutoriel Données liées et annotation de corpus de Francesca Frontini (CAHIER, Montpellier, 2018)
Quid de RDF et LOD?
- RDF (Resource Description Framework) est un standard W3C tres répandu, visant la définition de la sémantique d'une ressource numérique
- RDF dispose d'une représentation très simple (si verbose) composée de "triples"
- un triple comporte trois URI
- sujet : de quoi s'agit-il? (par ex "Vilnius")
- predicat : catégorie identifiée (par ex "capital-of")
- objet : valeur du catégorie ("par ex "Lituanie")
- Les catégories sont d'habitude sélectionnées dans une ontologie spécifique
- LOD (Linked Open Data) est un mode d'édition de ressources numériques ouvertes, qui disposent d'une déscription exprimée en RDF
- Ces deux acronymes sont au coeur de l'évolution du web actuel (le web de documents) vers le "semantic web" (le web de données)
Comment intégrer RDF en TEI ?
La TEI partage les objectifs fédératifs et "open" de LOD. Mais sa sémantique est plus dispersée. Elle ne simplifie pas les documents : on peut la lui reprocher, mais la sémantique d'un ensemble de documents TEI est souvent dispersée dans son balisage d'une manière peu cohérente.
Par contre, la sémantique d'une page web qui fournit par ex. les prix, les détails téchniques, les couleurs disponibles, etc pour un gadget quelconque peut facilement être extraite, et en l'exprimant, on exprime toute la portée de ce page.
On peut s'imaginer plusieurs méthodes pour intégrer une description RDF dans un document TEI
- directement, en utilisant l'espace de noms RDF
- en utilisant l'element <relation>
- en utilisant les attributs RDFa
- en utilisant/abusant l'élément <graph>, ou <link>, ou <fs>
Ca se discute depuis 2013... pour une synthèse récente, voir https://github.com/TEIC/TEI/issues/1860
A la recherche d'une ontologie TEI
- Depuis longtemps, on propose de surajouter aux définitions des éléments TEI une représentation de leur sémantique
- par ex, dans l'élément <equiv>, ou en élargissant la système de classes actuelle
- et/ou en définissant une "vraie" ontologie par ex en OWL, ou d'autre formalisme à la mode
c'est bien possible... mais la TEI est conçue pour les documents, et les documents ne sont pas des ensembles de données abstraites ou objectives.
Un document doit etre interprété: il faut compléter sa modélisation avec son/ses interpretation/s...
Science de texte: science de données
... et de même pour les données!
Il ne faut pas sous-estimer l'importance du contexte de production/consommation des données, non plus.
All data is historical data: the product of a time, place, political, economic, technical, & social climate. If you are not considering why your data exists, and other data sets don’t, you are doing data science wrong”
Les données ont toujours un aspect historique - elles ressortent d'un temps, d'un endroit, ou d'un climat socio-économique spécifique. Si vous ne mettez pas en question les raisons pour lesquelles vos données à vous existent et d'autres sont disparues, alors vous pratiquez incorrectement la science de données
[Melissa Terras, Opportunities, barriers, and rewards in digitally-led analysis of history, culture and society. Turing Lecture 2019-03-03, https://www.youtube.com/watch?v=bf6DsJ7VcLI]
‘Text is not a special kind of data: data is a special kind of text’