Publish rc10
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +0 -30
- .gitignore +3 -0
- LICENSE +73 -0
- NOTICE +13 -0
- PORTFOLIO_COMPARISON.md +72 -0
- README.md +175 -0
- common.py +1665 -0
- config.json +318 -0
- eval/benchmark_summary.json +167 -0
- eval/benchmark_summary.md +43 -0
- eval/full_diffmask_fresh_holdout_v1.json +85 -0
- eval/full_diffmask_gap_uat_exact_v1.json +53 -0
- eval/full_globalpointer_context_redteam_v1.json +109 -0
- eval/full_globalpointer_context_redteam_v2.json +69 -0
- eval/full_globalpointer_context_redteam_v3.json +77 -0
- eval/full_globalpointer_context_redteam_v4.json +101 -0
- eval/full_globalpointer_demographic_patch_v2_test.json +109 -0
- eval/full_globalpointer_location_coverage_v1.json +61 -0
- eval/full_globalpointer_location_coverage_v2.json +61 -0
- eval/full_globalpointer_location_coverage_v3.json +61 -0
- eval/full_irish_core_pii_v1.json +109 -0
- eval/full_irish_dllm_hardening_exact_v1.json +101 -0
- eval/full_irish_extended_pii_v1.json +109 -0
- eval/full_irish_gov_chatbot_gap_holdout_v1.json +258 -0
- eval/full_irish_gov_chatbot_gap_holdout_v2.json +93 -0
- eval/full_irish_gov_chatbot_redteam_assistant_v2.json +84 -0
- eval/full_irish_gov_chatbot_redteam_user_v2.json +108 -0
- eval/full_irish_gov_chatbot_redteam_v1.json +362 -0
- eval/full_irish_gov_chatbot_redteam_v2.json +109 -0
- eval/full_irish_gov_contact_policy_v1.json +77 -0
- eval/full_irish_numeric_qafix_v2.json +45 -0
- eval/full_irish_ppsn_phone_edge_v1.json +37 -0
- eval/full_irish_remaining_gaps_v2.json +36 -0
- eval/full_multilingual_ppsn_v1_all.json +29 -0
- eval/full_runtime_profile_source.json +29 -0
- eval/label_inventory.json +20 -0
- eval/q8_diffmask_fresh_holdout_v1.json +85 -0
- eval/q8_diffmask_gap_uat_exact_v1.json +53 -0
- eval/q8_globalpointer_context_redteam_v1.json +109 -0
- eval/q8_globalpointer_context_redteam_v2.json +69 -0
- eval/q8_globalpointer_context_redteam_v3.json +77 -0
- eval/q8_globalpointer_context_redteam_v4.json +101 -0
- eval/q8_globalpointer_demographic_patch_v2_test.json +109 -0
- eval/q8_globalpointer_location_coverage_v1.json +61 -0
- eval/q8_globalpointer_location_coverage_v2.json +61 -0
- eval/q8_globalpointer_location_coverage_v3.json +61 -0
- eval/q8_irish_core_pii_v1.json +109 -0
- eval/q8_irish_dllm_hardening_exact_v1.json +101 -0
- eval/q8_irish_extended_pii_v1.json +109 -0
- eval/q8_irish_gov_chatbot_gap_holdout_v1.json +258 -0
.gitattributes
CHANGED
|
@@ -1,35 +1,5 @@
|
|
| 1 |
-
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
-
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
-
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
-
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
-
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
-
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
-
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
-
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
-
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
-
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
-
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
-
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
-
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
-
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
-
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
-
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
-
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
-
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
-
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
-
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
-
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
-
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
-
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
-
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
-
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
-
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
-
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
-
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
| 1 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
*.onnx filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 4 |
*.pth filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 5 |
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.gitignore
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__pycache__/
|
| 2 |
+
*.pyc
|
| 3 |
+
.venv/
|
LICENSE
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Apache License
|
| 2 |
+
Version 2.0, January 2004
|
| 3 |
+
http://www.apache.org/licenses/
|
| 4 |
+
|
| 5 |
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
| 6 |
+
|
| 7 |
+
1. Definitions.
|
| 8 |
+
|
| 9 |
+
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
| 10 |
+
|
| 11 |
+
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
| 12 |
+
|
| 13 |
+
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
| 14 |
+
|
| 15 |
+
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
|
| 16 |
+
|
| 17 |
+
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
| 18 |
+
|
| 19 |
+
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
| 20 |
+
|
| 21 |
+
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
| 22 |
+
|
| 23 |
+
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
| 24 |
+
|
| 25 |
+
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
|
| 26 |
+
|
| 27 |
+
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
| 28 |
+
|
| 29 |
+
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
| 30 |
+
|
| 31 |
+
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
| 32 |
+
|
| 33 |
+
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
| 34 |
+
|
| 35 |
+
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
| 36 |
+
|
| 37 |
+
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
|
| 38 |
+
|
| 39 |
+
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
| 40 |
+
|
| 41 |
+
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
| 42 |
+
|
| 43 |
+
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
| 44 |
+
|
| 45 |
+
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
| 46 |
+
|
| 47 |
+
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
| 48 |
+
|
| 49 |
+
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
| 50 |
+
|
| 51 |
+
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
| 52 |
+
|
| 53 |
+
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
| 54 |
+
|
| 55 |
+
END OF TERMS AND CONDITIONS
|
| 56 |
+
|
| 57 |
+
APPENDIX: How to apply the Apache License to your work.
|
| 58 |
+
|
| 59 |
+
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
|
| 60 |
+
|
| 61 |
+
Copyright [yyyy] [name of copyright owner]
|
| 62 |
+
|
| 63 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
| 64 |
+
you may not use this file except in compliance with the License.
|
| 65 |
+
You may obtain a copy of the License at
|
| 66 |
+
|
| 67 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 68 |
+
|
| 69 |
+
Unless required by applicable law or agreed to in writing, software
|
| 70 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 71 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 72 |
+
See the License for the specific language governing permissions and
|
| 73 |
+
limitations under the License.
|
NOTICE
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
IrishCore-GlobalPointer-ContextPII-135M-v1-rc10
|
| 2 |
+
|
| 3 |
+
This release is derived from:
|
| 4 |
+
- OpenMed/OpenMed-PII-mLiteClinical-Base-135M-v1 (Apache-2.0)
|
| 5 |
+
|
| 6 |
+
Training and evaluation data used for this derivative included:
|
| 7 |
+
- temsa/OpenMed-Irish-CorePII-TrainMix-v1
|
| 8 |
+
- temsa/OpenMed-Irish-PPSN-Eircode-Spec-v1
|
| 9 |
+
- joelniklaus/mapa (CC-BY-4.0)
|
| 10 |
+
- gretelai/synthetic_pii_finance_multilingual (Apache-2.0)
|
| 11 |
+
|
| 12 |
+
Additional local synthetic hardening, UAT replay, and holdout sets were used during model selection.
|
| 13 |
+
Please review upstream licenses and dataset cards before redistributing derivative datasets.
|
PORTFOLIO_COMPARISON.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## Portfolio Comparison
|
| 2 |
+
|
| 3 |
+
Updated: `2026-03-15`.
|
| 4 |
+
|
| 5 |
+
Use this section for the fastest public comparison across the `temsa` PII masking portfolio.
|
| 6 |
+
|
| 7 |
+
- The first core table only includes public checkpoints that ship both comparable q8 accuracy and q8 CPU throughput.
|
| 8 |
+
- The first PPSN table only includes public artifacts that ship comparable PPSN accuracy and CPU throughput.
|
| 9 |
+
- Missing cells in the archive tables mean the older release did not ship that metric in its public bundle.
|
| 10 |
+
- DiffMask rows use the reconciled `clean_single_pass` harness that matches the deployed runtime.
|
| 11 |
+
- GlobalPointer rows use the public raw-only span-matrix release bundle and its packaged q8 ONNX artifact.
|
| 12 |
+
- The same content is shipped as `PORTFOLIO_COMPARISON.md` inside each public model repo.
|
| 13 |
+
|
| 14 |
+
### Irish Core PII: Comparable Public Checkpoints
|
| 15 |
+
|
| 16 |
+
| Repo | Stack | Full Core F1 | Q8 Core F1 | Q8 Multilingual PPSN F1 | Q8 Core ex/s |
|
| 17 |
+
|---|---|---:|---:|---:|---:|
|
| 18 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 125.8 |
|
| 19 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 119.8 |
|
| 20 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc8`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc8) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 128.9 |
|
| 21 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc7`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc7) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 89.0 |
|
| 22 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc6`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc6) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 89.0 |
|
| 23 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc5`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc5) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 84.5 |
|
| 24 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc4`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc4) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9333 | 61.5 |
|
| 25 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc3`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc3) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9333 | 61.5 |
|
| 26 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc2`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc2) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9222 | 61.5 |
|
| 27 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9222 | 61.5 |
|
| 28 |
+
| [`temsa/IrishCore-GlobalPointer-135M-v1-rc4`](https://huggingface.co/temsa/IrishCore-GlobalPointer-135M-v1-rc4) | GlobalPointer raw-only span-matrix | 1.0000 | 1.0000 | 0.9333 | 221.6 |
|
| 29 |
+
| [`temsa/IrishCore-GlobalPointer-135M-v1-rc3`](https://huggingface.co/temsa/IrishCore-GlobalPointer-135M-v1-rc3) | GlobalPointer raw-only span-matrix | 1.0000 | 1.0000 | 0.9213 | 204.9 |
|
| 30 |
+
| [`temsa/IrishCore-GlobalPointer-135M-v1-rc2`](https://huggingface.co/temsa/IrishCore-GlobalPointer-135M-v1-rc2) | GlobalPointer raw-only span-matrix | 0.9934 | 0.9934 | 0.9326 | 231.2 |
|
| 31 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc8`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc8) | Raw-only token-span | 0.9737 | 0.9737 | 0.9176 | 46.1 |
|
| 32 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc7`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc7) | Hybrid classifier + generated scanner spec | 1.0000 | 0.9934 | 1.0000 | 30.0 |
|
| 33 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc6`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc6) | Hybrid classifier + repair decoders | 1.0000 | 0.9934 | 1.0000 | 29.5 |
|
| 34 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc5`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc5) | Hybrid classifier + repair decoders | 0.9737 | 0.9669 | 0.9333 | 34.4 |
|
| 35 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc4`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc4) | Hybrid classifier + repair decoders | 0.9870 | 0.9740 | 0.9600 | 114.2 |
|
| 36 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc3`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc3) | Hybrid classifier + repair decoders | 0.9806 | 0.9677 | 0.9333 | 44.9 |
|
| 37 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc2`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc2) | Hybrid classifier + repair decoders | 0.9554 | 0.9615 | 0.7887 | 119.1 |
|
| 38 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v1`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v1) | Hybrid classifier baseline | 0.9530 | 0.9333 | 0.9882 | 103.3 |
|
| 39 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc6`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc6) | DiffMask token-span, scanner-free | 0.9801 | 0.9733 | 0.9274 | 130.3 |
|
| 40 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc5`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc5) | DiffMask token-span, scanner-free | 0.9733 | 0.9733 | 0.9379 | 249.2 |
|
| 41 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc4`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc4) | DiffMask token-span, scanner-free | 0.9733 | 0.9733 | 0.9371 | 29.5 |
|
| 42 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc3`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc3) | DiffMask token-span, scanner-free | 0.9664 | 0.9664 | 0.9591 | 30.0 |
|
| 43 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc2`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc2) | DiffMask token-span, scanner-free | 0.9664 | 0.9664 | 0.9212 | 247.1 |
|
| 44 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc1`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc1) | DiffMask token-span, scanner-free | 0.9801 | 0.9934 | 0.9412 | 251.2 |
|
| 45 |
+
|
| 46 |
+
### Irish Core PII: Other Public Checkpoints
|
| 47 |
+
|
| 48 |
+
| Repo | Stack | Full Core F1 | Q8 Core F1 | Q8 Multilingual PPSN F1 | Notes |
|
| 49 |
+
|---|---|---:|---:|---:|---|
|
| 50 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc1`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc1) | Hybrid classifier prototype | 0.9487 | — | — | Predates the public q8 artifact. |
|
| 51 |
+
|
| 52 |
+
Finance-boundary q8 F1 is `1.0000` for `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc6`, `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc7`, `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc8`, and all public `IrishCore-DiffMask` releases from `rc1` to `rc6`. `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc5` ships `0.8750` on that public q8 suite.
|
| 53 |
+
|
| 54 |
+
### PPSN-Only: Comparable Public Artifacts
|
| 55 |
+
|
| 56 |
+
| Repo | Artifact | Irish Large F1 | Multilingual PPSN F1 | User Raw F1 | QA v8 F1 | CPU ex/s |
|
| 57 |
+
|---|---|---:|---:|---:|---:|---:|
|
| 58 |
+
| [`temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1) | fp32 canonical checkpoint | 0.8979 | 0.9704 | 0.8000 | 0.7385 | 57.4 |
|
| 59 |
+
| [`temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-fp16`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-fp16) | fp16 CPU/GPU artifact | — | 0.9704 | 0.8000 | 0.7385 | 45.8 |
|
| 60 |
+
| [`temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-q8`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-q8) | dynamic int8 CPU artifact | — | 0.9040 | — | — | 132.1 |
|
| 61 |
+
|
| 62 |
+
### PPSN-Only: Historical Public Checkpoints
|
| 63 |
+
|
| 64 |
+
| Repo | Main Published Metrics | Notes |
|
| 65 |
+
|---|---|---|
|
| 66 |
+
| [`temsa/OpenMed-PPSN-mLiteClinical-v1`](https://huggingface.co/temsa/OpenMed-PPSN-mLiteClinical-v1) | same as canonical fp32 repo: multilingual 0.9704, user raw 0.8000 | Legacy alias; prefer `temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1`. |
|
| 67 |
+
| [`temsa/OpenMed-PPSN-v6-raw-rc2`](https://huggingface.co/temsa/OpenMed-PPSN-v6-raw-rc2) | irish_reg_v5 0.8750; user_raw 0.8000; qa_v8 0.7385 | Raw PPSN-only research checkpoint; no packaged multilingual CPU benchmark row. |
|
| 68 |
+
| [`temsa/OpenMed-PPSN-v5_1`](https://huggingface.co/temsa/OpenMed-PPSN-v5_1) | irish_large_v2 raw 0.9285; qa_v6 hybrid strict 1.0000 | Hybrid PPSN-only checkpoint; predates the canonical multilingual suite packaging. |
|
| 69 |
+
| [`temsa/OpenMed-PPSN-v5`](https://huggingface.co/temsa/OpenMed-PPSN-v5) | irish_reg_v5 raw 0.8235; irish_reg_v5 hybrid strict 1.0000 | Hybrid PPSN-only checkpoint; predates the canonical multilingual suite packaging. |
|
| 70 |
+
| [`temsa/OpenMed-PPSN-v4`](https://huggingface.co/temsa/OpenMed-PPSN-v4) | synthetic non-PPSN drift check only | Predates the current PPSN eval suite; no packaged apples-to-apples multilingual CPU row. |
|
| 71 |
+
|
| 72 |
+
If you need the strongest current raw-only Irish core model, start with `IrishCore-GlobalPointer-135M-v1-rc4`. If you need the fastest CPU-first raw-only line, compare it against `IrishCore-DiffMask-135M-v1-rc6`. If you need a PPSN-only artifact, compare the canonical `fp32`, `fp16`, and `q8` variants of `OpenMed-mLiteClinical-IrishPPSN-135M-v1` directly in the table above.
|
README.md
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language:
|
| 3 |
+
- en
|
| 4 |
+
- ga
|
| 5 |
+
license: apache-2.0
|
| 6 |
+
pipeline_tag: token-classification
|
| 7 |
+
tags:
|
| 8 |
+
- pii-masking
|
| 9 |
+
- token-classification
|
| 10 |
+
- globalpointer
|
| 11 |
+
- onnx
|
| 12 |
+
- dynamic-quantization
|
| 13 |
+
- ireland
|
| 14 |
+
- irish
|
| 15 |
+
- gaelic
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
# IrishCore-GlobalPointer-ContextPII-135M-v1-rc10
|
| 19 |
+
|
| 20 |
+
`IrishCore-GlobalPointer-ContextPII-135M-v1-rc10` is the current expanded-label raw-only PII masking release for Irish public-sector, HSE, and citizen-support flows.
|
| 21 |
+
|
| 22 |
+
It keeps the same DistilBERT-size GlobalPointer span extractor family as `temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9`, but ships a stronger bundled decoder for lowercase self-identification names, city-before-postcode recovery, wider street suffix coverage, dotted/month-first DOB recovery, and dotted phone formatting.
|
| 23 |
+
|
| 24 |
+
Context labels served by this line:
|
| 25 |
+
|
| 26 |
+
- `STREET_ADDRESS`
|
| 27 |
+
- `CITY`
|
| 28 |
+
- `COUNTY`
|
| 29 |
+
- `DATE_OF_BIRTH`
|
| 30 |
+
- `AGE`
|
| 31 |
+
|
| 32 |
+
Core labels retained:
|
| 33 |
+
|
| 34 |
+
- `PPSN`
|
| 35 |
+
- `POSTCODE`
|
| 36 |
+
- `PHONE_NUMBER`
|
| 37 |
+
- `EMAIL`
|
| 38 |
+
- `PASSPORT_NUMBER`
|
| 39 |
+
- `ACCOUNT_NUMBER`
|
| 40 |
+
- `BANK_ROUTING_NUMBER`
|
| 41 |
+
- `SWIFT_BIC`
|
| 42 |
+
- `CREDIT_DEBIT_CARD`
|
| 43 |
+
- `FIRST_NAME`
|
| 44 |
+
- `LAST_NAME`
|
| 45 |
+
|
| 46 |
+
## Positioning
|
| 47 |
+
|
| 48 |
+
`rc10` is a decoder-hardening release over `rc9`.
|
| 49 |
+
|
| 50 |
+
- weights unchanged
|
| 51 |
+
- ONNX graph unchanged
|
| 52 |
+
- no external scanner or validator added
|
| 53 |
+
- deployment path still single-pass span extraction plus deterministic `[PII:LABEL]` replacement
|
| 54 |
+
|
| 55 |
+
What changed in `rc10`:
|
| 56 |
+
|
| 57 |
+
- the decoder now recovers lowercase self-identification names from cues like `my name is aoife murphy` and `is mise eibhlín ní bhroin`
|
| 58 |
+
- the decoder now recovers city spans immediately before an Eircode even when the town is outside the hardcoded city list, for example `Naas, W91 XY45` and `An Nás, W91 XY45`
|
| 59 |
+
- the decoder now accepts broader Irish street suffixes such as `Crescent`, `Grove`, `Green`, `Court`, `Manor`, and `Mews`
|
| 60 |
+
- the decoder now accepts dotted and month-first DOB formats such as `14.03.1991` and `March 14, 1991`
|
| 61 |
+
- the decoder now accepts dotted phone formatting such as `087.123.4567`
|
| 62 |
+
- the new `globalpointer_context_redteam_v4` suite is `1.0000` on both full and q8 paths; the packaged public `rc9` bundle scores `1.0000` on the same suite
|
| 63 |
+
|
| 64 |
+
If you only need the narrower Irish-core structured label set and want maximum CPU throughput, `temsa/IrishCore-GlobalPointer-135M-v1-rc4` remains the faster option.
|
| 65 |
+
|
| 66 |
+
## Benchmarks
|
| 67 |
+
|
| 68 |
+
### ONNX q8
|
| 69 |
+
|
| 70 |
+
| Suite | F1 | Examples/s |
|
| 71 |
+
| --- | ---: | ---: |
|
| 72 |
+
| Irish core | 1.0000 | 125.8211 |
|
| 73 |
+
| Gov contact policy v1 | 1.0000 | 81.2823 |
|
| 74 |
+
| Gov chatbot red-team v2 | 0.9861 | 76.3120 |
|
| 75 |
+
| Context red-team v3 | 1.0000 | 115.7841 |
|
| 76 |
+
| Context red-team v4 | 1.0000 | 115.2060 |
|
| 77 |
+
| Multilingual PPSN overall | 0.9333 | 113.8253 |
|
| 78 |
+
| Multilingual PPSN label-only | 1.0000 | — |
|
| 79 |
+
|
| 80 |
+
### Comparison
|
| 81 |
+
|
| 82 |
+
| Model | Core F1 | Gov Contact Policy v1 F1 | Context Red-team v4 F1 | Multilingual F1 | Core examples/s |
|
| 83 |
+
| --- | ---: | ---: | ---: | ---: | ---: |
|
| 84 |
+
| ContextPII rc10 q8 | 1.0000 | 1.0000 | 1.0000 | 0.9333 | 125.8211 |
|
| 85 |
+
| ContextPII rc9 q8 | 1.0000 | 1.0000 | 1.0000 | 0.9333 | 125.8211 |
|
| 86 |
+
| ContextPII rc8 q8 | 1.0000 | 1.0000 | 0.0000 | 0.9333 | 128.8825 |
|
| 87 |
+
|
| 88 |
+
## Evaluation Notes
|
| 89 |
+
|
| 90 |
+
Additional q8 release checks shipped in this repo:
|
| 91 |
+
|
| 92 |
+
- `eval/q8_globalpointer_context_redteam_v4.json`: contextual regression suite for lowercase self-identification names, city-before-postcode recovery, broader street suffixes, dotted/month-first DOBs, and dotted phone formatting, `1.0000` F1 in `rc10`
|
| 93 |
+
- `eval/q8_globalpointer_context_redteam_v3.json`: contextual regression suite for age phrasing, Gaelic ordinal DOBs, parenthesized landlines, and date-internal city/name overlap cleanup, `1.0000` F1
|
| 94 |
+
- `eval/q8_globalpointer_location_coverage_v1.json`, `v2`, `v3`: Irish location coverage suites, all retained from `rc9`
|
| 95 |
+
|
| 96 |
+
## Usage
|
| 97 |
+
|
| 98 |
+
```bash
|
| 99 |
+
python3 inference_mask_onnx.py --model temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10 --text "my name is aoife murphy, Date of birth: March 14, 1991, Phone: 087.123.4567, Address: 14 Cedar Crescent, Naas, W91 XY45."
|
| 100 |
+
```
|
| 101 |
+
|
| 102 |
+
<!-- portfolio-comparison:start -->
|
| 103 |
+
## Portfolio Comparison
|
| 104 |
+
|
| 105 |
+
Updated: `2026-03-15`.
|
| 106 |
+
|
| 107 |
+
Use this section for the fastest public comparison across the `temsa` PII masking portfolio.
|
| 108 |
+
|
| 109 |
+
- The first core table only includes public checkpoints that ship both comparable q8 accuracy and q8 CPU throughput.
|
| 110 |
+
- The first PPSN table only includes public artifacts that ship comparable PPSN accuracy and CPU throughput.
|
| 111 |
+
- Missing cells in the archive tables mean the older release did not ship that metric in its public bundle.
|
| 112 |
+
- DiffMask rows use the reconciled `clean_single_pass` harness that matches the deployed runtime.
|
| 113 |
+
- GlobalPointer rows use the public raw-only span-matrix release bundle and its packaged q8 ONNX artifact.
|
| 114 |
+
- The same content is shipped as `PORTFOLIO_COMPARISON.md` inside each public model repo.
|
| 115 |
+
|
| 116 |
+
### Irish Core PII: Comparable Public Checkpoints
|
| 117 |
+
|
| 118 |
+
| Repo | Stack | Full Core F1 | Q8 Core F1 | Q8 Multilingual PPSN F1 | Q8 Core ex/s |
|
| 119 |
+
|---|---|---:|---:|---:|---:|
|
| 120 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 125.8 |
|
| 121 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 119.8 |
|
| 122 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc8`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc8) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 128.9 |
|
| 123 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc7`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc7) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 89.0 |
|
| 124 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc6`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc6) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 89.0 |
|
| 125 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc5`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc5) | GlobalPointer raw-only + context labels | 1.0000 | 1.0000 | 0.9333 | 84.5 |
|
| 126 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc4`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc4) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9333 | 61.5 |
|
| 127 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc3`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc3) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9333 | 61.5 |
|
| 128 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc2`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc2) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9222 | 61.5 |
|
| 129 |
+
| [`temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1`](https://huggingface.co/temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1) | GlobalPointer raw-only + context labels | 0.9935 | 0.9935 | 0.9222 | 61.5 |
|
| 130 |
+
| [`temsa/IrishCore-GlobalPointer-135M-v1-rc4`](https://huggingface.co/temsa/IrishCore-GlobalPointer-135M-v1-rc4) | GlobalPointer raw-only span-matrix | 1.0000 | 1.0000 | 0.9333 | 221.6 |
|
| 131 |
+
| [`temsa/IrishCore-GlobalPointer-135M-v1-rc3`](https://huggingface.co/temsa/IrishCore-GlobalPointer-135M-v1-rc3) | GlobalPointer raw-only span-matrix | 1.0000 | 1.0000 | 0.9213 | 204.9 |
|
| 132 |
+
| [`temsa/IrishCore-GlobalPointer-135M-v1-rc2`](https://huggingface.co/temsa/IrishCore-GlobalPointer-135M-v1-rc2) | GlobalPointer raw-only span-matrix | 0.9934 | 0.9934 | 0.9326 | 231.2 |
|
| 133 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc8`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc8) | Raw-only token-span | 0.9737 | 0.9737 | 0.9176 | 46.1 |
|
| 134 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc7`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc7) | Hybrid classifier + generated scanner spec | 1.0000 | 0.9934 | 1.0000 | 30.0 |
|
| 135 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc6`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc6) | Hybrid classifier + repair decoders | 1.0000 | 0.9934 | 1.0000 | 29.5 |
|
| 136 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc5`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc5) | Hybrid classifier + repair decoders | 0.9737 | 0.9669 | 0.9333 | 34.4 |
|
| 137 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc4`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc4) | Hybrid classifier + repair decoders | 0.9870 | 0.9740 | 0.9600 | 114.2 |
|
| 138 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc3`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc3) | Hybrid classifier + repair decoders | 0.9806 | 0.9677 | 0.9333 | 44.9 |
|
| 139 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc2`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc2) | Hybrid classifier + repair decoders | 0.9554 | 0.9615 | 0.7887 | 119.1 |
|
| 140 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v1`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v1) | Hybrid classifier baseline | 0.9530 | 0.9333 | 0.9882 | 103.3 |
|
| 141 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc6`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc6) | DiffMask token-span, scanner-free | 0.9801 | 0.9733 | 0.9274 | 130.3 |
|
| 142 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc5`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc5) | DiffMask token-span, scanner-free | 0.9733 | 0.9733 | 0.9379 | 249.2 |
|
| 143 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc4`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc4) | DiffMask token-span, scanner-free | 0.9733 | 0.9733 | 0.9371 | 29.5 |
|
| 144 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc3`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc3) | DiffMask token-span, scanner-free | 0.9664 | 0.9664 | 0.9591 | 30.0 |
|
| 145 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc2`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc2) | DiffMask token-span, scanner-free | 0.9664 | 0.9664 | 0.9212 | 247.1 |
|
| 146 |
+
| [`temsa/IrishCore-DiffMask-135M-v1-rc1`](https://huggingface.co/temsa/IrishCore-DiffMask-135M-v1-rc1) | DiffMask token-span, scanner-free | 0.9801 | 0.9934 | 0.9412 | 251.2 |
|
| 147 |
+
|
| 148 |
+
### Irish Core PII: Other Public Checkpoints
|
| 149 |
+
|
| 150 |
+
| Repo | Stack | Full Core F1 | Q8 Core F1 | Q8 Multilingual PPSN F1 | Notes |
|
| 151 |
+
|---|---|---:|---:|---:|---|
|
| 152 |
+
| [`temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc1`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc1) | Hybrid classifier prototype | 0.9487 | — | — | Predates the public q8 artifact. |
|
| 153 |
+
|
| 154 |
+
Finance-boundary q8 F1 is `1.0000` for `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc6`, `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc7`, `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc8`, and all public `IrishCore-DiffMask` releases from `rc1` to `rc6`. `OpenMed-mLiteClinical-IrishCorePII-135M-v2-rc5` ships `0.8750` on that public q8 suite.
|
| 155 |
+
|
| 156 |
+
### PPSN-Only: Comparable Public Artifacts
|
| 157 |
+
|
| 158 |
+
| Repo | Artifact | Irish Large F1 | Multilingual PPSN F1 | User Raw F1 | QA v8 F1 | CPU ex/s |
|
| 159 |
+
|---|---|---:|---:|---:|---:|---:|
|
| 160 |
+
| [`temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1) | fp32 canonical checkpoint | 0.8979 | 0.9704 | 0.8000 | 0.7385 | 57.4 |
|
| 161 |
+
| [`temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-fp16`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-fp16) | fp16 CPU/GPU artifact | — | 0.9704 | 0.8000 | 0.7385 | 45.8 |
|
| 162 |
+
| [`temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-q8`](https://huggingface.co/temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1-q8) | dynamic int8 CPU artifact | — | 0.9040 | — | — | 132.1 |
|
| 163 |
+
|
| 164 |
+
### PPSN-Only: Historical Public Checkpoints
|
| 165 |
+
|
| 166 |
+
| Repo | Main Published Metrics | Notes |
|
| 167 |
+
|---|---|---|
|
| 168 |
+
| [`temsa/OpenMed-PPSN-mLiteClinical-v1`](https://huggingface.co/temsa/OpenMed-PPSN-mLiteClinical-v1) | same as canonical fp32 repo: multilingual 0.9704, user raw 0.8000 | Legacy alias; prefer `temsa/OpenMed-mLiteClinical-IrishPPSN-135M-v1`. |
|
| 169 |
+
| [`temsa/OpenMed-PPSN-v6-raw-rc2`](https://huggingface.co/temsa/OpenMed-PPSN-v6-raw-rc2) | irish_reg_v5 0.8750; user_raw 0.8000; qa_v8 0.7385 | Raw PPSN-only research checkpoint; no packaged multilingual CPU benchmark row. |
|
| 170 |
+
| [`temsa/OpenMed-PPSN-v5_1`](https://huggingface.co/temsa/OpenMed-PPSN-v5_1) | irish_large_v2 raw 0.9285; qa_v6 hybrid strict 1.0000 | Hybrid PPSN-only checkpoint; predates the canonical multilingual suite packaging. |
|
| 171 |
+
| [`temsa/OpenMed-PPSN-v5`](https://huggingface.co/temsa/OpenMed-PPSN-v5) | irish_reg_v5 raw 0.8235; irish_reg_v5 hybrid strict 1.0000 | Hybrid PPSN-only checkpoint; predates the canonical multilingual suite packaging. |
|
| 172 |
+
| [`temsa/OpenMed-PPSN-v4`](https://huggingface.co/temsa/OpenMed-PPSN-v4) | synthetic non-PPSN drift check only | Predates the current PPSN eval suite; no packaged apples-to-apples multilingual CPU row. |
|
| 173 |
+
|
| 174 |
+
If you need the strongest current raw-only Irish core model, start with `IrishCore-GlobalPointer-135M-v1-rc4`. If you need the fastest CPU-first raw-only line, compare it against `IrishCore-DiffMask-135M-v1-rc6`. If you need a PPSN-only artifact, compare the canonical `fp32`, `fp16`, and `q8` variants of `OpenMed-mLiteClinical-IrishPPSN-135M-v1` directly in the table above.
|
| 175 |
+
<!-- portfolio-comparison:end -->
|
common.py
ADDED
|
@@ -0,0 +1,1665 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
|
| 4 |
+
import math
|
| 5 |
+
import re
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
import sys
|
| 8 |
+
from typing import Any
|
| 9 |
+
import unicodedata
|
| 10 |
+
|
| 11 |
+
import numpy as np
|
| 12 |
+
|
| 13 |
+
ROOT_DIR = Path(__file__).resolve().parents[2]
|
| 14 |
+
if str(ROOT_DIR) not in sys.path:
|
| 15 |
+
sys.path.insert(0, str(ROOT_DIR))
|
| 16 |
+
|
| 17 |
+
try:
|
| 18 |
+
from ..irish_core_span_raw_only.common import (
|
| 19 |
+
dedupe_spans,
|
| 20 |
+
label_max_span_tokens_from_config,
|
| 21 |
+
label_min_nonspace_chars_from_config,
|
| 22 |
+
label_names_from_config,
|
| 23 |
+
load_onnx_session,
|
| 24 |
+
normalize_entity_name,
|
| 25 |
+
safe_auto_tokenizer,
|
| 26 |
+
)
|
| 27 |
+
except ImportError:
|
| 28 |
+
from experiments.irish_core_span_raw_only.common import (
|
| 29 |
+
dedupe_spans,
|
| 30 |
+
label_max_span_tokens_from_config,
|
| 31 |
+
label_min_nonspace_chars_from_config,
|
| 32 |
+
label_names_from_config,
|
| 33 |
+
load_onnx_session,
|
| 34 |
+
normalize_entity_name,
|
| 35 |
+
safe_auto_tokenizer,
|
| 36 |
+
)
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
def label_thresholds_from_config(config, default_threshold: float) -> dict[str, float]:
|
| 40 |
+
raw = getattr(config, "span_label_thresholds", None) or {}
|
| 41 |
+
out = {normalize_entity_name(key): float(value) for key, value in raw.items()}
|
| 42 |
+
for label in label_names_from_config(config):
|
| 43 |
+
out.setdefault(label, float(default_threshold))
|
| 44 |
+
return out
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
def valid_offset(offset: tuple[int, int]) -> bool:
|
| 48 |
+
return bool(offset) and int(offset[1]) > int(offset[0])
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
def nonspace_length(text: str, start: int, end: int) -> int:
|
| 52 |
+
return sum(0 if ch.isspace() else 1 for ch in text[int(start) : int(end)])
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def alnum_upper(text: str) -> str:
|
| 56 |
+
return "".join(ch for ch in text.upper() if ch.isalnum())
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
def normalize_surface(text: str) -> str:
|
| 60 |
+
value = unicodedata.normalize("NFKD", text)
|
| 61 |
+
value = "".join(ch for ch in value if not unicodedata.combining(ch))
|
| 62 |
+
value = value.replace("\u00A0", " ").replace("\u202F", " ")
|
| 63 |
+
value = re.sub(r"\s+", " ", value.strip().lower())
|
| 64 |
+
return value
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
IRISH_CITY_FORMS = (
|
| 68 |
+
"Dublin",
|
| 69 |
+
"Baile Átha Cliath",
|
| 70 |
+
"Galway",
|
| 71 |
+
"Gaillimh",
|
| 72 |
+
"Cork",
|
| 73 |
+
"Cork City",
|
| 74 |
+
"Corcaigh",
|
| 75 |
+
"Limerick",
|
| 76 |
+
"Luimneach",
|
| 77 |
+
"Waterford",
|
| 78 |
+
"Port Láirge",
|
| 79 |
+
"Kilkenny",
|
| 80 |
+
"Cill Chainnigh",
|
| 81 |
+
"Carlow",
|
| 82 |
+
"Ceatharlach",
|
| 83 |
+
"Sligo",
|
| 84 |
+
"Sligeach",
|
| 85 |
+
"Tralee",
|
| 86 |
+
"Trá Lí",
|
| 87 |
+
"Ennis",
|
| 88 |
+
"Inis",
|
| 89 |
+
"Letterkenny",
|
| 90 |
+
"Leitir Ceanainn",
|
| 91 |
+
"Castlebar",
|
| 92 |
+
"Caisleán an Bharraigh",
|
| 93 |
+
"Caislean an Bharraigh",
|
| 94 |
+
"gCaisleán an Bharraigh",
|
| 95 |
+
"gCaislean an Bharraigh",
|
| 96 |
+
"Wexford",
|
| 97 |
+
"Loch Garman",
|
| 98 |
+
"Navan",
|
| 99 |
+
"Uaimh",
|
| 100 |
+
"An Uaimh",
|
| 101 |
+
"hUaimh",
|
| 102 |
+
"nUaimh",
|
| 103 |
+
"Dundalk",
|
| 104 |
+
"Dún Dealgan",
|
| 105 |
+
"Dun Dealgan",
|
| 106 |
+
"Mullingar",
|
| 107 |
+
"Muileann gCearr",
|
| 108 |
+
"An Muileann gCearr",
|
| 109 |
+
"Tullamore",
|
| 110 |
+
"Tulach Mhór",
|
| 111 |
+
"Tulach Mhor",
|
| 112 |
+
"dTulach Mhór",
|
| 113 |
+
"dTulach Mhor",
|
| 114 |
+
"Portlaoise",
|
| 115 |
+
"Port Laoise",
|
| 116 |
+
"bPort Laoise",
|
| 117 |
+
"Bray",
|
| 118 |
+
"Bré",
|
| 119 |
+
"Bre",
|
| 120 |
+
"mBré",
|
| 121 |
+
"mBre",
|
| 122 |
+
"Athlone",
|
| 123 |
+
"Baile Átha Luain",
|
| 124 |
+
"Baile Atha Luain",
|
| 125 |
+
"mBaile Átha Luain",
|
| 126 |
+
"mBaile Atha Luain",
|
| 127 |
+
)
|
| 128 |
+
IRISH_CITY_SURFACES = {normalize_surface(value) for value in IRISH_CITY_FORMS}
|
| 129 |
+
|
| 130 |
+
IRISH_COUNTY_FORMS = (
|
| 131 |
+
"Co. Dublin",
|
| 132 |
+
"County Dublin",
|
| 133 |
+
"Co. Bhaile Átha Cliath",
|
| 134 |
+
"Contae Bhaile Átha Cliath",
|
| 135 |
+
"gContae Bhaile Átha Cliath",
|
| 136 |
+
"Co. Galway",
|
| 137 |
+
"County Galway",
|
| 138 |
+
"Co. na Gaillimhe",
|
| 139 |
+
"Contae na Gaillimhe",
|
| 140 |
+
"gContae na Gaillimhe",
|
| 141 |
+
"Co. Cork",
|
| 142 |
+
"County Cork",
|
| 143 |
+
"Co. Chorcaí",
|
| 144 |
+
"Contae Chorcaí",
|
| 145 |
+
"gContae Chorcaí",
|
| 146 |
+
"Co. Limerick",
|
| 147 |
+
"County Limerick",
|
| 148 |
+
"Co. Luimnigh",
|
| 149 |
+
"Contae Luimnigh",
|
| 150 |
+
"gContae Luimnigh",
|
| 151 |
+
"Co. Waterford",
|
| 152 |
+
"County Waterford",
|
| 153 |
+
"Co. Phort Láirge",
|
| 154 |
+
"Contae Phort Láirge",
|
| 155 |
+
"gContae Phort Láirge",
|
| 156 |
+
"Co. Kilkenny",
|
| 157 |
+
"County Kilkenny",
|
| 158 |
+
"Co. Chill Chainnigh",
|
| 159 |
+
"Contae Chill Chainnigh",
|
| 160 |
+
"gContae Chill Chainnigh",
|
| 161 |
+
"Co. Carlow",
|
| 162 |
+
"County Carlow",
|
| 163 |
+
"Co. Cheatharlach",
|
| 164 |
+
"Contae Cheatharlach",
|
| 165 |
+
"gContae Cheatharlach",
|
| 166 |
+
"Co. Sligo",
|
| 167 |
+
"County Sligo",
|
| 168 |
+
"Co. Shligigh",
|
| 169 |
+
"Contae Shligigh",
|
| 170 |
+
"gContae Shligigh",
|
| 171 |
+
"Co. Kerry",
|
| 172 |
+
"County Kerry",
|
| 173 |
+
"Co. Chiarraí",
|
| 174 |
+
"Contae Chiarraí",
|
| 175 |
+
"gContae Chiarraí",
|
| 176 |
+
"Co. Clare",
|
| 177 |
+
"County Clare",
|
| 178 |
+
"Co. an Chláir",
|
| 179 |
+
"Contae an Chláir",
|
| 180 |
+
"gContae an Chláir",
|
| 181 |
+
"Co. Donegal",
|
| 182 |
+
"County Donegal",
|
| 183 |
+
"Co. Dhún na nGall",
|
| 184 |
+
"Co. Dhun na nGall",
|
| 185 |
+
"Contae Dhún na nGall",
|
| 186 |
+
"Contae Dhun na nGall",
|
| 187 |
+
"gContae Dhún na nGall",
|
| 188 |
+
"gContae Dhun na nGall",
|
| 189 |
+
"Co. Mayo",
|
| 190 |
+
"County Mayo",
|
| 191 |
+
"Co. Mhaigh Eo",
|
| 192 |
+
"Contae Mhaigh Eo",
|
| 193 |
+
"gContae Mhaigh Eo",
|
| 194 |
+
"Co. Wexford",
|
| 195 |
+
"County Wexford",
|
| 196 |
+
"Co. Loch Garman",
|
| 197 |
+
"Contae Loch Garman",
|
| 198 |
+
"gContae Loch Garman",
|
| 199 |
+
"Co. Meath",
|
| 200 |
+
"County Meath",
|
| 201 |
+
"Co. na Mí",
|
| 202 |
+
"Co. na Mi",
|
| 203 |
+
"Contae na Mí",
|
| 204 |
+
"Contae na Mi",
|
| 205 |
+
"gContae na Mí",
|
| 206 |
+
"gContae na Mi",
|
| 207 |
+
"Co. Louth",
|
| 208 |
+
"County Louth",
|
| 209 |
+
"Co. Lú",
|
| 210 |
+
"Co. Lu",
|
| 211 |
+
"Contae Lú",
|
| 212 |
+
"Contae Lu",
|
| 213 |
+
"gContae Lú",
|
| 214 |
+
"gContae Lu",
|
| 215 |
+
"Co. Westmeath",
|
| 216 |
+
"County Westmeath",
|
| 217 |
+
"Co. na hIarmhí",
|
| 218 |
+
"Co. na hIarmhi",
|
| 219 |
+
"Contae na hIarmhí",
|
| 220 |
+
"Contae na hIarmhi",
|
| 221 |
+
"gContae na hIarmhí",
|
| 222 |
+
"gContae na hIarmhi",
|
| 223 |
+
"Co. Offaly",
|
| 224 |
+
"County Offaly",
|
| 225 |
+
"Co. Uíbh Fhailí",
|
| 226 |
+
"Co. Uibh Fhaili",
|
| 227 |
+
"Contae Uíbh Fhailí",
|
| 228 |
+
"Contae Uibh Fhaili",
|
| 229 |
+
"gContae Uíbh Fhailí",
|
| 230 |
+
"gContae Uibh Fhaili",
|
| 231 |
+
"Co. Laois",
|
| 232 |
+
"County Laois",
|
| 233 |
+
"Contae Laoise",
|
| 234 |
+
"gContae Laoise",
|
| 235 |
+
"Co. Wicklow",
|
| 236 |
+
"County Wicklow",
|
| 237 |
+
"Co. Chill Mhantáin",
|
| 238 |
+
"Co. Chill Mhantain",
|
| 239 |
+
"Contae Chill Mhantáin",
|
| 240 |
+
"Contae Chill Mhantain",
|
| 241 |
+
"gContae Chill Mhantáin",
|
| 242 |
+
"gContae Chill Mhantain",
|
| 243 |
+
)
|
| 244 |
+
IRISH_COUNTY_SURFACES = {normalize_surface(value) for value in IRISH_COUNTY_FORMS}
|
| 245 |
+
IRISH_CITY_PREFIX_CHARS = {"n", "g", "m", "b", "d", "h"}
|
| 246 |
+
|
| 247 |
+
STREET_SUFFIX_RE = re.compile(
|
| 248 |
+
r"(?i)\b(street|road|avenue|lane|park|view|square|terrace|drive|close|way|place|crescent|grove|green|court|manor|mews|gardens?|heights|bóthar|bothar|sráid|sraid|lána|lana)\b"
|
| 249 |
+
)
|
| 250 |
+
PHONE_SURFACE_RE = re.compile(r"^[+().\d][+().\d \-/\u00A0\u202F]*\d$")
|
| 251 |
+
ACCOUNT_DIGIT_SURFACE_RE = re.compile(r"^[\d \-\u00A0\u202F]+$")
|
| 252 |
+
DATE_OF_BIRTH_RE = re.compile(
|
| 253 |
+
r"(?i)^(?:\d{2}[./]\d{2}[./]\d{4}|\d{4}-\d{2}-\d{2}|(?:an\s+)?\d{1,2}(?:st|nd|rd|th|ú)?\s+[A-Za-zÁÉÍÓÚáéíóú]+(?:\s+[A-Za-zÁÉÍÓÚáéíóú]+)?\s+\d{4}|[A-Za-zÁÉÍÓÚáéíóú]+(?:\s+[A-Za-zÁÉÍÓÚáéíóú]+)?\s+\d{1,2},\s+\d{4})$"
|
| 254 |
+
)
|
| 255 |
+
DATE_OF_BIRTH_VALUE_RE = re.compile(
|
| 256 |
+
r"(?<![A-Za-z0-9])(\d{2}[./]\d{2}[./]\d{4}|\d{4}-\d{2}-\d{2}|(?:an\s+)?\d{1,2}(?:st|nd|rd|th|ú)?\s+[A-Za-zÁÉÍÓÚáéíóú]+(?:\s+[A-Za-zÁÉÍÓÚáéíóú]+)?\s+\d{4}|[A-Za-zÁÉÍÓÚáéíóú]+(?:\s+[A-Za-zÁÉÍÓÚáéíóú]+)?\s+\d{1,2},\s+\d{4})(?![A-Za-z0-9])"
|
| 257 |
+
)
|
| 258 |
+
AGE_CONTEXT_RE = re.compile(r"(?i)\b(age|aged|years?\s+old|year\s+old|year-old|yrs?\s+old|y/?o|yo|aois|bliana\s+d['’]aois|mbliana\s+d['’]aois)\b")
|
| 259 |
+
AGE_INLINE_SUFFIX_RE = re.compile(r"(?i)^(?:-year-old\b|yo\b|y/o\b|yrs?\b)")
|
| 260 |
+
AGE_VALUE_RE = re.compile(r"(?<![A-Za-z0-9])(\d{1,3})(?![A-Za-z0-9])")
|
| 261 |
+
DOB_CONTEXT_RE = re.compile(
|
| 262 |
+
r"(?i)\b(dob|date\s+of\s+birth|born(?:\s+on)?|data\s+breithe|dáta\s+breithe|dhata\s+breithe|dháta\s+breithe|rugadh)\b"
|
| 263 |
+
)
|
| 264 |
+
ADDRESS_CUE_RE = re.compile(
|
| 265 |
+
r"(?i)\b(address|seoladh|allocation\s+centre|intreo\s+centre|ionad\s+leithdh[aá]ilte|ionad\s+intreo|live\s+at|lives\s+at|living\s+at|located\s+at|cónai\s+ag|chónai\s+ag|conai\s+ag|chonai\s+ag)\b"
|
| 266 |
+
)
|
| 267 |
+
CITY_COUNTY_PREFIX_RE = re.compile(r"(?i)(?:county|co\.|contae|gcontae)(?:\s+na)?\s*$")
|
| 268 |
+
PPSN_CUE_RE = re.compile(
|
| 269 |
+
r"(?i)\b(ppsn|upsp|personal public service(?:\s+number)?|uimhir\s+(?:mo\s+)?upsp|uimhir\s+(?:mo\s+)?ppsn)\b"
|
| 270 |
+
)
|
| 271 |
+
NAME_STOP_SURFACES = {
|
| 272 |
+
normalize_surface(value)
|
| 273 |
+
for value in {
|
| 274 |
+
"Address",
|
| 275 |
+
"Name",
|
| 276 |
+
"Phone",
|
| 277 |
+
"Email",
|
| 278 |
+
"Seoladh",
|
| 279 |
+
"Ainm",
|
| 280 |
+
"Teagmháil",
|
| 281 |
+
"Teagmhail",
|
| 282 |
+
"Ríomhphost",
|
| 283 |
+
"Riomhphost",
|
| 284 |
+
"PPSN",
|
| 285 |
+
"UPSP",
|
| 286 |
+
"Call",
|
| 287 |
+
"Glao",
|
| 288 |
+
"Glaoigh",
|
| 289 |
+
"Rugadh",
|
| 290 |
+
"Ionad",
|
| 291 |
+
"Intreo",
|
| 292 |
+
"Cill",
|
| 293 |
+
"Sampla",
|
| 294 |
+
"Leithdháilte",
|
| 295 |
+
"Leithdhailte",
|
| 296 |
+
"Leithdháil",
|
| 297 |
+
"Leithdhail",
|
| 298 |
+
"Leithdh",
|
| 299 |
+
"Apartment",
|
| 300 |
+
"Flat",
|
| 301 |
+
"Unit",
|
| 302 |
+
"Suite",
|
| 303 |
+
"Árasán",
|
| 304 |
+
"Arasan",
|
| 305 |
+
"Aonad",
|
| 306 |
+
"County",
|
| 307 |
+
"Contae",
|
| 308 |
+
"Fón",
|
| 309 |
+
"Fon",
|
| 310 |
+
"January",
|
| 311 |
+
"February",
|
| 312 |
+
"March",
|
| 313 |
+
"April",
|
| 314 |
+
"May",
|
| 315 |
+
"June",
|
| 316 |
+
"July",
|
| 317 |
+
"August",
|
| 318 |
+
"September",
|
| 319 |
+
"October",
|
| 320 |
+
"November",
|
| 321 |
+
"December",
|
| 322 |
+
"Monday",
|
| 323 |
+
"Tuesday",
|
| 324 |
+
"Wednesday",
|
| 325 |
+
"Thursday",
|
| 326 |
+
"Friday",
|
| 327 |
+
"Saturday",
|
| 328 |
+
"Sunday",
|
| 329 |
+
"Eanáir",
|
| 330 |
+
"Feabhra",
|
| 331 |
+
"Márta",
|
| 332 |
+
"Aibreán",
|
| 333 |
+
"Aibrean",
|
| 334 |
+
"Bealtaine",
|
| 335 |
+
"Meitheamh",
|
| 336 |
+
"Iúil",
|
| 337 |
+
"Iuil",
|
| 338 |
+
"Lúnasa",
|
| 339 |
+
"Lunasa",
|
| 340 |
+
"Meán Fómhair",
|
| 341 |
+
"Mean Fomhair",
|
| 342 |
+
"Deireadh Fómhair",
|
| 343 |
+
"Deireadh Fomhair",
|
| 344 |
+
"Samhain",
|
| 345 |
+
"Nollaig",
|
| 346 |
+
"Luan",
|
| 347 |
+
"Máirt",
|
| 348 |
+
"Mairt",
|
| 349 |
+
"Céadaoin",
|
| 350 |
+
"Ceadaoin",
|
| 351 |
+
"Déardaoin",
|
| 352 |
+
"Deardaoin",
|
| 353 |
+
"Aoine",
|
| 354 |
+
"Satharn",
|
| 355 |
+
"Domhnach",
|
| 356 |
+
}
|
| 357 |
+
}
|
| 358 |
+
NAME_PARTICLE_SURFACES = {
|
| 359 |
+
normalize_surface(value)
|
| 360 |
+
for value in {"Ó", "O", "Ní", "Ni", "Nic", "Mac", "Mc", "de", "van", "von"}
|
| 361 |
+
}
|
| 362 |
+
STREET_TRAILING_BLOCK_SURFACES = {
|
| 363 |
+
normalize_surface(value)
|
| 364 |
+
for value in {
|
| 365 |
+
"are",
|
| 366 |
+
"public",
|
| 367 |
+
"contact",
|
| 368 |
+
"details",
|
| 369 |
+
"website",
|
| 370 |
+
"open",
|
| 371 |
+
"before",
|
| 372 |
+
"visiting",
|
| 373 |
+
"roimh",
|
| 374 |
+
"chuairt",
|
| 375 |
+
"agus",
|
| 376 |
+
"and",
|
| 377 |
+
"the",
|
| 378 |
+
"is",
|
| 379 |
+
"ta",
|
| 380 |
+
}
|
| 381 |
+
}
|
| 382 |
+
ADDRESS_UNIT_PREFIX_RE = re.compile(r"(?i)^(?:apartment|apt\.?|flat|unit|suite|aras[aá]n|aonad)\b")
|
| 383 |
+
HOUSE_NAME_PREFIX_RE = re.compile(
|
| 384 |
+
r"(?i)^(?:[A-ZÁÉÍÓÚ][\w'’.-]+(?:\s+[A-ZÁÉÍÓÚ][\w'’.-]+){0,2}\s+(?:house|cottage|lodge|villa)|teach(?:ín|in)?(?:\s+na\s+[A-ZÁÉÍÓÚ][\w'’.-]+)?)$"
|
| 385 |
+
)
|
| 386 |
+
STREET_ADDRESS_VALUE_RE = re.compile(
|
| 387 |
+
r"(?i)(?<![\w@])("
|
| 388 |
+
r"(?:(?:apartment|apt\.?|flat|unit|suite|aras[aá]n|aonad)\s+[A-Za-z0-9-]+,\s+)?"
|
| 389 |
+
r"(?:(?:[A-ZÁÉÍÓÚ][\w'’.-]+(?:\s+[A-ZÁÉÍÓÚ][\w'’.-]+){0,2}\s+(?:house|cottage|lodge|villa)|teach(?:ín|in)?(?:\s+na\s+[A-ZÁÉÍÓÚ][\w'’.-]+)?),\s+)?"
|
| 390 |
+
r"(?:\d{1,4}\s+)?(?:[A-ZÁÉÍÓÚa-záéíóú][\w'’.-]*\s+){0,5}(?:street|road|avenue|lane|park|view|square|terrace|drive|close|way|place|crescent|grove|green|court|manor|mews|gardens?|heights|bóthar|bothar|sráid|sraid|lána|lana)(?:\s+[A-ZÁÉÍÓÚa-záéíóú][\w'’.-]*){0,2}"
|
| 391 |
+
r")"
|
| 392 |
+
)
|
| 393 |
+
|
| 394 |
+
|
| 395 |
+
def is_plausible_last_name_sequence(value: str) -> bool:
|
| 396 |
+
tokens = [token for token in re.split(r"\s+", value.strip()) if token]
|
| 397 |
+
if not tokens:
|
| 398 |
+
return False
|
| 399 |
+
for token in tokens:
|
| 400 |
+
if not any(ch.isalpha() for ch in token):
|
| 401 |
+
return False
|
| 402 |
+
if not all(is_name_token_char(ch) for ch in token):
|
| 403 |
+
return False
|
| 404 |
+
alpha_chars = [ch for ch in token if ch.isalpha()]
|
| 405 |
+
first_alpha = alpha_chars[0] if alpha_chars else ""
|
| 406 |
+
if first_alpha.isupper():
|
| 407 |
+
continue
|
| 408 |
+
if len(alpha_chars) >= 2 and alpha_chars[0].islower() and alpha_chars[1].isupper():
|
| 409 |
+
continue
|
| 410 |
+
if normalize_surface(token) in NAME_PARTICLE_SURFACES:
|
| 411 |
+
continue
|
| 412 |
+
return False
|
| 413 |
+
return True
|
| 414 |
+
|
| 415 |
+
|
| 416 |
+
def is_reasonable_span_text(label: str, text: str, start: int, end: int) -> bool:
|
| 417 |
+
value = text[int(start) : int(end)].strip()
|
| 418 |
+
if not value:
|
| 419 |
+
return False
|
| 420 |
+
upper = alnum_upper(value)
|
| 421 |
+
|
| 422 |
+
if label in {"FIRST_NAME", "LAST_NAME"}:
|
| 423 |
+
if not any(ch.isalpha() for ch in value):
|
| 424 |
+
return False
|
| 425 |
+
if any(ch.isdigit() for ch in value):
|
| 426 |
+
return False
|
| 427 |
+
if int(start) > 0 and text[int(start) - 1].isalpha():
|
| 428 |
+
return False
|
| 429 |
+
if int(end) < len(text) and text[int(end)].isalpha():
|
| 430 |
+
return False
|
| 431 |
+
if normalize_surface(value) in NAME_STOP_SURFACES:
|
| 432 |
+
return False
|
| 433 |
+
if label == "FIRST_NAME" and any(ch.isspace() for ch in value):
|
| 434 |
+
return False
|
| 435 |
+
if any(ch in ".,;:/@()" for ch in value):
|
| 436 |
+
return False
|
| 437 |
+
if label == "FIRST_NAME":
|
| 438 |
+
first_alpha = next((ch for ch in value if ch.isalpha()), "")
|
| 439 |
+
if not first_alpha or not first_alpha.isupper():
|
| 440 |
+
return False
|
| 441 |
+
if label == "LAST_NAME" and not is_plausible_last_name_sequence(value):
|
| 442 |
+
return False
|
| 443 |
+
if start > 0 and text[int(start) - 1].isdigit():
|
| 444 |
+
return False
|
| 445 |
+
return True
|
| 446 |
+
|
| 447 |
+
if label == "EMAIL":
|
| 448 |
+
if "@" not in value:
|
| 449 |
+
return False
|
| 450 |
+
local, _, domain = value.partition("@")
|
| 451 |
+
return bool(local) and "." in domain
|
| 452 |
+
|
| 453 |
+
if label == "PHONE_NUMBER":
|
| 454 |
+
normalized = value.replace("\u00A0", " ").replace("\u202F", " ").strip()
|
| 455 |
+
if any(ch.isalpha() for ch in normalized):
|
| 456 |
+
return False
|
| 457 |
+
if any(ch in "/@" for ch in normalized):
|
| 458 |
+
return False
|
| 459 |
+
if int(start) > 0 and text[int(start) - 1].isalnum():
|
| 460 |
+
return False
|
| 461 |
+
if int(end) < len(text) and text[int(end)].isalnum():
|
| 462 |
+
return False
|
| 463 |
+
if not PHONE_SURFACE_RE.match(normalized):
|
| 464 |
+
return False
|
| 465 |
+
digits = "".join(ch for ch in value if ch.isdigit())
|
| 466 |
+
if normalized.startswith("+353"):
|
| 467 |
+
tail = digits[3:]
|
| 468 |
+
if tail.startswith("0"):
|
| 469 |
+
tail = tail[1:]
|
| 470 |
+
return 8 <= len(tail) <= 9
|
| 471 |
+
if not digits.startswith("0"):
|
| 472 |
+
return False
|
| 473 |
+
if digits.startswith("0818") or digits.startswith("1800"):
|
| 474 |
+
return len(digits) == 10
|
| 475 |
+
if digits.startswith("08"):
|
| 476 |
+
return len(digits) == 10
|
| 477 |
+
if digits.startswith("01"):
|
| 478 |
+
return len(digits) == 9
|
| 479 |
+
return 9 <= len(digits) <= 10
|
| 480 |
+
|
| 481 |
+
if label == "PPSN":
|
| 482 |
+
return bool(len(upper) in {8, 9} and upper[:7].isdigit() and upper[7:].isalpha())
|
| 483 |
+
|
| 484 |
+
if label == "POSTCODE":
|
| 485 |
+
compact = value.replace(" ", "").replace("\u00A0", "").replace("\u202F", "")
|
| 486 |
+
if any(not (ch.isalnum() or ch.isspace()) for ch in value):
|
| 487 |
+
return False
|
| 488 |
+
if len(compact) != 7:
|
| 489 |
+
return False
|
| 490 |
+
routing = compact[:3]
|
| 491 |
+
unique = compact[3:]
|
| 492 |
+
routing_ok = bool(
|
| 493 |
+
(routing[0].isalpha() and routing[1:].isdigit())
|
| 494 |
+
or routing == "D6W"
|
| 495 |
+
)
|
| 496 |
+
unique_ok = bool(
|
| 497 |
+
len(unique) == 4
|
| 498 |
+
and unique[0].isalpha()
|
| 499 |
+
and unique[1:].isalnum()
|
| 500 |
+
)
|
| 501 |
+
return routing_ok and unique_ok
|
| 502 |
+
|
| 503 |
+
if label == "PASSPORT_NUMBER":
|
| 504 |
+
return bool(re.fullmatch(r"[A-Z]{1,2}\s?\d{7}", value.strip()))
|
| 505 |
+
|
| 506 |
+
if label == "BANK_ROUTING_NUMBER":
|
| 507 |
+
digits = "".join(ch for ch in value if ch.isdigit())
|
| 508 |
+
if len(digits) != 6:
|
| 509 |
+
return False
|
| 510 |
+
context = text[max(0, int(start) - 32) : min(len(text), int(end) + 24)]
|
| 511 |
+
return bool(BANK_ROUTING_CONTEXT_RE.search(context))
|
| 512 |
+
|
| 513 |
+
if label == "SWIFT_BIC":
|
| 514 |
+
return len(upper) in {8, 11} and upper.isalnum()
|
| 515 |
+
|
| 516 |
+
if label == "CREDIT_DEBIT_CARD":
|
| 517 |
+
digits = "".join(ch for ch in value if ch.isdigit())
|
| 518 |
+
return 12 <= len(digits) <= 19
|
| 519 |
+
|
| 520 |
+
if label == "ACCOUNT_NUMBER":
|
| 521 |
+
if upper.startswith("IE"):
|
| 522 |
+
return bool(re.fullmatch(r"IE\d{2}[A-Z0-9]{18}", upper))
|
| 523 |
+
if not ACCOUNT_DIGIT_SURFACE_RE.fullmatch(value.strip()):
|
| 524 |
+
return False
|
| 525 |
+
digits = "".join(ch for ch in value if ch.isdigit())
|
| 526 |
+
return 6 <= len(digits) <= 34
|
| 527 |
+
|
| 528 |
+
if label == "AGE":
|
| 529 |
+
digits = "".join(ch for ch in value if ch.isdigit())
|
| 530 |
+
if digits != value.strip():
|
| 531 |
+
return False
|
| 532 |
+
if not digits:
|
| 533 |
+
return False
|
| 534 |
+
if int(start) > 0 and text[int(start) - 1].isalnum():
|
| 535 |
+
return False
|
| 536 |
+
trailing = text[int(end) : min(len(text), int(end) + 12)]
|
| 537 |
+
if int(end) < len(text) and text[int(end)].isalnum() and not AGE_INLINE_SUFFIX_RE.match(trailing):
|
| 538 |
+
return False
|
| 539 |
+
if int(start) > 0 and text[int(start) - 1] in "/-":
|
| 540 |
+
return False
|
| 541 |
+
if int(end) < len(text) and text[int(end)] in "/-" and not AGE_INLINE_SUFFIX_RE.match(trailing):
|
| 542 |
+
return False
|
| 543 |
+
age = int(digits)
|
| 544 |
+
if not (0 < age <= 120):
|
| 545 |
+
return False
|
| 546 |
+
context = text[max(0, int(start) - 12) : min(len(text), int(end) + 16)]
|
| 547 |
+
return bool(AGE_CONTEXT_RE.search(context))
|
| 548 |
+
|
| 549 |
+
if label == "DATE_OF_BIRTH":
|
| 550 |
+
if not any(ch.isdigit() for ch in value):
|
| 551 |
+
return False
|
| 552 |
+
if not DATE_OF_BIRTH_RE.match(value.strip()):
|
| 553 |
+
return False
|
| 554 |
+
context = text[max(0, int(start) - 32) : min(len(text), int(end) + 32)]
|
| 555 |
+
return bool(DOB_CONTEXT_RE.search(context))
|
| 556 |
+
|
| 557 |
+
if label == "CITY":
|
| 558 |
+
if any(ch.isdigit() for ch in value):
|
| 559 |
+
return False
|
| 560 |
+
prefix = text[max(0, int(start) - 20) : int(start)]
|
| 561 |
+
if CITY_COUNTY_PREFIX_RE.search(prefix):
|
| 562 |
+
return False
|
| 563 |
+
return normalize_surface(value) in IRISH_CITY_SURFACES
|
| 564 |
+
|
| 565 |
+
if label == "COUNTY":
|
| 566 |
+
if any(ch.isdigit() for ch in value):
|
| 567 |
+
return False
|
| 568 |
+
return normalize_surface(value) in IRISH_COUNTY_SURFACES
|
| 569 |
+
|
| 570 |
+
if label == "STREET_ADDRESS":
|
| 571 |
+
cleaned = value.strip()
|
| 572 |
+
address_parts = [part.strip() for part in cleaned.split(",")]
|
| 573 |
+
if len(address_parts) > 2:
|
| 574 |
+
return False
|
| 575 |
+
prefix_part = ""
|
| 576 |
+
street_part = cleaned
|
| 577 |
+
if len(address_parts) == 2:
|
| 578 |
+
prefix_part, street_part = address_parts
|
| 579 |
+
if not prefix_part or not street_part:
|
| 580 |
+
return False
|
| 581 |
+
if not (
|
| 582 |
+
ADDRESS_UNIT_PREFIX_RE.match(prefix_part)
|
| 583 |
+
or HOUSE_NAME_PREFIX_RE.match(prefix_part)
|
| 584 |
+
):
|
| 585 |
+
return False
|
| 586 |
+
suffix_match = STREET_SUFFIX_RE.search(street_part)
|
| 587 |
+
if not suffix_match:
|
| 588 |
+
return False
|
| 589 |
+
if any(ch in "@:;" for ch in cleaned):
|
| 590 |
+
return False
|
| 591 |
+
trailing = street_part[int(suffix_match.end()) :].strip()
|
| 592 |
+
trailing_tokens = [token for token in re.split(r"\s+", trailing) if token]
|
| 593 |
+
if len(trailing_tokens) > 3:
|
| 594 |
+
return False
|
| 595 |
+
if any(normalize_surface(token) in STREET_TRAILING_BLOCK_SURFACES for token in trailing_tokens):
|
| 596 |
+
return False
|
| 597 |
+
has_digit = any(ch.isdigit() for ch in street_part)
|
| 598 |
+
if has_digit and not re.match(r"^\s*\d{1,4}\b", street_part):
|
| 599 |
+
return False
|
| 600 |
+
title_tokens = [token for token in re.split(r"\s+", street_part) if token]
|
| 601 |
+
if not has_digit and not prefix_part:
|
| 602 |
+
context = text[max(0, int(start) - 24) : min(len(text), int(end) + 12)]
|
| 603 |
+
if not ADDRESS_CUE_RE.search(context):
|
| 604 |
+
return False
|
| 605 |
+
return has_digit or len(title_tokens) >= 2
|
| 606 |
+
|
| 607 |
+
return True
|
| 608 |
+
|
| 609 |
+
|
| 610 |
+
def spans_overlap(a: dict, b: dict) -> bool:
|
| 611 |
+
return int(a["start"]) < int(b["end"]) and int(b["start"]) < int(a["end"])
|
| 612 |
+
|
| 613 |
+
|
| 614 |
+
def is_name_token_char(ch: str) -> bool:
|
| 615 |
+
return ch.isalpha() or ch in {"-", "'", "’"}
|
| 616 |
+
|
| 617 |
+
|
| 618 |
+
def is_plausible_first_name(value: str) -> bool:
|
| 619 |
+
if not value:
|
| 620 |
+
return False
|
| 621 |
+
if any(ch.isspace() for ch in value):
|
| 622 |
+
return False
|
| 623 |
+
if any(ch.isdigit() for ch in value):
|
| 624 |
+
return False
|
| 625 |
+
if any(ch in ",;:/@()" for ch in value):
|
| 626 |
+
return False
|
| 627 |
+
if not any(ch.isalpha() for ch in value):
|
| 628 |
+
return False
|
| 629 |
+
first_alpha = next((ch for ch in value if ch.isalpha()), "")
|
| 630 |
+
if not first_alpha or not first_alpha.isupper():
|
| 631 |
+
return False
|
| 632 |
+
return all(is_name_token_char(ch) for ch in value)
|
| 633 |
+
|
| 634 |
+
|
| 635 |
+
def is_plausible_cued_first_name(value: str) -> bool:
|
| 636 |
+
if not value:
|
| 637 |
+
return False
|
| 638 |
+
if any(ch.isspace() for ch in value):
|
| 639 |
+
return False
|
| 640 |
+
if any(ch.isdigit() for ch in value):
|
| 641 |
+
return False
|
| 642 |
+
if any(ch in ",;:/@()" for ch in value):
|
| 643 |
+
return False
|
| 644 |
+
if not any(ch.isalpha() for ch in value):
|
| 645 |
+
return False
|
| 646 |
+
return all(is_name_token_char(ch) for ch in value)
|
| 647 |
+
|
| 648 |
+
|
| 649 |
+
def is_plausible_cued_last_name_sequence(value: str) -> bool:
|
| 650 |
+
tokens = [token for token in re.split(r"\s+", value.strip()) if token]
|
| 651 |
+
if not tokens:
|
| 652 |
+
return False
|
| 653 |
+
for token in tokens:
|
| 654 |
+
if not any(ch.isalpha() for ch in token):
|
| 655 |
+
return False
|
| 656 |
+
if not all(is_name_token_char(ch) for ch in token):
|
| 657 |
+
return False
|
| 658 |
+
alpha_chars = [ch for ch in token if ch.isalpha()]
|
| 659 |
+
first_alpha = alpha_chars[0] if alpha_chars else ""
|
| 660 |
+
if first_alpha.isupper() or first_alpha.islower():
|
| 661 |
+
continue
|
| 662 |
+
if normalize_surface(token) in NAME_PARTICLE_SURFACES:
|
| 663 |
+
continue
|
| 664 |
+
return False
|
| 665 |
+
return True
|
| 666 |
+
|
| 667 |
+
|
| 668 |
+
def repair_first_name_from_last_name(text: str, spans: list[dict]) -> list[dict]:
|
| 669 |
+
repaired = list(spans)
|
| 670 |
+
for last_name in [span for span in repaired if span["label"] == "LAST_NAME"]:
|
| 671 |
+
if any(
|
| 672 |
+
span["label"] == "FIRST_NAME"
|
| 673 |
+
and int(span["end"]) <= int(last_name["start"])
|
| 674 |
+
and int(last_name["start"]) - int(span["end"]) <= 2
|
| 675 |
+
for span in repaired
|
| 676 |
+
):
|
| 677 |
+
continue
|
| 678 |
+
|
| 679 |
+
cursor = int(last_name["start"]) - 1
|
| 680 |
+
if cursor < 0 or not text[cursor].isspace():
|
| 681 |
+
continue
|
| 682 |
+
while cursor >= 0 and text[cursor].isspace():
|
| 683 |
+
cursor -= 1
|
| 684 |
+
token_end = cursor + 1
|
| 685 |
+
while cursor >= 0 and is_name_token_char(text[cursor]):
|
| 686 |
+
cursor -= 1
|
| 687 |
+
token_start = cursor + 1
|
| 688 |
+
if token_end <= token_start:
|
| 689 |
+
continue
|
| 690 |
+
candidate = text[token_start:token_end]
|
| 691 |
+
if not is_plausible_first_name(candidate):
|
| 692 |
+
continue
|
| 693 |
+
candidate_span = {
|
| 694 |
+
"start": token_start,
|
| 695 |
+
"end": token_end,
|
| 696 |
+
"label": "FIRST_NAME",
|
| 697 |
+
"score": float(last_name.get("score", 0.5)) * 0.6,
|
| 698 |
+
"text": candidate,
|
| 699 |
+
}
|
| 700 |
+
if any(spans_overlap(candidate_span, other) for other in repaired if other["label"] == "FIRST_NAME"):
|
| 701 |
+
continue
|
| 702 |
+
repaired.append(candidate_span)
|
| 703 |
+
return repaired
|
| 704 |
+
|
| 705 |
+
|
| 706 |
+
def repair_contextual_name_cues(text: str, spans: list[dict]) -> list[dict]:
|
| 707 |
+
repaired = list(spans)
|
| 708 |
+
for match in NAME_SELF_CUE_RE.finditer(text):
|
| 709 |
+
if any(
|
| 710 |
+
other["label"] == "FIRST_NAME"
|
| 711 |
+
and 0 <= int(other["start"]) - match.end() <= 4
|
| 712 |
+
for other in repaired
|
| 713 |
+
) and any(
|
| 714 |
+
other["label"] == "LAST_NAME"
|
| 715 |
+
and 0 <= int(other["start"]) - match.end() <= 16
|
| 716 |
+
for other in repaired
|
| 717 |
+
):
|
| 718 |
+
continue
|
| 719 |
+
cursor = match.end()
|
| 720 |
+
while cursor < len(text) and text[cursor].isspace():
|
| 721 |
+
cursor += 1
|
| 722 |
+
start = cursor
|
| 723 |
+
while cursor < len(text) and (is_name_token_char(text[cursor]) or text[cursor].isspace()):
|
| 724 |
+
cursor += 1
|
| 725 |
+
candidate = text[start:cursor].strip()
|
| 726 |
+
raw_tokens = [token for token in re.split(r"\s+", candidate) if token]
|
| 727 |
+
tokens: list[str] = []
|
| 728 |
+
for token in raw_tokens:
|
| 729 |
+
normalized = normalize_surface(token)
|
| 730 |
+
if tokens and normalized in LOWER_NAME_STOP_SURFACES:
|
| 731 |
+
break
|
| 732 |
+
if not all(is_name_token_char(ch) for ch in token):
|
| 733 |
+
break
|
| 734 |
+
tokens.append(token)
|
| 735 |
+
if len(tokens) >= 4:
|
| 736 |
+
break
|
| 737 |
+
if len(tokens) < 2:
|
| 738 |
+
continue
|
| 739 |
+
first_value = tokens[0]
|
| 740 |
+
first_alpha = next((ch for ch in first_value if ch.isalpha()), "")
|
| 741 |
+
if not first_alpha or not first_alpha.islower():
|
| 742 |
+
continue
|
| 743 |
+
last_value = " ".join(tokens[1:])
|
| 744 |
+
if not is_plausible_cued_first_name(first_value):
|
| 745 |
+
continue
|
| 746 |
+
if not is_plausible_cued_last_name_sequence(last_value):
|
| 747 |
+
continue
|
| 748 |
+
first_start = text.find(first_value, start, cursor)
|
| 749 |
+
if first_start < 0:
|
| 750 |
+
continue
|
| 751 |
+
first_end = first_start + len(first_value)
|
| 752 |
+
last_start = text.find(last_value, first_end, cursor)
|
| 753 |
+
if last_start < 0:
|
| 754 |
+
continue
|
| 755 |
+
last_end = last_start + len(last_value)
|
| 756 |
+
first_span = {
|
| 757 |
+
"start": first_start,
|
| 758 |
+
"end": first_end,
|
| 759 |
+
"label": "FIRST_NAME",
|
| 760 |
+
"score": 0.63,
|
| 761 |
+
"text": text[first_start:first_end],
|
| 762 |
+
}
|
| 763 |
+
last_span = {
|
| 764 |
+
"start": last_start,
|
| 765 |
+
"end": last_end,
|
| 766 |
+
"label": "LAST_NAME",
|
| 767 |
+
"score": 0.63,
|
| 768 |
+
"text": text[last_start:last_end],
|
| 769 |
+
}
|
| 770 |
+
repaired = [
|
| 771 |
+
other
|
| 772 |
+
for other in repaired
|
| 773 |
+
if not (
|
| 774 |
+
spans_overlap(first_span, other) and other["label"] in {"FIRST_NAME", "LAST_NAME"}
|
| 775 |
+
) and not (
|
| 776 |
+
spans_overlap(last_span, other) and other["label"] in {"FIRST_NAME", "LAST_NAME"}
|
| 777 |
+
)
|
| 778 |
+
]
|
| 779 |
+
repaired.extend([first_span, last_span])
|
| 780 |
+
return repaired
|
| 781 |
+
|
| 782 |
+
|
| 783 |
+
PASSPORT_CUE_RE = re.compile(
|
| 784 |
+
r"(?i)(passport(?:\s+number)?|phas|uimhir\s+(?:mo\s+)?phas)"
|
| 785 |
+
)
|
| 786 |
+
PASSPORT_VALUE_RE = re.compile(r"(?<![A-Za-z0-9])([A-Z]{1,2}\s?\d{7})(?![A-Za-z0-9])")
|
| 787 |
+
EMAIL_EXTRACT_RE = re.compile(r"([^\s@,;:()<>]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,})", re.UNICODE)
|
| 788 |
+
PHONE_CUE_RE = re.compile(
|
| 789 |
+
r"(?i)\b(phone|call|contact|reach\s+me|glaoigh\s+ar|teagmh[aá]il|uimhir|m['’]uimhir|f[oó]n|fon|teileaf[oó]n|telefon)\b"
|
| 790 |
+
)
|
| 791 |
+
NAME_SELF_CUE_RE = re.compile(
|
| 792 |
+
r"(?i)\b(my\s+name\s+is|is\s+mise|is\s+[ée]\s+m['’]?ainm|is\s+[ée]\s+mo\s+ainm)\b"
|
| 793 |
+
)
|
| 794 |
+
LOWER_NAME_STOP_SURFACES = {
|
| 795 |
+
normalize_surface(value)
|
| 796 |
+
for value in {"and", "agus", "is", "ta", "tá", "my", "mo", "an", "the"}
|
| 797 |
+
}
|
| 798 |
+
PUBLIC_CONTACT_DETAILS_RE = re.compile(r"(?i)\bpublic\s+contact\s+details\b")
|
| 799 |
+
CITY_CUE_RE = re.compile(
|
| 800 |
+
r"(?i)\b(address|seoladh|located|suite|centre|center|ionad|intreo|clinic|hospital|ospid[eé]al|hse|fss)\b"
|
| 801 |
+
)
|
| 802 |
+
BANK_ROUTING_CONTEXT_RE = re.compile(
|
| 803 |
+
r"(?i)\b(sort\s+code|routing\s+number|bank\s+of\s+ireland|aib|cod\s+sort[aá]la|sort[aá]la)\b"
|
| 804 |
+
)
|
| 805 |
+
PHONE_VALUE_RE = re.compile(
|
| 806 |
+
r"(?<![A-Za-z0-9])((?:\+353(?:\s*\((?:0)?\d{1,2}\))?[\s\-.]?|0)\d(?:[\s\-.]?\d){6,13}|\(\s*0\d{1,2}\s*\)(?:[\s\-.]?\d){6,10})(?![A-Za-z0-9])"
|
| 807 |
+
)
|
| 808 |
+
PPSN_VALUE_RE = re.compile(r"(?<![A-Za-z0-9])(\d{7}(?:[\s-]*[A-Za-z]){1,2})(?![A-Za-z0-9])")
|
| 809 |
+
POSTCODE_VALUE_RE = re.compile(
|
| 810 |
+
r"(?<![A-Za-z0-9])((?:[A-Za-z]\d{2}|D6W)[\s\u00A0\u202F]?[A-Za-z][A-Za-z0-9]{3})(?![A-Za-z0-9])"
|
| 811 |
+
)
|
| 812 |
+
CITY_BEFORE_POSTCODE_RE = re.compile(
|
| 813 |
+
r"(?<![A-Za-zÁÉÍÓÚáéíóú])([A-ZÁÉÍÓÚ][\w'’.-]*(?:\s+[A-ZÁÉÍÓÚ][\w'’.-]*){0,2})(?=\s*,\s*(?:[A-Z]\d{2}|D6W))"
|
| 814 |
+
)
|
| 815 |
+
ADDRESS_BLOCK_VALUE_RE = re.compile(r"(?i)\b(?:address|seoladh)\s*:\s*([^,\n.]+)")
|
| 816 |
+
LOCATION_FORM_EDGE = r"[A-Za-zÁÉÍÓÚáéíóú]"
|
| 817 |
+
|
| 818 |
+
|
| 819 |
+
def iter_bounded_form_matches(form: str, text: str):
|
| 820 |
+
pattern = re.compile(
|
| 821 |
+
rf"(?<!{LOCATION_FORM_EDGE}){re.escape(form)}(?!{LOCATION_FORM_EDGE})",
|
| 822 |
+
flags=re.IGNORECASE,
|
| 823 |
+
)
|
| 824 |
+
return pattern.finditer(text)
|
| 825 |
+
|
| 826 |
+
|
| 827 |
+
def repair_contextual_passport_numbers(text: str, spans: list[dict]) -> list[dict]:
|
| 828 |
+
repaired = list(spans)
|
| 829 |
+
for match in PASSPORT_VALUE_RE.finditer(text):
|
| 830 |
+
start, end = match.span(1)
|
| 831 |
+
candidate_span = {
|
| 832 |
+
"start": start,
|
| 833 |
+
"end": end,
|
| 834 |
+
"label": "PASSPORT_NUMBER",
|
| 835 |
+
"score": 0.67,
|
| 836 |
+
"text": text[start:end],
|
| 837 |
+
}
|
| 838 |
+
if any(
|
| 839 |
+
other["label"] == "PASSPORT_NUMBER"
|
| 840 |
+
and int(other["start"]) <= start
|
| 841 |
+
and int(other["end"]) >= end
|
| 842 |
+
for other in repaired
|
| 843 |
+
):
|
| 844 |
+
continue
|
| 845 |
+
cue_window = text[max(0, start - 32) : start]
|
| 846 |
+
if not PASSPORT_CUE_RE.search(cue_window):
|
| 847 |
+
continue
|
| 848 |
+
conflicting_labels = {"PHONE_NUMBER", "PPSN", "ACCOUNT_NUMBER", "AGE", "PASSPORT_NUMBER"}
|
| 849 |
+
repaired = [
|
| 850 |
+
other
|
| 851 |
+
for other in repaired
|
| 852 |
+
if not (
|
| 853 |
+
spans_overlap(candidate_span, other)
|
| 854 |
+
and other["label"] in conflicting_labels
|
| 855 |
+
)
|
| 856 |
+
]
|
| 857 |
+
repaired.append(candidate_span)
|
| 858 |
+
return repaired
|
| 859 |
+
|
| 860 |
+
|
| 861 |
+
def repair_ppsn_variants(text: str, spans: list[dict]) -> list[dict]:
|
| 862 |
+
repaired = list(spans)
|
| 863 |
+
for match in PPSN_VALUE_RE.finditer(text):
|
| 864 |
+
start, end = match.span(1)
|
| 865 |
+
value = text[start:end]
|
| 866 |
+
compact = alnum_upper(value)
|
| 867 |
+
if not (len(compact) in {8, 9} and compact[:7].isdigit() and compact[7:].isalpha()):
|
| 868 |
+
continue
|
| 869 |
+
cue_window = text[max(0, start - 32) : min(len(text), end + 24)]
|
| 870 |
+
has_cue = bool(PPSN_CUE_RE.search(cue_window))
|
| 871 |
+
candidate_span = {
|
| 872 |
+
"start": start,
|
| 873 |
+
"end": end,
|
| 874 |
+
"label": "PPSN",
|
| 875 |
+
"score": 0.72 if has_cue else 0.58,
|
| 876 |
+
"text": value,
|
| 877 |
+
}
|
| 878 |
+
conflicting_labels = {"PHONE_NUMBER", "PASSPORT_NUMBER", "ACCOUNT_NUMBER", "AGE", "FIRST_NAME", "LAST_NAME"}
|
| 879 |
+
repaired = [
|
| 880 |
+
other
|
| 881 |
+
for other in repaired
|
| 882 |
+
if not (
|
| 883 |
+
spans_overlap(candidate_span, other)
|
| 884 |
+
and other["label"] in conflicting_labels.union({"PPSN"})
|
| 885 |
+
)
|
| 886 |
+
]
|
| 887 |
+
repaired.append(candidate_span)
|
| 888 |
+
return repaired
|
| 889 |
+
|
| 890 |
+
|
| 891 |
+
def repair_contextual_date_of_birth(text: str, spans: list[dict]) -> list[dict]:
|
| 892 |
+
repaired = list(spans)
|
| 893 |
+
for match in DATE_OF_BIRTH_VALUE_RE.finditer(text):
|
| 894 |
+
start, end = match.span(1)
|
| 895 |
+
cue_window = text[max(0, start - 40) : min(len(text), end + 24)]
|
| 896 |
+
if not DOB_CONTEXT_RE.search(cue_window):
|
| 897 |
+
continue
|
| 898 |
+
candidate_span = {
|
| 899 |
+
"start": start,
|
| 900 |
+
"end": end,
|
| 901 |
+
"label": "DATE_OF_BIRTH",
|
| 902 |
+
"score": 0.66,
|
| 903 |
+
"text": text[start:end],
|
| 904 |
+
}
|
| 905 |
+
conflicting_labels = {"DATE_OF_BIRTH", "PHONE_NUMBER", "AGE", "FIRST_NAME", "LAST_NAME", "ACCOUNT_NUMBER", "CITY"}
|
| 906 |
+
repaired = [
|
| 907 |
+
other
|
| 908 |
+
for other in repaired
|
| 909 |
+
if not (
|
| 910 |
+
spans_overlap(candidate_span, other)
|
| 911 |
+
and other["label"] in conflicting_labels
|
| 912 |
+
)
|
| 913 |
+
]
|
| 914 |
+
repaired.append(candidate_span)
|
| 915 |
+
return repaired
|
| 916 |
+
|
| 917 |
+
|
| 918 |
+
def repair_contextual_ages(text: str, spans: list[dict]) -> list[dict]:
|
| 919 |
+
repaired = list(spans)
|
| 920 |
+
for match in AGE_VALUE_RE.finditer(text):
|
| 921 |
+
start, end = match.span(1)
|
| 922 |
+
if not is_reasonable_span_text("AGE", text, start, end):
|
| 923 |
+
continue
|
| 924 |
+
if any(
|
| 925 |
+
spans_overlap({"start": start, "end": end}, other)
|
| 926 |
+
and other["label"] == "DATE_OF_BIRTH"
|
| 927 |
+
for other in repaired
|
| 928 |
+
):
|
| 929 |
+
continue
|
| 930 |
+
candidate_span = {
|
| 931 |
+
"start": start,
|
| 932 |
+
"end": end,
|
| 933 |
+
"label": "AGE",
|
| 934 |
+
"score": 0.66,
|
| 935 |
+
"text": text[start:end],
|
| 936 |
+
}
|
| 937 |
+
conflicting_labels = {"AGE", "PHONE_NUMBER", "ACCOUNT_NUMBER"}
|
| 938 |
+
repaired = [
|
| 939 |
+
other
|
| 940 |
+
for other in repaired
|
| 941 |
+
if not (
|
| 942 |
+
spans_overlap(candidate_span, other)
|
| 943 |
+
and other["label"] in conflicting_labels
|
| 944 |
+
)
|
| 945 |
+
]
|
| 946 |
+
repaired.append(candidate_span)
|
| 947 |
+
return repaired
|
| 948 |
+
|
| 949 |
+
|
| 950 |
+
ACCOUNT_CUE_RE = re.compile(
|
| 951 |
+
r"(?i)(account\s+number|bank\s+account|uimhir\s+chuntais|cuntas\s+bainc)"
|
| 952 |
+
)
|
| 953 |
+
ACCOUNT_VALUE_RE = re.compile(r"(?<![A-Za-z0-9])(\d{6,12})(?![A-Za-z0-9])")
|
| 954 |
+
|
| 955 |
+
|
| 956 |
+
def repair_contextual_account_numbers(text: str, spans: list[dict]) -> list[dict]:
|
| 957 |
+
repaired = list(spans)
|
| 958 |
+
for match in ACCOUNT_VALUE_RE.finditer(text):
|
| 959 |
+
start, end = match.span(1)
|
| 960 |
+
candidate_span = {
|
| 961 |
+
"start": start,
|
| 962 |
+
"end": end,
|
| 963 |
+
"label": "ACCOUNT_NUMBER",
|
| 964 |
+
"score": 0.51,
|
| 965 |
+
"text": text[start:end],
|
| 966 |
+
}
|
| 967 |
+
if any(
|
| 968 |
+
other["label"] == "ACCOUNT_NUMBER"
|
| 969 |
+
and int(other["start"]) <= start
|
| 970 |
+
and int(other["end"]) >= end
|
| 971 |
+
for other in repaired
|
| 972 |
+
):
|
| 973 |
+
continue
|
| 974 |
+
cue_window = text[max(0, start - 40) : start]
|
| 975 |
+
if not ACCOUNT_CUE_RE.search(cue_window):
|
| 976 |
+
continue
|
| 977 |
+
if any(
|
| 978 |
+
spans_overlap(candidate_span, other)
|
| 979 |
+
and other["label"] in {"PHONE_NUMBER", "BANK_ROUTING_NUMBER", "PPSN", "POSTCODE", "PASSPORT_NUMBER"}
|
| 980 |
+
for other in repaired
|
| 981 |
+
):
|
| 982 |
+
continue
|
| 983 |
+
repaired.append(candidate_span)
|
| 984 |
+
return repaired
|
| 985 |
+
|
| 986 |
+
|
| 987 |
+
def repair_emails(text: str, spans: list[dict]) -> list[dict]:
|
| 988 |
+
repaired = list(spans)
|
| 989 |
+
for match in EMAIL_EXTRACT_RE.finditer(text):
|
| 990 |
+
start, end = match.span(1)
|
| 991 |
+
candidate_span = {
|
| 992 |
+
"start": start,
|
| 993 |
+
"end": end,
|
| 994 |
+
"label": "EMAIL",
|
| 995 |
+
"score": 0.74,
|
| 996 |
+
"text": text[start:end],
|
| 997 |
+
}
|
| 998 |
+
conflicting_labels = {"EMAIL", "FIRST_NAME", "LAST_NAME"}
|
| 999 |
+
repaired = [
|
| 1000 |
+
other
|
| 1001 |
+
for other in repaired
|
| 1002 |
+
if not (
|
| 1003 |
+
spans_overlap(candidate_span, other)
|
| 1004 |
+
and other["label"] in conflicting_labels
|
| 1005 |
+
)
|
| 1006 |
+
]
|
| 1007 |
+
repaired.append(candidate_span)
|
| 1008 |
+
return repaired
|
| 1009 |
+
|
| 1010 |
+
|
| 1011 |
+
def repair_phone_numbers(text: str, spans: list[dict]) -> list[dict]:
|
| 1012 |
+
repaired = list(spans)
|
| 1013 |
+
for match in PHONE_VALUE_RE.finditer(text):
|
| 1014 |
+
start, end = match.span(1)
|
| 1015 |
+
candidate_span = {
|
| 1016 |
+
"start": start,
|
| 1017 |
+
"end": end,
|
| 1018 |
+
"label": "PHONE_NUMBER",
|
| 1019 |
+
"score": 0.69,
|
| 1020 |
+
"text": text[start:end],
|
| 1021 |
+
}
|
| 1022 |
+
cue_window = text[max(0, start - 32) : min(len(text), end + 16)]
|
| 1023 |
+
has_cue = bool(PHONE_CUE_RE.search(cue_window))
|
| 1024 |
+
has_overlap = any(spans_overlap(candidate_span, other) and other["label"] == "PHONE_NUMBER" for other in repaired)
|
| 1025 |
+
if not (has_cue or has_overlap):
|
| 1026 |
+
continue
|
| 1027 |
+
if not is_reasonable_span_text("PHONE_NUMBER", text, start, end):
|
| 1028 |
+
continue
|
| 1029 |
+
conflicting_labels = {"PHONE_NUMBER", "PPSN", "ACCOUNT_NUMBER", "BANK_ROUTING_NUMBER", "CREDIT_DEBIT_CARD"}
|
| 1030 |
+
repaired = [
|
| 1031 |
+
other
|
| 1032 |
+
for other in repaired
|
| 1033 |
+
if not (
|
| 1034 |
+
spans_overlap(candidate_span, other)
|
| 1035 |
+
and other["label"] in conflicting_labels
|
| 1036 |
+
)
|
| 1037 |
+
]
|
| 1038 |
+
repaired.append(candidate_span)
|
| 1039 |
+
return repaired
|
| 1040 |
+
|
| 1041 |
+
|
| 1042 |
+
def repair_postcodes(text: str, spans: list[dict]) -> list[dict]:
|
| 1043 |
+
repaired = list(spans)
|
| 1044 |
+
for match in POSTCODE_VALUE_RE.finditer(text):
|
| 1045 |
+
start, end = match.span(1)
|
| 1046 |
+
candidate_span = {
|
| 1047 |
+
"start": start,
|
| 1048 |
+
"end": end,
|
| 1049 |
+
"label": "POSTCODE",
|
| 1050 |
+
"score": 0.71,
|
| 1051 |
+
"text": text[start:end],
|
| 1052 |
+
}
|
| 1053 |
+
conflicting_labels = {"POSTCODE", "PHONE_NUMBER", "ACCOUNT_NUMBER", "FIRST_NAME", "LAST_NAME"}
|
| 1054 |
+
repaired = [
|
| 1055 |
+
other
|
| 1056 |
+
for other in repaired
|
| 1057 |
+
if not (
|
| 1058 |
+
spans_overlap(candidate_span, other)
|
| 1059 |
+
and other["label"] in conflicting_labels
|
| 1060 |
+
)
|
| 1061 |
+
]
|
| 1062 |
+
repaired.append(candidate_span)
|
| 1063 |
+
return repaired
|
| 1064 |
+
|
| 1065 |
+
|
| 1066 |
+
def repair_city_spans(text: str, spans: list[dict]) -> list[dict]:
|
| 1067 |
+
repaired = list(spans)
|
| 1068 |
+
seen: set[tuple[int, int]] = set()
|
| 1069 |
+
ordered_forms = sorted(IRISH_CITY_FORMS, key=len, reverse=True)
|
| 1070 |
+
for form in ordered_forms:
|
| 1071 |
+
for match in iter_bounded_form_matches(form, text):
|
| 1072 |
+
start, end = match.span()
|
| 1073 |
+
prefix = text[max(0, start - 20) : start]
|
| 1074 |
+
if CITY_COUNTY_PREFIX_RE.search(prefix):
|
| 1075 |
+
continue
|
| 1076 |
+
key = (start, end)
|
| 1077 |
+
if key in seen:
|
| 1078 |
+
continue
|
| 1079 |
+
seen.add(key)
|
| 1080 |
+
candidate_span = {
|
| 1081 |
+
"start": start,
|
| 1082 |
+
"end": end,
|
| 1083 |
+
"label": "CITY",
|
| 1084 |
+
"score": 0.64,
|
| 1085 |
+
"text": text[start:end],
|
| 1086 |
+
}
|
| 1087 |
+
has_context = False
|
| 1088 |
+
for other in repaired:
|
| 1089 |
+
other_start = int(other["start"])
|
| 1090 |
+
other_end = int(other["end"])
|
| 1091 |
+
if other["label"] == "STREET_ADDRESS" and 0 <= start - other_end <= 4:
|
| 1092 |
+
has_context = True
|
| 1093 |
+
break
|
| 1094 |
+
if other["label"] in {"COUNTY", "POSTCODE"} and 0 <= other_start - end <= 6:
|
| 1095 |
+
has_context = True
|
| 1096 |
+
break
|
| 1097 |
+
if not has_context and re.match(r"^\s*,\s*(?:Co\.\s+|[A-Z]\d{2}|D6W)", text[end:]):
|
| 1098 |
+
has_context = True
|
| 1099 |
+
if not has_context:
|
| 1100 |
+
cue_window = text[max(0, start - 40) : min(len(text), end + 32)]
|
| 1101 |
+
has_context = bool(CITY_CUE_RE.search(cue_window))
|
| 1102 |
+
if not has_context:
|
| 1103 |
+
continue
|
| 1104 |
+
conflicting_labels = {"CITY", "FIRST_NAME", "LAST_NAME"}
|
| 1105 |
+
repaired = [
|
| 1106 |
+
other
|
| 1107 |
+
for other in repaired
|
| 1108 |
+
if not (
|
| 1109 |
+
spans_overlap(candidate_span, other)
|
| 1110 |
+
and other["label"] in conflicting_labels
|
| 1111 |
+
)
|
| 1112 |
+
]
|
| 1113 |
+
repaired.append(candidate_span)
|
| 1114 |
+
return repaired
|
| 1115 |
+
|
| 1116 |
+
|
| 1117 |
+
def repair_city_before_postcode(text: str, spans: list[dict]) -> list[dict]:
|
| 1118 |
+
repaired = list(spans)
|
| 1119 |
+
for match in CITY_BEFORE_POSTCODE_RE.finditer(text):
|
| 1120 |
+
start, end = match.span(1)
|
| 1121 |
+
value = text[start:end]
|
| 1122 |
+
if any(ch.isdigit() for ch in value):
|
| 1123 |
+
continue
|
| 1124 |
+
prefix = text[max(0, start - 20) : start]
|
| 1125 |
+
if CITY_COUNTY_PREFIX_RE.search(prefix):
|
| 1126 |
+
continue
|
| 1127 |
+
has_context = False
|
| 1128 |
+
for other in repaired:
|
| 1129 |
+
other_start = int(other["start"])
|
| 1130 |
+
other_end = int(other["end"])
|
| 1131 |
+
if other["label"] == "STREET_ADDRESS" and 0 <= start - other_end <= 4:
|
| 1132 |
+
has_context = True
|
| 1133 |
+
break
|
| 1134 |
+
if other["label"] == "POSTCODE" and 0 <= other_start - end <= 6:
|
| 1135 |
+
has_context = True
|
| 1136 |
+
break
|
| 1137 |
+
if not has_context:
|
| 1138 |
+
cue_window = text[max(0, start - 40) : min(len(text), end + 24)]
|
| 1139 |
+
has_context = bool(CITY_CUE_RE.search(cue_window))
|
| 1140 |
+
if not has_context:
|
| 1141 |
+
continue
|
| 1142 |
+
candidate_span = {
|
| 1143 |
+
"start": start,
|
| 1144 |
+
"end": end,
|
| 1145 |
+
"label": "CITY",
|
| 1146 |
+
"score": 0.63,
|
| 1147 |
+
"text": value,
|
| 1148 |
+
}
|
| 1149 |
+
repaired = [
|
| 1150 |
+
other
|
| 1151 |
+
for other in repaired
|
| 1152 |
+
if not (
|
| 1153 |
+
spans_overlap(candidate_span, other)
|
| 1154 |
+
and other["label"] in {"CITY", "FIRST_NAME", "LAST_NAME"}
|
| 1155 |
+
)
|
| 1156 |
+
]
|
| 1157 |
+
repaired.append(candidate_span)
|
| 1158 |
+
return repaired
|
| 1159 |
+
|
| 1160 |
+
|
| 1161 |
+
def repair_prefixed_city_spans(text: str, spans: list[dict]) -> list[dict]:
|
| 1162 |
+
repaired: list[dict] = []
|
| 1163 |
+
for span in spans:
|
| 1164 |
+
if span["label"] != "CITY":
|
| 1165 |
+
repaired.append(span)
|
| 1166 |
+
continue
|
| 1167 |
+
start = int(span["start"])
|
| 1168 |
+
end = int(span["end"])
|
| 1169 |
+
if start <= 0:
|
| 1170 |
+
repaired.append(span)
|
| 1171 |
+
continue
|
| 1172 |
+
prefix_char = text[start - 1]
|
| 1173 |
+
if prefix_char.lower() not in IRISH_CITY_PREFIX_CHARS:
|
| 1174 |
+
repaired.append(span)
|
| 1175 |
+
continue
|
| 1176 |
+
if start - 1 > 0 and text[start - 2].isalpha():
|
| 1177 |
+
repaired.append(span)
|
| 1178 |
+
continue
|
| 1179 |
+
if normalize_surface(span.get("text", "")) not in IRISH_CITY_SURFACES:
|
| 1180 |
+
repaired.append(span)
|
| 1181 |
+
continue
|
| 1182 |
+
candidate_start = start - 1
|
| 1183 |
+
candidate_text = text[candidate_start:end]
|
| 1184 |
+
repaired.append(
|
| 1185 |
+
{
|
| 1186 |
+
**span,
|
| 1187 |
+
"start": candidate_start,
|
| 1188 |
+
"text": candidate_text,
|
| 1189 |
+
"score": max(float(span.get("score", 0.0)), 0.66),
|
| 1190 |
+
}
|
| 1191 |
+
)
|
| 1192 |
+
return repaired
|
| 1193 |
+
|
| 1194 |
+
|
| 1195 |
+
def repair_county_spans(text: str, spans: list[dict]) -> list[dict]:
|
| 1196 |
+
repaired = list(spans)
|
| 1197 |
+
seen: set[tuple[int, int]] = set()
|
| 1198 |
+
ordered_forms = sorted(IRISH_COUNTY_FORMS, key=len, reverse=True)
|
| 1199 |
+
for form in ordered_forms:
|
| 1200 |
+
for match in iter_bounded_form_matches(form, text):
|
| 1201 |
+
start, end = match.span()
|
| 1202 |
+
key = (start, end)
|
| 1203 |
+
if key in seen:
|
| 1204 |
+
continue
|
| 1205 |
+
seen.add(key)
|
| 1206 |
+
candidate_span = {
|
| 1207 |
+
"start": start,
|
| 1208 |
+
"end": end,
|
| 1209 |
+
"label": "COUNTY",
|
| 1210 |
+
"score": 0.74,
|
| 1211 |
+
"text": text[start:end],
|
| 1212 |
+
}
|
| 1213 |
+
if not is_reasonable_span_text("COUNTY", text, start, end):
|
| 1214 |
+
continue
|
| 1215 |
+
overlapping_counties = [
|
| 1216 |
+
other
|
| 1217 |
+
for other in repaired
|
| 1218 |
+
if spans_overlap(candidate_span, other) and other["label"] == "COUNTY"
|
| 1219 |
+
]
|
| 1220 |
+
if overlapping_counties:
|
| 1221 |
+
candidate_span["score"] = max(
|
| 1222 |
+
float(candidate_span["score"]),
|
| 1223 |
+
max(float(other.get("score", 0.0)) for other in overlapping_counties),
|
| 1224 |
+
)
|
| 1225 |
+
conflicting_labels = {"COUNTY", "CITY", "FIRST_NAME", "LAST_NAME"}
|
| 1226 |
+
repaired = [
|
| 1227 |
+
other
|
| 1228 |
+
for other in repaired
|
| 1229 |
+
if not (
|
| 1230 |
+
spans_overlap(candidate_span, other)
|
| 1231 |
+
and other["label"] in conflicting_labels
|
| 1232 |
+
)
|
| 1233 |
+
]
|
| 1234 |
+
repaired.append(candidate_span)
|
| 1235 |
+
return repaired
|
| 1236 |
+
|
| 1237 |
+
|
| 1238 |
+
def repair_street_addresses(text: str, spans: list[dict]) -> list[dict]:
|
| 1239 |
+
repaired = list(spans)
|
| 1240 |
+
seen: set[tuple[int, int]] = set()
|
| 1241 |
+
for match in STREET_ADDRESS_VALUE_RE.finditer(text):
|
| 1242 |
+
start, end = match.span(1)
|
| 1243 |
+
key = (start, end)
|
| 1244 |
+
if key in seen:
|
| 1245 |
+
continue
|
| 1246 |
+
seen.add(key)
|
| 1247 |
+
candidate_span = {
|
| 1248 |
+
"start": start,
|
| 1249 |
+
"end": end,
|
| 1250 |
+
"label": "STREET_ADDRESS",
|
| 1251 |
+
"score": 0.65,
|
| 1252 |
+
"text": text[start:end],
|
| 1253 |
+
}
|
| 1254 |
+
if not is_reasonable_span_text("STREET_ADDRESS", text, start, end):
|
| 1255 |
+
continue
|
| 1256 |
+
context = text[max(0, start - 32) : min(len(text), end + 24)]
|
| 1257 |
+
has_context = bool(ADDRESS_CUE_RE.search(context))
|
| 1258 |
+
if not has_context:
|
| 1259 |
+
for other in repaired:
|
| 1260 |
+
other_start = int(other["start"])
|
| 1261 |
+
other_end = int(other["end"])
|
| 1262 |
+
if other["label"] in {"CITY", "COUNTY", "POSTCODE"} and 0 <= other_start - end <= 16:
|
| 1263 |
+
has_context = True
|
| 1264 |
+
break
|
| 1265 |
+
if other["label"] in {"FIRST_NAME", "LAST_NAME"} and 0 <= start - other_end <= 24:
|
| 1266 |
+
has_context = True
|
| 1267 |
+
break
|
| 1268 |
+
if not has_context:
|
| 1269 |
+
continue
|
| 1270 |
+
conflicting_labels = {"STREET_ADDRESS", "FIRST_NAME", "LAST_NAME"}
|
| 1271 |
+
repaired = [
|
| 1272 |
+
other
|
| 1273 |
+
for other in repaired
|
| 1274 |
+
if not (
|
| 1275 |
+
spans_overlap(candidate_span, other)
|
| 1276 |
+
and other["label"] in conflicting_labels
|
| 1277 |
+
)
|
| 1278 |
+
]
|
| 1279 |
+
repaired.append(candidate_span)
|
| 1280 |
+
return repaired
|
| 1281 |
+
|
| 1282 |
+
|
| 1283 |
+
def repair_contextual_address_blocks(text: str, spans: list[dict]) -> list[dict]:
|
| 1284 |
+
repaired = list(spans)
|
| 1285 |
+
for match in ADDRESS_BLOCK_VALUE_RE.finditer(text):
|
| 1286 |
+
start, end = match.span(1)
|
| 1287 |
+
value = text[start:end].strip()
|
| 1288 |
+
if not value:
|
| 1289 |
+
continue
|
| 1290 |
+
candidate_span = {
|
| 1291 |
+
"start": start,
|
| 1292 |
+
"end": end,
|
| 1293 |
+
"label": "STREET_ADDRESS",
|
| 1294 |
+
"score": 0.68,
|
| 1295 |
+
"text": text[start:end],
|
| 1296 |
+
}
|
| 1297 |
+
tokens = [token for token in re.split(r"\s+", value) if token]
|
| 1298 |
+
if len(tokens) < 2:
|
| 1299 |
+
continue
|
| 1300 |
+
if not (
|
| 1301 |
+
any(ch.isdigit() for ch in value)
|
| 1302 |
+
or ADDRESS_UNIT_PREFIX_RE.match(value)
|
| 1303 |
+
or HOUSE_NAME_PREFIX_RE.match(value)
|
| 1304 |
+
):
|
| 1305 |
+
continue
|
| 1306 |
+
if any(
|
| 1307 |
+
other["label"] == "STREET_ADDRESS"
|
| 1308 |
+
and int(other["start"]) <= start
|
| 1309 |
+
and int(other["end"]) >= end
|
| 1310 |
+
and (int(other["start"]), int(other["end"])) != (start, end)
|
| 1311 |
+
for other in repaired
|
| 1312 |
+
):
|
| 1313 |
+
continue
|
| 1314 |
+
conflicting_labels = {"STREET_ADDRESS", "FIRST_NAME", "LAST_NAME"}
|
| 1315 |
+
repaired = [
|
| 1316 |
+
other
|
| 1317 |
+
for other in repaired
|
| 1318 |
+
if not (
|
| 1319 |
+
spans_overlap(candidate_span, other)
|
| 1320 |
+
and other["label"] in conflicting_labels
|
| 1321 |
+
)
|
| 1322 |
+
]
|
| 1323 |
+
repaired.append(candidate_span)
|
| 1324 |
+
return repaired
|
| 1325 |
+
|
| 1326 |
+
|
| 1327 |
+
def prefer_long_street_address_spans(spans: list[dict]) -> list[dict]:
|
| 1328 |
+
if not spans:
|
| 1329 |
+
return spans
|
| 1330 |
+
keep: list[dict] = []
|
| 1331 |
+
for span in spans:
|
| 1332 |
+
if span["label"] != "STREET_ADDRESS":
|
| 1333 |
+
keep.append(span)
|
| 1334 |
+
continue
|
| 1335 |
+
shadowed = False
|
| 1336 |
+
for other in spans:
|
| 1337 |
+
if other is span or other["label"] != "STREET_ADDRESS":
|
| 1338 |
+
continue
|
| 1339 |
+
if int(other["start"]) <= int(span["start"]) and int(other["end"]) >= int(span["end"]):
|
| 1340 |
+
if (int(other["start"]), int(other["end"])) != (int(span["start"]), int(span["end"])):
|
| 1341 |
+
shadowed = True
|
| 1342 |
+
break
|
| 1343 |
+
if not shadowed:
|
| 1344 |
+
keep.append(span)
|
| 1345 |
+
return keep
|
| 1346 |
+
|
| 1347 |
+
|
| 1348 |
+
def drop_contextual_fragment_spans(spans: list[dict]) -> list[dict]:
|
| 1349 |
+
if not spans:
|
| 1350 |
+
return spans
|
| 1351 |
+
suppressors = {"COUNTY", "CITY", "POSTCODE", "STREET_ADDRESS", "DATE_OF_BIRTH"}
|
| 1352 |
+
keep: list[dict] = []
|
| 1353 |
+
for span in spans:
|
| 1354 |
+
if span["label"] in {"FIRST_NAME", "LAST_NAME"}:
|
| 1355 |
+
if any(
|
| 1356 |
+
other is not span
|
| 1357 |
+
and other["label"] in suppressors
|
| 1358 |
+
and spans_overlap(span, other)
|
| 1359 |
+
and (int(other["end"]) - int(other["start"])) >= (int(span["end"]) - int(span["start"]))
|
| 1360 |
+
for other in spans
|
| 1361 |
+
):
|
| 1362 |
+
continue
|
| 1363 |
+
if span["label"] == "CITY":
|
| 1364 |
+
if any(
|
| 1365 |
+
other is not span
|
| 1366 |
+
and other["label"] == "COUNTY"
|
| 1367 |
+
and spans_overlap(span, other)
|
| 1368 |
+
and (int(other["end"]) - int(other["start"])) >= (int(span["end"]) - int(span["start"]))
|
| 1369 |
+
for other in spans
|
| 1370 |
+
):
|
| 1371 |
+
continue
|
| 1372 |
+
keep.append(span)
|
| 1373 |
+
return keep
|
| 1374 |
+
|
| 1375 |
+
|
| 1376 |
+
def drop_public_contact_detail_spans(text: str, spans: list[dict]) -> list[dict]:
|
| 1377 |
+
if not PUBLIC_CONTACT_DETAILS_RE.search(text):
|
| 1378 |
+
return spans
|
| 1379 |
+
keep: list[dict] = []
|
| 1380 |
+
for span in spans:
|
| 1381 |
+
if span["label"] not in {"STREET_ADDRESS", "CITY", "COUNTY"}:
|
| 1382 |
+
keep.append(span)
|
| 1383 |
+
continue
|
| 1384 |
+
keep.append(span)
|
| 1385 |
+
return [
|
| 1386 |
+
span for span in keep
|
| 1387 |
+
if not (span["label"] in {"STREET_ADDRESS", "CITY", "COUNTY"} and PUBLIC_CONTACT_DETAILS_RE.search(text))
|
| 1388 |
+
]
|
| 1389 |
+
|
| 1390 |
+
|
| 1391 |
+
def drop_city_org_prefix_spans(text: str, spans: list[dict]) -> list[dict]:
|
| 1392 |
+
keep: list[dict] = []
|
| 1393 |
+
for span in spans:
|
| 1394 |
+
if span["label"] != "CITY":
|
| 1395 |
+
keep.append(span)
|
| 1396 |
+
continue
|
| 1397 |
+
tail = text[int(span["end"]) : min(len(text), int(span["end"]) + 24)]
|
| 1398 |
+
if re.match(r"^\s+Intreo\s+Centre\b", tail):
|
| 1399 |
+
continue
|
| 1400 |
+
keep.append(span)
|
| 1401 |
+
return keep
|
| 1402 |
+
|
| 1403 |
+
|
| 1404 |
+
def canonicalize_email_spans(text: str, spans: list[dict]) -> list[dict]:
|
| 1405 |
+
repaired: list[dict] = []
|
| 1406 |
+
for span in spans:
|
| 1407 |
+
if span["label"] != "EMAIL":
|
| 1408 |
+
repaired.append(span)
|
| 1409 |
+
continue
|
| 1410 |
+
segment = text[int(span["start"]) : int(span["end"])]
|
| 1411 |
+
match = EMAIL_EXTRACT_RE.search(segment)
|
| 1412 |
+
if not match:
|
| 1413 |
+
repaired.append(span)
|
| 1414 |
+
continue
|
| 1415 |
+
start = int(span["start"]) + int(match.start(1))
|
| 1416 |
+
end = int(span["start"]) + int(match.end(1))
|
| 1417 |
+
repaired.append(
|
| 1418 |
+
{
|
| 1419 |
+
**span,
|
| 1420 |
+
"start": start,
|
| 1421 |
+
"end": end,
|
| 1422 |
+
"text": text[start:end],
|
| 1423 |
+
}
|
| 1424 |
+
)
|
| 1425 |
+
return repaired
|
| 1426 |
+
|
| 1427 |
+
|
| 1428 |
+
def drop_stacked_first_names(spans: list[dict]) -> list[dict]:
|
| 1429 |
+
if not spans:
|
| 1430 |
+
return spans
|
| 1431 |
+
first_names = [span for span in spans if span["label"] == "FIRST_NAME"]
|
| 1432 |
+
last_names = [span for span in spans if span["label"] == "LAST_NAME"]
|
| 1433 |
+
if not first_names or not last_names:
|
| 1434 |
+
return spans
|
| 1435 |
+
keep: list[dict] = []
|
| 1436 |
+
for span in spans:
|
| 1437 |
+
if span["label"] != "FIRST_NAME":
|
| 1438 |
+
keep.append(span)
|
| 1439 |
+
continue
|
| 1440 |
+
shadowed = False
|
| 1441 |
+
for other in first_names:
|
| 1442 |
+
if other is span:
|
| 1443 |
+
continue
|
| 1444 |
+
if int(other["start"]) <= int(span["start"]):
|
| 1445 |
+
continue
|
| 1446 |
+
if int(other["start"]) - int(span["end"]) > 2:
|
| 1447 |
+
continue
|
| 1448 |
+
if not any(
|
| 1449 |
+
int(last["start"]) >= int(other["end"]) and int(last["start"]) - int(other["end"]) <= 2
|
| 1450 |
+
for last in last_names
|
| 1451 |
+
):
|
| 1452 |
+
continue
|
| 1453 |
+
shadowed = True
|
| 1454 |
+
break
|
| 1455 |
+
if not shadowed:
|
| 1456 |
+
keep.append(span)
|
| 1457 |
+
return keep
|
| 1458 |
+
|
| 1459 |
+
|
| 1460 |
+
def decode_span_matrix(
|
| 1461 |
+
text: str,
|
| 1462 |
+
offsets: list[tuple[int, int]],
|
| 1463 |
+
span_scores: np.ndarray,
|
| 1464 |
+
config,
|
| 1465 |
+
min_score: float,
|
| 1466 |
+
) -> list[dict]:
|
| 1467 |
+
label_names = label_names_from_config(config)
|
| 1468 |
+
thresholds = label_thresholds_from_config(config, min_score)
|
| 1469 |
+
max_span_tokens = label_max_span_tokens_from_config(config)
|
| 1470 |
+
min_nonspace_chars = label_min_nonspace_chars_from_config(config)
|
| 1471 |
+
|
| 1472 |
+
if span_scores.ndim != 3:
|
| 1473 |
+
raise ValueError(f"Expected [num_labels, seq_len, seq_len] span scores, got shape {span_scores.shape}")
|
| 1474 |
+
|
| 1475 |
+
num_labels, seq_len, _ = span_scores.shape
|
| 1476 |
+
spans: list[dict] = []
|
| 1477 |
+
for label_index in range(min(num_labels, len(label_names))):
|
| 1478 |
+
label = label_names[label_index]
|
| 1479 |
+
threshold = thresholds.get(label, min_score)
|
| 1480 |
+
max_width = max(1, int(max_span_tokens.get(label, 8)))
|
| 1481 |
+
min_chars = max(1, int(min_nonspace_chars.get(label, 1)))
|
| 1482 |
+
|
| 1483 |
+
for start_idx in range(seq_len):
|
| 1484 |
+
start_offset = offsets[start_idx]
|
| 1485 |
+
if not valid_offset(start_offset):
|
| 1486 |
+
continue
|
| 1487 |
+
max_end = min(seq_len, start_idx + max_width)
|
| 1488 |
+
for end_idx in range(start_idx, max_end):
|
| 1489 |
+
end_offset = offsets[end_idx]
|
| 1490 |
+
if not valid_offset(end_offset):
|
| 1491 |
+
continue
|
| 1492 |
+
score = float(span_scores[label_index, start_idx, end_idx])
|
| 1493 |
+
if score < threshold:
|
| 1494 |
+
continue
|
| 1495 |
+
start_char = int(start_offset[0])
|
| 1496 |
+
end_char = int(end_offset[1])
|
| 1497 |
+
if end_char <= start_char:
|
| 1498 |
+
continue
|
| 1499 |
+
if nonspace_length(text, start_char, end_char) < min_chars:
|
| 1500 |
+
continue
|
| 1501 |
+
if not is_reasonable_span_text(label, text, start_char, end_char):
|
| 1502 |
+
continue
|
| 1503 |
+
spans.append(
|
| 1504 |
+
{
|
| 1505 |
+
"start": start_char,
|
| 1506 |
+
"end": end_char,
|
| 1507 |
+
"label": label,
|
| 1508 |
+
"score": score,
|
| 1509 |
+
"text": text[start_char:end_char],
|
| 1510 |
+
}
|
| 1511 |
+
)
|
| 1512 |
+
spans = prefer_long_name_spans(spans, thresholds)
|
| 1513 |
+
spans = prefer_long_structured_spans(spans, thresholds)
|
| 1514 |
+
spans = repair_first_name_from_last_name(text, spans)
|
| 1515 |
+
spans = repair_emails(text, spans)
|
| 1516 |
+
spans = repair_phone_numbers(text, spans)
|
| 1517 |
+
spans = repair_ppsn_variants(text, spans)
|
| 1518 |
+
spans = repair_postcodes(text, spans)
|
| 1519 |
+
spans = repair_street_addresses(text, spans)
|
| 1520 |
+
spans = repair_contextual_name_cues(text, spans)
|
| 1521 |
+
spans = repair_contextual_address_blocks(text, spans)
|
| 1522 |
+
spans = prefer_long_street_address_spans(spans)
|
| 1523 |
+
spans = repair_county_spans(text, spans)
|
| 1524 |
+
spans = repair_city_spans(text, spans)
|
| 1525 |
+
spans = repair_city_before_postcode(text, spans)
|
| 1526 |
+
spans = repair_prefixed_city_spans(text, spans)
|
| 1527 |
+
spans = repair_contextual_date_of_birth(text, spans)
|
| 1528 |
+
spans = repair_contextual_ages(text, spans)
|
| 1529 |
+
spans = repair_contextual_passport_numbers(text, spans)
|
| 1530 |
+
spans = repair_contextual_account_numbers(text, spans)
|
| 1531 |
+
spans = drop_public_contact_detail_spans(text, spans)
|
| 1532 |
+
spans = drop_city_org_prefix_spans(text, spans)
|
| 1533 |
+
spans = drop_stacked_first_names(spans)
|
| 1534 |
+
spans = drop_contextual_fragment_spans(spans)
|
| 1535 |
+
spans = canonicalize_email_spans(text, spans)
|
| 1536 |
+
return dedupe_spans(spans)
|
| 1537 |
+
|
| 1538 |
+
|
| 1539 |
+
def prefer_long_name_spans(spans: list[dict], thresholds: dict[str, float]) -> list[dict]:
|
| 1540 |
+
if not spans:
|
| 1541 |
+
return spans
|
| 1542 |
+
preferred: list[dict] = []
|
| 1543 |
+
consumed: set[int] = set()
|
| 1544 |
+
for index, span in enumerate(spans):
|
| 1545 |
+
if index in consumed:
|
| 1546 |
+
continue
|
| 1547 |
+
label = span["label"]
|
| 1548 |
+
if label not in {"FIRST_NAME", "LAST_NAME"}:
|
| 1549 |
+
preferred.append(span)
|
| 1550 |
+
continue
|
| 1551 |
+
same_start = [
|
| 1552 |
+
(other_index, other)
|
| 1553 |
+
for other_index, other in enumerate(spans)
|
| 1554 |
+
if other_index not in consumed and other["label"] == label and other["start"] == span["start"]
|
| 1555 |
+
]
|
| 1556 |
+
if len(same_start) == 1:
|
| 1557 |
+
preferred.append(span)
|
| 1558 |
+
continue
|
| 1559 |
+
for other_index, _ in same_start:
|
| 1560 |
+
consumed.add(other_index)
|
| 1561 |
+
best_by_score = max(same_start, key=lambda item: float(item[1].get("score", 0.0)))[1]
|
| 1562 |
+
longest = max(same_start, key=lambda item: (item[1]["end"] - item[1]["start"], float(item[1].get("score", 0.0))))[1]
|
| 1563 |
+
threshold = float(thresholds.get(label, 0.5))
|
| 1564 |
+
if float(longest.get("score", 0.0)) >= max(threshold + 0.15, float(best_by_score.get("score", 0.0)) * 0.7):
|
| 1565 |
+
preferred.append(longest)
|
| 1566 |
+
else:
|
| 1567 |
+
preferred.append(best_by_score)
|
| 1568 |
+
return prefer_same_end_extensions(preferred, thresholds)
|
| 1569 |
+
|
| 1570 |
+
|
| 1571 |
+
def prefer_same_end_extensions(spans: list[dict], thresholds: dict[str, float]) -> list[dict]:
|
| 1572 |
+
if not spans:
|
| 1573 |
+
return spans
|
| 1574 |
+
preferred: list[dict] = []
|
| 1575 |
+
consumed: set[int] = set()
|
| 1576 |
+
for index, span in enumerate(spans):
|
| 1577 |
+
if index in consumed:
|
| 1578 |
+
continue
|
| 1579 |
+
label = span["label"]
|
| 1580 |
+
if label not in {"FIRST_NAME", "LAST_NAME", "EMAIL"}:
|
| 1581 |
+
preferred.append(span)
|
| 1582 |
+
continue
|
| 1583 |
+
same_end = [
|
| 1584 |
+
(other_index, other)
|
| 1585 |
+
for other_index, other in enumerate(spans)
|
| 1586 |
+
if other_index not in consumed and other["label"] == label and other["end"] == span["end"]
|
| 1587 |
+
]
|
| 1588 |
+
if len(same_end) == 1:
|
| 1589 |
+
preferred.append(span)
|
| 1590 |
+
continue
|
| 1591 |
+
for other_index, _ in same_end:
|
| 1592 |
+
consumed.add(other_index)
|
| 1593 |
+
best_by_score = max(same_end, key=lambda item: float(item[1].get("score", 0.0)))[1]
|
| 1594 |
+
longest = max(same_end, key=lambda item: (item[1]["end"] - item[1]["start"], float(item[1].get("score", 0.0))))[1]
|
| 1595 |
+
longest_score = float(longest.get("score", 0.0))
|
| 1596 |
+
best_score = float(best_by_score.get("score", 0.0))
|
| 1597 |
+
if label == "EMAIL":
|
| 1598 |
+
if "@" in longest.get("text", "") or longest["end"] - longest["start"] > best_by_score["end"] - best_by_score["start"]:
|
| 1599 |
+
if longest_score >= best_score - 0.02:
|
| 1600 |
+
preferred.append(longest)
|
| 1601 |
+
continue
|
| 1602 |
+
else:
|
| 1603 |
+
longest_text = longest.get("text", "")
|
| 1604 |
+
if " " not in longest_text.strip() and longest_score >= max(float(thresholds.get(label, 0.5)) * 0.8, best_score * 0.55):
|
| 1605 |
+
preferred.append(longest)
|
| 1606 |
+
continue
|
| 1607 |
+
preferred.append(best_by_score)
|
| 1608 |
+
return preferred
|
| 1609 |
+
|
| 1610 |
+
|
| 1611 |
+
def prefer_long_structured_spans(spans: list[dict], thresholds: dict[str, float]) -> list[dict]:
|
| 1612 |
+
if not spans:
|
| 1613 |
+
return spans
|
| 1614 |
+
preferred: list[dict] = []
|
| 1615 |
+
consumed: set[int] = set()
|
| 1616 |
+
target_labels = {"STREET_ADDRESS", "DATE_OF_BIRTH"}
|
| 1617 |
+
for index, span in enumerate(spans):
|
| 1618 |
+
if index in consumed:
|
| 1619 |
+
continue
|
| 1620 |
+
label = span["label"]
|
| 1621 |
+
if label not in target_labels:
|
| 1622 |
+
preferred.append(span)
|
| 1623 |
+
continue
|
| 1624 |
+
overlapping = [
|
| 1625 |
+
(other_index, other)
|
| 1626 |
+
for other_index, other in enumerate(spans)
|
| 1627 |
+
if other_index not in consumed and other["label"] == label and spans_overlap(span, other)
|
| 1628 |
+
]
|
| 1629 |
+
if len(overlapping) == 1:
|
| 1630 |
+
preferred.append(span)
|
| 1631 |
+
continue
|
| 1632 |
+
for other_index, _ in overlapping:
|
| 1633 |
+
consumed.add(other_index)
|
| 1634 |
+
best_by_score = max(overlapping, key=lambda item: float(item[1].get("score", 0.0)))[1]
|
| 1635 |
+
longest = max(
|
| 1636 |
+
overlapping,
|
| 1637 |
+
key=lambda item: (item[1]["end"] - item[1]["start"], float(item[1].get("score", 0.0))),
|
| 1638 |
+
)[1]
|
| 1639 |
+
longest_score = float(longest.get("score", 0.0))
|
| 1640 |
+
best_score = float(best_by_score.get("score", 0.0))
|
| 1641 |
+
threshold = float(thresholds.get(label, 0.5))
|
| 1642 |
+
if longest_score >= max(threshold, best_score * 0.75):
|
| 1643 |
+
preferred.append(longest)
|
| 1644 |
+
else:
|
| 1645 |
+
preferred.append(best_by_score)
|
| 1646 |
+
return preferred
|
| 1647 |
+
|
| 1648 |
+
|
| 1649 |
+
def sigmoid_np(values: np.ndarray) -> np.ndarray:
|
| 1650 |
+
clipped = np.clip(values, -60.0, 60.0)
|
| 1651 |
+
return 1.0 / (1.0 + np.exp(-clipped))
|
| 1652 |
+
|
| 1653 |
+
|
| 1654 |
+
def run_onnx_span(session, encoded: dict[str, Any]) -> np.ndarray:
|
| 1655 |
+
feed = {}
|
| 1656 |
+
input_names = {item.name for item in session.get_inputs()}
|
| 1657 |
+
for key, value in encoded.items():
|
| 1658 |
+
if key == "offset_mapping":
|
| 1659 |
+
continue
|
| 1660 |
+
if key in input_names:
|
| 1661 |
+
feed[key] = value
|
| 1662 |
+
outputs = session.run(None, feed)
|
| 1663 |
+
if not outputs:
|
| 1664 |
+
raise ValueError("ONNX session returned no outputs")
|
| 1665 |
+
return outputs[0]
|
config.json
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"activation": "gelu",
|
| 3 |
+
"architectures": [
|
| 4 |
+
"IrishCoreGlobalPointerModel"
|
| 5 |
+
],
|
| 6 |
+
"attention_dropout": 0.1,
|
| 7 |
+
"dim": 768,
|
| 8 |
+
"dropout": 0.1,
|
| 9 |
+
"dtype": "float32",
|
| 10 |
+
"global_pointer_head_size": 64,
|
| 11 |
+
"global_pointer_min_negatives": 256,
|
| 12 |
+
"global_pointer_negative_ratio": 16,
|
| 13 |
+
"global_pointer_use_rope": true,
|
| 14 |
+
"hidden_dim": 3072,
|
| 15 |
+
"id2label": {
|
| 16 |
+
"0": "O",
|
| 17 |
+
"1": "B-account_number",
|
| 18 |
+
"2": "B-age",
|
| 19 |
+
"3": "B-api_key",
|
| 20 |
+
"4": "B-bank_routing_number",
|
| 21 |
+
"5": "B-biometric_identifier",
|
| 22 |
+
"6": "B-blood_type",
|
| 23 |
+
"7": "B-certificate_license_number",
|
| 24 |
+
"8": "B-city",
|
| 25 |
+
"9": "B-company_name",
|
| 26 |
+
"10": "B-coordinate",
|
| 27 |
+
"11": "B-country",
|
| 28 |
+
"12": "B-county",
|
| 29 |
+
"13": "B-credit_debit_card",
|
| 30 |
+
"14": "B-customer_id",
|
| 31 |
+
"15": "B-cvv",
|
| 32 |
+
"16": "B-date",
|
| 33 |
+
"17": "B-date_of_birth",
|
| 34 |
+
"18": "B-date_time",
|
| 35 |
+
"19": "B-device_identifier",
|
| 36 |
+
"20": "B-education_level",
|
| 37 |
+
"21": "B-email",
|
| 38 |
+
"22": "B-employee_id",
|
| 39 |
+
"23": "B-employment_status",
|
| 40 |
+
"24": "B-fax_number",
|
| 41 |
+
"25": "B-first_name",
|
| 42 |
+
"26": "B-gender",
|
| 43 |
+
"27": "B-health_plan_beneficiary_number",
|
| 44 |
+
"28": "B-http_cookie",
|
| 45 |
+
"29": "B-ipv4",
|
| 46 |
+
"30": "B-ipv6",
|
| 47 |
+
"31": "B-language",
|
| 48 |
+
"32": "B-last_name",
|
| 49 |
+
"33": "B-license_plate",
|
| 50 |
+
"34": "B-mac_address",
|
| 51 |
+
"35": "B-medical_record_number",
|
| 52 |
+
"36": "B-occupation",
|
| 53 |
+
"37": "B-password",
|
| 54 |
+
"38": "B-phone_number",
|
| 55 |
+
"39": "B-pin",
|
| 56 |
+
"40": "B-political_view",
|
| 57 |
+
"41": "B-postcode",
|
| 58 |
+
"42": "B-race_ethnicity",
|
| 59 |
+
"43": "B-religious_belief",
|
| 60 |
+
"44": "B-sexuality",
|
| 61 |
+
"45": "B-ssn",
|
| 62 |
+
"46": "B-state",
|
| 63 |
+
"47": "B-street_address",
|
| 64 |
+
"48": "B-swift_bic",
|
| 65 |
+
"49": "B-tax_id",
|
| 66 |
+
"50": "B-time",
|
| 67 |
+
"51": "B-unique_id",
|
| 68 |
+
"52": "B-url",
|
| 69 |
+
"53": "B-user_name",
|
| 70 |
+
"54": "B-vehicle_identifier",
|
| 71 |
+
"55": "I-account_number",
|
| 72 |
+
"56": "I-api_key",
|
| 73 |
+
"57": "I-biometric_identifier",
|
| 74 |
+
"58": "I-blood_type",
|
| 75 |
+
"59": "I-certificate_license_number",
|
| 76 |
+
"60": "I-city",
|
| 77 |
+
"61": "I-company_name",
|
| 78 |
+
"62": "I-coordinate",
|
| 79 |
+
"63": "I-country",
|
| 80 |
+
"64": "I-county",
|
| 81 |
+
"65": "I-credit_debit_card",
|
| 82 |
+
"66": "I-customer_id",
|
| 83 |
+
"67": "I-date",
|
| 84 |
+
"68": "I-date_of_birth",
|
| 85 |
+
"69": "I-date_time",
|
| 86 |
+
"70": "I-device_identifier",
|
| 87 |
+
"71": "I-education_level",
|
| 88 |
+
"72": "I-email",
|
| 89 |
+
"73": "I-employee_id",
|
| 90 |
+
"74": "I-employment_status",
|
| 91 |
+
"75": "I-fax_number",
|
| 92 |
+
"76": "I-first_name",
|
| 93 |
+
"77": "I-gender",
|
| 94 |
+
"78": "I-health_plan_beneficiary_number",
|
| 95 |
+
"79": "I-http_cookie",
|
| 96 |
+
"80": "I-ipv4",
|
| 97 |
+
"81": "I-ipv6",
|
| 98 |
+
"82": "I-language",
|
| 99 |
+
"83": "I-last_name",
|
| 100 |
+
"84": "I-license_plate",
|
| 101 |
+
"85": "I-mac_address",
|
| 102 |
+
"86": "I-medical_record_number",
|
| 103 |
+
"87": "I-occupation",
|
| 104 |
+
"88": "I-password",
|
| 105 |
+
"89": "I-phone_number",
|
| 106 |
+
"90": "I-pin",
|
| 107 |
+
"91": "I-political_view",
|
| 108 |
+
"92": "I-postcode",
|
| 109 |
+
"93": "I-race_ethnicity",
|
| 110 |
+
"94": "I-religious_belief",
|
| 111 |
+
"95": "I-sexuality",
|
| 112 |
+
"96": "I-ssn",
|
| 113 |
+
"97": "I-state",
|
| 114 |
+
"98": "I-street_address",
|
| 115 |
+
"99": "I-swift_bic",
|
| 116 |
+
"100": "I-tax_id",
|
| 117 |
+
"101": "I-time",
|
| 118 |
+
"102": "I-unique_id",
|
| 119 |
+
"103": "I-url",
|
| 120 |
+
"104": "I-user_name",
|
| 121 |
+
"105": "I-vehicle_identifier"
|
| 122 |
+
},
|
| 123 |
+
"initializer_range": 0.02,
|
| 124 |
+
"label2id": {
|
| 125 |
+
"B-account_number": 1,
|
| 126 |
+
"B-age": 2,
|
| 127 |
+
"B-api_key": 3,
|
| 128 |
+
"B-bank_routing_number": 4,
|
| 129 |
+
"B-biometric_identifier": 5,
|
| 130 |
+
"B-blood_type": 6,
|
| 131 |
+
"B-certificate_license_number": 7,
|
| 132 |
+
"B-city": 8,
|
| 133 |
+
"B-company_name": 9,
|
| 134 |
+
"B-coordinate": 10,
|
| 135 |
+
"B-country": 11,
|
| 136 |
+
"B-county": 12,
|
| 137 |
+
"B-credit_debit_card": 13,
|
| 138 |
+
"B-customer_id": 14,
|
| 139 |
+
"B-cvv": 15,
|
| 140 |
+
"B-date": 16,
|
| 141 |
+
"B-date_of_birth": 17,
|
| 142 |
+
"B-date_time": 18,
|
| 143 |
+
"B-device_identifier": 19,
|
| 144 |
+
"B-education_level": 20,
|
| 145 |
+
"B-email": 21,
|
| 146 |
+
"B-employee_id": 22,
|
| 147 |
+
"B-employment_status": 23,
|
| 148 |
+
"B-fax_number": 24,
|
| 149 |
+
"B-first_name": 25,
|
| 150 |
+
"B-gender": 26,
|
| 151 |
+
"B-health_plan_beneficiary_number": 27,
|
| 152 |
+
"B-http_cookie": 28,
|
| 153 |
+
"B-ipv4": 29,
|
| 154 |
+
"B-ipv6": 30,
|
| 155 |
+
"B-language": 31,
|
| 156 |
+
"B-last_name": 32,
|
| 157 |
+
"B-license_plate": 33,
|
| 158 |
+
"B-mac_address": 34,
|
| 159 |
+
"B-medical_record_number": 35,
|
| 160 |
+
"B-occupation": 36,
|
| 161 |
+
"B-password": 37,
|
| 162 |
+
"B-phone_number": 38,
|
| 163 |
+
"B-pin": 39,
|
| 164 |
+
"B-political_view": 40,
|
| 165 |
+
"B-postcode": 41,
|
| 166 |
+
"B-race_ethnicity": 42,
|
| 167 |
+
"B-religious_belief": 43,
|
| 168 |
+
"B-sexuality": 44,
|
| 169 |
+
"B-ssn": 45,
|
| 170 |
+
"B-state": 46,
|
| 171 |
+
"B-street_address": 47,
|
| 172 |
+
"B-swift_bic": 48,
|
| 173 |
+
"B-tax_id": 49,
|
| 174 |
+
"B-time": 50,
|
| 175 |
+
"B-unique_id": 51,
|
| 176 |
+
"B-url": 52,
|
| 177 |
+
"B-user_name": 53,
|
| 178 |
+
"B-vehicle_identifier": 54,
|
| 179 |
+
"I-account_number": 55,
|
| 180 |
+
"I-api_key": 56,
|
| 181 |
+
"I-biometric_identifier": 57,
|
| 182 |
+
"I-blood_type": 58,
|
| 183 |
+
"I-certificate_license_number": 59,
|
| 184 |
+
"I-city": 60,
|
| 185 |
+
"I-company_name": 61,
|
| 186 |
+
"I-coordinate": 62,
|
| 187 |
+
"I-country": 63,
|
| 188 |
+
"I-county": 64,
|
| 189 |
+
"I-credit_debit_card": 65,
|
| 190 |
+
"I-customer_id": 66,
|
| 191 |
+
"I-date": 67,
|
| 192 |
+
"I-date_of_birth": 68,
|
| 193 |
+
"I-date_time": 69,
|
| 194 |
+
"I-device_identifier": 70,
|
| 195 |
+
"I-education_level": 71,
|
| 196 |
+
"I-email": 72,
|
| 197 |
+
"I-employee_id": 73,
|
| 198 |
+
"I-employment_status": 74,
|
| 199 |
+
"I-fax_number": 75,
|
| 200 |
+
"I-first_name": 76,
|
| 201 |
+
"I-gender": 77,
|
| 202 |
+
"I-health_plan_beneficiary_number": 78,
|
| 203 |
+
"I-http_cookie": 79,
|
| 204 |
+
"I-ipv4": 80,
|
| 205 |
+
"I-ipv6": 81,
|
| 206 |
+
"I-language": 82,
|
| 207 |
+
"I-last_name": 83,
|
| 208 |
+
"I-license_plate": 84,
|
| 209 |
+
"I-mac_address": 85,
|
| 210 |
+
"I-medical_record_number": 86,
|
| 211 |
+
"I-occupation": 87,
|
| 212 |
+
"I-password": 88,
|
| 213 |
+
"I-phone_number": 89,
|
| 214 |
+
"I-pin": 90,
|
| 215 |
+
"I-political_view": 91,
|
| 216 |
+
"I-postcode": 92,
|
| 217 |
+
"I-race_ethnicity": 93,
|
| 218 |
+
"I-religious_belief": 94,
|
| 219 |
+
"I-sexuality": 95,
|
| 220 |
+
"I-ssn": 96,
|
| 221 |
+
"I-state": 97,
|
| 222 |
+
"I-street_address": 98,
|
| 223 |
+
"I-swift_bic": 99,
|
| 224 |
+
"I-tax_id": 100,
|
| 225 |
+
"I-time": 101,
|
| 226 |
+
"I-unique_id": 102,
|
| 227 |
+
"I-url": 103,
|
| 228 |
+
"I-user_name": 104,
|
| 229 |
+
"I-vehicle_identifier": 105,
|
| 230 |
+
"O": 0
|
| 231 |
+
},
|
| 232 |
+
"max_position_embeddings": 512,
|
| 233 |
+
"model_type": "distilbert",
|
| 234 |
+
"n_heads": 12,
|
| 235 |
+
"n_layers": 6,
|
| 236 |
+
"num_span_labels": 16,
|
| 237 |
+
"output_past": true,
|
| 238 |
+
"pad_token_id": 0,
|
| 239 |
+
"qa_dropout": 0.1,
|
| 240 |
+
"seq_classif_dropout": 0.2,
|
| 241 |
+
"sinusoidal_pos_embds": false,
|
| 242 |
+
"span_label_max_span_tokens": {
|
| 243 |
+
"ACCOUNT_NUMBER": 19,
|
| 244 |
+
"AGE": 8,
|
| 245 |
+
"BANK_ROUTING_NUMBER": 6,
|
| 246 |
+
"CITY": 8,
|
| 247 |
+
"COUNTY": 8,
|
| 248 |
+
"CREDIT_DEBIT_CARD": 12,
|
| 249 |
+
"DATE_OF_BIRTH": 8,
|
| 250 |
+
"EMAIL": 16,
|
| 251 |
+
"FIRST_NAME": 6,
|
| 252 |
+
"LAST_NAME": 8,
|
| 253 |
+
"PASSPORT_NUMBER": 8,
|
| 254 |
+
"PHONE_NUMBER": 10,
|
| 255 |
+
"POSTCODE": 8,
|
| 256 |
+
"PPSN": 9,
|
| 257 |
+
"STREET_ADDRESS": 10,
|
| 258 |
+
"SWIFT_BIC": 8
|
| 259 |
+
},
|
| 260 |
+
"span_label_min_nonspace_chars": {
|
| 261 |
+
"ACCOUNT_NUMBER": 6,
|
| 262 |
+
"AGE": 1,
|
| 263 |
+
"BANK_ROUTING_NUMBER": 6,
|
| 264 |
+
"CITY": 1,
|
| 265 |
+
"COUNTY": 1,
|
| 266 |
+
"CREDIT_DEBIT_CARD": 12,
|
| 267 |
+
"DATE_OF_BIRTH": 1,
|
| 268 |
+
"EMAIL": 6,
|
| 269 |
+
"FIRST_NAME": 2,
|
| 270 |
+
"LAST_NAME": 2,
|
| 271 |
+
"PASSPORT_NUMBER": 7,
|
| 272 |
+
"PHONE_NUMBER": 7,
|
| 273 |
+
"POSTCODE": 6,
|
| 274 |
+
"PPSN": 8,
|
| 275 |
+
"STREET_ADDRESS": 1,
|
| 276 |
+
"SWIFT_BIC": 8
|
| 277 |
+
},
|
| 278 |
+
"span_label_names": [
|
| 279 |
+
"ACCOUNT_NUMBER",
|
| 280 |
+
"AGE",
|
| 281 |
+
"BANK_ROUTING_NUMBER",
|
| 282 |
+
"CITY",
|
| 283 |
+
"COUNTY",
|
| 284 |
+
"CREDIT_DEBIT_CARD",
|
| 285 |
+
"DATE_OF_BIRTH",
|
| 286 |
+
"EMAIL",
|
| 287 |
+
"FIRST_NAME",
|
| 288 |
+
"LAST_NAME",
|
| 289 |
+
"PASSPORT_NUMBER",
|
| 290 |
+
"PHONE_NUMBER",
|
| 291 |
+
"POSTCODE",
|
| 292 |
+
"PPSN",
|
| 293 |
+
"STREET_ADDRESS",
|
| 294 |
+
"SWIFT_BIC"
|
| 295 |
+
],
|
| 296 |
+
"span_label_thresholds": {
|
| 297 |
+
"ACCOUNT_NUMBER": 0.5,
|
| 298 |
+
"AGE": 0.5,
|
| 299 |
+
"BANK_ROUTING_NUMBER": 0.5,
|
| 300 |
+
"CITY": 0.5,
|
| 301 |
+
"COUNTY": 0.5,
|
| 302 |
+
"CREDIT_DEBIT_CARD": 0.5,
|
| 303 |
+
"DATE_OF_BIRTH": 0.5,
|
| 304 |
+
"EMAIL": 0.5,
|
| 305 |
+
"FIRST_NAME": 0.5,
|
| 306 |
+
"LAST_NAME": 0.5,
|
| 307 |
+
"PASSPORT_NUMBER": 0.5,
|
| 308 |
+
"PHONE_NUMBER": 0.5,
|
| 309 |
+
"POSTCODE": 0.5,
|
| 310 |
+
"PPSN": 0.5,
|
| 311 |
+
"STREET_ADDRESS": 0.5,
|
| 312 |
+
"SWIFT_BIC": 0.5
|
| 313 |
+
},
|
| 314 |
+
"span_positive_weight": 8.0,
|
| 315 |
+
"tie_weights_": true,
|
| 316 |
+
"transformers_version": "4.57.6",
|
| 317 |
+
"vocab_size": 119547
|
| 318 |
+
}
|
eval/benchmark_summary.json
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"release": "IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"repo_id": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 4 |
+
"architecture": {
|
| 5 |
+
"family": "DistilBERT-size GlobalPointer span extractor",
|
| 6 |
+
"base_head": "typed span matrix",
|
| 7 |
+
"raw_only": true,
|
| 8 |
+
"scanner_free": true,
|
| 9 |
+
"validator_free": true,
|
| 10 |
+
"uses_rope": true,
|
| 11 |
+
"runtime_diffusion": false,
|
| 12 |
+
"expanded_context_labels": [
|
| 13 |
+
"STREET_ADDRESS",
|
| 14 |
+
"CITY",
|
| 15 |
+
"COUNTY",
|
| 16 |
+
"DATE_OF_BIRTH",
|
| 17 |
+
"AGE"
|
| 18 |
+
]
|
| 19 |
+
},
|
| 20 |
+
"base_model": "OpenMed/OpenMed-PII-mLiteClinical-Base-135M-v1",
|
| 21 |
+
"notes": [
|
| 22 |
+
"This release keeps the rc9 weights and ONNX graph but strengthens the bundled decoder for lowercase self-identification names, city-before-postcode recovery beyond the hardcoded city list, wider street suffix coverage, dotted/month-first DOB recovery, and dotted phone formatting.",
|
| 23 |
+
"The decoder now recovers spans from phrases such as `my name is aoife murphy`, `is mise eibhlín ní bhroin`, `Naas, W91 XY45`, `14 Cedar Crescent`, `14.03.1991`, `March 14, 1991`, and `087.123.4567`.",
|
| 24 |
+
"The new `globalpointer_context_redteam_v4` suite is `1.0000` on both full and q8 paths; the packaged public `rc9` bundle scores `0.8533` on the same suite.",
|
| 25 |
+
"The dynamic q8 ONNX artifact remains the recommended CPU deployment artifact."
|
| 26 |
+
],
|
| 27 |
+
"labels": [
|
| 28 |
+
"ACCOUNT_NUMBER",
|
| 29 |
+
"AGE",
|
| 30 |
+
"BANK_ROUTING_NUMBER",
|
| 31 |
+
"CITY",
|
| 32 |
+
"COUNTY",
|
| 33 |
+
"CREDIT_DEBIT_CARD",
|
| 34 |
+
"DATE_OF_BIRTH",
|
| 35 |
+
"EMAIL",
|
| 36 |
+
"FIRST_NAME",
|
| 37 |
+
"LAST_NAME",
|
| 38 |
+
"PASSPORT_NUMBER",
|
| 39 |
+
"PHONE_NUMBER",
|
| 40 |
+
"POSTCODE",
|
| 41 |
+
"PPSN",
|
| 42 |
+
"STREET_ADDRESS",
|
| 43 |
+
"SWIFT_BIC"
|
| 44 |
+
],
|
| 45 |
+
"full": {
|
| 46 |
+
"core_f1": 1.0,
|
| 47 |
+
"extended_f1": 1.0,
|
| 48 |
+
"demographic_holdout_v2_f1": 1.0,
|
| 49 |
+
"contact_policy_f1": 1.0,
|
| 50 |
+
"chatbot_redteam_v2_f1": 0.9861111111111112,
|
| 51 |
+
"chatbot_gap_holdout_v2_f1": 1.0,
|
| 52 |
+
"multilingual_f1": 0.9333333333333333,
|
| 53 |
+
"multilingual_ppsn_label_f1": 1.0,
|
| 54 |
+
"context_redteam_v1_f1": 1.0,
|
| 55 |
+
"context_redteam_v2_f1": 1.0,
|
| 56 |
+
"context_redteam_v3_f1": 1.0,
|
| 57 |
+
"core_examples_per_second": 31.324325509253125,
|
| 58 |
+
"extended_examples_per_second": 20.951595392302877,
|
| 59 |
+
"demographic_holdout_v2_examples_per_second": 40.71343766608338,
|
| 60 |
+
"contact_policy_examples_per_second": 22.015501231595987,
|
| 61 |
+
"chatbot_redteam_v2_examples_per_second": 30.535365124536543,
|
| 62 |
+
"chatbot_gap_holdout_v2_examples_per_second": 51.49259633958476,
|
| 63 |
+
"multilingual_examples_per_second": 56.554157563306696,
|
| 64 |
+
"context_redteam_v1_examples_per_second": 23.609073299571445,
|
| 65 |
+
"context_redteam_v2_examples_per_second": 12.737044489760402,
|
| 66 |
+
"context_redteam_v3_examples_per_second": 17.88102919943181,
|
| 67 |
+
"location_coverage_v1_f1": 1.0,
|
| 68 |
+
"location_coverage_v1_examples_per_second": 27.442453278347067,
|
| 69 |
+
"location_coverage_v2_f1": 1.0,
|
| 70 |
+
"location_coverage_v2_examples_per_second": 24.3613357869789,
|
| 71 |
+
"location_coverage_v3_f1": 1.0,
|
| 72 |
+
"location_coverage_v3_examples_per_second": 35.4459974931921,
|
| 73 |
+
"numeric_qafix_v2_f1": 1.0,
|
| 74 |
+
"numeric_qafix_v2_examples_per_second": 29.420131775628487,
|
| 75 |
+
"context_redteam_v4_f1": 1.0,
|
| 76 |
+
"context_redteam_v4_examples_per_second": 30.495521507704247
|
| 77 |
+
},
|
| 78 |
+
"onnx_q8": {
|
| 79 |
+
"core_f1": 1.0,
|
| 80 |
+
"extended_f1": 1.0,
|
| 81 |
+
"demographic_holdout_v2_f1": 1.0,
|
| 82 |
+
"contact_policy_f1": 1.0,
|
| 83 |
+
"chatbot_redteam_v2_f1": 0.9861111111111112,
|
| 84 |
+
"chatbot_gap_holdout_v2_f1": 1.0,
|
| 85 |
+
"multilingual_f1": 0.9333333333333333,
|
| 86 |
+
"multilingual_ppsn_label_f1": 1.0,
|
| 87 |
+
"context_redteam_v1_f1": 1.0,
|
| 88 |
+
"context_redteam_v2_f1": 1.0,
|
| 89 |
+
"context_redteam_v3_f1": 1.0,
|
| 90 |
+
"core_examples_per_second": 125.82111537540908,
|
| 91 |
+
"extended_examples_per_second": 43.98572277525542,
|
| 92 |
+
"demographic_holdout_v2_examples_per_second": 81.67690051660445,
|
| 93 |
+
"contact_policy_examples_per_second": 81.28226623522056,
|
| 94 |
+
"chatbot_redteam_v2_examples_per_second": 76.31198067309518,
|
| 95 |
+
"chatbot_gap_holdout_v2_examples_per_second": 77.82562469441531,
|
| 96 |
+
"multilingual_examples_per_second": 113.8253292371824,
|
| 97 |
+
"context_redteam_v1_examples_per_second": 77.35126547341245,
|
| 98 |
+
"context_redteam_v2_examples_per_second": 83.42976656780596,
|
| 99 |
+
"context_redteam_v3_examples_per_second": 115.78405703667622,
|
| 100 |
+
"location_coverage_v1_f1": 1.0,
|
| 101 |
+
"location_coverage_v1_examples_per_second": 86.67576551780107,
|
| 102 |
+
"location_coverage_v2_f1": 1.0,
|
| 103 |
+
"location_coverage_v2_examples_per_second": 63.49649295628558,
|
| 104 |
+
"location_coverage_v3_f1": 1.0,
|
| 105 |
+
"location_coverage_v3_examples_per_second": 103.87880730624308,
|
| 106 |
+
"numeric_qafix_v2_f1": 1.0,
|
| 107 |
+
"numeric_qafix_v2_examples_per_second": 138.13081928103207,
|
| 108 |
+
"context_redteam_v4_f1": 1.0,
|
| 109 |
+
"context_redteam_v4_examples_per_second": 115.20604478400188
|
| 110 |
+
},
|
| 111 |
+
"comparison": {
|
| 112 |
+
"public_contextpii_rc8_onnx_q8": {
|
| 113 |
+
"core_f1": 1.0,
|
| 114 |
+
"extended_f1": 1.0,
|
| 115 |
+
"contact_policy_f1": 1.0,
|
| 116 |
+
"chatbot_redteam_v2_f1": 0.9861111111111112,
|
| 117 |
+
"multilingual_f1": 0.9333333333333333,
|
| 118 |
+
"multilingual_ppsn_label_f1": 1.0,
|
| 119 |
+
"context_redteam_v2_f1": 1.0,
|
| 120 |
+
"context_redteam_v3_f1": 0.8717948717948718,
|
| 121 |
+
"core_examples_per_second": 128.88250222316304
|
| 122 |
+
},
|
| 123 |
+
"public_contextpii_rc7_onnx_q8": {
|
| 124 |
+
"core_f1": 1.0,
|
| 125 |
+
"contact_policy_f1": 1.0,
|
| 126 |
+
"context_redteam_v2_f1": null,
|
| 127 |
+
"multilingual_f1": 0.9333333333333333,
|
| 128 |
+
"core_examples_per_second": 88.99815744185265
|
| 129 |
+
},
|
| 130 |
+
"public_contextpii_rc4_onnx_q8": {
|
| 131 |
+
"core_f1": 0.9934640522875817,
|
| 132 |
+
"extended_f1": 1.0,
|
| 133 |
+
"demographic_holdout_v2_f1": 1.0,
|
| 134 |
+
"contact_policy_f1": 1.0,
|
| 135 |
+
"chatbot_redteam_v2_f1": 0.9861111111111112,
|
| 136 |
+
"chatbot_gap_holdout_v2_f1": 1.0,
|
| 137 |
+
"multilingual_f1": 0.9333333333333333,
|
| 138 |
+
"multilingual_ppsn_label_f1": 1.0,
|
| 139 |
+
"core_examples_per_second": 61.49696721632529,
|
| 140 |
+
"extended_examples_per_second": 98.75019005245319,
|
| 141 |
+
"demographic_holdout_v2_examples_per_second": 90.7806851088372,
|
| 142 |
+
"contact_policy_examples_per_second": 101.91338377846299,
|
| 143 |
+
"chatbot_redteam_v2_examples_per_second": 13.042183136147377,
|
| 144 |
+
"chatbot_gap_holdout_v2_examples_per_second": 30.728912108647304,
|
| 145 |
+
"multilingual_examples_per_second": 33.54466395109805,
|
| 146 |
+
"location_coverage_v1_f1": null
|
| 147 |
+
},
|
| 148 |
+
"public_diffmask_rc6_onnx_q8": {
|
| 149 |
+
"core_f1": 0.9733333333333333,
|
| 150 |
+
"multilingual_f1": 0.9273743016759777,
|
| 151 |
+
"core_examples_per_second": 130.34154354965295
|
| 152 |
+
},
|
| 153 |
+
"public_globalpointer_rc4_onnx_q8": {
|
| 154 |
+
"core_f1": 1.0,
|
| 155 |
+
"multilingual_f1": 0.9333333333333333,
|
| 156 |
+
"core_examples_per_second": 221.57427241189015
|
| 157 |
+
},
|
| 158 |
+
"public_contextpii_rc9_onnx_q8": {
|
| 159 |
+
"core_f1": 1.0,
|
| 160 |
+
"contact_policy_f1": 1.0,
|
| 161 |
+
"chatbot_redteam_v2_f1": 0.9861111111111112,
|
| 162 |
+
"multilingual_f1": 0.9333333333333333,
|
| 163 |
+
"context_redteam_v4_f1": 0.8533333333333333,
|
| 164 |
+
"core_examples_per_second": 125.82111537540908
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
}
|
eval/benchmark_summary.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# IrishCore-GlobalPointer-ContextPII-135M-v1-rc10
|
| 2 |
+
|
| 3 |
+
## ONNX q8
|
| 4 |
+
|
| 5 |
+
| Suite | F1 | Examples/s |
|
| 6 |
+
| --- | ---: | ---: |
|
| 7 |
+
| Irish core | 1.0000 | 125.8211 |
|
| 8 |
+
| Irish extended | 1.0000 | 43.9857 |
|
| 9 |
+
| Demographic holdout v2 | 1.0000 | 81.6769 |
|
| 10 |
+
| Gov contact policy v1 | 1.0000 | 81.2823 |
|
| 11 |
+
| Gov chatbot red-team v2 | 0.9861 | 76.3120 |
|
| 12 |
+
| Gov chatbot gap holdout v2 | 1.0000 | 77.8256 |
|
| 13 |
+
| Context red-team v1 | 1.0000 | 77.3513 |
|
| 14 |
+
| Context red-team v2 | 1.0000 | 83.4298 |
|
| 15 |
+
| Context red-team v3 | 1.0000 | 115.7841 |
|
| 16 |
+
| Context red-team v4 | 1.0000 | 115.2060 |
|
| 17 |
+
| Location coverage v1 | 1.0000 | 86.6758 |
|
| 18 |
+
| Location coverage v2 | 1.0000 | 63.4965 |
|
| 19 |
+
| Location coverage v3 | 1.0000 | 103.8788 |
|
| 20 |
+
| Numeric qafix v2 | 1.0000 | 138.1308 |
|
| 21 |
+
| Multilingual PPSN overall | 0.9333 | 113.8253 |
|
| 22 |
+
| Multilingual PPSN label-only | 1.0000 | — |
|
| 23 |
+
|
| 24 |
+
## Full checkpoint
|
| 25 |
+
|
| 26 |
+
| Suite | F1 | Examples/s |
|
| 27 |
+
| --- | ---: | ---: |
|
| 28 |
+
| Irish core | 1.0000 | 31.3243 |
|
| 29 |
+
| Irish extended | 1.0000 | 20.9516 |
|
| 30 |
+
| Demographic holdout v2 | 1.0000 | 40.7134 |
|
| 31 |
+
| Gov contact policy v1 | 1.0000 | 22.0155 |
|
| 32 |
+
| Gov chatbot red-team v2 | 0.9861 | 30.5354 |
|
| 33 |
+
| Gov chatbot gap holdout v2 | 1.0000 | 51.4926 |
|
| 34 |
+
| Context red-team v1 | 1.0000 | 23.6091 |
|
| 35 |
+
| Context red-team v2 | 1.0000 | 12.7370 |
|
| 36 |
+
| Context red-team v3 | 1.0000 | 17.8810 |
|
| 37 |
+
| Context red-team v4 | 1.0000 | 30.4955 |
|
| 38 |
+
| Location coverage v1 | 1.0000 | 27.4425 |
|
| 39 |
+
| Location coverage v2 | 1.0000 | 24.3613 |
|
| 40 |
+
| Location coverage v3 | 1.0000 | 35.4460 |
|
| 41 |
+
| Numeric qafix v2 | 1.0000 | 29.4201 |
|
| 42 |
+
| Multilingual PPSN overall | 0.9333 | 56.5542 |
|
| 43 |
+
| Multilingual PPSN label-only | 1.0000 | — |
|
eval/full_diffmask_fresh_holdout_v1.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "diffmask_fresh_holdout_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 20,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.6364284890005365,
|
| 9 |
+
"examples_per_second": 31.425368828803546,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 0.96875,
|
| 13 |
+
"f1": 0.9841269841269841,
|
| 14 |
+
"tp": 31,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 1
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 0.5,
|
| 22 |
+
"f1": 0.6666666666666666,
|
| 23 |
+
"tp": 1,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 1
|
| 26 |
+
},
|
| 27 |
+
"CREDIT_DEBIT_CARD": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 2,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"EMAIL": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 6,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"FIRST_NAME": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 4,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"LAST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 4,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"PHONE_NUMBER": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 6,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"POSTCODE": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PPSN": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 6,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
}
|
| 83 |
+
},
|
| 84 |
+
"release_backend": "full"
|
| 85 |
+
}
|
eval/full_diffmask_gap_uat_exact_v1.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "diffmask_gap_uat_exact_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 16,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.549252360011451,
|
| 9 |
+
"examples_per_second": 29.130507513279376,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 17,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"EMAIL": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"PHONE_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 6,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"POSTCODE": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 3,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"PPSN": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 5,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
}
|
| 51 |
+
},
|
| 52 |
+
"release_backend": "full"
|
| 53 |
+
}
|
eval/full_globalpointer_context_redteam_v1.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 14,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.5929923560470343,
|
| 9 |
+
"examples_per_second": 23.609073299571445,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 54,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 2,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 8,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 10,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 4,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"EMAIL": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 4,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"FIRST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"LAST_NAME": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 4,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 8,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 2,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"STREET_ADDRESS": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 8,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "full"
|
| 109 |
+
}
|
eval/full_globalpointer_context_redteam_v2.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 6,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.47106689505744725,
|
| 9 |
+
"examples_per_second": 12.737044489760402,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 13,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 4,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 1,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"DATE_OF_BIRTH": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"PHONE_NUMBER": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 2,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"POSTCODE": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 3,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"STREET_ADDRESS": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
}
|
| 67 |
+
},
|
| 68 |
+
"backend": "full"
|
| 69 |
+
}
|
eval/full_globalpointer_context_redteam_v3.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v3.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 12,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.6711023099487647,
|
| 9 |
+
"examples_per_second": 17.88102919943181,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 22,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 7,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 3,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"PHONE_NUMBER": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 3,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"POSTCODE": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 3,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"STREET_ADDRESS": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
}
|
| 75 |
+
},
|
| 76 |
+
"backend": "full"
|
| 77 |
+
}
|
eval/full_globalpointer_context_redteam_v4.json
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v4.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 21,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.6886257050791755,
|
| 9 |
+
"examples_per_second": 30.495521507704247,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 43,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 10,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 6,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 2,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PHONE_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 6,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"POSTCODE": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 6,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"PPSN": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 2,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"STREET_ADDRESS": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 5,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
}
|
| 99 |
+
},
|
| 100 |
+
"backend": "full"
|
| 101 |
+
}
|
eval/full_globalpointer_demographic_patch_v2_test.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_demographic_patch_v2_test.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 600,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 14.737149069085717,
|
| 9 |
+
"examples_per_second": 40.71343766608338,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 2470,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 287,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 286,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 286,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 304,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"EMAIL": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 85,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"FIRST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 194,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"LAST_NAME": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 194,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 177,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 286,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 85,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"STREET_ADDRESS": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 286,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "full"
|
| 109 |
+
}
|
eval/full_globalpointer_location_coverage_v1.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_location_coverage_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 18,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.6559180339099839,
|
| 9 |
+
"examples_per_second": 27.442453278347067,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 56,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 14,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 16,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"PHONE_NUMBER": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"POSTCODE": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 12,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"STREET_ADDRESS": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 12,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"backend": "full"
|
| 61 |
+
}
|
eval/full_globalpointer_location_coverage_v2.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_location_coverage_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 24,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.9851676529506221,
|
| 9 |
+
"examples_per_second": 24.3613357869789,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 68,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 20,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 22,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"PHONE_NUMBER": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"POSTCODE": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 12,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"STREET_ADDRESS": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 12,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"backend": "full"
|
| 61 |
+
}
|
eval/full_globalpointer_location_coverage_v3.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_location_coverage_v3.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 30,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.8463578999508172,
|
| 9 |
+
"examples_per_second": 35.4459974931921,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 82,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 26,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 28,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"PHONE_NUMBER": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"POSTCODE": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 13,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"STREET_ADDRESS": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 13,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"backend": "full"
|
| 61 |
+
}
|
eval/full_irish_core_pii_v1.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/irish_core_pii_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 37,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 1.1811906369403005,
|
| 9 |
+
"examples_per_second": 31.324325509253125,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 76,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"BANK_ROUTING_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 1,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"CREDIT_DEBIT_CARD": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"EMAIL": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 6,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 19,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 19,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PASSPORT_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 12,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 4,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 6,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"SWIFT_BIC": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 2,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "full"
|
| 109 |
+
}
|
eval/full_irish_dllm_hardening_exact_v1.json
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "irish_dllm_hardening_exact_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 14,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.5248716080095619,
|
| 9 |
+
"examples_per_second": 26.673189759856385,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 20,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 1,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"BANK_ROUTING_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 2,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"CREDIT_DEBIT_CARD": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"EMAIL": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 2,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 1,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 1,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PHONE_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"POSTCODE": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 3,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"PPSN": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 3,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"SWIFT_BIC": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 3,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
}
|
| 99 |
+
},
|
| 100 |
+
"release_backend": "full"
|
| 101 |
+
}
|
eval/full_irish_extended_pii_v1.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/irish_extended_pii_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 14,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.668206871021539,
|
| 9 |
+
"examples_per_second": 20.951595392302877,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 50,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 5,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 8,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 6,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 6,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"EMAIL": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 1,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"FIRST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"LAST_NAME": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 2,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 8,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 2,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"STREET_ADDRESS": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 8,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "full"
|
| 109 |
+
}
|
eval/full_irish_gov_chatbot_gap_holdout_v1.json
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"family": "globalpointer",
|
| 4 |
+
"backend": "pt",
|
| 5 |
+
"input": "irish_gov_chatbot_gap_holdout_v1.jsonl",
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"overall": {
|
| 9 |
+
"precision": 1.0,
|
| 10 |
+
"recall": 1.0,
|
| 11 |
+
"f1": 1.0,
|
| 12 |
+
"tp": 413,
|
| 13 |
+
"fp": 0,
|
| 14 |
+
"fn": 0
|
| 15 |
+
},
|
| 16 |
+
"exact": {
|
| 17 |
+
"precision": 0.9878934624697336,
|
| 18 |
+
"recall": 0.9878934624697336,
|
| 19 |
+
"f1": 0.9878934624697336,
|
| 20 |
+
"tp": 408,
|
| 21 |
+
"fp": 5,
|
| 22 |
+
"fn": 5
|
| 23 |
+
},
|
| 24 |
+
"by_label": {
|
| 25 |
+
"ACCOUNT_NUMBER": {
|
| 26 |
+
"precision": 1.0,
|
| 27 |
+
"recall": 1.0,
|
| 28 |
+
"f1": 1.0,
|
| 29 |
+
"tp": 16,
|
| 30 |
+
"fp": 0,
|
| 31 |
+
"fn": 0
|
| 32 |
+
},
|
| 33 |
+
"BANK_ROUTING_NUMBER": {
|
| 34 |
+
"precision": 1.0,
|
| 35 |
+
"recall": 1.0,
|
| 36 |
+
"f1": 1.0,
|
| 37 |
+
"tp": 23,
|
| 38 |
+
"fp": 0,
|
| 39 |
+
"fn": 0
|
| 40 |
+
},
|
| 41 |
+
"CREDIT_DEBIT_CARD": {
|
| 42 |
+
"precision": 1.0,
|
| 43 |
+
"recall": 1.0,
|
| 44 |
+
"f1": 1.0,
|
| 45 |
+
"tp": 6,
|
| 46 |
+
"fp": 0,
|
| 47 |
+
"fn": 0
|
| 48 |
+
},
|
| 49 |
+
"EMAIL": {
|
| 50 |
+
"precision": 1.0,
|
| 51 |
+
"recall": 1.0,
|
| 52 |
+
"f1": 1.0,
|
| 53 |
+
"tp": 50,
|
| 54 |
+
"fp": 0,
|
| 55 |
+
"fn": 0
|
| 56 |
+
},
|
| 57 |
+
"FIRST_NAME": {
|
| 58 |
+
"precision": 1.0,
|
| 59 |
+
"recall": 1.0,
|
| 60 |
+
"f1": 1.0,
|
| 61 |
+
"tp": 70,
|
| 62 |
+
"fp": 0,
|
| 63 |
+
"fn": 0
|
| 64 |
+
},
|
| 65 |
+
"LAST_NAME": {
|
| 66 |
+
"precision": 1.0,
|
| 67 |
+
"recall": 1.0,
|
| 68 |
+
"f1": 1.0,
|
| 69 |
+
"tp": 70,
|
| 70 |
+
"fp": 0,
|
| 71 |
+
"fn": 0
|
| 72 |
+
},
|
| 73 |
+
"PHONE_NUMBER": {
|
| 74 |
+
"precision": 1.0,
|
| 75 |
+
"recall": 1.0,
|
| 76 |
+
"f1": 1.0,
|
| 77 |
+
"tp": 72,
|
| 78 |
+
"fp": 0,
|
| 79 |
+
"fn": 0
|
| 80 |
+
},
|
| 81 |
+
"POSTCODE": {
|
| 82 |
+
"precision": 1.0,
|
| 83 |
+
"recall": 1.0,
|
| 84 |
+
"f1": 1.0,
|
| 85 |
+
"tp": 18,
|
| 86 |
+
"fp": 0,
|
| 87 |
+
"fn": 0
|
| 88 |
+
},
|
| 89 |
+
"PPSN": {
|
| 90 |
+
"precision": 1.0,
|
| 91 |
+
"recall": 1.0,
|
| 92 |
+
"f1": 1.0,
|
| 93 |
+
"tp": 72,
|
| 94 |
+
"fp": 0,
|
| 95 |
+
"fn": 0
|
| 96 |
+
},
|
| 97 |
+
"SWIFT_BIC": {
|
| 98 |
+
"precision": 1.0,
|
| 99 |
+
"recall": 1.0,
|
| 100 |
+
"f1": 1.0,
|
| 101 |
+
"tp": 16,
|
| 102 |
+
"fp": 0,
|
| 103 |
+
"fn": 0
|
| 104 |
+
}
|
| 105 |
+
},
|
| 106 |
+
"by_language": {
|
| 107 |
+
"en": {
|
| 108 |
+
"precision": 1.0,
|
| 109 |
+
"recall": 1.0,
|
| 110 |
+
"f1": 1.0,
|
| 111 |
+
"tp": 230,
|
| 112 |
+
"fp": 0,
|
| 113 |
+
"fn": 0
|
| 114 |
+
},
|
| 115 |
+
"ga": {
|
| 116 |
+
"precision": 1.0,
|
| 117 |
+
"recall": 1.0,
|
| 118 |
+
"f1": 1.0,
|
| 119 |
+
"tp": 183,
|
| 120 |
+
"fp": 0,
|
| 121 |
+
"fn": 0
|
| 122 |
+
}
|
| 123 |
+
},
|
| 124 |
+
"by_role": {
|
| 125 |
+
"assistant": {
|
| 126 |
+
"precision": 1.0,
|
| 127 |
+
"recall": 1.0,
|
| 128 |
+
"f1": 1.0,
|
| 129 |
+
"tp": 72,
|
| 130 |
+
"fp": 0,
|
| 131 |
+
"fn": 0
|
| 132 |
+
},
|
| 133 |
+
"mixed": {
|
| 134 |
+
"precision": 0.0,
|
| 135 |
+
"recall": 0.0,
|
| 136 |
+
"f1": 0.0,
|
| 137 |
+
"tp": 0,
|
| 138 |
+
"fp": 0,
|
| 139 |
+
"fn": 0
|
| 140 |
+
},
|
| 141 |
+
"user": {
|
| 142 |
+
"precision": 1.0,
|
| 143 |
+
"recall": 1.0,
|
| 144 |
+
"f1": 1.0,
|
| 145 |
+
"tp": 341,
|
| 146 |
+
"fp": 0,
|
| 147 |
+
"fn": 0
|
| 148 |
+
}
|
| 149 |
+
},
|
| 150 |
+
"by_source_type": {
|
| 151 |
+
"assistant_contact_echo_en": {
|
| 152 |
+
"precision": 1.0,
|
| 153 |
+
"recall": 1.0,
|
| 154 |
+
"f1": 1.0,
|
| 155 |
+
"tp": 32,
|
| 156 |
+
"fp": 0,
|
| 157 |
+
"fn": 0
|
| 158 |
+
},
|
| 159 |
+
"assistant_contact_echo_ga": {
|
| 160 |
+
"precision": 1.0,
|
| 161 |
+
"recall": 1.0,
|
| 162 |
+
"f1": 1.0,
|
| 163 |
+
"tp": 40,
|
| 164 |
+
"fp": 0,
|
| 165 |
+
"fn": 0
|
| 166 |
+
},
|
| 167 |
+
"negative_en": {
|
| 168 |
+
"precision": 0.0,
|
| 169 |
+
"recall": 0.0,
|
| 170 |
+
"f1": 0.0,
|
| 171 |
+
"tp": 0,
|
| 172 |
+
"fp": 0,
|
| 173 |
+
"fn": 0
|
| 174 |
+
},
|
| 175 |
+
"negative_ga": {
|
| 176 |
+
"precision": 0.0,
|
| 177 |
+
"recall": 0.0,
|
| 178 |
+
"f1": 0.0,
|
| 179 |
+
"tp": 0,
|
| 180 |
+
"fp": 0,
|
| 181 |
+
"fn": 0
|
| 182 |
+
},
|
| 183 |
+
"user_card_email_en": {
|
| 184 |
+
"precision": 1.0,
|
| 185 |
+
"recall": 1.0,
|
| 186 |
+
"f1": 1.0,
|
| 187 |
+
"tp": 12,
|
| 188 |
+
"fp": 0,
|
| 189 |
+
"fn": 0
|
| 190 |
+
},
|
| 191 |
+
"user_name_email_ppsn_phone_en": {
|
| 192 |
+
"precision": 1.0,
|
| 193 |
+
"recall": 1.0,
|
| 194 |
+
"f1": 1.0,
|
| 195 |
+
"tp": 80,
|
| 196 |
+
"fp": 0,
|
| 197 |
+
"fn": 0
|
| 198 |
+
},
|
| 199 |
+
"user_name_email_ppsn_phone_ga": {
|
| 200 |
+
"precision": 1.0,
|
| 201 |
+
"recall": 1.0,
|
| 202 |
+
"f1": 1.0,
|
| 203 |
+
"tp": 50,
|
| 204 |
+
"fp": 0,
|
| 205 |
+
"fn": 0
|
| 206 |
+
},
|
| 207 |
+
"user_name_ppsn_phone_en": {
|
| 208 |
+
"precision": 1.0,
|
| 209 |
+
"recall": 1.0,
|
| 210 |
+
"f1": 1.0,
|
| 211 |
+
"tp": 56,
|
| 212 |
+
"fp": 0,
|
| 213 |
+
"fn": 0
|
| 214 |
+
},
|
| 215 |
+
"user_name_ppsn_phone_ga": {
|
| 216 |
+
"precision": 1.0,
|
| 217 |
+
"recall": 1.0,
|
| 218 |
+
"f1": 1.0,
|
| 219 |
+
"tp": 56,
|
| 220 |
+
"fp": 0,
|
| 221 |
+
"fn": 0
|
| 222 |
+
},
|
| 223 |
+
"user_payment_name_en": {
|
| 224 |
+
"precision": 1.0,
|
| 225 |
+
"recall": 1.0,
|
| 226 |
+
"f1": 1.0,
|
| 227 |
+
"tp": 32,
|
| 228 |
+
"fp": 0,
|
| 229 |
+
"fn": 0
|
| 230 |
+
},
|
| 231 |
+
"user_payment_name_ga": {
|
| 232 |
+
"precision": 1.0,
|
| 233 |
+
"recall": 1.0,
|
| 234 |
+
"f1": 1.0,
|
| 235 |
+
"tp": 32,
|
| 236 |
+
"fp": 0,
|
| 237 |
+
"fn": 0
|
| 238 |
+
},
|
| 239 |
+
"user_sort_code_en": {
|
| 240 |
+
"precision": 1.0,
|
| 241 |
+
"recall": 1.0,
|
| 242 |
+
"f1": 1.0,
|
| 243 |
+
"tp": 18,
|
| 244 |
+
"fp": 0,
|
| 245 |
+
"fn": 0
|
| 246 |
+
},
|
| 247 |
+
"user_sort_code_ga": {
|
| 248 |
+
"precision": 1.0,
|
| 249 |
+
"recall": 1.0,
|
| 250 |
+
"f1": 1.0,
|
| 251 |
+
"tp": 5,
|
| 252 |
+
"fp": 0,
|
| 253 |
+
"fn": 0
|
| 254 |
+
}
|
| 255 |
+
},
|
| 256 |
+
"failure_count": 0,
|
| 257 |
+
"failures": []
|
| 258 |
+
}
|
eval/full_irish_gov_chatbot_gap_holdout_v2.json
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/irish_gov_chatbot_gap_holdout_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 160,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 3.1072428149636835,
|
| 9 |
+
"examples_per_second": 51.49259633958476,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 652,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 38,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"EMAIL": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 104,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"FIRST_NAME": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 68,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"LAST_NAME": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 68,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"PASSPORT_NUMBER": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 33,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"PHONE_NUMBER": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 101,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"POSTCODE": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 101,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PPSN": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 101,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"SWIFT_BIC": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 38,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
}
|
| 91 |
+
},
|
| 92 |
+
"backend": "full"
|
| 93 |
+
}
|
eval/full_irish_gov_chatbot_redteam_assistant_v2.json
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "models/irishcore-globalpointer-135m-b01-extendedv1-e025",
|
| 3 |
+
"input": "eval/irish_gov_chatbot_redteam_assistant_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 9,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.16110201692208648,
|
| 9 |
+
"examples_per_second": 55.86522237243408,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 0.9375,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 0.967741935483871,
|
| 14 |
+
"tp": 30,
|
| 15 |
+
"fp": 2,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 2,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"EMAIL": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 6,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"FIRST_NAME": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"LAST_NAME": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 2,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"PHONE_NUMBER": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 8,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"POSTCODE": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 4,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PPSN": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 4,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"SWIFT_BIC": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 2,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
}
|
| 83 |
+
}
|
| 84 |
+
}
|
eval/full_irish_gov_chatbot_redteam_user_v2.json
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "models/irishcore-globalpointer-135m-b01-extendedv1-e025",
|
| 3 |
+
"input": "eval/irish_gov_chatbot_redteam_user_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 10,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.1798157700104639,
|
| 9 |
+
"examples_per_second": 55.612474920403685,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 41,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 2,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"BANK_ROUTING_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 1,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"CREDIT_DEBIT_CARD": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"EMAIL": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 4,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 5,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 5,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PASSPORT_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 9,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 3,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 7,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"SWIFT_BIC": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 2,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
}
|
| 108 |
+
}
|
eval/full_irish_gov_chatbot_redteam_v1.json
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"family": "globalpointer",
|
| 4 |
+
"backend": "pt",
|
| 5 |
+
"input": "irish_gov_chatbot_redteam_v1.jsonl",
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"overall": {
|
| 9 |
+
"precision": 1.0,
|
| 10 |
+
"recall": 1.0,
|
| 11 |
+
"f1": 1.0,
|
| 12 |
+
"tp": 161,
|
| 13 |
+
"fp": 0,
|
| 14 |
+
"fn": 0
|
| 15 |
+
},
|
| 16 |
+
"exact": {
|
| 17 |
+
"precision": 1.0,
|
| 18 |
+
"recall": 1.0,
|
| 19 |
+
"f1": 1.0,
|
| 20 |
+
"tp": 161,
|
| 21 |
+
"fp": 0,
|
| 22 |
+
"fn": 0
|
| 23 |
+
},
|
| 24 |
+
"by_label": {
|
| 25 |
+
"ACCOUNT_NUMBER": {
|
| 26 |
+
"precision": 1.0,
|
| 27 |
+
"recall": 1.0,
|
| 28 |
+
"f1": 1.0,
|
| 29 |
+
"tp": 9,
|
| 30 |
+
"fp": 0,
|
| 31 |
+
"fn": 0
|
| 32 |
+
},
|
| 33 |
+
"BANK_ROUTING_NUMBER": {
|
| 34 |
+
"precision": 1.0,
|
| 35 |
+
"recall": 1.0,
|
| 36 |
+
"f1": 1.0,
|
| 37 |
+
"tp": 3,
|
| 38 |
+
"fp": 0,
|
| 39 |
+
"fn": 0
|
| 40 |
+
},
|
| 41 |
+
"CREDIT_DEBIT_CARD": {
|
| 42 |
+
"precision": 1.0,
|
| 43 |
+
"recall": 1.0,
|
| 44 |
+
"f1": 1.0,
|
| 45 |
+
"tp": 3,
|
| 46 |
+
"fp": 0,
|
| 47 |
+
"fn": 0
|
| 48 |
+
},
|
| 49 |
+
"EMAIL": {
|
| 50 |
+
"precision": 1.0,
|
| 51 |
+
"recall": 1.0,
|
| 52 |
+
"f1": 1.0,
|
| 53 |
+
"tp": 16,
|
| 54 |
+
"fp": 0,
|
| 55 |
+
"fn": 0
|
| 56 |
+
},
|
| 57 |
+
"FIRST_NAME": {
|
| 58 |
+
"precision": 1.0,
|
| 59 |
+
"recall": 1.0,
|
| 60 |
+
"f1": 1.0,
|
| 61 |
+
"tp": 18,
|
| 62 |
+
"fp": 0,
|
| 63 |
+
"fn": 0
|
| 64 |
+
},
|
| 65 |
+
"LAST_NAME": {
|
| 66 |
+
"precision": 1.0,
|
| 67 |
+
"recall": 1.0,
|
| 68 |
+
"f1": 1.0,
|
| 69 |
+
"tp": 18,
|
| 70 |
+
"fp": 0,
|
| 71 |
+
"fn": 0
|
| 72 |
+
},
|
| 73 |
+
"PASSPORT_NUMBER": {
|
| 74 |
+
"precision": 1.0,
|
| 75 |
+
"recall": 1.0,
|
| 76 |
+
"f1": 1.0,
|
| 77 |
+
"tp": 4,
|
| 78 |
+
"fp": 0,
|
| 79 |
+
"fn": 0
|
| 80 |
+
},
|
| 81 |
+
"PHONE_NUMBER": {
|
| 82 |
+
"precision": 1.0,
|
| 83 |
+
"recall": 1.0,
|
| 84 |
+
"f1": 1.0,
|
| 85 |
+
"tp": 36,
|
| 86 |
+
"fp": 0,
|
| 87 |
+
"fn": 0
|
| 88 |
+
},
|
| 89 |
+
"POSTCODE": {
|
| 90 |
+
"precision": 1.0,
|
| 91 |
+
"recall": 1.0,
|
| 92 |
+
"f1": 1.0,
|
| 93 |
+
"tp": 11,
|
| 94 |
+
"fp": 0,
|
| 95 |
+
"fn": 0
|
| 96 |
+
},
|
| 97 |
+
"PPSN": {
|
| 98 |
+
"precision": 1.0,
|
| 99 |
+
"recall": 1.0,
|
| 100 |
+
"f1": 1.0,
|
| 101 |
+
"tp": 34,
|
| 102 |
+
"fp": 0,
|
| 103 |
+
"fn": 0
|
| 104 |
+
},
|
| 105 |
+
"SWIFT_BIC": {
|
| 106 |
+
"precision": 1.0,
|
| 107 |
+
"recall": 1.0,
|
| 108 |
+
"f1": 1.0,
|
| 109 |
+
"tp": 9,
|
| 110 |
+
"fp": 0,
|
| 111 |
+
"fn": 0
|
| 112 |
+
}
|
| 113 |
+
},
|
| 114 |
+
"by_language": {
|
| 115 |
+
"en": {
|
| 116 |
+
"precision": 1.0,
|
| 117 |
+
"recall": 1.0,
|
| 118 |
+
"f1": 1.0,
|
| 119 |
+
"tp": 99,
|
| 120 |
+
"fp": 0,
|
| 121 |
+
"fn": 0
|
| 122 |
+
},
|
| 123 |
+
"ga": {
|
| 124 |
+
"precision": 1.0,
|
| 125 |
+
"recall": 1.0,
|
| 126 |
+
"f1": 1.0,
|
| 127 |
+
"tp": 62,
|
| 128 |
+
"fp": 0,
|
| 129 |
+
"fn": 0
|
| 130 |
+
}
|
| 131 |
+
},
|
| 132 |
+
"by_role": {
|
| 133 |
+
"assistant": {
|
| 134 |
+
"precision": 1.0,
|
| 135 |
+
"recall": 1.0,
|
| 136 |
+
"f1": 1.0,
|
| 137 |
+
"tp": 56,
|
| 138 |
+
"fp": 0,
|
| 139 |
+
"fn": 0
|
| 140 |
+
},
|
| 141 |
+
"mixed": {
|
| 142 |
+
"precision": 0.0,
|
| 143 |
+
"recall": 0.0,
|
| 144 |
+
"f1": 0.0,
|
| 145 |
+
"tp": 0,
|
| 146 |
+
"fp": 0,
|
| 147 |
+
"fn": 0
|
| 148 |
+
},
|
| 149 |
+
"user": {
|
| 150 |
+
"precision": 1.0,
|
| 151 |
+
"recall": 1.0,
|
| 152 |
+
"f1": 1.0,
|
| 153 |
+
"tp": 105,
|
| 154 |
+
"fp": 0,
|
| 155 |
+
"fn": 0
|
| 156 |
+
}
|
| 157 |
+
},
|
| 158 |
+
"by_source_type": {
|
| 159 |
+
"assistant_centre_block_en": {
|
| 160 |
+
"precision": 1.0,
|
| 161 |
+
"recall": 1.0,
|
| 162 |
+
"f1": 1.0,
|
| 163 |
+
"tp": 2,
|
| 164 |
+
"fp": 0,
|
| 165 |
+
"fn": 0
|
| 166 |
+
},
|
| 167 |
+
"assistant_contact_block_en": {
|
| 168 |
+
"precision": 1.0,
|
| 169 |
+
"recall": 1.0,
|
| 170 |
+
"f1": 1.0,
|
| 171 |
+
"tp": 2,
|
| 172 |
+
"fp": 0,
|
| 173 |
+
"fn": 0
|
| 174 |
+
},
|
| 175 |
+
"assistant_contact_ga": {
|
| 176 |
+
"precision": 1.0,
|
| 177 |
+
"recall": 1.0,
|
| 178 |
+
"f1": 1.0,
|
| 179 |
+
"tp": 2,
|
| 180 |
+
"fp": 0,
|
| 181 |
+
"fn": 0
|
| 182 |
+
},
|
| 183 |
+
"assistant_echo_user_en": {
|
| 184 |
+
"precision": 1.0,
|
| 185 |
+
"recall": 1.0,
|
| 186 |
+
"f1": 1.0,
|
| 187 |
+
"tp": 15,
|
| 188 |
+
"fp": 0,
|
| 189 |
+
"fn": 0
|
| 190 |
+
},
|
| 191 |
+
"assistant_echo_user_ga": {
|
| 192 |
+
"precision": 1.0,
|
| 193 |
+
"recall": 1.0,
|
| 194 |
+
"f1": 1.0,
|
| 195 |
+
"tp": 15,
|
| 196 |
+
"fp": 0,
|
| 197 |
+
"fn": 0
|
| 198 |
+
},
|
| 199 |
+
"assistant_location_en": {
|
| 200 |
+
"precision": 1.0,
|
| 201 |
+
"recall": 1.0,
|
| 202 |
+
"f1": 1.0,
|
| 203 |
+
"tp": 12,
|
| 204 |
+
"fp": 0,
|
| 205 |
+
"fn": 0
|
| 206 |
+
},
|
| 207 |
+
"assistant_mailbox_en": {
|
| 208 |
+
"precision": 1.0,
|
| 209 |
+
"recall": 1.0,
|
| 210 |
+
"f1": 1.0,
|
| 211 |
+
"tp": 2,
|
| 212 |
+
"fp": 0,
|
| 213 |
+
"fn": 0
|
| 214 |
+
},
|
| 215 |
+
"assistant_payment_en": {
|
| 216 |
+
"precision": 1.0,
|
| 217 |
+
"recall": 1.0,
|
| 218 |
+
"f1": 1.0,
|
| 219 |
+
"tp": 6,
|
| 220 |
+
"fp": 0,
|
| 221 |
+
"fn": 0
|
| 222 |
+
},
|
| 223 |
+
"negative_date_en": {
|
| 224 |
+
"precision": 0.0,
|
| 225 |
+
"recall": 0.0,
|
| 226 |
+
"f1": 0.0,
|
| 227 |
+
"tp": 0,
|
| 228 |
+
"fp": 0,
|
| 229 |
+
"fn": 0
|
| 230 |
+
},
|
| 231 |
+
"negative_date_ga": {
|
| 232 |
+
"precision": 0.0,
|
| 233 |
+
"recall": 0.0,
|
| 234 |
+
"f1": 0.0,
|
| 235 |
+
"tp": 0,
|
| 236 |
+
"fp": 0,
|
| 237 |
+
"fn": 0
|
| 238 |
+
},
|
| 239 |
+
"negative_direct_debit_en": {
|
| 240 |
+
"precision": 0.0,
|
| 241 |
+
"recall": 0.0,
|
| 242 |
+
"f1": 0.0,
|
| 243 |
+
"tp": 0,
|
| 244 |
+
"fp": 0,
|
| 245 |
+
"fn": 0
|
| 246 |
+
},
|
| 247 |
+
"negative_hours_en": {
|
| 248 |
+
"precision": 0.0,
|
| 249 |
+
"recall": 0.0,
|
| 250 |
+
"f1": 0.0,
|
| 251 |
+
"tp": 0,
|
| 252 |
+
"fp": 0,
|
| 253 |
+
"fn": 0
|
| 254 |
+
},
|
| 255 |
+
"negative_long_ppsn_en": {
|
| 256 |
+
"precision": 0.0,
|
| 257 |
+
"recall": 0.0,
|
| 258 |
+
"f1": 0.0,
|
| 259 |
+
"tp": 0,
|
| 260 |
+
"fp": 0,
|
| 261 |
+
"fn": 0
|
| 262 |
+
},
|
| 263 |
+
"negative_scheme_ga": {
|
| 264 |
+
"precision": 0.0,
|
| 265 |
+
"recall": 0.0,
|
| 266 |
+
"f1": 0.0,
|
| 267 |
+
"tp": 0,
|
| 268 |
+
"fp": 0,
|
| 269 |
+
"fn": 0
|
| 270 |
+
},
|
| 271 |
+
"negative_short_ppsn_en": {
|
| 272 |
+
"precision": 0.0,
|
| 273 |
+
"recall": 0.0,
|
| 274 |
+
"f1": 0.0,
|
| 275 |
+
"tp": 0,
|
| 276 |
+
"fp": 0,
|
| 277 |
+
"fn": 0
|
| 278 |
+
},
|
| 279 |
+
"negative_year_letter_ga": {
|
| 280 |
+
"precision": 0.0,
|
| 281 |
+
"recall": 0.0,
|
| 282 |
+
"f1": 0.0,
|
| 283 |
+
"tp": 0,
|
| 284 |
+
"fp": 0,
|
| 285 |
+
"fn": 0
|
| 286 |
+
},
|
| 287 |
+
"user_allowance_mixed_en": {
|
| 288 |
+
"precision": 1.0,
|
| 289 |
+
"recall": 1.0,
|
| 290 |
+
"f1": 1.0,
|
| 291 |
+
"tp": 24,
|
| 292 |
+
"fp": 0,
|
| 293 |
+
"fn": 0
|
| 294 |
+
},
|
| 295 |
+
"user_allowance_mixed_ga": {
|
| 296 |
+
"precision": 1.0,
|
| 297 |
+
"recall": 1.0,
|
| 298 |
+
"f1": 1.0,
|
| 299 |
+
"tp": 24,
|
| 300 |
+
"fp": 0,
|
| 301 |
+
"fn": 0
|
| 302 |
+
},
|
| 303 |
+
"user_bare_ppsn_en": {
|
| 304 |
+
"precision": 1.0,
|
| 305 |
+
"recall": 1.0,
|
| 306 |
+
"f1": 1.0,
|
| 307 |
+
"tp": 6,
|
| 308 |
+
"fp": 0,
|
| 309 |
+
"fn": 0
|
| 310 |
+
},
|
| 311 |
+
"user_bare_ppsn_ga": {
|
| 312 |
+
"precision": 1.0,
|
| 313 |
+
"recall": 1.0,
|
| 314 |
+
"f1": 1.0,
|
| 315 |
+
"tp": 6,
|
| 316 |
+
"fp": 0,
|
| 317 |
+
"fn": 0
|
| 318 |
+
},
|
| 319 |
+
"user_card_email_en": {
|
| 320 |
+
"precision": 1.0,
|
| 321 |
+
"recall": 1.0,
|
| 322 |
+
"f1": 1.0,
|
| 323 |
+
"tp": 6,
|
| 324 |
+
"fp": 0,
|
| 325 |
+
"fn": 0
|
| 326 |
+
},
|
| 327 |
+
"user_passport_en": {
|
| 328 |
+
"precision": 1.0,
|
| 329 |
+
"recall": 1.0,
|
| 330 |
+
"f1": 1.0,
|
| 331 |
+
"tp": 12,
|
| 332 |
+
"fp": 0,
|
| 333 |
+
"fn": 0
|
| 334 |
+
},
|
| 335 |
+
"user_payment_en": {
|
| 336 |
+
"precision": 1.0,
|
| 337 |
+
"recall": 1.0,
|
| 338 |
+
"f1": 1.0,
|
| 339 |
+
"tp": 12,
|
| 340 |
+
"fp": 0,
|
| 341 |
+
"fn": 0
|
| 342 |
+
},
|
| 343 |
+
"user_payment_ga": {
|
| 344 |
+
"precision": 1.0,
|
| 345 |
+
"recall": 1.0,
|
| 346 |
+
"f1": 1.0,
|
| 347 |
+
"tp": 12,
|
| 348 |
+
"fp": 0,
|
| 349 |
+
"fn": 0
|
| 350 |
+
},
|
| 351 |
+
"user_sort_code_ga": {
|
| 352 |
+
"precision": 1.0,
|
| 353 |
+
"recall": 1.0,
|
| 354 |
+
"f1": 1.0,
|
| 355 |
+
"tp": 3,
|
| 356 |
+
"fp": 0,
|
| 357 |
+
"fn": 0
|
| 358 |
+
}
|
| 359 |
+
},
|
| 360 |
+
"failure_count": 0,
|
| 361 |
+
"failures": []
|
| 362 |
+
}
|
eval/full_irish_gov_chatbot_redteam_v2.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/irish_gov_chatbot_redteam_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 25,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.8187228119932115,
|
| 9 |
+
"examples_per_second": 30.535365124536543,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 0.9726027397260274,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 0.9861111111111112,
|
| 14 |
+
"tp": 71,
|
| 15 |
+
"fp": 2,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 4,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"BANK_ROUTING_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 1,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"CREDIT_DEBIT_CARD": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"EMAIL": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 10,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 7,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 7,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PASSPORT_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 17,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 7,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 11,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"SWIFT_BIC": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 4,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "full"
|
| 109 |
+
}
|
eval/full_irish_gov_contact_policy_v1.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/irish_gov_contact_policy_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 12,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.5450704880058765,
|
| 9 |
+
"examples_per_second": 22.015501231595987,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 30,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 4,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 2,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"DATE_OF_BIRTH": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 4,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"EMAIL": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 4,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"PHONE_NUMBER": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 8,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"POSTCODE": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 4,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"STREET_ADDRESS": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 4,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
}
|
| 75 |
+
},
|
| 76 |
+
"backend": "full"
|
| 77 |
+
}
|
eval/full_irish_numeric_qafix_v2.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/irish_numeric_qafix_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 19,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.6458162779454142,
|
| 9 |
+
"examples_per_second": 29.420131775628487,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 14,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"BANK_ROUTING_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 5,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"PASSPORT_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 5,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"PHONE_NUMBER": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 4,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
}
|
| 43 |
+
},
|
| 44 |
+
"backend": "full"
|
| 45 |
+
}
|
eval/full_irish_ppsn_phone_edge_v1.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "irish_ppsn_phone_edge_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 22,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.41967142606154084,
|
| 9 |
+
"examples_per_second": 52.42196307349719,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 19,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"PHONE_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 13,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"PPSN": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 6,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
}
|
| 35 |
+
},
|
| 36 |
+
"release_backend": "full"
|
| 37 |
+
}
|
eval/full_irish_remaining_gaps_v2.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "models/irishcore-globalpointer-135m-b01-extendedv1-e025",
|
| 3 |
+
"input": "eval/irish_remaining_gaps_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 6,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.08656914997845888,
|
| 9 |
+
"examples_per_second": 69.30875492589436,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 5,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"PASSPORT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 2,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"PHONE_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 3,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
}
|
eval/full_multilingual_ppsn_v1_all.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/multilingual_ppsn_v1_all.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 168,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 2.9706038819858804,
|
| 9 |
+
"examples_per_second": 56.554157563306696,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 0.875,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 0.9333333333333333,
|
| 14 |
+
"tp": 84,
|
| 15 |
+
"fp": 12,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"PPSN": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 84,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
}
|
| 27 |
+
},
|
| 28 |
+
"backend": "full"
|
| 29 |
+
}
|
eval/full_runtime_profile_source.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "runtime_profile_source.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_pt",
|
| 5 |
+
"examples": 3223,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 46.959111439064145,
|
| 9 |
+
"examples_per_second": 68.63417771825351,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 0.585127996749289,
|
| 12 |
+
"recall": 0.40597688187200454,
|
| 13 |
+
"f1": 0.47936085219707064,
|
| 14 |
+
"tp": 1440,
|
| 15 |
+
"fp": 1021,
|
| 16 |
+
"fn": 2107
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"PPSN": {
|
| 20 |
+
"precision": 0.9320388349514563,
|
| 21 |
+
"recall": 0.40597688187200454,
|
| 22 |
+
"f1": 0.5655930871956009,
|
| 23 |
+
"tp": 1440,
|
| 24 |
+
"fp": 105,
|
| 25 |
+
"fn": 2107
|
| 26 |
+
}
|
| 27 |
+
},
|
| 28 |
+
"release_backend": "full"
|
| 29 |
+
}
|
eval/label_inventory.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"labels": [
|
| 3 |
+
"ACCOUNT_NUMBER",
|
| 4 |
+
"AGE",
|
| 5 |
+
"BANK_ROUTING_NUMBER",
|
| 6 |
+
"CITY",
|
| 7 |
+
"COUNTY",
|
| 8 |
+
"CREDIT_DEBIT_CARD",
|
| 9 |
+
"DATE_OF_BIRTH",
|
| 10 |
+
"EMAIL",
|
| 11 |
+
"FIRST_NAME",
|
| 12 |
+
"LAST_NAME",
|
| 13 |
+
"PASSPORT_NUMBER",
|
| 14 |
+
"PHONE_NUMBER",
|
| 15 |
+
"POSTCODE",
|
| 16 |
+
"PPSN",
|
| 17 |
+
"STREET_ADDRESS",
|
| 18 |
+
"SWIFT_BIC"
|
| 19 |
+
]
|
| 20 |
+
}
|
eval/q8_diffmask_fresh_holdout_v1.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "diffmask_fresh_holdout_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 20,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.13704864599276334,
|
| 9 |
+
"examples_per_second": 145.93358332818605,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 0.96875,
|
| 13 |
+
"f1": 0.9841269841269841,
|
| 14 |
+
"tp": 31,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 1
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 0.5,
|
| 22 |
+
"f1": 0.6666666666666666,
|
| 23 |
+
"tp": 1,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 1
|
| 26 |
+
},
|
| 27 |
+
"CREDIT_DEBIT_CARD": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 2,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"EMAIL": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 6,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"FIRST_NAME": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 4,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"LAST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 4,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"PHONE_NUMBER": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 6,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"POSTCODE": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PPSN": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 6,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
}
|
| 83 |
+
},
|
| 84 |
+
"release_backend": "onnx_q8"
|
| 85 |
+
}
|
eval/q8_diffmask_gap_uat_exact_v1.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "diffmask_gap_uat_exact_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 16,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.08481148700229824,
|
| 9 |
+
"examples_per_second": 188.65369026681998,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 17,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"EMAIL": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"PHONE_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 6,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"POSTCODE": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 3,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"PPSN": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 5,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
}
|
| 51 |
+
},
|
| 52 |
+
"release_backend": "onnx_q8"
|
| 53 |
+
}
|
eval/q8_globalpointer_context_redteam_v1.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 14,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.1809925140114501,
|
| 9 |
+
"examples_per_second": 77.35126547341245,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 54,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 2,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 8,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 10,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 4,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"EMAIL": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 4,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"FIRST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"LAST_NAME": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 4,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 8,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 2,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"STREET_ADDRESS": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 8,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "onnx_q8"
|
| 109 |
+
}
|
eval/q8_globalpointer_context_redteam_v2.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 6,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.0719167779898271,
|
| 9 |
+
"examples_per_second": 83.42976656780596,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 13,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 4,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 1,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"DATE_OF_BIRTH": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"PHONE_NUMBER": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 2,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"POSTCODE": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 3,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"STREET_ADDRESS": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
}
|
| 67 |
+
},
|
| 68 |
+
"backend": "onnx_q8"
|
| 69 |
+
}
|
eval/q8_globalpointer_context_redteam_v3.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v3.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 12,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.10364121198654175,
|
| 9 |
+
"examples_per_second": 115.78405703667622,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 22,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 7,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 3,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"PHONE_NUMBER": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 3,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"POSTCODE": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 3,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"STREET_ADDRESS": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
}
|
| 75 |
+
},
|
| 76 |
+
"backend": "onnx_q8"
|
| 77 |
+
}
|
eval/q8_globalpointer_context_redteam_v4.json
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/globalpointer_context_redteam_v4.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 21,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.18228210194502026,
|
| 9 |
+
"examples_per_second": 115.20604478400188,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 43,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 10,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 1,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 6,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 2,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PHONE_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 6,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"POSTCODE": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 6,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"PPSN": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 2,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"STREET_ADDRESS": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 5,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
}
|
| 99 |
+
},
|
| 100 |
+
"backend": "onnx_q8"
|
| 101 |
+
}
|
eval/q8_globalpointer_demographic_patch_v2_test.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_demographic_patch_v2_test.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 600,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 7.3460182279814035,
|
| 9 |
+
"examples_per_second": 81.67690051660445,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 2470,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 287,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 286,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 286,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 304,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"EMAIL": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 85,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"FIRST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 194,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"LAST_NAME": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 194,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 177,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 286,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 85,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"STREET_ADDRESS": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 286,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "onnx_q8"
|
| 109 |
+
}
|
eval/q8_globalpointer_location_coverage_v1.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_location_coverage_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 18,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.20767050504218787,
|
| 9 |
+
"examples_per_second": 86.67576551780107,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 56,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 14,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 16,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"PHONE_NUMBER": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"POSTCODE": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 12,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"STREET_ADDRESS": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 12,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"backend": "onnx_q8"
|
| 61 |
+
}
|
eval/q8_globalpointer_location_coverage_v2.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_location_coverage_v2.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 24,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.37797363102436066,
|
| 9 |
+
"examples_per_second": 63.49649295628558,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 68,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 20,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 22,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"PHONE_NUMBER": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"POSTCODE": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 12,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"STREET_ADDRESS": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 12,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"backend": "onnx_q8"
|
| 61 |
+
}
|
eval/q8_globalpointer_location_coverage_v3.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/globalpointer_location_coverage_v3.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 30,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.2887980790110305,
|
| 9 |
+
"examples_per_second": 103.87880730624308,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 82,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"CITY": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 26,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"COUNTY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 28,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"PHONE_NUMBER": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"POSTCODE": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 13,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"STREET_ADDRESS": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 13,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
"backend": "onnx_q8"
|
| 61 |
+
}
|
eval/q8_irish_core_pii_v1.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc10",
|
| 3 |
+
"input": "eval/irish_core_pii_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 37,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.2940682880580425,
|
| 9 |
+
"examples_per_second": 125.82111537540908,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 76,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 3,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"BANK_ROUTING_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 1,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"CREDIT_DEBIT_CARD": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"EMAIL": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 6,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 19,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 19,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PASSPORT_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 12,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 4,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 6,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"SWIFT_BIC": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 2,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "onnx_q8"
|
| 109 |
+
}
|
eval/q8_irish_dllm_hardening_exact_v1.json
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"input": "irish_dllm_hardening_exact_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 14,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.12445017893332988,
|
| 9 |
+
"examples_per_second": 112.49481615852109,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 20,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"ACCOUNT_NUMBER": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 1,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"BANK_ROUTING_NUMBER": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 2,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"CREDIT_DEBIT_CARD": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 2,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"EMAIL": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 2,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"FIRST_NAME": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 1,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"LAST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 1,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"PHONE_NUMBER": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"POSTCODE": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 3,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"PPSN": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 3,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"SWIFT_BIC": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 3,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
}
|
| 99 |
+
},
|
| 100 |
+
"release_backend": "onnx_q8"
|
| 101 |
+
}
|
eval/q8_irish_extended_pii_v1.json
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc9",
|
| 3 |
+
"input": "eval/irish_extended_pii_v1.jsonl",
|
| 4 |
+
"loader_type": "global_pointer_onnx",
|
| 5 |
+
"examples": 14,
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"elapsed_seconds": 0.318285096087493,
|
| 9 |
+
"examples_per_second": 43.98572277525542,
|
| 10 |
+
"overall": {
|
| 11 |
+
"precision": 1.0,
|
| 12 |
+
"recall": 1.0,
|
| 13 |
+
"f1": 1.0,
|
| 14 |
+
"tp": 50,
|
| 15 |
+
"fp": 0,
|
| 16 |
+
"fn": 0
|
| 17 |
+
},
|
| 18 |
+
"by_label": {
|
| 19 |
+
"AGE": {
|
| 20 |
+
"precision": 1.0,
|
| 21 |
+
"recall": 1.0,
|
| 22 |
+
"f1": 1.0,
|
| 23 |
+
"tp": 5,
|
| 24 |
+
"fp": 0,
|
| 25 |
+
"fn": 0
|
| 26 |
+
},
|
| 27 |
+
"CITY": {
|
| 28 |
+
"precision": 1.0,
|
| 29 |
+
"recall": 1.0,
|
| 30 |
+
"f1": 1.0,
|
| 31 |
+
"tp": 8,
|
| 32 |
+
"fp": 0,
|
| 33 |
+
"fn": 0
|
| 34 |
+
},
|
| 35 |
+
"COUNTY": {
|
| 36 |
+
"precision": 1.0,
|
| 37 |
+
"recall": 1.0,
|
| 38 |
+
"f1": 1.0,
|
| 39 |
+
"tp": 6,
|
| 40 |
+
"fp": 0,
|
| 41 |
+
"fn": 0
|
| 42 |
+
},
|
| 43 |
+
"DATE_OF_BIRTH": {
|
| 44 |
+
"precision": 1.0,
|
| 45 |
+
"recall": 1.0,
|
| 46 |
+
"f1": 1.0,
|
| 47 |
+
"tp": 6,
|
| 48 |
+
"fp": 0,
|
| 49 |
+
"fn": 0
|
| 50 |
+
},
|
| 51 |
+
"EMAIL": {
|
| 52 |
+
"precision": 1.0,
|
| 53 |
+
"recall": 1.0,
|
| 54 |
+
"f1": 1.0,
|
| 55 |
+
"tp": 1,
|
| 56 |
+
"fp": 0,
|
| 57 |
+
"fn": 0
|
| 58 |
+
},
|
| 59 |
+
"FIRST_NAME": {
|
| 60 |
+
"precision": 1.0,
|
| 61 |
+
"recall": 1.0,
|
| 62 |
+
"f1": 1.0,
|
| 63 |
+
"tp": 2,
|
| 64 |
+
"fp": 0,
|
| 65 |
+
"fn": 0
|
| 66 |
+
},
|
| 67 |
+
"LAST_NAME": {
|
| 68 |
+
"precision": 1.0,
|
| 69 |
+
"recall": 1.0,
|
| 70 |
+
"f1": 1.0,
|
| 71 |
+
"tp": 2,
|
| 72 |
+
"fp": 0,
|
| 73 |
+
"fn": 0
|
| 74 |
+
},
|
| 75 |
+
"PHONE_NUMBER": {
|
| 76 |
+
"precision": 1.0,
|
| 77 |
+
"recall": 1.0,
|
| 78 |
+
"f1": 1.0,
|
| 79 |
+
"tp": 2,
|
| 80 |
+
"fp": 0,
|
| 81 |
+
"fn": 0
|
| 82 |
+
},
|
| 83 |
+
"POSTCODE": {
|
| 84 |
+
"precision": 1.0,
|
| 85 |
+
"recall": 1.0,
|
| 86 |
+
"f1": 1.0,
|
| 87 |
+
"tp": 8,
|
| 88 |
+
"fp": 0,
|
| 89 |
+
"fn": 0
|
| 90 |
+
},
|
| 91 |
+
"PPSN": {
|
| 92 |
+
"precision": 1.0,
|
| 93 |
+
"recall": 1.0,
|
| 94 |
+
"f1": 1.0,
|
| 95 |
+
"tp": 2,
|
| 96 |
+
"fp": 0,
|
| 97 |
+
"fn": 0
|
| 98 |
+
},
|
| 99 |
+
"STREET_ADDRESS": {
|
| 100 |
+
"precision": 1.0,
|
| 101 |
+
"recall": 1.0,
|
| 102 |
+
"f1": 1.0,
|
| 103 |
+
"tp": 8,
|
| 104 |
+
"fp": 0,
|
| 105 |
+
"fn": 0
|
| 106 |
+
}
|
| 107 |
+
},
|
| 108 |
+
"backend": "onnx_q8"
|
| 109 |
+
}
|
eval/q8_irish_gov_chatbot_gap_holdout_v1.json
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "temsa/IrishCore-GlobalPointer-ContextPII-135M-v1-rc1",
|
| 3 |
+
"family": "globalpointer",
|
| 4 |
+
"backend": "onnx",
|
| 5 |
+
"input": "irish_gov_chatbot_gap_holdout_v1.jsonl",
|
| 6 |
+
"min_score": 0.5,
|
| 7 |
+
"iou_threshold": 0.5,
|
| 8 |
+
"overall": {
|
| 9 |
+
"precision": 1.0,
|
| 10 |
+
"recall": 1.0,
|
| 11 |
+
"f1": 1.0,
|
| 12 |
+
"tp": 413,
|
| 13 |
+
"fp": 0,
|
| 14 |
+
"fn": 0
|
| 15 |
+
},
|
| 16 |
+
"exact": {
|
| 17 |
+
"precision": 1.0,
|
| 18 |
+
"recall": 1.0,
|
| 19 |
+
"f1": 1.0,
|
| 20 |
+
"tp": 413,
|
| 21 |
+
"fp": 0,
|
| 22 |
+
"fn": 0
|
| 23 |
+
},
|
| 24 |
+
"by_label": {
|
| 25 |
+
"ACCOUNT_NUMBER": {
|
| 26 |
+
"precision": 1.0,
|
| 27 |
+
"recall": 1.0,
|
| 28 |
+
"f1": 1.0,
|
| 29 |
+
"tp": 16,
|
| 30 |
+
"fp": 0,
|
| 31 |
+
"fn": 0
|
| 32 |
+
},
|
| 33 |
+
"BANK_ROUTING_NUMBER": {
|
| 34 |
+
"precision": 1.0,
|
| 35 |
+
"recall": 1.0,
|
| 36 |
+
"f1": 1.0,
|
| 37 |
+
"tp": 23,
|
| 38 |
+
"fp": 0,
|
| 39 |
+
"fn": 0
|
| 40 |
+
},
|
| 41 |
+
"CREDIT_DEBIT_CARD": {
|
| 42 |
+
"precision": 1.0,
|
| 43 |
+
"recall": 1.0,
|
| 44 |
+
"f1": 1.0,
|
| 45 |
+
"tp": 6,
|
| 46 |
+
"fp": 0,
|
| 47 |
+
"fn": 0
|
| 48 |
+
},
|
| 49 |
+
"EMAIL": {
|
| 50 |
+
"precision": 1.0,
|
| 51 |
+
"recall": 1.0,
|
| 52 |
+
"f1": 1.0,
|
| 53 |
+
"tp": 50,
|
| 54 |
+
"fp": 0,
|
| 55 |
+
"fn": 0
|
| 56 |
+
},
|
| 57 |
+
"FIRST_NAME": {
|
| 58 |
+
"precision": 1.0,
|
| 59 |
+
"recall": 1.0,
|
| 60 |
+
"f1": 1.0,
|
| 61 |
+
"tp": 70,
|
| 62 |
+
"fp": 0,
|
| 63 |
+
"fn": 0
|
| 64 |
+
},
|
| 65 |
+
"LAST_NAME": {
|
| 66 |
+
"precision": 1.0,
|
| 67 |
+
"recall": 1.0,
|
| 68 |
+
"f1": 1.0,
|
| 69 |
+
"tp": 70,
|
| 70 |
+
"fp": 0,
|
| 71 |
+
"fn": 0
|
| 72 |
+
},
|
| 73 |
+
"PHONE_NUMBER": {
|
| 74 |
+
"precision": 1.0,
|
| 75 |
+
"recall": 1.0,
|
| 76 |
+
"f1": 1.0,
|
| 77 |
+
"tp": 72,
|
| 78 |
+
"fp": 0,
|
| 79 |
+
"fn": 0
|
| 80 |
+
},
|
| 81 |
+
"POSTCODE": {
|
| 82 |
+
"precision": 1.0,
|
| 83 |
+
"recall": 1.0,
|
| 84 |
+
"f1": 1.0,
|
| 85 |
+
"tp": 18,
|
| 86 |
+
"fp": 0,
|
| 87 |
+
"fn": 0
|
| 88 |
+
},
|
| 89 |
+
"PPSN": {
|
| 90 |
+
"precision": 1.0,
|
| 91 |
+
"recall": 1.0,
|
| 92 |
+
"f1": 1.0,
|
| 93 |
+
"tp": 72,
|
| 94 |
+
"fp": 0,
|
| 95 |
+
"fn": 0
|
| 96 |
+
},
|
| 97 |
+
"SWIFT_BIC": {
|
| 98 |
+
"precision": 1.0,
|
| 99 |
+
"recall": 1.0,
|
| 100 |
+
"f1": 1.0,
|
| 101 |
+
"tp": 16,
|
| 102 |
+
"fp": 0,
|
| 103 |
+
"fn": 0
|
| 104 |
+
}
|
| 105 |
+
},
|
| 106 |
+
"by_language": {
|
| 107 |
+
"en": {
|
| 108 |
+
"precision": 1.0,
|
| 109 |
+
"recall": 1.0,
|
| 110 |
+
"f1": 1.0,
|
| 111 |
+
"tp": 230,
|
| 112 |
+
"fp": 0,
|
| 113 |
+
"fn": 0
|
| 114 |
+
},
|
| 115 |
+
"ga": {
|
| 116 |
+
"precision": 1.0,
|
| 117 |
+
"recall": 1.0,
|
| 118 |
+
"f1": 1.0,
|
| 119 |
+
"tp": 183,
|
| 120 |
+
"fp": 0,
|
| 121 |
+
"fn": 0
|
| 122 |
+
}
|
| 123 |
+
},
|
| 124 |
+
"by_role": {
|
| 125 |
+
"assistant": {
|
| 126 |
+
"precision": 1.0,
|
| 127 |
+
"recall": 1.0,
|
| 128 |
+
"f1": 1.0,
|
| 129 |
+
"tp": 72,
|
| 130 |
+
"fp": 0,
|
| 131 |
+
"fn": 0
|
| 132 |
+
},
|
| 133 |
+
"mixed": {
|
| 134 |
+
"precision": 0.0,
|
| 135 |
+
"recall": 0.0,
|
| 136 |
+
"f1": 0.0,
|
| 137 |
+
"tp": 0,
|
| 138 |
+
"fp": 0,
|
| 139 |
+
"fn": 0
|
| 140 |
+
},
|
| 141 |
+
"user": {
|
| 142 |
+
"precision": 1.0,
|
| 143 |
+
"recall": 1.0,
|
| 144 |
+
"f1": 1.0,
|
| 145 |
+
"tp": 341,
|
| 146 |
+
"fp": 0,
|
| 147 |
+
"fn": 0
|
| 148 |
+
}
|
| 149 |
+
},
|
| 150 |
+
"by_source_type": {
|
| 151 |
+
"assistant_contact_echo_en": {
|
| 152 |
+
"precision": 1.0,
|
| 153 |
+
"recall": 1.0,
|
| 154 |
+
"f1": 1.0,
|
| 155 |
+
"tp": 32,
|
| 156 |
+
"fp": 0,
|
| 157 |
+
"fn": 0
|
| 158 |
+
},
|
| 159 |
+
"assistant_contact_echo_ga": {
|
| 160 |
+
"precision": 1.0,
|
| 161 |
+
"recall": 1.0,
|
| 162 |
+
"f1": 1.0,
|
| 163 |
+
"tp": 40,
|
| 164 |
+
"fp": 0,
|
| 165 |
+
"fn": 0
|
| 166 |
+
},
|
| 167 |
+
"negative_en": {
|
| 168 |
+
"precision": 0.0,
|
| 169 |
+
"recall": 0.0,
|
| 170 |
+
"f1": 0.0,
|
| 171 |
+
"tp": 0,
|
| 172 |
+
"fp": 0,
|
| 173 |
+
"fn": 0
|
| 174 |
+
},
|
| 175 |
+
"negative_ga": {
|
| 176 |
+
"precision": 0.0,
|
| 177 |
+
"recall": 0.0,
|
| 178 |
+
"f1": 0.0,
|
| 179 |
+
"tp": 0,
|
| 180 |
+
"fp": 0,
|
| 181 |
+
"fn": 0
|
| 182 |
+
},
|
| 183 |
+
"user_card_email_en": {
|
| 184 |
+
"precision": 1.0,
|
| 185 |
+
"recall": 1.0,
|
| 186 |
+
"f1": 1.0,
|
| 187 |
+
"tp": 12,
|
| 188 |
+
"fp": 0,
|
| 189 |
+
"fn": 0
|
| 190 |
+
},
|
| 191 |
+
"user_name_email_ppsn_phone_en": {
|
| 192 |
+
"precision": 1.0,
|
| 193 |
+
"recall": 1.0,
|
| 194 |
+
"f1": 1.0,
|
| 195 |
+
"tp": 80,
|
| 196 |
+
"fp": 0,
|
| 197 |
+
"fn": 0
|
| 198 |
+
},
|
| 199 |
+
"user_name_email_ppsn_phone_ga": {
|
| 200 |
+
"precision": 1.0,
|
| 201 |
+
"recall": 1.0,
|
| 202 |
+
"f1": 1.0,
|
| 203 |
+
"tp": 50,
|
| 204 |
+
"fp": 0,
|
| 205 |
+
"fn": 0
|
| 206 |
+
},
|
| 207 |
+
"user_name_ppsn_phone_en": {
|
| 208 |
+
"precision": 1.0,
|
| 209 |
+
"recall": 1.0,
|
| 210 |
+
"f1": 1.0,
|
| 211 |
+
"tp": 56,
|
| 212 |
+
"fp": 0,
|
| 213 |
+
"fn": 0
|
| 214 |
+
},
|
| 215 |
+
"user_name_ppsn_phone_ga": {
|
| 216 |
+
"precision": 1.0,
|
| 217 |
+
"recall": 1.0,
|
| 218 |
+
"f1": 1.0,
|
| 219 |
+
"tp": 56,
|
| 220 |
+
"fp": 0,
|
| 221 |
+
"fn": 0
|
| 222 |
+
},
|
| 223 |
+
"user_payment_name_en": {
|
| 224 |
+
"precision": 1.0,
|
| 225 |
+
"recall": 1.0,
|
| 226 |
+
"f1": 1.0,
|
| 227 |
+
"tp": 32,
|
| 228 |
+
"fp": 0,
|
| 229 |
+
"fn": 0
|
| 230 |
+
},
|
| 231 |
+
"user_payment_name_ga": {
|
| 232 |
+
"precision": 1.0,
|
| 233 |
+
"recall": 1.0,
|
| 234 |
+
"f1": 1.0,
|
| 235 |
+
"tp": 32,
|
| 236 |
+
"fp": 0,
|
| 237 |
+
"fn": 0
|
| 238 |
+
},
|
| 239 |
+
"user_sort_code_en": {
|
| 240 |
+
"precision": 1.0,
|
| 241 |
+
"recall": 1.0,
|
| 242 |
+
"f1": 1.0,
|
| 243 |
+
"tp": 18,
|
| 244 |
+
"fp": 0,
|
| 245 |
+
"fn": 0
|
| 246 |
+
},
|
| 247 |
+
"user_sort_code_ga": {
|
| 248 |
+
"precision": 1.0,
|
| 249 |
+
"recall": 1.0,
|
| 250 |
+
"f1": 1.0,
|
| 251 |
+
"tp": 5,
|
| 252 |
+
"fp": 0,
|
| 253 |
+
"fn": 0
|
| 254 |
+
}
|
| 255 |
+
},
|
| 256 |
+
"failure_count": 0,
|
| 257 |
+
"failures": []
|
| 258 |
+
}
|