Package: annif
Annif is an automated subject indexing toolkit. It was originally created as
a statistical automated indexing tool that used metadata from theFinna.fidiscovery interface as a training corpus.This repo contains a rewritten production version of Annif based on theprototype. It is a work in progress, but
already functional for many common tasks.Finto AIis a service based on Annif; see thesource code for Finto AI.Basic installAnnif is developed and tested on Linux. If you want to run Annif on Windows or Mac OS, the recommended way is to use Docker (see below) or a Linux virtual machine.You will need Python 3.8+ to install Annif.The recommended way is to install Annif fromPyPIinto a virtual environment.python3 -m venv annif-venv
source annif-venv/bin/activate
pip install annifYou will also need NLTK data files:python -m nltk.downloader punktStart up the application:annifSeeGetting Startedin the wiki for more details.Shell compeletionsAnnif supports tab-key completion in bash, zsh and fish shells for commands and options
and project id, vocabulary id and path parameters.To enable the completion support in your current terminal session useannif completioncommand with the option according to your shell to produce the completion script and
source it. For example, runsource <(annif completion --bash)To enable the completion support in all new sessions first add the completion script in
your home directory:annif completion --bash > ~/.annif-complete.bashThen make the script to be automatically sourced for new terminal sessions by adding the
following to your~/.bashrcfile (or in somealternative startup
file):source ~/.annif-complete.bashFor details and usage for other shells seeClick documentation.Docker installYou can use Annif as a pre-built Docker container. Please see thewiki documentationfor details.Development installA development version of Annif can be installed by cloning theGitHub
repository.Poetryis used for managing dependencies and virtual environment for the development version.SeeCONTRIBUTING.mdfor information onunit tests,code style,development flowetc. details that are useful when participating in Annif development.Installation and setupClone the repository.Switch into the repository directory.Installpipxand Poetry if you don't have them. First pipx:python3 -m pip install --user pipx
python3 -m pipx ensurepathOpen a new shell, and then install Poetry:pipx install poetryPoetry can be installed also without pipx: check thePoetry documentation.Create a virtual environment and install dependencies:poetry installBy default development dependencies are included. Use option-Eto install dependencies for selected optional features (-E "extra1 extra2"for multiple extras), or install all of them with--all-extras. By default the virtual environment directory is not under the project directory, but there is asetting for selecting this.Enter the virtual environment:poetry shellYou will also need NLTK data files:python -m nltk.downloader punktStart up the application:annifGetting helpMany resources are available:Usage documentation in the wikiAnnif tutorialfor learning to use Annifannif-usersdiscussion forumInternal API documentationon ReadTheDocsannif.orgproject web sitePublications / How to citeTwo articles about Annif have been published in peer-reviewed Open Access
journals. The software itself is also archived on Zenodo and
has acitable DOI.Citing the software itselfSee "Cite this repository" in the details of the repository.Annif articlesSuominen, O.; Inkinen, J.; Lehtinen, M., 2022.
Annif and Finto AI: Developing and Implementing Automated Subject Indexing.
JLIS.It, 13(1), pp. 265–282. URL:
https://www.jlis.it/index.php/jlis/article/view/437See BibTex@article{suominen2022annif,
  title={Annif and Finto AI: Developing and Implementing Automated Subject Indexing},
  author={Suominen, Osma and Inkinen, Juho and Lehtinen, Mona},
  journal={JLIS.it},
  volume={13},
  number={1},
  pages={265--282},
  year={2022},
  doi = {10.4403/jlis.it-12740},
  url={https://www.jlis.it/index.php/jlis/article/view/437},
}Suominen, O.; Koskenniemi, I, 2022.
Annif Analyzer Shootout: Comparing text lemmatization methods for automated subject indexing.
Code4Lib Journal, (54). URL:
https://journal.code4lib.org/articles/16719See BibTex@article{suominen2022analyzer,
  title={Annif Analyzer Shootout: Comparing text lemmatization methods for automated subject indexing},
  author={Suominen, Osma and Koskenniemi, Ilkka},
  journal={Code4Lib J.},
  number={54},
  year={2022},
  url={https://journal.code4lib.org/articles/16719},
}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.10285See BibTex@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}
}LicenseThe code in this repository is licensed under Apache License 2.0, except for the
dependencies included underannif/static/cssandannif/static/js,
which have their own licenses, see the file headers for details.
Please note that theYAKElibrary is licended
underGPLv3, while Annif is
licensed under the Apache License 2.0. The licenses are compatible, but
depending on legal interpretation, the terms of the GPLv3 (for example the
requirement to publish corresponding source code when publishing an executable
application) may be considered to apply to the whole of Annif+Yake if you
decide to install the optional Yake dependency.