Skip to main content

pyprocessors-coreference

Processor grouping the mentions of the same entity.

Ce dépôt enregistre un processeur dans le groupe d'entry-points pyprocessors.plugins :

Plugin Classe
coreference pyprocessors_coreference.coreference:CoreferenceProcessor

Il regroupe les mentions d'une même entité avant le linking, pour qu'elles soient liées une seule fois, à partir de leur forme la plus longue. C'est l'étape de regroupement des mentions de l'ADR-0001 de pyannotators_entityfishing (docs/adr/), palier 1 : les noms seulement.

Ce qu'il fait

Pour chaque document, entre mentions de même label :

  • même surface normalisée → même groupe. La normalisation ignore la casse, les espaces, le style des apostrophes, et les civilités en tête d'un nom de personne (« M. », « Mme », « Dr »…) ;
  • tous les labels de personne forment une seule famille : le person du NER et l'afpperson des lexiques AFP annotent le même span, et vont dans le même groupe ;
  • un nom partiel de personne rejoint le nom complet dont il est la fin, que le nom complet soit avant ou après lui dans le document : « Macron » et « M. Macron » rejoignent « Emmanuel Macron » ;
  • un prénom seul ne rejoint jamais un nom complet : « Emmanuel » reste à part ;
  • un nom partiel ambigu n'est pas fusionné : avec « Emmanuel Macron » et « Brigitte Macron » dans le texte, « Macron » garde son propre groupe, et liste les groupes possibles pour que l'étape de linking tranche ;
  • la règle du nom partiel ne vaut que pour les personnes : « Airbus » ne rejoint pas « Airbus Defence and Space ».

Sur chaque annotation d'un label regroupé, il écrit dans properties :

Propriété Valeur
entity_group l'identifiant du groupe dans le document : g1, g2… dans l'ordre de première apparition
canonical_form la forme la plus longue du groupe, sans civilité : c'est elle qu'on cherche dans la base de connaissances
mention_type name (les périphrases et les pronoms, nominal et pronoun, viendront avec les paliers 2 et 3)
entity_group_candidates seulement sur un nom partiel ambigu : les groupes auxquels il peut appartenir

Les autres propriétés de l'annotation sont gardées, et traiter deux fois un document donne le même résultat. La portée est le document entier, ce qui convient à une dépêche ; les documents longs sont une question ouverte (SHERPA-3048).

Requirements

  • Python 3.12+
  • pymultirole_plugins (>=1.6.0,<1.7.0)

Installation

pip install pyprocessors-coreference

Usage

from pymultirole_plugins.v1.schema import Annotation, Document

from pyprocessors_coreference.coreference import CoreferenceParameters, CoreferenceProcessor

text = "Emmanuel Macron est arrivé. M. Macron a parlé."
document = Document(
    text=text,
    annotations=[
        Annotation(start=0, end=15, labelName="person", text="Emmanuel Macron"),
        Annotation(start=28, end=37, labelName="person", text="M. Macron"),
    ],
)
[document] = CoreferenceProcessor().process([document], CoreferenceParameters())
# Both annotations: entity_group "g1", canonical_form "Emmanuel Macron".

Parameters

Paramètre Défaut Description
labels vide Labels des mentions à regrouper. Vide : tous les labels.
person_labels vide Labels de personne : ils forment une seule famille, et la règle du nom partiel s'y applique. Vide : tout label dont le nom contient « person » (person, afpperson…).
honorifics M., Mme, Dr, Mr Civilités ignorées en tête d'un nom de personne. Paramètre avancé.

Development

Le build est piloté par Task et uv, les stages venant du submodule python-archetype :

git submodule update --init
task stages          # les stages du pipeline, dans l'ordre
task                 # tout sauf le dernier stage — donc tout sauf la publication
task -- --skip-tests # idem, sans le stage de test
task up-to -- py:lint
task jenkins         # tout, exactement ce que joue Jenkins
task --list

uv.lock n'est pas versionné ici, donc py:sync résout les dépendances à neuf.

Release files for pyprocessors-coreference 1.6.1

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

Source distribution (sdist)

Source distribution for pyprocessors-coreference 1.6.1
File Size Uploaded
pyprocessors_coreference-1.6.1.tar.gz 36.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyprocessors-coreference 1.6.1
File Interpreter ABI Platform
pyprocessors_coreference-1.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 42.8 kB

Release files / pyprocessors_coreference-1.6.1.tar.gz

Download URL pyprocessors_coreference-1.6.1.tar.gz
Size 36.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f41171a79798a98c34ad164d25b2252a71377c945c5463d1c9e878396a3bb21a
BLAKE2b-256 checksum
How to use checksums
37d7105a3b1f49fa18055e4dd3e5d40df9aa264c2f2743a1d4b2dc089fee7298
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pyprocessors_coreference-1.6.1-py3-none-any.whl

Download URL pyprocessors_coreference-1.6.1-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8c37bfc653e2e7646342c8bb43db14c21407eb5dd68a952f212b9f3684060051
BLAKE2b-256 checksum
How to use checksums
f4fdb40443b534162cac527ec55864ee196b09ac16251c02ddfcc7e190d83d81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.6.1 This release

2 release files

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