Skip to main content

ovos-wordnet-plugin

OVOS plugin that exposes WordNet as a RetrievalEngine and a ToolBox with two agent tools.

Supports 30+ languages via the wn package with Open English WordNet 2024, ODENet for German, and OMW 1.4 packs for other languages. Lexicons are downloaded automatically on first use and cached locally.

For languages whose OMW pack has no native definitions (most non-EN/DE languages), the engine fetches the English OEWN definition and translates it into the target language using the OVOS translation plugin configured on the system (default: ovos-translate-plugin-server).


Installation

pip install ovos-wordnet-plugin

The first query downloads the required WordNet lexicon (~30–60 MB for English). Subsequent calls are served from the local cache with no network access.


Components

WordnetRetrievalEngine

An OVOS RetrievalEngine that returns natural-language passages for a word lookup. Each passage covers one WordNet sense and is formatted as:

dog (noun): a member of the genus Canis. Also known as: domestic dog, Canis familiaris. Example: the dog barked all night

When the query matches a locale intent pattern (e.g. "what are the antonyms of happy?") the engine resolves that specific relation and returns a single rendered dialog response instead.

Passages are drawn from all four parts of speech (noun → verb → adjective → adverb) up to the requested k limit.

from ovos_wordnet_plugin import WordnetRetrievalEngine

engine = WordnetRetrievalEngine()
for passage, score in engine.query("bank", lang="en", k=3):
    print(f"[{score:.2f}] {passage}")
[0.70] bank (noun): sloping land (especially the slope beside a body of water). Example: he sat on the bank of the river
[0.70] bank (noun): a financial institution that accepts deposits. Also known as: depository financial institution.
[0.70] bank (verb): tip laterally. Example: the pilot had to bank the aircraft

Intent-style queries return a single spoken-language response:

for passage, score in engine.query("what are the hyponyms of dog", lang="en"):
    print(f"[{score:.2f}] {passage}")
# [0.90] The hyponyms of dog are: poodle, corgi, dalmatian, ...

WordnetToolbox

An OVOS ToolBox that registers two agent tools.

define_word

Returns definitions grouped by part of speech, plus usage examples.

Argument Type Default Description
word str — Word to define
lang str "en" BCP-47 language code
pos str "any" "noun", "verb", "adjective", "adverb", or "any"
from ovos_wordnet_plugin import WordnetToolbox, DefineWordArgs

tb = WordnetToolbox()
out = tb.define_word(DefineWordArgs(word="run", lang="en", pos="verb"))
for pos_label, definition in out.definitions:
    print(f"{pos_label}: {definition}")
# verb: move fast by using one's feet, with one foot off the ground at any given time
print(out.examples[:2])
# ['she ran her first marathon', ...]

word_relations

Returns synonyms, antonyms, hypernyms, hyponyms, and holonyms.

Argument Type Default Description
word str — Word to look up
lang str "en" BCP-47 language code
pos str "noun" "noun", "verb", "adjective", or "adverb"
from ovos_wordnet_plugin import WordnetToolbox, WordRelationsArgs

tb = WordnetToolbox()
out = tb.word_relations(WordRelationsArgs(word="dog", lang="en", pos="noun"))
print("synonyms:", out.synonyms)     # ['dog', 'domestic dog', 'Canis familiaris']
print("hypernyms:", out.hypernyms)   # ['canine', 'canid', ...]
print("hyponyms:", out.hyponyms[:3]) # ['corgi', 'dalmatian', 'poodle']
print("holonyms:", out.holonyms)     # ['pack', ...]

Low-level Wordnet helper

The Wordnet class provides direct access to all WordNet relations:

from ovos_wordnet_plugin import Wordnet, NOUN, ADJ

# First sense only
data = Wordnet.get("bank", pos=NOUN, lang="en")

# All senses (generator)
for sense in Wordnet.search("bank", pos=NOUN, lang="en"):
    print(sense["definition"])

# Individual lookups
Wordnet.get_definition("bank", lang="en")
Wordnet.get_lemmas("bank", lang="en")
Wordnet.get_hypernyms("dog", lang="en")
Wordnet.get_hyponyms("dog", lang="en")
Wordnet.get_holonyms("dog", lang="en")
Wordnet.get_antonyms("good", pos=ADJ, lang="en")
Wordnet.get_root_hypernyms("dog", lang="en")
Wordnet.common_hypernyms("dog", "cat", lang="en")

Supported Languages

English uses OEWN 2024 (native definitions throughout). German uses ODENet (native definitions for ~85% of synsets). All other languages use their OMW 1.4 pack, which provides lemmas but typically no glosses — definitions are translated from English via the configured OVOS translation plugin.

BCP-47 Language Source
en English Open English WordNet 2024
de German ODENet 1.4 (native definitions)
ar Arabic OMW 1.4
bg Bulgarian OMW 1.4
ca Catalan OMW 1.4
cmn Mandarin Chinese OMW 1.4
da Danish OMW 1.4
el Greek OMW 1.4
es Spanish OMW 1.4
eu Basque OMW 1.4
fi Finnish OMW 1.4
fr French OMW 1.4
gl Galician OMW 1.4
he Hebrew OMW 1.4
hr Croatian OMW 1.4
id Indonesian OMW 1.4
is Icelandic OMW 1.4
it Italian OMW 1.4
ja Japanese OMW 1.4
lt Lithuanian OMW 1.4
nb Norwegian Bokmål OMW 1.4
nl Dutch OMW 1.4
nn Norwegian Nynorsk OMW 1.4
pl Polish OMW 1.4
pt Portuguese OMW 1.4
ro Romanian OMW 1.4
sk Slovak OMW 1.4
sl Slovenian OMW 1.4
sv Swedish OMW 1.4
th Thai OMW 1.4
zsm Standard Malay OMW 1.4

Running tests

pip install pytest
pytest tests/

License

Apache 2.0 — see LICENSE.

Metadata

Release files for ovos-wordnet-plugin 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovos-wordnet-plugin 0.1.0
File Size Uploaded
ovos_wordnet_plugin-0.1.0.tar.gz 19.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ovos-wordnet-plugin 0.1.0
File Interpreter ABI Platform
ovos_wordnet_plugin-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.0 kB

Release files / ovos_wordnet_plugin-0.1.0.tar.gz

Download URL ovos_wordnet_plugin-0.1.0.tar.gz
Size 19.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c776099cb56dc7f1a7136d6da77402cac35991e2fe8a8451fb3cd85502949006
BLAKE2b-256 checksum
How to use checksums
827f05d4e9abf4c19cfa2b28f6468be5a226c861e673c922ab6a002c1ee3b450
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / ovos_wordnet_plugin-0.1.0-py3-none-any.whl

Download URL ovos_wordnet_plugin-0.1.0-py3-none-any.whl
Size 14.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e55a04bb6814d71c3e7166fdcb013d5c52869c0450520c5f96c52d8407b2b9ba
BLAKE2b-256 checksum
How to use checksums
7ffd5eaee80be36d64800d4b1e71db0041d195084152d1abf72e0848b5fbf97f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page