Giter Club home page Giter Club logo

annif's Introduction

Annif

DOI License Build Status codecov Code Climate Scrutinizer Code Quality codebeat badge BCH compliance LGTM: Python Quality Gate Status

Annif is an automated subject indexing toolkit. It was originally created as a statistical automated indexing tool that used metadata from the Finna.fi discovery interface as a training corpus.

This repo contains a rewritten production version of Annif based on the prototype. It is a work in progress, but already functional for many common tasks.

Basic install

You will need Python 3.5+ to install Annif.

The recommended way is to install Annif from PyPI into a virtual environment.

python3 -m venv annif-venv
source annif-venv/bin/activate
pip install annif

You will also need NLTK data files:

python -m nltk.downloader punkt

Start up the application:

annif

See Getting Started in the wiki for more details.

Docker install

You can use Annif as a pre-built Docker container. Please see the wiki documentation for details.

Development install

A development version of Annif can be installed by cloning the GitHub repository. Pipenv is used for managing dependencies for the development version.

Installation and setup

Clone the repository.

Switch into the repository directory. Install pipenv if you don't have it:

pip install pipenv  # or pip3 install pipenv

Install dependencies and download NLTK data:

pipenv install  # use --dev if you want to run tests etc.

Enter the virtual environment:

pipenv shell

You will also need NLTK data files:

python -m nltk.downloader punkt

Start up the application:

annif

Unit tests

Run pipenv shell to enter the virtual environment and then run pytest. To have the test suite watch for changes in code and run automatically, use pytest-watch by running ptw.

Getting help

Many resources are available:

Publications / How to cite

An article about Annif has been published in the peer-reviewed Open Access journal LIBER Quarterly. The software itself is also archived on Zenodo and has a citable DOI.

Annif article

Suominen, O., 2019. Annif: DIY automated subject indexing using multiple algorithms. LIBER Quarterly, 29(1), pp.1โ€“25. DOI: https://doi.org/10.18352/lq.10285

@article{suominen2019annif,
  title={Annif: DIY automated subject indexing using multiple algorithms},
  author={Suominen, Osma},
  journal={{LIBER} Quarterly},
  volume={29},
  number={1},
  pages={1--25},
  year={2019},
  doi = {10.18352/lq.10285},
  url = {https://doi.org/10.18352/lq.10285}
}

Citing the software itself

Zenodo DOI: https://doi.org/10.5281/zenodo.2578948

@misc{https://doi.org/10.5281/zenodo.2578948,
  doi = {10.5281/ZENODO.2578948},
  url = {https://doi.org/10.5281/zenodo.2578948},
  title = {NatLibFi/Annif},
  year = {2019}
}

License

The code in this repository is licensed under Apache License 2.0, except for the dependencies included under annif/static/css and annif/static/js, which have their own licenses. See the file headers for details.

annif's People

Contributors

osma avatar juhoinkinen avatar tvirolai avatar kinow avatar zuphilip avatar rneatherway avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.