File size: 1,534 Bytes
5585e8d
 
aa682ab
 
 
5585e8d
aa682ab
5585e8d
aa682ab
 
 
 
5585e8d
 
aa682ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34bf220
aa682ab
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
---
title: Alias
emoji: 🫥
colorFrom: gray
colorTo: blue
sdk: static
app_file: index.html
pinned: false
license: mit
short_description: Mask personal data (FR/EN) in the browser before an LLM
models:
  - Gabrielkph/alias-mmbert-small
---

# Alias, public demo

Paste a French or English text: Alias highlights the personal data it finds (names, addresses,
e-mails, phones, IBANs, national IDs, birth dates, file numbers) and gives the text back with
stable aliases (`[PERSON_1]`, `[IBAN_1]`), ready to send to an LLM.

**The detector runs in your browser.** The page downloads the model once (about 600 MB, kept by
the browser for later visits) and the ONNX runtime, then masks the text locally: the text is never
sent anywhere, and the page's content security policy allows no host but Hugging Face (model
files) and jsDelivr (runtime). Still, use fictitious data: this is a demo.

Detector: checksum and keyword rules plus a fine-tuned mmBERT-small
([model](https://huggingface.co/Gabrielkph/alias-mmbert-small)), the same as the Python package,
ported to JavaScript and checked against it on GitHub Actions. Code, results and limits:
[github.com/gabrielkpo/alias](https://github.com/gabrielkpo/alias).

## Files

- `index.html`, `app.js`, `style.css`: the page; `app.js` loads transformers.js 4.3.2.
- `alias.js`: the detector's logic (rules, token windows, masking), ported from `src/alias_pii`.
- `test/`: unit tests (`npm test`) and the parity check against Python (`.github/workflows/demo.yml`);
  not uploaded to the Space.