From 1cbd6b13385ba5ffbd90625fda597bbcc2301e97 Mon Sep 17 00:00:00 2001 From: cneud Date: Fri, 10 Jan 2020 17:02:53 +0100 Subject: [PATCH] merge User_Guide.md into README.md --- README.md | 191 ++++++++++++++++++++++++++++++++++++++++++++++++- User_Guide.md | 185 ----------------------------------------------- screenshot.png | Bin 32994 -> 0 bytes 3 files changed, 188 insertions(+), 188 deletions(-) delete mode 100644 User_Guide.md delete mode 100644 screenshot.png diff --git a/README.md b/README.md index e6b6c9e..5724efb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,190 @@ # neath: named entity annotation tool -[User Guide](User_Guide.md) | [Anntotation Guidelines](Annotation_Guidelines.pdf) | [Issues](https://github.com/qurator-spk/neath/issues) - +#### version 0.1 --- -![Screenshot](screenshot.png) +![Screenshot](https://user-images.githubusercontent.com/952378/72167036-ad2c6680-33ca-11ea-980f-5859e5155877.png) + +# User Guide + +### Table of contents +[1. Introduction](https://github.com/qurator-spk/neath/blob/master/README.md#1-introduction) + +[2. User Guide](https://github.com/qurator-spk/neath/blob/master/README.md#2-user-guide) + +   [2.1 Technical requirements](https://github.com/qurator-spk/neath/blob/master/README.md#21-technical-requirements) + +   [2.2 Data format](https://github.com/qurator-spk/neath/blob/master/README.md#22-data-format) + +   [2.3 Data preparation](https://github.com/qurator-spk/neath/blob/master/README.md#23-data-preparation) + +   [2.4 Provenance](https://github.com/qurator-spk/neath/blob/master/README.md#24-provenance) + +   [2.5 Keyboard navigation](https://github.com/qurator-spk/neath/blob/master/README.md#25-keyboard-navigation) + +   [2.6 Mouse navigation](https://github.com/qurator-spk/neath/blob/master/README.md#26-mouse-navigation) + +   [2.7 Image support](https://github.com/qurator-spk/neath/blob/master/README.md#27-image-support) + +   [2.8 Saving progress](https://github.com/qurator-spk/neath/blob/master/README.md#28-saving-progress) + +[3. Annotation Guidelines](https://github.com/qurator-spk/neath/blob/master/README.md#3-annotation-guidelines) + +### 1. Introduction +[neath](https://github.com/qurator-spk/neath) is a simple, browser-based tool for editing and annotating text with named entities to produce a corpus for training/testing/evaluation. It can be used to add or correct named entity BIO-tags in a TSV file and to correct the token text or tokenization (e.g. due to OCR/segmentation errors). + +[neath](https://github.com/qurator-spk/neath) is developed at the [Berlin State Library](https://staatsbibliothek-berlin.de/) for data annotation in the context of the [SoNAR-IDH](https://sonar.fh-potsdam.de/) project and the [QURATOR](https://qurator.ai/) project. + +### 2. User Guide + +#### 2.1 Technical Requirements +[neath](https://github.com/qurator-spk/neath) runs locally as a pure HTML+JavaScript webpage in your web browser. No software needs to be installed, but JavaScript has to be enabled in the browser. Any fairly recent browser should work, but only Chrome and Firefox are tested. + +#### 2.2 Data format +The data format is based on the format used in the [GermEval2014 Named Entity Recognition Shared Task](https://sites.google.com/site/germeval2014ner/data). Text is encoded as one token per line, with name spans encoded in the BIO-scheme, provided as tab-separated values: +* the first column contains either a `#`, which signals the source the sentence is cited from, or +* the token position within the sentence ``>=1`` +* sentence boundaries are indicated by ``0`` +* the second column contains the token ``text`` +* outer entity spans are encoded in the third column ``NE-TAG`` +* embedded entity spans are encoded in the fourth column ``NE-EMB`` + +Example (simple): +```tsv +No. TOKEN NE-TAG NE-EMB +# https://example.url +1 Donnerstag O O +2 , O O +3 1 O O +4 . O O +5 Januar O O +6 . O O +0 O O +1 Berliner B-ORG B-LOC +2 Tageblatt I-ORG O +3 . O O +0 O O +1 Nr O O +2 . O O +3 1 O O +4 . O O +0 O O +1 Seite O O +2 3 O O +``` + +For our purposes we extend this format by adding +* a fifth column for an ``ID`` for the outer ``NE-TAG`` from an authority file (in this case, the [GND](https://www.dnb.de/EN/Professionell/Standardisierung/GND/gnd_node.html) is used) +* column six for use as a variable ``url_id`` (see [Image Support](https://github.com/qurator-spk/neath/blob/master/README.md#27-image-support) for further details) +* finally, columns 7+ are used for storing ``left,right,top,bottom`` pixel coordinates for facsimile snippets + +Example (full): +```tsv +No. TOKEN NE-TAG NE-EMB GND-ID url_id left,right,top,bottom +# https://example.url/iiif/left,right,top,bottom/full/0/default.jpg +1 Donnerstag O O - 0 174,352,358,390 +2 , O O - 0 174,352,358,390 +3 1 O O - 0 367,392,361,381 +4 . O O - 0 370,397,352,379 +5 Januar O O - 0 406,518,358,386 +6 . O O - 0 406,518,358,386 +0 +1 Berliner B-ORG B-LOC 1086206452 0 816,984,358,388 +2 Tageblatt I-ORG O 1086206452 0 1005,1208,360,387 +3 . O O - 0 1005,1208,360,387 +0 +1 Nr O O - 0 1237,1288,360,382 +2 . O O - 0 1237,1288,360,382 +3 1 O O - 0 1304,1326,361,381 +4 . O O - 0 1304,1326,361,381 +0 +1 Seite O O - 0 1837,1926,361,392 +2 3 O O - 0 1939,1967,364,385 +``` + +#### 2.3 Data preparation +The source data that is used for annotation are OCR results in [PAGE-XML](https://github.com/PRImA-Research-Lab/PAGE-XML) format. We provide a [Python tool](https://github.com/qurator-spk/page2tsv) that supports the transformation of [PAGE-XML](https://github.com/PRImA-Research-Lab/PAGE-XML) OCR files into the [TSV format](https://github.com/qurator-spk/neath/blob/master/README.md#22-data-format) required for use with [neath](https://github.com/qurator-spk/neath). + +#### 2.4 Provenance +The processing pipeline applied at the Berlin State Library comprises the follows steps: + +1. Layout Analysis & Textline Extraction +Layout Analysis & Textline Extraction @[sbb_textline_detector](https://github.com/qurator-spk/sbb_textline_detector) +2. OCR & Word Segmentation +OCR is based on [OCR-D](https://github.com/OCR-D)'s [ocrd_tesserocr](https://github.com/OCR-D/ocrd_tesserocr) which requires [Tesseract](https://github.com/tesseract-ocr/tesseract) **>= 4.1.0**. The [GT4HistOCR_2000000](https://ub-backup.bib.uni-mannheim.de/~stweil/ocrd-train/data/GT4HistOCR_2000000.traineddata) model, which is [trained](https://github.com/tesseract-ocr/tesstrain/wiki/GT4HistOCR) on the [GT4HistOCR](https://zenodo.org/record/1344132) corpus, is used. Further details are available in the [paper](https://arxiv.org/abs/1809.05501). +3. TSV Transformation +A simple [Python tool](https://github.com/qurator-spk/page2tsv) is used for the transformation of the OCR results in [PAGE-XML](https://github.com/PRImA-Research-Lab/PAGE-XML) to [TSV](https://github.com/qurator-spk/neath/blob/master/docs/README.md#22-data-format). +4. Tokenization +For tokenization, [SoMaJo](https://github.com/tsproisl/SoMaJo) is used. +5. Named Entity Recognition +For Named Entity Recognition, a [BERT-Base](https://github.com/google-research/bert) model was trained for noisy OCR texts with historical spelling variation. [sbb_ner](https://github.com/qurator-spk/sbb_ner) is using a combination of unsupervised training on a large (~2.3m pages) [corpus of German OCR](https://zenodo.org/record/3257041) in combination with supervised training on a small (47k tokens) [annotated corpus](https://github.com/EuropeanaNewspapers/ner-corpora/tree/master/enp_DE.sbb.bio). Further details are available in the [paper](https://corpora.linguistik.uni-erlangen.de/data/konvens/proceedings/papers/KONVENS2019_paper_4.pdf). + + +#### 2.5 Keyboard-Navigation + +| Key Combination| Action | +|:---------|:-------------------------------------------| +| Left | Move one cell left | +| Right | Move one cell right | +| Up | Move one row up | +| Down | Move one row down | +| PageDown | Move page down | +| PageUp | Move page up | +| Crtl+Up | Move entire table one row up | +| Crtl+Down| Move entire table one row down | +|----------|--------------------------------------------| +| s t | Start new sentence in current row | +| m e | Merge current row with row above | +| s p | Create copy of current row | +| d l | Delete current row | +|----------|--------------------------------------------| +| backspace| Set NE-TAG / NE-EMB to "O" | +| b p | Set NE-TAG / NE-EMB to "B-PER" | +| b l | Set NE-TAG / NE-EMB to "B-LOC" | +| b o | Set NE-TAG / NE-EMB to "B-ORG" | +| b w | Set NE-TAG / NE-EMB to "B-WORK" | +| b c | Set NE-TAG / NE-EMB to "B-CONF" | +| b e | Set NE-TAG / NE-EMB to "B-EVT" | +| b t | Set NE-TAG / NE-EMB to "B-TODO" | +| i p | Set NE-TAG / NE-EMB to "I-PER" | +| i l | Set NE-TAG / NE-EMB to "I-LOC" | +| i o | Set NE-TAG / NE-EMB to "I-ORG" | +| i w | Set NE-TAG / NE-EMB to "I-WORK" | +| i c | Set NE-TAG / NE-EMB to "I-CONF" | +| i e | Set NE-TAG / NE-EMB to "I-EVT" | +| i t | Set NE-TAG / NE-EMB to "I-TODO" | +|----------|--------------------------------------------| +| enter | Edit TOKEN or GND-ID | +| esc | Close TOKEN or GND-ID edit field without | +| | application of changes. | +|----------|--------------------------------------------| +| l a | add one display row | +| l r | remove on display row (minimum is 5) | +|----------|--------------------------------------------| + +#### 2.6 Mouse-Navigation +* use mouse wheel to scroll up and down + +* left-click `<<` and `>>` to move 15 rows up or down + +* left-click `O` in the `NE-TAG` or `NE-EMB` columns to open the drop-down menu and select any of the supported NE-Tags to tag a token or change an existing tag to another one + +* left-click a tag in the `NE-TAG` or `NE-EMB` columns and subsequently select `O` to remove a wrong tag + +* left-click a token in the `TOKEN` column to edit/correct the text content + +* left-click the `POSITION` of a row and select `split` from the drop-down menu to create a copy of the current row + +* left-click the `POSITION` of a row and select `merge` from the drop-down menu to merge the current row with the row above + +* left-click the `POSITION` of a row and select `start-sentence` from the drop-down menu to start a new sentence + +#### 2.7 Image Support +Provided facsimile images are available online via the [iiif.io](https://iiif.io/) Image API, [neath](https://github.com/qurator-spk/neath) supports the embedding of facsimile snippets into its interface to help with data annotation and correction. +This further requires that OCR with word segmentation is applied to the image to determine bounding boxes for tokens. + +The iiif-image-url contained in the source ``#`` can then be used as a replacement for ``url_id`` in combination with the token bounding boxes as ``left,right,top,bottom`` to obtain the facsimile snippet url and display the image in the leftmost column. Clicking on the facsimile snippet opens up a new tab with a larger context. + +#### 2.8 Saving progress +[neath](https://github.com/qurator-spk/neath) runs fully locally in the browser. Therefore it can not automatically save any changes you made to disk. You have to use the `Save Changes` button in order to so manually from time to time. If your browser automatically saves all downloads to your `Downloads` folder, you might want to configure it so that it instead prompts you where to save. + +### 3. Annotation Guidelines +The most recent version of the [Annotation Guidelines](https://github.com/qurator-spk/neath/blob/master/Annotation_Guidelines.pdf) is included in this repository. diff --git a/User_Guide.md b/User_Guide.md deleted file mode 100644 index 9255712..0000000 --- a/User_Guide.md +++ /dev/null @@ -1,185 +0,0 @@ -# User Guide -#### version 0.1 - -### Table of contents -[1. Introduction](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#1-introduction) - -[2. User Guide](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#2-user-guide) - -   [2.1 Technical requirements](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#21-technical-requirements) - -   [2.2 Data format](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#22-data-format) - -   [2.3 Data preparation](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#23-data-preparation) - -   [2.4 Provenance](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#24-provenance) - -   [2.5 Keyboard navigation](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#25-keyboard-navigation) - -   [2.6 Mouse navigation](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#26-mouse-navigation) - -   [2.7 Image support](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#27-image-support) - -   [2.8 Saving progress](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#28-saving-progress) - -[3. Annotation Guidelines](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#3-annotation-guidelines) - -### 1. Introduction -[neath](https://github.com/qurator-spk/neath) is a simple, browser-based tool for editing and annotating text with named entities to produce a corpus for training/testing/evaluation. It can be used to add or correct named entity BIO-tags in a TSV file and to correct the token text or tokenization (e.g. due to OCR/segmentation errors). - -[neath](https://github.com/qurator-spk/neath) is developed at the [Berlin State Library](http://staatsbibliothek-berlin.de/) for data annotation in the context of the [SoNAR-IDH](https://sonar.fh-potsdam.de/) project and the [QURATOR](https://qurator.ai/) project. - -### 2. User Guide - -#### 2.1 Technical Requirements -[neath](https://github.com/qurator-spk/neath) runs locally as a pure HTML+JavaScript webpage in your web browser. No software needs to be installed, but JavaScript has to be enabled in the browser. Any fairly recent browser should work, but only Chrome and Firefox are tested. - -#### 2.2 Data format -The data format is based on the format used in the [GermEval2014 Named Entity Recognition Shared Task](https://sites.google.com/site/germeval2014ner/data). Text is encoded as one token per line, with name spans encoded in the BIO-scheme, provided as tab-separated values: -* the first column contains either a `#`, which signals the source the sentence is cited from, or -* the token position within the sentence ``>=1`` -* sentence boundaries are indicated by ``0`` -* the second column contains the token ``text`` -* outer entity spans are encoded in the third column ``NE-TAG`` -* embedded entity spans are encoded in the fourth column ``NE-EMB`` - -Example (simple): -```tsv -No. TOKEN NE-TAG NE-EMB -# https://example.url -1 Donnerstag O O -2 , O O -3 1 O O -4 . O O -5 Januar O O -6 . O O -0 O O -1 Berliner B-ORG B-LOC -2 Tageblatt I-ORG O -3 . O O -0 O O -1 Nr O O -2 . O O -3 1 O O -4 . O O -0 O O -1 Seite O O -2 3 O O -``` - -For our purposes we extend this format by adding -* a fifth column for an ``ID`` for the outer ``NE-TAG`` from an authority file (in this case, the [GND](https://www.dnb.de/EN/Professionell/Standardisierung/GND/gnd_node.html) is used) -* column six for use as a variable ``url_id`` (see [Image Support](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#27-image-support) for further details) -* finally, columns 7+ are used for storing ``left,right,top,bottom`` pixel coordinates for facsimile snippets - -Example (full): -```tsv -No. TOKEN NE-TAG NE-EMB GND-ID url_id left,right,top,bottom -# https://example.url/iiif/left,right,top,bottom/full/0/default.jpg -1 Donnerstag O O - 0 174,352,358,390 -2 , O O - 0 174,352,358,390 -3 1 O O - 0 367,392,361,381 -4 . O O - 0 370,397,352,379 -5 Januar O O - 0 406,518,358,386 -6 . O O - 0 406,518,358,386 -0 -1 Berliner B-ORG B-LOC 1086206452 0 816,984,358,388 -2 Tageblatt I-ORG O 1086206452 0 1005,1208,360,387 -3 . O O - 0 1005,1208,360,387 -0 -1 Nr O O - 0 1237,1288,360,382 -2 . O O - 0 1237,1288,360,382 -3 1 O O - 0 1304,1326,361,381 -4 . O O - 0 1304,1326,361,381 -0 -1 Seite O O - 0 1837,1926,361,392 -2 3 O O - 0 1939,1967,364,385 -``` - -#### 2.3 Data preparation -The source data that is used for annotation are OCR results in [PAGE-XML](https://github.com/PRImA-Research-Lab/PAGE-XML) format. We provide a [Python tool](https://github.com/qurator-spk/page2tsv) that supports the transformation of [PAGE-XML](https://github.com/PRImA-Research-Lab/PAGE-XML) OCR files into the [TSV format](https://github.com/qurator-spk/neath/blob/master/User_Guide.md#22-data-format) required for use with [neath](https://github.com/qurator-spk/neath). - -#### 2.4 Provenance -The processing pipeline applied at the Berlin State Library comprises the follows steps: - -1. Layout Analysis & Textline Extraction -Layout Analysis & Textline Extraction @[sbb_textline_detector](https://github.com/qurator-spk/sbb_textline_detector) -2. OCR & Word Segmentation -OCR is based on [OCR-D](https://github.com/OCR-D)'s [ocrd_tesserocr](https://github.com/OCR-D/ocrd_tesserocr) which requires [Tesseract](https://github.com/tesseract-ocr/tesseract) **>= 4.1.0**. The [GT4HistOCR_2000000](https://ub-backup.bib.uni-mannheim.de/~stweil/ocrd-train/data/GT4HistOCR_2000000.traineddata) model, which is [trained](https://github.com/tesseract-ocr/tesstrain/wiki/GT4HistOCR) on the [GT4HistOCR](https://zenodo.org/record/1344132) corpus, is used. Further details are available in the [paper](https://arxiv.org/abs/1809.05501). -3. TSV Transformation -A simple [Python tool](https://github.com/qurator-spk/page2tsv) is used for the transformation of the OCR results in [PAGE-XML](https://github.com/PRImA-Research-Lab/PAGE-XML) to [TSV](https://github.com/qurator-spk/neath/blob/master/docs/User_Guide.md#22-data-format). -4. Tokenization -For tokenization, [SoMaJo](https://github.com/tsproisl/SoMaJo) is used. -5. Named Entity Recognition -For Named Entity Recognition, a [BERT-Base](https://github.com/google-research/bert) model was trained for noisy OCR texts with historical spelling variation. [sbb_ner](https://github.com/qurator-spk/sbb_ner) is using a combination of unsupervised training on a large (~2.3m pages) [corpus of German OCR](https://zenodo.org/record/3257041) in combination with supervised training on a small (47k tokens) [annotated corpus](https://github.com/EuropeanaNewspapers/ner-corpora/tree/master/enp_DE.sbb.bio). Further details are available in the [paper](https://corpora.linguistik.uni-erlangen.de/data/konvens/proceedings/papers/KONVENS2019_paper_4.pdf). - -#### 2.5 Keyboard-Navigation - -| Key Combination| Action | -|:---------|:-------------------------------------------| -| Left | Move one cell left | -| Right | Move one cell right | -| Up | Move one row up | -| Down | Move one row down | -| PageDown | Move page down | -| PageUp | Move page up | -| Crtl+Up | Move entire table one row up | -| Crtl+Down| Move entire table one row down | -|----------|--------------------------------------------| -| s t | Start new sentence in current row | -| m e | Merge current row with row above | -| s p | Create copy of current row | -| d l | Delete current row | -|----------|--------------------------------------------| -| backspace| Set NE-TAG / NE-EMB to "O" | -| b p | Set NE-TAG / NE-EMB to "B-PER" | -| b l | Set NE-TAG / NE-EMB to "B-LOC" | -| b o | Set NE-TAG / NE-EMB to "B-ORG" | -| b w | Set NE-TAG / NE-EMB to "B-WORK" | -| b c | Set NE-TAG / NE-EMB to "B-CONF" | -| b e | Set NE-TAG / NE-EMB to "B-EVT" | -| b t | Set NE-TAG / NE-EMB to "B-TODO" | -| i p | Set NE-TAG / NE-EMB to "I-PER" | -| i l | Set NE-TAG / NE-EMB to "I-LOC" | -| i o | Set NE-TAG / NE-EMB to "I-ORG" | -| i w | Set NE-TAG / NE-EMB to "I-WORK" | -| i c | Set NE-TAG / NE-EMB to "I-CONF" | -| i e | Set NE-TAG / NE-EMB to "I-EVT" | -| i t | Set NE-TAG / NE-EMB to "I-TODO" | -|----------|--------------------------------------------| -| enter | Edit TOKEN or GND-ID | -| esc | Close TOKEN or GND-ID edit field without | -| | application of changes. | -|----------|--------------------------------------------| -| l a | add one display row | -| l r | remove on display row (minimum is 5) | -|----------|--------------------------------------------| - -#### 2.6 Mouse-Navigation -* use mouse wheel to scroll up and down - -* left-click `<<` and `>>` to move 15 rows up or down - -* left-click `O` in the `NE-TAG` or `NE-EMB` columns to open the drop-down menu and select any of the supported NE-Tags to tag a token or change an existing tag to another one - -* left-click a tag in the `NE-TAG` or `NE-EMB` columns and subsequently select `O` to remove a wrong tag - -* left-click a token in the `TOKEN` column to edit/correct the text content - -* left-click the `POSITION` of a row and select `split` from the drop-down menu to create a copy of the current row - -* left-click the `POSITION` of a row and select `merge` from the drop-down menu to merge the current row with the row above - -* left-click the `POSITION` of a row and select `start-sentence` from the drop-down menu to start a new sentence - -#### 2.7 Image Support -Provided facsimile images are available online via the [iiif.io](https://iiif.io/) Image API, [neath](https://github.com/qurator-spk/neath) supports the embedding of facsimile snippets into its interface to help with data annotation and correction. -This further requires that OCR with word segmentation is applied to the image to determine bounding boxes for tokens. - -The iiif-image-url contained in the source ``#`` can then be used as a replacement for ``url_id`` in combination with the token bounding boxes as ``left,right,top,bottom`` to obtain the facsimile snippet url and display the image in the leftmost column. Clicking on the facsimile snippet opens up a new tab with a larger context. - -#### 2.8 Saving progress -[neath](https://github.com/qurator-spk/neath) runs fully locally in the browser. Therefore it can not automatically save any changes you made to disk. You have to use the `Save Changes` button in order to so manually from time to time. If your browser automatically saves all downloads to your `Downloads` folder, you might want to configure it so that it instead prompts you where to save. - -### 3. Annotation Guidelines -The most recent version of the [Annotation Guidelines](https://github.com/qurator-spk/neath/blob/master/Annotation_Guidelines.pdf) is included in this repository. diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 2bb50c41a273da00d00607afbbcbc111ff221f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32994 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�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 a;`oFI3OYZGQvp5&$w(-OLtcIO@_zweB?zei