HUMAN is an annotation server that stands for...
- Hierarchical: Supports annotation of hierarchical data. This makes it easy to annotate instances (e.g. online comments) together with their context (e.g. the thread of comments a comment was posted in).
- Universal: Handles both textual data with and without context as well as PDFs and image annotation.
- Modular: Various question types (labeling questions, multiple-choice, yes-no, setting bounding boxes etc.) that are self-contained and can be arranged in any order needed. This also makes it easy to implement new custom question types and features.
- ANnotator: Comes with an easy to use GUI interface for your annotators and project manager.
See our Demo on http://human.lsv.uni-saarland.de
The only requirements are a working version of node and python 3.9. Using anaconda or miniconda for a python environment is highly recommended. To make it easier to install, update and remove node, especially if you plan to maybe use it in other projects we recommend using the node version manager https://github.com/nvm-sh/nvm.
First install the python environment.
With Conda:
conda env createthen activate the environment with
conda activate humanOR install from requirements.txt with pip or whatever you fancy.
Run setup.sh to finish the setup. This script will run the following tasks for you:
- Installing dependencies for javascript
- Sets up javascript code
- Ask you to set up an admin account (necessary for data upload).
- Set up the database for you
Write your custom annotation protocol into protocol.yml. Refer to the wiki for documentation on how to do this and see our example protocols (under /examples) for inspiration.
To run the server locally for testing purposes run
flask startWhenever you changed any state names in protocol.yml be sure to run
flask run reset-annotationsThis will reset the annotations table in the database and is necessary to properly save annotations after a change in the protocol.
To add a file with data, start the server, log in with your admin account, and go to "Data Console". There you can upload the file. Be sure that it is a tab separated file with the three columns "content", "context" and "meta".
When you want to display files you can use "Upload Folder" in "Data Console" and then upload a file with <folder-name>/<file-name> in the content fields for every file in the folder.
When running HUMAN in a production environment on a server we recommend using gunicorn (included in the environment). The script start_server.sh should take care of starting the server. First however, you should set a secure SECRET_KEY in config.py.
A Dockerfile to build an image and them run it in a container is also provided.
Picture Annotation:
- Copy and rename
/example/protocol_example_picture.jsonto/protocol.json - Run
setup.sh - Log in with your administrator account and upload the folder
/example/picture - Upload the file
/example/data_example_picture.csv - Go back to home and start annotating.
Text Annotation:
- Copy and rename
/example/protocol_example_text.jsonto/protocol.json - Run
setup.sh - Log in with your administrator account and upload the file
/example/data_example_text.csv - Go back to home and start annotating.
When debugging and working on client side code it is very convenient to let webpack watch file changes and transpile your code automatically: npm run watch
Visit the wiki for full documentation.
https://github.com/RainbowRevenge
https://arxiv.org/abs/2010.01080
HUMAN is licensed under GPL-3.