|
Download README.md from finipher/finipher-tax-document-classifier: direct link, hf CLI and curl.
- Browser
- Download file 3.62 kB
-
https://huggingface.co/finipher/finipher-tax-document-classifier/resolve/main/README.md
- Command line
-
hf download hf://finipher/finipher-tax-document-classifier/README.md
-
curl -L -o README.md https://huggingface.co/finipher/finipher-tax-document-classifier/resolve/main/README.md
3.62 kB
| license: other | |
| base_model: sentence-transformers/all-MiniLM-L6-v2 | |
| datasets: | |
| - finipher/finipher-us-tax-document-classifier | |
| pipeline_tag: text-classification | |
| language: | |
| - en | |
| tags: | |
| - finance | |
| - tax | |
| - document-classification | |
| # Finipher tax document classifier v1.0.0 | |
| Names what a US tax or financial document is (W-2, 1098, 1099-INT, mortgage statement, paystub, | |
| brokerage statement and so on) from the first 128 tokens of its extracted text. 95 labels. | |
| It is a small head on a frozen MiniLM encoder. The head only works with the exact encoder it was | |
| trained on, so this repo carries its own copy of that encoder (`model.safetensors`, SHA-256 | |
| `96d95c25…`). That file also holds a transaction output layer, which this model ignores. | |
| Internal names: checkpoint `finance-multitask-minilm-two-head-v2`; head artifact | |
| `tax-document-head-20261027-v1.1-category-encoder` (stored inside `tax_document_head_config.json`). | |
| ## How to use | |
| The head is custom, so load it with this code (the same steps Finipher runs in production): | |
| ```python | |
| from huggingface_hub import snapshot_download | |
| from safetensors.torch import load_file | |
| from transformers import AutoModel, AutoTokenizer | |
| import json, torch | |
| path = snapshot_download("finipher/finipher-tax-document-classifier", revision="v1.0.0") | |
| tok = AutoTokenizer.from_pretrained(path) | |
| enc = AutoModel.from_pretrained(path).eval() # ignores the transaction output layer | |
| head = load_file(f"{path}/tax_document_head.safetensors") | |
| cfg = json.load(open(f"{path}/tax_document_head_config.json")) | |
| labels = [cfg["id2label"][str(i)] for i in range(cfg["num_labels"])] | |
| def classify(text: str): | |
| x = tok([text.strip()[:4000]], truncation=True, max_length=128, return_tensors="pt") | |
| with torch.inference_mode(): | |
| h = enc(**x).last_hidden_state | |
| m = x["attention_mask"].unsqueeze(-1).float() | |
| e = torch.nn.functional.normalize((h * m).sum(1) / m.sum(1), dim=-1) | |
| p = torch.softmax(e @ head["weight"].T + head["bias"], dim=-1)[0] | |
| i = int(p.argmax()) | |
| return labels[i], float(p[i]), float(p[i]) >= cfg["review_threshold"] # 0.76 | |
| ``` | |
| The third value says whether the label is confident enough to use (0.76 or higher). Below that, | |
| send the document to a person to review. `OTHER_TAX_FORM` and `UNKNOWN_DOCUMENT` always need review. | |
| ## Results | |
| Measured offline through Finipher's production code: | |
| - Test set (2,531 documents): 98.5%. | |
| - Same set with the titles cut off (1,203): 94.7%. | |
| - Blind probes (33): 90.9%. | |
| ## Known mistakes | |
| - Credit card statement CSV exports read as BANK_STATEMENT (confidence 0.51–0.71, so usually sent to review). | |
| ## Training data | |
| `finipher/finipher-us-tax-document-classifier` at revision `92c67c9` (v1.1.0), licensed CC-BY-4.0. | |
| The encoder underneath also comes from the transaction model, whose training data is still to be | |
| confirmed. This repo stays private until that is documented. | |
| ## Use | |
| The output names a document type. It is not tax or financial advice. | |
| ## Files and SHA-256 | |
| | File | SHA-256 | | |
| |---|---| | |
| | `config.json` | `6b8c456706017e7cbddd8a4826a88746294100336be5aa9e40f7730890f1b72b` | | |
| | `model.safetensors` | `96d95c2520f9b8cee0a3e85e1440f541420c4c043e18a0c4579943e08e91a5a3` | | |
| | `tokenizer.json` | `41b9d12a4c559e4098f30173bc0f76d092c43d7b1f873e7027da45a256f30f87` | | |
| | `tokenizer_config.json` | `1128dd50ff3f913671a9405619c1bd8f9e9ddc28f62257cb94ed70683590b715` | | |
| | `tax_document_head.safetensors` | `bb60aaad3734afda9120757dec4e2ed60ae04c6ba93f5993a3cb0c893ee4ac35` | | |
| | `tax_document_head_config.json` | `41600002856c26fc30bb47d2c6e40b3c8a0352b77220c1e21c3d6c3e57594c8b` | | |