Skip to main content

Torch-only inference for grounded infon extraction: paragraph in -> typed, grounded, polarity-aware infons + coreference, multilingual (EN/JA/KO), on a fine-tuned mDeBERTa backbone. No transformers runtime dependency.

Project description

hyper-gliner

Torch-only inference for grounded infon extraction + learned-sparse recall, multilingual (EN/JA/KO), on fine-tuned mDeBERTa + a BERT SPLADE retriever. No transformers runtime dependency — both encoders are reimplemented and parity-proven, so the package is small enough to ship in an AWS Lambda container image.

from hyper_gliner import InfonExtractor, SpladeRetriever

ex = InfonExtractor.from_pretrained("cp500/infon-extract")        # extraction + polarity + coref
infons = ex.extract("Samsung SDI supplies battery cells to BMW.")  # -> [Infon(...)]
#  Infon(Samsung SDI —supplies→ battery cells)  polarity=affirmed

# the {"anchors","infons","stats"} envelope the downstream pipeline consumes:
doc = ex.extract_doc("...", title="...")        # drop-in for extract_infons_neural

sp = SpladeRetriever.from_pretrained("cp500/infon-extract")        # loads the sparse/ subfolder
terms = sp.encode("electric SUV battery", mode="query")            # {term_id: weight}
doc = ex.extract_doc("...", sparse=sp)          # attaches per-infon splade_terms (recall tags)

What's in the box

Capability Model Role
Extraction mDeBERTa-v3 (fine-tuned) + span_rep + classifier + count explicit grounded infons (subject→predicate→object + polarity)
Polarity 3-way head (affirmed / negated / uncertain) constitutive negation
Coreference Lee-2017 antecedent head resolve anaphora (rewrite-first)
Sparse recall cp500/opensearch-neural-sparse-en-jp-ko (BERT SPLADE) implicit term-level recall (complements extraction)

All weights ship as fp16 in cp500/infon-extract (the sparse model under sparse/).

Dependencies

torch, tokenizers, safetensors, numpy. Optional huggingface_hub (only to download from the Hub; pass a local dir otherwise — e.g. weights baked into a Lambda image).

Design notes

  • Torch-only, parity-proven. The mDeBERTa encoder (disentangled attention) and the BERT SPLADE encoder are reimplemented in pure torch and gated bit-close against the reference implementation (tests/test_parity.py 9.5e-5, tests/test_bert_parity.py 1e-5). The full decode is gated against the reference implementation (tests/test_decode_parity.py, exact on EN/JA/KO).
  • CJK grounding. A subword splitter + char-offset grounding make Japanese/Korean ground at 100% (the base span-extraction architecture whitespace-splits and fails on spaceless CJK).
  • Precision vs recall, separated. extract() applies an exact-span argmax filter (one canonical type per span, nesting preserved). The SPLADE head supplies the multi-label / implicit recall channel as splade_terms — feeding an inverted index, a SQL splade_terms side-table, and the term↔infon bipartite incidence a Sheaf GNN expands.
  • fp16 only. int8-dynamic was measured to hurt the extraction model (grounding 14→5 spans, and larger on disk because the embedding table stays fp32); fp16 is the shipped artifact.

Consumer contract

extract_doc() returns the same {"anchors","infons","stats"} envelope, with each infon dict carrying subject / predicate / object / polarity(int) / mass{supports,refutes,theta} / span / confidence / relation_type / tense / anchors, so it is a drop-in for the downstream ingest pipeline + Memgraph writer + MCTS/IKL readers. See tests/test_consumer_contract.py.

License

Apache-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyper_gliner-0.1.1.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyper_gliner-0.1.1-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

Details for the file hyper_gliner-0.1.1.tar.gz.

File metadata

  • Download URL: hyper_gliner-0.1.1.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for hyper_gliner-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5ba6ba9e5e37340630a94c8b365dbe28be65df62fa6f8324c8a7a41bf656ffc3
MD5 4e656130ea84e7c4148af1802fada4ef
BLAKE2b-256 fdec637e6ce6399235f6d127f640ff2f0784178ba55ad635b94afaeac2c0f298

See more details on using hashes here.

File details

Details for the file hyper_gliner-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hyper_gliner-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for hyper_gliner-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d744dee4b8b426a7ded119de5a8ba65f33927fdb20c2625666b7b317b3ff733e
MD5 24fa4e4dd694e7ab17faeda15176453c
BLAKE2b-256 cfacceb891e1a3dd27a7f541bd29cf5b6e3701cff82aa454eb890c04160b12dc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page