kermitt2 / entity-fishing

A machine learning tool for fishing entities
http://nerd.readthedocs.io/
Apache License 2.0
234 stars 25 forks source link
entity-disambiguation knowledge-engineering machine-learning wikidata wikipedia

License Documentation Status SWH Demo cloud.science-miner.com/nerd Docker Hub

entity-fishing

entity-fishing performs the following tasks for 15 different languages:

Documentation

Presentation of entity-fishing at WikiDataCon 2017 for some design, implementation descriptions, and some evaluations.

The documentation of entity-fishing is available here.

entity-fishing uses a query DSL (entity disambiguation specific query language) documented here.

Demo

For testing purposes, a public entity-fishing demo server (current version) is available at the following address: https://cloud.science-miner.com/nerd

The query DSL and Web services are documented here.

Warning: Some quota and query limitation apply to the demo server! Please be courteous and do not overload the demo server.

A docker image is available to help you deploying your own server.

Benchmarks

entity-fishing

Evaluations above correspond to the "overall unnormalized accuracy" scenario in BLINK and are limited to Named Entities. entity-fishing performs at 0.765 F-score, as compared to 0.8027 for BLINK, a fine-tuned BERT architectures. entity-fishing surpasses BLINK for the dataset AQUAINT, 0.891 vs. 0.8588, and MSNBC, 0.867 vs. 0.8509, despite being considerably faster and lighter than BLINK (see below).

See the evaluation documentation and Presentation of entity-fishing at WikiDataCon 2017 for more details.

entity-fishing has been designed to be particularly fast for a full scale Wikidata-based entity disambiguation tool (in particular not limited to Named Entities). On a single server, depending on the concurrency, it is possible to process from 1.000-1.500 tokens per seconds with concurrency 1 to 5.000 tokens per second for instance with 6 concurrent requests in English (and up to 2 times faster for other languages).

Some use cases

Some example of entity-fishing usages:

If you are using entity-fishing and found it useful, we are happy to mention you in this section !

Current version

entity-fishing is a work-in-progress side project! Latest release version is 0.0.6.

This version supports 15 languages: English, French, German, Italian, Spanish, Arabic, Mandarin, Russian, Japanese, Portuguese, Farsi, Ukrainian, Swedish, Bengali and Hindi with an in-house Named Entity Recognizer available for English and French. For this version, the available knowledge base includes around 96 million entities from Wikidata - but you can create your own fresh knowledge base with the GRISP utility.

Runtime: version 0.0.6 2022, on a local machine (Intel Haswel i7-4790K CPU 4.00GHz - 8 cores - 16GB - SSD, 2015) for English (other languages are up to 50% faster - these runtimes do not include a 15s-30s initial server launch/start-up and are obtained with an empty cache and without LMDB pages pre-loaded in RAM memory).

Accuracy: F1-score for disambiguation only between 76.5 and 89.1 on standard datasets (ACE2004, AIDA-CONLL-testb, AQUAINT, MSNBC) - to be improved in the future versions.

The knowledge base contains more than 1.5 billion objects, not far from 15 millions word and entity embeddings, however entity-fishing will work with 3-4 GB RAM memory after a 15 second start-up for the server - but please use SSD!

How to cite

If you want to cite this work, please refer to the present GitHub project, together with the Software Heritage project-level permanent identifier. For example, with BibTeX:

@misc{entity-fishing,
    title = {entity-fishing},
    howpublished = {\url{https://github.com/kermitt2/entity-fishing}},
    publisher = {GitHub},
    year = {2016--2023},
    archivePrefix = {swh},
    eprint = {1:dir:cb0ba3379413db12b0018b7c3af8d0d2d864139c}
}

License and contact

Distributed under Apache 2.0 license. The dependencies used in the project are either themselves also distributed under Apache 2.0 license or distributed under a compatible license.

If you contribute to this project, you agree to share your contribution following these licenses.

Main author and contact: Patrice Lopez (patrice.lopez@science-miner.com)

entity-fishing has been created, developed and is maintained by SCIENCE-MINER. The development started in 2015, with the first Open Source public version available in 2016.

The project has received support from Kairntech (2022) under a RAPID grant and contributions from Inria Paris (2017-2018).