goanon

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2026 License: GPL-3.0 Imports: 3 Imported by: 0

README

go-anon

Pipeline de reconnaissance d'entités nommées (NER) et d'anonymisation pour le français et l'anglais, sans dépendance externe.

Fonctionnalités

  • Détection d'entités nommées (personnes, lieux, organisations) via un modèle CRF linéaire ;
  • Détection par expression régulière d'identifiants structurés : e-mail, IPv4/IPv6, IBAN, SIRET, SIREN, numéro de téléphone ;
  • Détection de jetons d'authentification et clés d'API : JWT, OpenAI, AWS, GitHub, Slack, Stripe, Bearer ;
  • Anonymisation configurable : remplacement par tag, caviardage, empreinte SHA-256 ou pseudonymes cohérents ;
  • Traitement de documents bureautiques : DOCX, ODT, CSV/TSV, PDF ;
  • Support du français et de l'anglais avec profils linguistiques dédiés ;
  • Post-filtres chaînables : seuil de confiance, longueur de span, liste noire ;
  • Enrichissement optionnel via gazetteers et Brown clusters ;
  • Serveur HTTP intégré via cmd/server.

Utilisation

go get github.com/bornholm/go-anon
import goanon "github.com/bornholm/go-anon"

// Charger un modèle
f, _ := os.Open("model_fr.crf.gz")
m, _ := goanon.LoadModel(f)

// Reconnaître des entités
r, _ := goanon.NewRecognizer(m, goanon.WithLanguage("fr"))
entities, _ := r.Recognize("Jean Dupont habite à Paris.")
// → [{Text:"Jean Dupont", Type:"PER"}, {Text:"Paris", Type:"LOC"}]

// Anonymiser
anon := goanon.NewAnonymizer(r, goanon.Config{Strategy: goanon.TagReplace})
result, _ := anon.Anonymize("Jean Dupont habite à Paris.")
// result.Text → "[PERSON_1] habite à [LOCATION_1]."

// Activer la détection des identifiants structurés courants (e-mail, IP, IBAN…)
r, _ = goanon.NewRecognizer(m,
    goanon.WithLanguage("fr"),
    goanon.WithBuiltinRegexPatterns(),
)

// Activer la détection des jetons d'authentification et clés d'API
r, _ = goanon.NewRecognizer(m,
    goanon.WithLanguage("fr"),
    goanon.WithBuiltinSecretPatterns(), // JWT, OpenAI sk-, AWS AKIA, GitHub ghp_, Slack xox*, Stripe sk_live_, Bearer…
)

Voir docs/tutoriel-modele-fr.md pour entraîner un modèle français.

Licence

GPL-3.0

Documentation

Overview

Package goanon fournit une API de haut niveau pour la reconnaissance d'entités nommées (NER) et l'anonymisation de texte en français et en anglais.

Usage minimal :

f, _ := os.Open("model.crf.gz")
m, err := goanon.LoadModel(f)
r, err := goanon.NewRecognizer(m, goanon.WithLanguage("fr"))
entities, err := r.Recognize("Jean Dupont habite à Paris.")

Anonymisation :

anon := goanon.NewAnonymizer(r, goanon.Config{Strategy: goanon.TagReplace})
result, err := anon.Anonymize("Jean Dupont habite à Paris.")
// result.Text == "[PERSON_1] habite à [LOCATION_1]."

Index

Constants

View Source
const (
	TypePER  = ner.TypePER
	TypeLOC  = ner.TypeLOC
	TypeORG  = ner.TypeORG
	TypeMISC = ner.TypeMISC

	TypeEMAIL = ner.TypeEMAIL
	TypeIPV4  = ner.TypeIPV4
	TypeIPV6  = ner.TypeIPV6
	TypeIBAN  = ner.TypeIBAN
	TypeSIRET = ner.TypeSIRET
	TypeSIREN = ner.TypeSIREN
	TypePHONE = ner.TypePHONE

	TypeAPIKey = ner.TypeAPIKey
	TypeJWT    = ner.TypeJWT
	TypeSecret = ner.TypeSecret
)
View Source
const (
	TagReplace = anonymizer.TagReplace
	Redact     = anonymizer.Redact
	Hash       = anonymizer.Hash
	Consistent = anonymizer.Consistent
)

Variables

