goanon

package module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2026 License: GPL-3.0 Imports: 4 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.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 NewWhatlangDetector = langdetect.NewWhatlangDetector

NewWhatlangDetector construit un détecteur de langue basé sur whatlanggo, restreint aux codes ISO 639-1 fournis.

View Source
var RegexEntityFilter = ner.RegexEntityFilter
View Source
var SecretPatterns = ner.SecretPatterns
View Source
var SupportedLanguages = ner.SupportedLanguages

SupportedLanguages retourne les codes ISO 639-1 gérés par le pipeline (fr/en/es).

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 LanguageDetector added in v0.0.5

type LanguageDetector = langdetect.Detector

type LanguageResult added in v0.0.5

type LanguageResult = langdetect.Result

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
langdetect
Package langdetect fournit une abstraction de détection automatique de la langue d'un texte, indépendante de l'implémentation sous-jacente.
Package langdetect fournit une abstraction de détection automatique de la langue d'un texte, indépendante de l'implémentation sous-jacente.
modelstore
Package modelstore provides automatic discovery, download, verification, and caching of NER models published on GitHub Releases.
Package modelstore provides automatic discovery, download, verification, and caching of NER models published on GitHub Releases.
ner
odt
pdf

Jump to

Keyboard shortcuts

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