Project

General

Profile

Text annotation » History » Revision 17

Revision 16 (Alexander Watzinger, 2024-09-11 14:51) → Revision 17/24 (Alexander Watzinger, 2024-09-11 15:03)

h1. Text annotation 

 Issue #2079 

 Text annotation will be about linking entities (actors, places, ...) to specific parts of a text, instead of just linking them to the whole text like it is possible currently. 

 h2. Scope (for the first version) 

 * It would be used at *Source* (E33) and their translations  
 * Only already linked entities are offered 
 * No overlapping annotations 

 h2. Topics to discuss 

 h3. Backend 

 * Which schema for annotation database table (model or web)? 
 * Label *text* ok for annotation column in database table?  
 * How to deal with text changes in already annotated text? 

 h3. User interface 

 * Do we try to solve it in on form element or split in separate steps/views for text editing and text annotation? 
 * How to remove text annotations (maybe showing a list with delete buttons)? 

 h2. User interface 

 We need a tool for users to annotate. Although difficult, ideally text changes and annotations can be done in one form element.  

 *Advantages* 
 * Easy to use 
 * It's not possible for users to "break" things 
 * Concurrent changes can be avoided with already implemented functionality 
 * Maybe take a look at APIS implementation: https://github.com/acdh-oeaw/apis-highlighter-ng 

 Otherwise we will have to split: 
 * *Text editing* - leaving as is but would be problematic when annotations can't be seen 
 * *Text annotation* - most likely easier to implement if "stand alone" 

 h2. Information storing 

 We will save the information in an extra database table. Draft for fields: 

 * *id* (int, required) generic internal database identifier  
 * *source_id* (int, required) 
 * *entity_id* - (int, required) the entity is linked in the annotation, e.g. actor, place, artifact, ...  
 * *link_start* (int, required) 
 * *link_end* - (int, required) or maybe the length? 
 * *user_id* - (int, not required) to track who added it  
 * *text* - (text, not required) a kind of description field for text information, maybe think about the name, e.g. annotation, description, text, ...  
 * *created* - timestamp of creation (set automatically at creation) 
 * *modified* - timestamp of modification (triggered automatically on change) 

 *Advantages* 
 * We can guarantee that there are no orphaned links 
 * It can than be used to e.g. be presented as HTML, TEI, "Web Annotation Data Model":https://www.w3.org/TR/annotation-model/, ... 

 h2. Topics to discuss 

 * Do we try to solve it in on form element or split in separate steps/views for text editing and text annotation? 
 * How to deal with text changes in already annotated text 
 * How to remove text annotations (maybe showing a list with delete buttons)? 

 h2. Time frame 

 Ideally we have a working basic version at the end of 2024 and can refine it in 2025. 

 h2. Ideas for future versions 

 * Offer links to external reference systems (e.g. GeoNames) which we would use to create new entities on the fly (using available meta information, creating links to reference system, ...). Interesting but a lot of work. 
 * A tool to find possible annotation candidates providing a result list to annotate multiple occurrences in one go