View Source
var BlocklistFilter = ner.BlocklistFilter
View Source
var BuiltinRegexPatterns = ner.BuiltinRegexPatterns
View Source
var ConsistencyPass = anonymizer.ConsistencyPass
View Source
var DefaultSentenceBoundaries = ner.DefaultSentenceBoundaries
View Source
var FirstNameDetectionFilter = ner.FirstNameDetectionFilter
View Source
var FirstNameReclassifyFilter = ner.FirstNameReclassifyFilter
View Source
var LoadBrownClusters = features.LoadBrownClusters
View Source
var LoadGazetteer = features.LoadGazetteer
View Source
var LoadModel = ner.LoadModel

LoadModel charge un modèle CRF sérialisé depuis r (format gob+gzip).

View Source
var MaxTokensFilter = ner.MaxTokensFilter
View Source
var MergePass = ner.MergePass
View Source
var MinConfidenceFilter = ner.MinConfidenceFilter
View Source
var NameCompletionPass = ner.NameCompletionPass
View Source
var NewAnonymizer = anonymizer.New

NewAnonymizer crée un Anonymizer qui s'appuie sur le Recognizer donné.

View Source
var NewRecognizer = ner.New

NewRecognizer construit un Recognizer NER avec le modèle m et les options fournies. Voir WithLanguage, WithGazetteers, WithBrownClusters, WithPostFilters.

View Source
var RegexEntityFilter = ner.RegexEntityFilter
View Source
var SecretPatterns = ner.SecretPatterns
View Source
var SurnameCompletionPass = anonymizer.SurnameCompletionPass
View Source
var WithBrownClusters = ner.WithBrownClusters
View Source
var WithBuiltinRegexPatterns = ner.WithBuiltinRegexPatterns
View Source
var WithBuiltinSecretPatterns = ner.WithBuiltinSecretPatterns
View Source
var WithFirstNameDetectionPass = ner.WithFirstNameDetectionPass
View Source
var WithFirstNameReclassify = ner.WithFirstNameReclassify
View Source
var WithGazetteers = ner.WithGazetteers
View Source
var WithLanguage = ner.WithLanguage
View Source
var WithMergePass = ner.WithMergePass
View Source
var WithNameCompletionPass = ner.WithNameCompletionPass
View Source
var WithPostFilters = ner.WithPostFilters
View Source
var WithRegexPatterns = ner.WithRegexPatterns
View Source
var WithSentenceBoundaries = ner.WithSentenceBoundaries

Functions

This section is empty.

Types

type AnonymizePass

type AnonymizePass = anonymizer.AnonymizePass

type BrownClusters

type BrownClusters = features.BrownClusters

type Config

type Config = anonymizer.Config

type Entity

type Entity = ner.Entity

type EntityFilter

type EntityFilter = ner.EntityFilter

type EntityType

type EntityType = ner.EntityType

type Gazetteer

type Gazetteer = features.Gazetteer

type Model

type Model = ner.Model

type Recognizer

type Recognizer = anonymizer.Recognizer

type RecognizerOption

type RecognizerOption = ner.RecognizerOption

type RegexPattern

type RegexPattern = ner.RegexPattern

RegexPattern associe une expression régulière à un type d'entité.

type ReplacerFunc

type ReplacerFunc = anonymizer.ReplacerFunc

type Result

type Result = anonymizer.Result

type Strategy

type Strategy = anonymizer.Strategy

Directories

Path Synopsis
cmd
anon-doc command
Commande anon-doc — anonymisation de documents bureautiques (DOCX, ...).
Commande anon-doc — anonymisation de documents bureautiques (DOCX, ...).
brown-cluster command
Commande brown-cluster — génère des Brown clusters depuis un corpus texte.
Commande brown-cluster — génère des Brown clusters depuis un corpus texte.
demo command
Commande demo — démonstration interactive du pipeline NER et anonymisation.
Commande demo — démonstration interactive du pipeline NER et anonymisation.
eval command
Commande eval — évalue un modèle CRF-NER sur un corpus annoté.
Commande eval — évalue un modèle CRF-NER sur un corpus annoté.
internal/cmdutil
Package cmdutil fournit des utilitaires partagés entre les commandes CLI.
Package cmdutil fournit des utilitaires partagés entre les commandes CLI.
prune command
Commande prune — élaguer les poids d'un modèle CRF existant pour réduire son empreinte disque et mémoire, sans nécessiter de réentraînement.
Commande prune — élaguer les poids d'un modèle CRF existant pour réduire son empreinte disque et mémoire, sans nécessiter de réentraînement.
server command
train command
Commande train — entraîne un modèle CRF-NER sur un corpus annoté.
Commande train — entraîne un modèle CRF-NER sur un corpus annoté.
pkg
csv
ner
odt
pdf

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL